ScaleSpace.h
上传用户:yli86818
上传日期:2014-07-15
资源大小:273k
文件大小:2k
源码类别:

图形图像处理

开发平台:

Visual C++

  1. // ScaleSpace.h: interface for the CScaleSpace class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_SCALESPACE_H__FFE6650E_611F_4919_B6CD_C52C4566551B__INCLUDED_)
  5. #define AFX_SCALESPACE_H__FFE6650E_611F_4919_B6CD_C52C4566551B__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "cv.h"
  10. #include <vector>
  11. #include "KeyPoint.h"
  12. #define PI 3.141568
  13. class CScalePoint
  14. {
  15. public:
  16. CScalePoint (int x,int y,int level)
  17. {
  18. m_x = x;
  19. m_y = y;
  20. m_level = level;
  21. };
  22. int m_x, m_y;
  23. int m_level;
  24. double m_fineX,m_fineY;
  25. double m_fineS;
  26. double m_DValue;
  27. };
  28. class CScaleSpace  
  29. {
  30. public:
  31. void ClearMagnitudeAndDirectionMaps();
  32. void GenMagnitudeAndDirectionMaps();
  33. CScaleSpace (int s,double basePixScale);
  34. void findPeak (double r,double dogThresh,std::vector<CScalePoint>* vec);
  35. int getDoGCount();
  36. IplImage* getDoG (int i);
  37. void buildDoG(IplImage *img,double sigma,double basePixScale);
  38. virtual ~CScaleSpace();
  39. void filterAndLocalizePeaks (std::vector<CScalePoint>& peaks,std::vector<CScalePoint>* filtered, double dValueLoThresh, double scaleAdjustThresh, int relocationMaximum);
  40. void GenerateKeypoints (std::vector<CScalePoint>& localizedPeaks, std::vector<CKeyPoint*>* keypoints,int scaleCount, double octaveSigma);
  41. private:
  42. void CreateDescriptors (std::vector<CKeyPoint*>* keypoints,
  43. IplImage* magnitude, IplImage* direction,
  44. double considerScaleFactor, int descDim, int directionCount,
  45. double fvGradHicap);
  46. void GenerateKeypointSingle (double imgScale, CScalePoint point,
  47. int binCount, double peakRelThresh, int scaleCount,
  48. double octaveSigma,std::vector<CKeyPoint*>*vec);
  49. void AverageWeakBins (double* bins, int binCount);
  50. bool InterpolateOrientation (double left, double middle,
  51.  double right, double* degreeCorrection, double* peakValue);
  52. bool LocalizeIsWeak (CScalePoint& peak, int steps, CvMat* processed);
  53. void GetAdjustment (CScalePoint& point, int level, int x, int y, double* dp,CvMat* adj);
  54. int m_scaleLevel,m_dogCount,m_gaussCount;
  55. // Different of Gaussian Image
  56. double m_basePixScale;
  57. IplImage **m_dogImgs;
  58. IplImage **m_gaussImgs;
  59. IplImage **m_magnitudes,**m_directions;
  60. };
  61. #endif // !defined(AFX_SCALESPACE_H__FFE6650E_611F_4919_B6CD_C52C4566551B__INCLUDED_)