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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV—形态学运算定义与实现

發(fā)布時(shí)間:2024/9/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV—形态学运算定义与实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OpenCV—形態(tài)學(xué)運(yùn)算定義與實(shí)現(xiàn)



1.形態(tài)學(xué)運(yùn)算與結(jié)構(gòu)元素

形態(tài)學(xué)運(yùn)算是針對(duì)二值圖像依據(jù)數(shù)學(xué)形態(tài)學(xué)(Mathematical Morphology)的集合論方法發(fā)展起來(lái)的圖像處理方法。數(shù)學(xué)形態(tài)學(xué)起源于巖相學(xué)對(duì)巖石結(jié)構(gòu)的定量描述工作,近年來(lái)在數(shù)字圖像處理和機(jī)器視覺(jué)領(lǐng)域中得到了廣泛的應(yīng)用,形成了一種獨(dú)特的數(shù)字圖像分析方法和理論。

結(jié)構(gòu)元素可以簡(jiǎn)單的定義為像素的組合,在對(duì)應(yīng)的像素上定義了原點(diǎn)(也稱(chēng)錨點(diǎn))。形態(tài)學(xué)濾波器的應(yīng)用過(guò)程就是利用這個(gè)結(jié)構(gòu)元素探測(cè)圖像中每個(gè)像素的操作過(guò)程。把某個(gè)像素設(shè)為結(jié)構(gòu)元素的錨點(diǎn)后,結(jié)構(gòu)元素和圖像重疊部分的像素集合就是特定形態(tài)學(xué)運(yùn)算的應(yīng)用對(duì)象。結(jié)構(gòu)元素原則上可以是任何形狀,但通常是一個(gè)簡(jiǎn)單形狀,如正方形、圓形、菱形等,且把中心點(diǎn)作為原點(diǎn)。

2.腐蝕與膨脹運(yùn)算

(1)腐蝕 erode

腐蝕的定義


也就是說(shuō),由B對(duì)X腐蝕所產(chǎn)生的二值圖像E是滿足以下條件的點(diǎn)(x,y)的集合:如果B的原點(diǎn)平移到點(diǎn)(x,y),那么B將完全包含于X中。

另一種理解,腐蝕就是把當(dāng)前像素替換成所定義的像素集中的最小像素值。由于輸入的二值圖像只包含黑色(0)和白色(255)像素,因此如果結(jié)構(gòu)元素覆蓋的圖像區(qū)域中有黑色像素,則錨點(diǎn)所在像素(x,y)將會(huì)被替換成黑色0,否則替換成白色255。而物體的邊界通常會(huì)有黑色像素,所以腐蝕相當(dāng)于收縮邊界。

腐蝕的作用

腐蝕是一種消除邊界點(diǎn),使邊界向內(nèi)部收縮的過(guò)程。可以用來(lái)消除小且無(wú)意義的物體。

