生活随笔
收集整理的這篇文章主要介紹了
图像形态学操作—腐蚀膨胀深入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
博客原創出處:http://blog.csdn.net/lu597203933/article/details/36222277
這里我們主要想講解岡薩雷斯的數字圖像處理這本書上膨脹腐蝕的定義及用opencv實現的結果,然后對比它們之間的差異。
一:opencv實現
?????? 在這之前可以看我的另外一篇blog:http://blog.csdn.net/lu597203933/article/details/17184439
膨脹:
案例代碼:
[cpp]?view plaincopy print?
int?main()?? {?? ????int?a[8][8]?=?{?? ????????{0,0,0,0,0,0,0,0},??? ????????{0,0,5,1,0,0,1,1},??? ????????{0,1,0,1,0,1,0,0},?? ????????{0,1,1,2,1,0,1,0},?? ????????{0,0,0,1,0,1,0,0},?? ????????{0,1,0,0,0,0,0,1},?? ????????{0,0,0,0,0,0,0,0},?? ????????{0,0,0,0,0,0,0,0}?? ????};?? ????Mat?S?=?Mat::zeros(8,?8,?CV_8UC1);?? ????for(int?j?=?0;?j?<?S.rows;?j++)?? ????{?? ????????for(int?i?=?0;?i?<?S.cols;?i++)?? ????????{?? ????????????S.at<uchar>(j,i)?=?a[j][i];?? ????????}?? ????}?? ????cout?<<?"S?=?"?<<?endl?<<?"?"?<<?S?<<?endl;?? ????Mat?result;?? ????Mat?dilated?=?Mat::zeros(3,?3,?CV_8UC1);?? ????dilated.at<uchar>(0,1)?=?1;?? ?????? ????dilated.at<uchar>(1,0)?=?1;?? ????dilated.at<uchar>(1,1)?=?2;???????????? ????dilated.at<uchar>(1,2)?=?1;?? ????dilated.at<uchar>(2,1)?=?1;?? ????cout?<<?"dilated?=?"?<<?endl?<<?"?"?<<?dilated?<<?endl;????? ????dilate(S,?result,?dilated);???? ????cout?<<?"result?=?"?<<?endl?<<?"?"?<<?result?<<?endl;?? ????return?0;?? }??
結果:
膨脹就是如果結構元B有一處非0,而A對應位置非0,則求出A中與B中對應非0處所有像素最大值來代替當前像素點值。Opencv中默認的結構元是3*3的矩陣,全部非0。
腐蝕:
案例代碼:
[cpp]?view plaincopy print?
int?main()?? {?? ????int?a[8][8]?=?{?? ????????{0,0,0,0,0,0,0,0},??? ????????{0,0,5,1,0,0,1,1},??? ????????{0,1,0,1,0,1,0,0},?? ????????{0,1,1,2,1,0,1,0},?? ????????{0,0,0,1,0,1,0,0},?? ????????{0,1,0,0,0,0,0,1},?? ????????{0,0,0,0,0,0,0,0},?? ????????{0,0,0,0,0,0,0,0}?? ????};?? ????Mat?S?=?Mat::zeros(8,?8,?CV_8UC1);?? ????for(int?j?=?0;?j?<?S.rows;?j++)?? ????{?? ????????for(int?i?=?0;?i?<?S.cols;?i++)?? ????????{?? ????????????S.at<uchar>(j,i)?=?a[j][i];?? ????????}?? ????}?? ????cout?<<?"S?=?"?<<?endl?<<?"?"?<<?S?<<?endl;?? ????Mat?result;?? ????Mat?eroded?=?Mat::zeros(3,?3,?CV_8UC1);?? ????eroded.at<uchar>(0,1)?=?1;?? ?????? ????eroded.at<uchar>(1,0)?=?1;?? ????eroded.at<uchar>(1,1)?=?2;???????????? ????eroded.at<uchar>(1,2)?=?1;?? ????eroded.at<uchar>(2,1)?=?1;?? ????cout?<<?"eroded?=?"?<<?endl?<<?"?"?<<?eroded?<<?endl;??? ????erode(S,?result,?eroded);???? ????cout?<<?"result?=?"?<<?endl?<<?"?"?<<?result?<<?endl;?? ????return?0;??
結果:
腐蝕就是結構元B處非0,則A對應位置也全非0,且取全非0處最小值來代替當前像素點的值。
?
二:書中定義
膨脹: .?這里的B是結構元,B~是結構元的反射,反射不明白可以看書,就是旋轉或者按中心點對稱。如:
0 1?? 的反射就是 1 1
1 1 ? ? ? ? ? ? ? ? ? ? ? ?1 0
與opencv中唯一的區別就是必須得求反射,而opencv中則直接用給定的結構元B。
腐蝕:?
案例:
總結
以上是生活随笔為你收集整理的图像形态学操作—腐蚀膨胀深入的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。