日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像形态学操作—腐蚀膨胀深入

發(fā)布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像形态学操作—腐蚀膨胀深入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

博客原創(chuàng)出處:http://blog.csdn.net/lu597203933/article/details/36222277

這里我們主要想講解岡薩雷斯的數(shù)字圖像處理這本書上膨脹腐蝕的定義及用opencv實現(xiàn)的結(jié)果,然后對比它們之間的差異。

一:opencv實現(xiàn)

?????? 在這之前可以看我的另外一篇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;??
  • ????//eroded.at<uchar>(0,2)?=?1;??
  • ????dilated.at<uchar>(1,0)?=?1;??
  • ????dilated.at<uchar>(1,1)?=?2;??????????//?結(jié)構元素非0即1??
  • ????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;??
  • }??
  • 結(jié)果:


    膨脹就是如果結(jié)構元B有一處非0,而A對應位置非0,則求出A中與B中對應非0處所有像素最大值來代替當前像素點值。Opencv中默認的結(jié)構元是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>(0,2)?=?1;??
  • ????eroded.at<uchar>(1,0)?=?1;??
  • ????eroded.at<uchar>(1,1)?=?2;??????????//?結(jié)構元素非0即1??
  • ????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;??

  • 結(jié)果:


    腐蝕就是結(jié)構元B處非0,則A對應位置也全非0,且取全非0處最小值來代替當前像素點的值。

    ?

    二:書中定義

    膨脹: .?這里的B是結(jié)構元,B~是結(jié)構元的反射,反射不明白可以看書,就是旋轉(zhuǎn)或者按中心點對稱。如:

    0 1?? 的反射就是 1 1

    1 1 ? ? ? ? ? ? ? ? ? ? ? ?1 0

    與opencv中唯一的區(qū)別就是必須得求反射,而opencv中則直接用給定的結(jié)構元B。

    腐蝕:?

    案例:

    總結(jié)

    以上是生活随笔為你收集整理的图像形态学操作—腐蚀膨胀深入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。