[cpp]?view plaincopy
  • //?Read?input?image??
  • ????cv::Mat?image=?cv::imread("binary.bmp");??
  • ????if?(!image.data)??
  • ????????return?0;???
  • //?Display?the?image??
  • ????cv::namedWindow("Image");??
  • ????cv::imshow("Image",image);??
  • //?Erode?the?image??
  • ????cv::Mat?eroded;??
  • ????cv::erode(image,eroded,cv::Mat());//cv::Mat()為空矩陣,此時(shí)采用默認(rèn)3*3正方形結(jié)構(gòu)元素??
  • //?Display?the?eroded?image??
  • ????cv::namedWindow("Eroded?Image");??
  • ????cv::imshow("Eroded?Image",eroded);??
  • //?Erode?the?image?with?a?larger?s.e.定義更大的結(jié)構(gòu)元素??
  • ????cv::Mat?element(7,7,CV_8U,cv::Scalar(1));??
  • ?//?Display?the?eroded?image?by?large?s.e.??
  • ????cv::erode(image,eroded,element);??
  • ????cv::namedWindow("Eroded?Image?(7x7)");??
  • ????cv::imshow("Eroded?Image?(7x7)",eroded);??
  • //?Erode?the?image?3?times.腐蝕3次??
  • ????cv::erode(image,eroded,cv::Mat(),cv::Point(-1,-1),3);//cv::Point(-1,-1)表示原點(diǎn)是矩陣的中心點(diǎn)??
  • //?Display?the?eroded?image??
  • ????cv::namedWindow("Eroded?Image?(3?times)");??
  • ????cv::imshow("Eroded?Image?(3?times)",eroded);??
  • ????cv::waitKey(0);??
  • 原始二值圖像


    3×3正方形結(jié)構(gòu)元素腐蝕結(jié)果

    7×7正方形結(jié)構(gòu)元素腐蝕結(jié)果


    3×3正方形結(jié)構(gòu)元素腐蝕3次結(jié)果

    (2)膨脹 dilate

    膨脹的定義


    由B對(duì)X膨脹所產(chǎn)生的二值圖像D是滿足以下條件的點(diǎn)(x,y)的集合:如果B的原點(diǎn)平移到點(diǎn)(x,y),那么它與X的交集非空。

    另一種理解為:膨脹是腐蝕的反運(yùn)算,它把當(dāng)前像素(原點(diǎn)所在位置(x,y))替換成所定義的像素集中的最大像素值。由于輸入的二值圖像只包含黑色(0)和白色(255)像素,因此當(dāng)結(jié)構(gòu)元素覆蓋的圖像中有白色(物體),則該結(jié)構(gòu)元素原點(diǎn)所在位置(x,y)的值將會(huì)被替換成白色255。

    膨脹的作用

    也就是說(shuō),膨脹是將與物體接觸的所有背景點(diǎn)合并到該物體中,使邊界向外部擴(kuò)張的過(guò)程。可以用來(lái)填補(bǔ)物體中的空洞。

    [cpp]?view plaincopy
  • //?Dilate?the?image??
  • ????cv::Mat?dilated;??
  • ????cv::dilate(image,dilated,cv::Mat());??
  • //?Display?the?dialted?image??
  • ????cv::namedWindow("Dilated?Image");??
  • ????cv::imshow("Dilated?Image",dilated);??

  • 3×3正方形結(jié)構(gòu)元素膨脹結(jié)果

    (3)自定義結(jié)構(gòu)元素

    除了使用常規(guī)的規(guī)則結(jié)構(gòu)元素,我們也可以自定義結(jié)構(gòu)元素。下面使用Mat類(lèi)型的構(gòu)造函數(shù)創(chuàng)建一個(gè)3×3十字型的結(jié)構(gòu)元素。

    [cpp]?view plaincopy
  • //?創(chuàng)建自定義結(jié)構(gòu)元素??
  • unsigned?char?m[9]?=?{??
  • ????????0,1,0,??
  • ????????1,1,1,??
  • ????????0,1,0?????
  • ????};??
  • cv::Mat?element1(3,3,CV_8U,m);?//創(chuàng)建自定義矩陣element1??
  • //顯示該結(jié)構(gòu)元素??
  • int?nr?=?element1.rows;??
  • int?nl?=?element1.cols;??
  • for(int?j?=?0;j<nr;j++)??
  • {??
  • ????char?*data?=?element1.ptr<char>(j);??
  • ????for(int?i?=?0;?i<nl;?i++)??
  • ????{??
  • ????????int?value?=?data[i];??
  • ????????cout<<value<<"?";??
  • }??
  • ????cout<<endl;??
  • }??
  • ?//?Display?the?eroded?image?by?large?s.e.??
  • ????cv::erode(image,eroded,element1);??
  • ????cv::namedWindow("Eroded?Image?(user?define)");??
  • ????cv::imshow("Eroded?Image?(user?define)",eroded);??
  • 自定義結(jié)構(gòu)元素腐蝕結(jié)果

    使用Mat_模板類(lèi)自定義5×5大小十字形、菱形、方形、x形結(jié)構(gòu)元素:

    [cpp]?view plaincopy
  • ????cv::Mat_<uchar>?cross(5,5);??
  • ????cv::Mat_<uchar>?diamond(5,5);??
  • ????cv::Mat_<uchar>?x(5,5);??
  • ????cv::Mat_<uchar>?square(5,5);??
  • ??
  • ?????//?Creating?the?cross-shaped?structuring?element??
  • ????cross?<<??
  • ??????????0,?0,?1,?0,?0,??
  • ??????????0,?0,?1,?0,?0,??
  • ??????????1,?1,?1,?1,?1,??
  • ??????????0,?0,?1,?0,?0,??
  • ??????????0,?0,?1,?0,?0;??
  • ????????????
  • ?????//?Creating?the?diamond-shaped?structuring?element??
  • ?????diamond?<<??
  • ??????????0,?0,?1,?0,?0,??
  • ??????????0,?1,?1,?1,?0,??
  • ??????????1,?1,?1,?1,?1,??
  • ??????????0,?1,?1,?1,?0,??
  • ??????????0,?0,?1,?0,?0;??
  • ????????????
  • ??????//?Creating?the?x-shaped?structuring?element??
  • ??????x?<<??
  • ??????????1,?0,?0,?0,?1,??
  • ??????????0,?1,?0,?1,?0,??
  • ??????????0,?0,?1,?0,?0,??
  • ??????????0,?1,?0,?1,?0,??
  • ??????????1,?0,?0,?0,?1;??
  • ??
  • ??????//?Creating?the?square-shaped?structuring?element??
  • ??????square?<<??
  • ??????????1,?1,?1,?1,?1,??
  • ??????????1,?1,?1,?1,?1,??
  • ??????????1,?1,?1,?1,?1,??
  • ??????????1,?1,?1,?1,?1,??
  • ??????????1,?1,?1,?1,?1;??
  • <span?style="white-space:pre">????</span>?//display?x-shaped?structuring?element??
  • ?????cout<<endl<<"x-shaped?structuring?element"<<endl<<endl;??
  • ?????int?xnr?=?x.rows;??
  • ?????int?xnl?=?x.cols;??
  • ?????for(int?j?=?0;j<nr;j++)??
  • ?????{??
  • ????????char?*data?=?x.ptr<char>(j);??
  • ????????for(int?i?=?0;?i<nl;?i++)??
  • ????????{??
  • ????????????int?value?=?data[i];??
  • ????????????cout<<value<<"?";??
  • ????????}??
  • ????????cout<<endl;??
  • ?????}??
  • 3.開(kāi)閉運(yùn)算

    (1)閉運(yùn)算

    閉運(yùn)算定義??先膨脹后腐蝕

    閉運(yùn)算作用

    閉運(yùn)算用來(lái)填充物體內(nèi)細(xì)小空洞、連接鄰近物體、平滑其邊界的同時(shí)并不明顯改變其面積。基本上所有小到不能完整容納結(jié)構(gòu)元素的空隙或間隙,都會(huì)被閉運(yùn)算消除(即連起來(lái))。

    [cpp]?view plaincopy
  • cv::Mat?element5(5,5,CV_8U,cv::Scalar(1));//5*5正方形,8位uchar型,全1結(jié)構(gòu)元素??
  • cv::Mat?closed;??
  • cv::morphologyEx(image,?closed,cv::MORPH_CLOSE,element5);//高級(jí)形態(tài)學(xué)運(yùn)算函數(shù)??
  • //?Display?the?opened?image??
  • cv::namedWindow("Closed?Image");??
  • cv::imshow("Closed?Image",closed);??
  • cv::waitKey(0);??

  • 5×5正方形結(jié)構(gòu)元素閉運(yùn)算結(jié)果

    (2)開(kāi)運(yùn)算

    開(kāi)運(yùn)算定義??先腐蝕后膨脹

    開(kāi)運(yùn)算作用

    用來(lái)背景中的消除小物體、在纖細(xì)點(diǎn)處分離物體、平滑較大物體的邊界的同時(shí)并不明顯改變其面積。所有小到不能容納結(jié)構(gòu)元素的物體都會(huì)被移除。

    [cpp]?view plaincopy
  • cv::Mat?element5(5,5,CV_8U,cv::Scalar(1));//5*5正方形,8位uchar型,全1結(jié)構(gòu)元素??
  • cv::Mat?opened;??
  • cv::morphologyEx(image,?opened,cv::MORPH_OPEN,element5);??
  • //?Display?the?opened?image??
  • cv::namedWindow("Opened?Image");??
  • cv::imshow("Opened?Image",opened);??
  • cv::waitKey(0);??

  • 5×5正方形結(jié)構(gòu)元素開(kāi)運(yùn)算結(jié)果

    形態(tài)學(xué)還有很多其他運(yùn)算,例如top-hat等,等空了再補(bǔ)充。
    轉(zhuǎn)載請(qǐng)注明:iracer的CSDN博客?http://blog.csdn.net/iracer/article/details/49057145

    總結(jié)

    以上是生活随笔為你收集整理的OpenCV—形态学运算定义与实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

    主站蜘蛛池模板: 精品国产AV色欲天媒传媒 | www,xxx日本 | 黄色av一区二区三区 | 欧美亚洲第一区 | 57pao国产精品一区 | 日韩欧美一区二区免费 | 国产成a人亚洲精品 | 69精品丰满人妻无码视频a片 | 狠狠干夜夜操 | 午夜资源网 | 欧美3p在线观看 | 狼性av懂色av禁果av | 99视频在线精品免费观看2 | 激情综合啪啪 | 人禽l交视频在线播放 视频 | 久久久全国免费视频 | 亚洲天堂精品在线观看 | 另类ts人妖一区二区三区 | 国产精品色图 | 91精品免费视频 | 国产黄色录相 | 特a级黄色片 | 人人爱人人看 | 冲田杏梨av | 中文字幕乱伦视频 | 91精品视频在线免费观看 | 天天操天天操天天操天天操 | 国产一区二区中文字幕 | 韩国三级中文字幕hd久久精品 | ts人妖在线 | 最新最全av网站 | 噜噜色图 | 欧美性受xxxx黒人xyx性爽 | 精品中文字幕一区二区三区 | av青娱乐| 亚洲不卡在线观看 | 中文字幕无线码 | 人人干人人爽 | 一区二区人妻 | 亚洲人午夜射精精品日韩 | 中文字幕国产视频 | 国产高清成人 | 欧美视频在线观看一区二区三区 | 国产农村妇女aaaaa视频 | 羞羞软件 | 天天躁日日躁aaaxxⅹ | 一区二区三区国 | 性高潮久久久久久久久 | 人成精品 | 亚洲最大成人在线视频 | 天堂色av| www.五月天婷婷 | 婷婷在线免费观看 | 性一交一黄一片 | 三级理论电影 | 久久久99精品免费观看 | 在线观看少妇 | 青青草综合视频 | www.久久久久久久久久 | 国产成人精品视频ⅴa片软件竹菊 | 国产精品无码免费在线观看 | 日本精品久久久久中文字幕 | 久热这里只有精品在线 | 99riav国产在线观看 | 久久9999久久免费精品国产 | 青娱乐最新视频 | 国产区一区二区 | 亚洲欧洲综合在线 | 亚洲欧美日韩专区 | 午夜激情影院 | 欧美日本韩国一区 | 国产白袜脚足j棉袜在线观看 | 欧美日韩黄色网 | 国产成人a v| 成人精品视频一区二区三区尤物 | 亚洲一级在线 | 亚洲一区国产精品 | www.猫咪av.com| 无遮挡毛片 | 粉嫩久久99精品久久久久久夜 | 亚日韩av| 国产一区午夜 | 情五月 | 欧美另类精品 | 伦理亚洲| 亚洲欧美中文日韩在线观看 | 人妻内射一区二区在线视频 | 美女涩涩视频 | 亚洲精品白虎 | 3d动漫精品啪啪一区二区免费 | 五月天久久久久久 | 午夜影院在线观看18 | 亚洲精品9999| 欧美高清视频一区二区 | 手机看片日韩在线 | 中文字幕视频免费观看 | 色多多视频污 | 黄色同人网站 | 一区二区三区免费看视频 |