形态学操作——腐蚀与膨胀
預(yù)備知識(shí)
結(jié)構(gòu)元(SE)
1、結(jié)構(gòu)元的中心一般來(lái)說(shuō)是放在其重心位置處,但原則上原點(diǎn)的選擇是依賴(lài)于你要解決的問(wèn)題的。
2、對(duì)圖像操作時(shí),我們要求結(jié)構(gòu)元是矩形陣列。(在結(jié)構(gòu)元的基礎(chǔ)上添加較少的背景元素實(shí)現(xiàn))
3、當(dāng)結(jié)構(gòu)元的中心位于原圖像的邊界時(shí),要對(duì)原圖像進(jìn)行填充操作
2注意點(diǎn)中的填充陣列:
但是其實(shí)這樣填充下來(lái),只要給背景元素的權(quán)值賦0就和原來(lái)的一樣了。
這個(gè)陣列顯然和下面的陣列不是一個(gè)類(lèi)型
3注意點(diǎn)中的填充原圖像
原理
腐蝕
該表達(dá)式表示:B對(duì)A的腐蝕使用一個(gè)z平移的B包含在A中的所有點(diǎn)z的集合。
效果:
也就是B的中心在A中遍歷之后,結(jié)構(gòu)元素中沒(méi)有背景元素(即全是前景元素)的B中心的點(diǎn)的集合。
膨脹
膨脹是腐蝕的對(duì)偶操作。相當(dāng)于將B的中心沿著所有A的點(diǎn)遍歷一遍,得到的B的所有元素的集合。
調(diào)用opencv庫(kù)函數(shù)
#include <opencv2/opencv.hpp> #include <iostream> #include "windows.h" #include <stdio.h>using namespace cv; using namespace std; int main() {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN); //字體為綠色Mat srcImage = imread("D:\\opencv_picture_test\\形態(tài)學(xué)操作\\黑白.jpg");//判斷圖像是否加載成功if (srcImage.empty()){cout << "圖像加載失敗!" << endl;return -1;}elsecout << "圖像加載成功!" << endl << endl;namedWindow("原圖像", WINDOW_NORMAL); //定義窗口顯示屬性imshow("原圖像", srcImage);//進(jìn)行腐蝕操作Mat element_erode = getStructuringElement(MORPH_RECT,Size(15,15)); //返回的是內(nèi)核矩陣Mat dstImage;erode(srcImage, dstImage, element_erode); //腐蝕操作//顯示效果圖imshow("【腐蝕效果圖】", dstImage);//進(jìn)行膨脹操作//獲取自定義核Mat element_dilate = getStructuringElement(MORPH_RECT, Size(15, 15));Mat out;//進(jìn)行膨脹操作dilate(srcImage,out, element_dilate);imshow("【膨脹效果圖】", out);waitKey(0);return 0; }效果
作用
腐蝕的作用
消除A中比結(jié)構(gòu)元B小的部件。去除黏連像素以及噪聲。
膨脹的作用
橋接裂縫,恢復(fù)連通性
作用:如圖,由于無(wú)法實(shí)現(xiàn)理想的二值化,使得原本連通的像素集合被
分成不同的連通域,從而影響目標(biāo)物的提取。可通過(guò)膨脹運(yùn)算使其恢復(fù)
連通性。
這種方法比低通濾波有一個(gè)直接優(yōu)點(diǎn):形態(tài)學(xué)橋接可以直接得到一個(gè)二值化的圖,
然而低通濾波則需要經(jīng)過(guò)這樣過(guò)程:二值圖=>灰度圖=>二值圖。
另外需要了解的知識(shí):
之后的擊中擊不中變換中將會(huì)用到這樣的知識(shí)。
上面是以二值圖為例的,下面我們以灰度圖作為例子。
效果:使整個(gè)圖像變暗且去除了局部較亮的像素
效果:使整個(gè)圖像變亮且去除了局部較暗的像素
總結(jié)
以上是生活随笔為你收集整理的形态学操作——腐蚀与膨胀的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (附魔)DNF现在附魔卡,最高物理攻击和
- 下一篇: 颐和园转完需要多长时间