• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

XnVPointDenoiser.h

Go to the documentation of this file.
00001 /*******************************************************************************
00002 *                                                                              *
00003 *   PrimeSense NITE 1.3                                                        *
00004 *   Copyright (C) 2010 PrimeSense Ltd.                                         *
00005 *                                                                              *
00006 *******************************************************************************/
00007 
00008 
00009 #ifndef _XNV_POINT_DENOISER_H_
00010 #define _XNV_POINT_DENOISER_H_
00011 
00012 #include "XnVPointFilter.h"
00013 
00014 
00021 class XNV_NITE_API XnVPointDenoiser :
00022     public XnVPointFilter
00023 {
00024 public:
00031     XnVPointDenoiser(XnFloat fDistanceThreshold = ms_fDefaultDistanceThreshold,
00032         const XnChar* strName = "XnVPointDenoiser");
00033     ~XnVPointDenoiser();
00034 
00040     void Update(XnVMessage* pMessage);
00041 
00047     void OnPointCreate(const XnVHandPointContext* pContext);
00053     void OnPointUpdate(const XnVHandPointContext* pContext);
00059     void OnPointDestroy(XnUInt32 nID);
00066     void OnPrimaryPointCreate(const XnVHandPointContext* pContext, const XnPoint3D& ptSessionStarter);
00067 
00073     XnFloat GetDistanceThreshold() const;
00079     void SetDistanceThreshold(XnFloat fDistanceThreshold);
00080 
00081     XnFloat GetCloseRatio() const;
00082     XnFloat GetFarRatio() const;
00083 
00089     void SetCloseRatio(XnFloat fCloseRatio);
00095     void SetFarRatio(XnFloat fFarRatio);
00096 
00097 protected:
00098 #define XNV_SMOOTHER_AVERAGE_SIZE 3
00099     struct LocalContext
00100     {
00101         XnPoint3D ptBuffer[XNV_SMOOTHER_AVERAGE_SIZE];
00102         XnUInt32 nCount;
00103         XnUInt32 nNextIndex;
00104     };
00105 
00106     XN_DECLARE_DEFAULT_HASH_DECL(XNV_NITE_API, XnUInt32, LocalContext*, XnVIntLocalHash);
00107 
00108     LocalContext* GetLocalContext(XnUInt32 nID);
00109     XnFloat Distance(XnPoint3D& pt1, XnPoint3D& pt2) const;
00110     void UpdatePointDenoise(XnPoint3D& ptToChange, const XnPoint3D& ptDontChange);
00111 
00112     void Clear();
00113 
00114     XnVIntLocalHash m_ActivePoints;
00115 
00116     static const XnFloat ms_fDefaultDistanceThreshold;  //  = 10
00117     static const XnFloat ms_fDefaultCloseRatio;     // = 0.0
00118     static const XnFloat ms_fDefaultFarRatio;           // = 1.0
00119 
00120     XnFloat m_fDistanceThreshold;
00121     XnFloat m_fCloseRatio;
00122     XnFloat m_fFarRatio;
00123 
00124     XnVMultipleHands m_DenoisedHands;
00125 };
00126 
00127 #endif

Generated on Tue Jul 19 2011 20:22:59 for NITE 1.4.1 - API Reference by  doxygen 1.7.1