OpenCV——膨胀与腐蚀
膨脹與腐蝕的主要功能:
? ? 1.消除噪聲;
? ? 2.分割出獨(dú)立像素,在圖像中連接相鄰元素;
? ? 3.尋找圖像中明顯的極大值區(qū)域和極小值區(qū)域;
? ? 4.求圖像梯度;
?
膨脹是求局部最大值的操作;
膨脹和腐蝕操作都是將圖像A(或區(qū)域A)與一個(gè)核B進(jìn)行卷積;
核可以為任意大小和形狀,擁有一個(gè)單獨(dú)定義出來(lái)的參考點(diǎn)——錨點(diǎn),錨點(diǎn)通常為核的中心點(diǎn),可自定義。
?
膨脹原理:在核B覆蓋的區(qū)域選擇像素值點(diǎn)最大的點(diǎn),把這個(gè)值賦予給錨點(diǎn)。
從而會(huì)導(dǎo)致高亮的部分逐漸擴(kuò)大(因?yàn)榘咨禐?/span>255,黑色色值為0,每次取最大值再賦予錨點(diǎn),便會(huì)使亮的部分增加)
?
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;int main()
{Mat img1, img2;img1 = imread("H:\\1.jpg");imshow("原始圖", img1);//定義一個(gè)核Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));//使用膨脹函數(shù)dilate (img1, img2, element);imshow("效果圖", img2);waitKey(0);
}
運(yùn)行結(jié)果:
開(kāi)運(yùn)算:先腐蝕后膨脹
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;int main()
{Mat img1, img2,img3;img1 = imread("H:\\1.jpg");imshow("原始圖", img1);//定義一個(gè)核Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));//使用膨脹函數(shù)erode (img1, img2, element);dilate(img2, img3, element);imshow("腐蝕", img2);imshow("開(kāi)運(yùn)算", img3);waitKey(0);
}
閉運(yùn)算:與開(kāi)運(yùn)算相反,過(guò)程為先膨脹后腐蝕
膨脹后高亮區(qū)域擴(kuò)大,擴(kuò)大后再進(jìn)行腐蝕,此時(shí)暗淡部分較少腐蝕的效果會(huì)比較低,總體主要為膨脹。
形態(tài)學(xué)梯度是膨脹圖和腐蝕圖之差:膨脹-腐蝕
頂帽運(yùn)算是將原圖減去開(kāi)運(yùn)算的結(jié)果
黑帽是閉運(yùn)算減去原圖的結(jié)果。
?
總結(jié)
以上是生活随笔為你收集整理的OpenCV——膨胀与腐蚀的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenCV——canny算子
- 下一篇: Python——字符串大小写转化