GlobalApi.h
上传用户:piaozanzhu
上传日期:2008-02-14
资源大小:212k
文件大小:9k
源码类别:

图形图像处理

开发平台:

Visual C++

  1. #ifndef _GLOBAL_API
  2. #define _GLOBAL_API
  3. #include <math.h>
  4. #include "cdib.h"
  5. #include "ColorTable.h"
  6. #include <complex>
  7. using namespace std;
  8. //----------------------------------------------------------------------
  9. // DIB处理函数
  10. BOOL DIBShow(CFile* pFile);
  11. BOOL ConvertDDBToDIB(HBITMAP hBitmap, CDib* pDibDest, HPALETTE hPal);
  12. BOOL CopyDIB(CDib* pDibSrc, CDib* pDibDst);
  13. BOOL CopyScreenToDIB(LPRECT lpRect, CDib* pDibDest);
  14. HPALETTE GetSystemPalette() ;
  15. HPALETTE CopyPalette(HPALETTE hPalSrc);
  16. BOOL ReadDIB(CFile* pFile, LPBITMAPINFOHEADER lpBMIH, LPBYTE lpImage);
  17. HPALETTE MakeDIBPalette(LPVOID lpvColorTable,  LPBITMAPINFOHEADER lpBMIH);
  18. BOOL PaintDIB(CDC* pDC, LPBITMAPINFOHEADER lpBMIH, LPBYTE lpImage, CPoint origin, CSize size, HPALETTE hPalette);
  19. //----------------------------------------------------------------------
  20. // 运动检测
  21. //BOOL GetBackground(CString strFilePath, int nTotalFrameNum, int nImageWidth, 
  22. //    int nImageHeight, unsigned char* pUnchBackGround);
  23. //BOOL LoadDibSeq(CString strFilePath, int nCurFrameNum, int nTotalFrameNum, CDib* pDib);
  24. //CString GetFileName(CString strFilePathName, int nCurFrameNum);
  25. //void BinaFrameDiff(unsigned char *pUnchImg1, unsigned char *pUnchImg2, 
  26. //   int nWidth, int nHeight, unsigned char * pUnchResult,
  27. //   int nThreshold=10);
  28. //void ErodeFrameDiff(unsigned char *pUnchImg, int nWidth, int nHeight, int nErodeHalfWin, 
  29. //    int nErodeThreshold, unsigned char *pUnchResult);
  30. //----------------------------------------------------------------------
  31. // 图象分割
  32. //void RegionSegFixThreshold(CDib * pDib, int nThreshold=100);
  33. //void RobertsOperator(CDib * pDib, double * pdGrad);
  34. //void LaplacianOperator(CDib * pDib, double * pdGrad);
  35. //void EdgeTrack(CDib * pDib, unsigned char * pUnEdgeTrack);
  36. //void RegionGrow(CDib * pDib, unsigned char * pUnRegion, int nThreshold = 10);
  37. //void RegionSegAdaptive(CDib * pDib) ;
  38. //void SobelOperator(CDib * pDib, double * pdGrad);
  39. //void PrewittOperator(CDib * pDib, double * pdGrad);
  40. // canny 算子
  41. //void GaussianSmooth(unsigned char *pUnchImg, int nWidth, int nHeight, double sigma, unsigned char * pUnchSmthdImg);
  42. //void MakeGauss(double sigma, double **pdKernel, int *pnWindowSize) ; 
  43. //void DirGrad(unsigned char *pUnchSmthdImg, int nWidth, int nHeight,
  44. //  int *pnGradX , int *pnGradY);
  45. //void GradMagnitude(int *pnGradX, int *pnGradY, int nWidth, int nHeight, int *pnMag) ; 
  46. //void NonmaxSuppress(int *pnMag, int *pnGradX, int *pnGradY, int nWidth, int nHeight, unsigned char *pUnchRst);
  47. //void EstimateThreshold(int *pnMag, int nWidth, int nHeight, int *pnThdHigh,int *pnThdLow, 
  48. //  unsigned char * pUnchEdge, double dRatioHigh, double dRationLow) ;
  49. //void Canny(unsigned char *pUnchImage, int nWidth, int nHeight, double sigma,
  50. //  double dRatioLow, double dRatioHigh, unsigned char *pUnchEdge) ;
  51. //void Hysteresis(int *pnMag, int nWidth, int nHeight, double dRatioLow, 
  52. // double dRatioHigh, unsigned char *pUnchEdge) ;
  53. //void TraceEdge (int y, int x, int nLowThd, unsigned char *pUnchEdge, int *pnMag, int nWidth) ;
  54. // 小波变换函数原型
  55. // Daubechies紧致正交小波基
  56. // 不同支撑区间长度下的滤波器系数如下
  57. const double hCoef[10][20] =
  58. {
  59. { .707106781187,  .707106781187},
  60. { .482962913145,  .836516303738,  .224143868042, -.129409522551 },
  61. { .332670552950,  .806891509311,  .459877502118, -.135011020010, -.085441273882,  .035226291882 },
  62. { .230377813309,  .714846570553,  .630880767930, -.027983769417,
  63.  -.187034811719,  .030841381836,  .032883011667, -.010597401785 },
  64. { .160102397974,  .603829269797,  .724308528438,  .138428145901, -.242294887066,
  65.  -.032244869585,  .077571493840, -.006241490213, -.012580751999,  .003335725285 },
  66. { .111540743350,  .494623890398,  .751133908021,  .315250351709, -.226264693965,
  67.  -.129766867567,  .097501605587,  .027522865530, -.031582039318,  .000553842201,
  68.   .004777257511, -.001077301085 },
  69. { .077852054085,  .396539319482,  .729132090846,  .469782287405, -.143906003929,
  70.  -.224036184994,  .071309219267,  .080612609151, -.038029936935, -.016574541631,
  71.   .012550998556,  .000429577973, -.001801640704,  .000353713800 },
  72. { .054415842243,  .312871590914,  .675630736297,  .585354683654, -.015829105256,
  73.  -.284015542962,  .000472484574,  .128747426620, -.017369301002, -.044088253931,
  74.   .013981027917,  .008746094047, -.004870352993, -.000391740373,  .000675449406,
  75.  -.000117476784 },
  76. { .038077947364,  .243834674613,  .604823123690,  .657288078051,  .133197385825,
  77.  -.293273783279, -.096840783223,  .148540749338,  .030725681479, -.067632829061,
  78.   .000250947115,  .022361662124, -.004723204758, -.004281503682,  .001847646883,
  79.   .000230385764, -.000251963189,  .000039347320 },
  80. { .026670057901,  .188176800078,  .527201188932,  .688459039454,  .281172343661,
  81.  -.249846424327, -.195946274377,  .127369340336,  .093057364604, -.071394147166,
  82.  -.029457536822,  .033212674059,  .003606553567, -.010733175483,  .001395351747,
  83.   .001992405295, -.000685856695, -.000116466855,  .000093588670, -.000013264203 }
  84. };
  85. //BOOL DWT_1D(double* pDbSrc, int nMaxLevel,int nDWTSteps, int nInv, int nStep, int nSupp);
  86. //BOOL DWTStep_1D(double* pDbSrc, int nCurLevel,int nInv, int nStep, int nSupp);
  87. //BOOL DWT_2D(double* pDbSrc, int nMaxWLevel, int nMaxHLevel, int nDWTSteps, int nInv, int nStep, int nSupp);
  88. //BOOL DWTStep_2D(double* pDbSrc, int nCurWLevel, int nCurHLevel, int nMaxWLevel, int nMaxHLevel, int nInv, int nStep, int nSupp);
  89. //BOOL ImageDWT(LPBYTE lpImage, int nMaxWLevel, int nMaxHLevel,int nDWTSteps, int nInv, int nStep, int nSupp);
  90. //int Log2(int n);
  91. //BYTE FloatToByte(double f);
  92. //char FloatToChar(double f);
  93. //----------------------------------------------------------------------
  94. // 图象增强函数
  95. //BOOL GraySegLinTrans(CDib* pDib, int nX1, int nY1, 
  96. //  int nX2, int nY2); // 分段线性变换
  97. //BOOL HistogramEqualize(CDib* pDib); // 直方图均衡化
  98. //BOOL  GeneralTemplate(CDib* pDib,  int nTempWidth, int nTempHeight,
  99. //  int nTempCenX, int nTempCenY,
  100. //  double* pdbTemp, double dbCoef); // 通用模板操作
  101. //BOOL MedianFilter(CDib* pDib,  int nTempWidth, int nTempHeight, 
  102. //  int nTempCenX, int nTempCenY); // 中值滤波
  103. //unsigned char  GetMedianValue(unsigned char * pUnchFltValue, int iFilterLen); // 获取中值
  104. //BOOL  ReplaceDIBColorTable(CDib* pDib, LPBYTE  pColorsTable); // 替换DIB颜色表
  105. //
  106. //void LowPassFilterEnhance(LPBYTE lpImage, int nWidth, int nHeight, int nRadius) ;// 低通滤波
  107. //void HighPassFilterEnhance(LPBYTE lpImage, int nWidth, int nHeight, int nRadius);// 高通滤波
  108. //void ButterWorthLowPass(LPBYTE lpImage, int nWidth, int nHeight, int nRadius); //  ButterWorth低通滤波
  109. //void ButterWorthHighPass(LPBYTE lpImage, int nWidth, int nHeight, int nRadius); //  ButterWorth高通滤波
  110. //void LinearSharpen (LPBYTE lpImage, int nWidth, int nHeight); //  线性锐化增强
  111. //-----------------------------------------------------------------------
  112. // imageview.cpp函数原型
  113. //BOOL LimbPatternBayer(CDib *pDib);
  114. //BOOL DitherFloydSteinberg(CDib *pDib);
  115. //--------------------------------------------------------------------------
  116. // 图象分析函数原型
  117. //BOOL DIBHOLENUMBER(CDib *pDib);
  118. //BOOL DIBMOMENT(CDib *pDib);
  119. //BOOL DIBBARYCENTERMOMENT(CDib *pDib);
  120. //BOOL DIBFREAMEWORK(CDib *pDib);
  121. //BOOL DIBCHESSBOARDDISRESTORE(CDib *pDib);
  122. //BOOL DIBSTREETDIS(CDib *pDib);
  123. //BOOL DIBOUTLINE(CDib *pDib);
  124. //BOOL WINAPI DIBTrace(CDib *pDib);
  125. //-------------------------------------------------------------------------------------
  126. // 图象变换函数原型
  127. //VOID WINAPI FFT_1D(complex<double> * pCTData, complex<double> * pCFData, int nLevel);
  128. //VOID WINAPI IFFT_1D(complex<double> * pCFData, complex<double> * pCTData, int nLevel);
  129. //VOID WINAPI IFFT_2D(complex<double> * pCFData, complex<double> * pCTData, int nWidth, int nHeight);
  130. //VOID WINAPI IDFT_2D(CDib * pDib,double * pTrRstRpart, double * pTrRstIpart);
  131. //VOID WINAPI WINAPI DCT(double *f, double *F, int power);
  132. //VOID WINAPI WALSH(double *f, double *F, int r);
  133. //VOID WINAPI IWALSH(double *F, double *f, int r);
  134. //BOOL WINAPI THREECROSS(double *Matrix, int Rank, double *QMatrix, double *MainCross, double *HypoCross);
  135. //BOOL WINAPI BSTQ(int Rank, double *MainCross, double *HypoCross, double *Matrix, double Eqs, int MaxT);
  136. //BOOL WINAPI DIBDct(CDib *pDib);
  137. //BOOL WINAPI DIBWalsh(CDib *pDib);
  138. //BOOL WINAPI DIBHOTELLING(CDib *pDib);
  139. //VOID WINAPI DIBDFT_2D(CDib * pDib,double * pTrRstRpart, double * pTrRstIpart);
  140. //VOID WINAPI DIBFFT_2D(complex<double> * pCTData, int nWidth, int nHeight, complex<double> * pCFData);
  141. //------------------------------------------------------------------------------------
  142. // 图象复原的函数原型
  143. //BOOL WINAPI DIBNoRestriction(CDib *pDib );
  144. //BOOL WINAPI DIBInverseFilter (CDib *pDib);
  145. //BOOL WINAPI DIBNoiseDegeneration (CDib *pDib);
  146. //BOOL WINAPI DIBWinnerFilter (CDib *pDib);
  147. //BOOL WINAPI DIBMotionDegeneration(CDib *pDib);
  148. //BOOL WINAPI DIBMotionRestore(CDib *pDib);
  149. //-------------------------------------------------------------------------------------
  150. // 图象编码函数原型
  151. //BOOL WINAPI WRITE2IMG(CDib * pDib, CFile& file);
  152. //BOOL WINAPI LOADIMG(CDib * pDib, CFile& file);
  153. //BOOL WINAPI DIBBITPLANE(CDib *pDib,BYTE bBitNum);
  154. #endif