午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

canny算子四部曲之二(求梯度)

 jtll521 2012-07-01

梯度求法和sobel之類的算子雷同,甚至更簡單,就是一個離散差分,不清楚的童鞋可以百度,一大堆資料呢,從源碼也可清晰的看出原理。

  1. // 方向?qū)?shù),求梯度  
  2. /* 
  3.  *  @parameter sz:     圖像大小 
  4.  *  @parameter pGray:    圖像灰度值 
  5.  *  @parameter pGradx:  圖像x軸梯度 
  6.  *  @parameter pGrady:  圖像y軸梯度 
  7.  *  @parameter pMag   :  圖像梯度幅值 
  8.  */  
  9.   
  10. void Grad(SIZE sz, LPBYTE pGray,int *pGradX, int *pGradY, int *pMag)  
  11. {  
  12.     LONG y,x;  
  13.   
  14.     //中間變量  
  15.     double dSqt1;  
  16.     double dSqt2;  
  17.   
  18.     //x方向的方向?qū)?shù)  
  19.     for(y=1;y<sz.cy-1;y++)  
  20.     {  
  21.         for(x=1;x<sz.cx-1;x++)  
  22.         {  
  23.             pGradX[y*sz.cx +x] = (int)( pGray[y*sz.cx+x+1]-pGray[y*sz.cx+ x-1]  );  
  24.         }  
  25.     }  
  26.   
  27.     //y方向方向?qū)?shù)  
  28.     for(x=1;x<sz.cx-1;x++)  
  29.     {  
  30.         for(y=1;y<sz.cy-1;y++)  
  31.         {  
  32.             pGradY[y*sz.cx +x] = (int)(pGray[(y+1)*sz.cx +x] - pGray[(y-1)*sz.cx +x]);  
  33.         }  
  34.     }  
  35.   
  36.     //求梯度  
  37.     for(y=0; y<sz.cy; y++)  
  38.     {  
  39.         for(x=0; x<sz.cx; x++)  
  40.         {  
  41.             //二階范數(shù)求梯度  
  42.             dSqt1 = pGradX[y*sz.cx + x]*pGradX[y*sz.cx + x];  
  43.             dSqt2 = pGradY[y*sz.cx + x]*pGradY[y*sz.cx + x];  
  44.             pMag[y*sz.cx+x] = (int)(sqrt(dSqt1+dSqt2)+0.5);//四舍五入  
  45.         }  
  46.     }  
  47. }  

用到的類型

  1. typedef struct {  
  2.     int cy;   
  3.     int cx;  
  4. } SIZE;  
  5.   
  6. typedef unsigned char *LPBYTE;  
  7.   
  8. typedef long LONG;  

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多