形態學基本操作--OpenCV07

數學形態學是數學形態學圖像處理的基本理論。其基本的運算包括:二值腐蝕和膨脹、二值開閉運算、骨架抽取、極限腐蝕
擊中擊不中變換、形態學梯度、Top-hat變換、顆粒分析、流域變換、灰值腐蝕和膨脹 灰值開閉運算、灰值形態學梯度

最基本的形態學操作爲 膨脹(dilate)和腐蝕(erode)

 

膨脹就是求局部最大值的操作,會使圖像中的高亮區域逐漸增長(變得更白)
腐蝕就是求局部最小值的操作,圖像的高亮區域會逐漸減少

一般使用getStructingElement這個函數 配合相關API使用
getStructingElement函數會返回指定形狀和尺寸的結構元素(內核矩陣)

第一個參數表示內核的形狀
矩形:MORPH_RECT
交叉形:MORPH_CROSS
橢圓形:MORPH_ELLIPSE
第二個第三個參數分別是內核的尺寸和錨點的位置

一般在調用dilate或者erode函數之前先定義一個Mat類型的對象
來獲取getStructingElement的返回值 
對於錨點的位置,默認值point(-1,-1)即爲中心點
 

	Mat element;
	element = getStructuringElement(MORPH_RECT, Size(3, 3));

	dilate(Img1, Img2, element); //膨脹
	imshow("dilate img", Img2);

	erode(Img1, OutImg, element); //腐蝕
	imshow("erode img", OutImg);

 

接下來介紹的函數是morphologyEx函數
他利用基本的膨脹和腐蝕技術,來執行更加高級的形態學變換 

morphologyEx
第三個參數int類型的op表示形態學運算的類型
MORPH_OPEN  --開運算
MORPH_CLOSE --閉運算
MORPH_GRADIENT --形態學梯度
MORPH_TOPHAT  --頂帽
MORPH_BLACKHAT  --黑帽
MORPH_ERODE    --腐蝕
MORPH_DILATE   --膨脹

第四個參數 kernel 內核 
同樣藉助於getStructingElement

第五個參數是錨點的位置 point(-1,-1)表示正中

第六個參數表示函數迭代的次數 可能一次效果並不明顯

 

開運算
其實就是先腐蝕後膨脹的過程(先變黑在變白)
開運算可以消除小的物體,在纖細處分離物體,
並且在平滑 較大物體的邊界的同時不明顯改變其面積
就是圖像中有一些坑坑窪窪白色區塊,可以有效去除掉。

	Mat OpenImg;
	morphologyEx(Img1, OpenImg, MORPH_OPEN, element);
	imshow("Open img", OpenImg);

閉運算
其實就是先膨脹後腐蝕的過程(先變白後變黑)
閉運算可以排除小型黑洞(黑色區域)

	Mat CloseImg;
	morphologyEx(Img1, CloseImg, MORPH_CLOSE, element);
	imshow("Close Img", CloseImg);

形態學梯度
形態學梯度是膨脹圖與腐蝕圖之差
對二值圖像進行這一操作的時候可以將團塊(blob)的邊緣突出出來。
我們可以利用形態學梯度保留物體的邊緣

	Mat GradientImg;
	morphologyEx(Img1, GradientImg, MORPH_GRADIENT, element);
	imshow("Gradient Img", GradientImg);

頂帽
是 原圖像與開運算操作的圖像 之差
因爲開運算帶來的結果是放大了裂縫或者局部低亮度的區域。
從原圖減去開運算後的圖,得到的效果圖突出了比原圖輪廓周圍的區域更明亮的區域
且這一操作與選擇的核的大小相關
頂帽運算往往用來分離比鄰近點亮一些的斑點。
在一幅圖像具有大幅的背景,而微小物品比較有規律的情況下,可以使用頂帽進行背景提取

	Mat Tophatimg;
	morphologyEx(Img1, Tophatimg, MORPH_TOPHAT, element);
	imshow("Tophat Img", Tophatimg);


黑帽
是 原圖像與閉運算操作的圖像 之差
黑帽運算後的效果圖突出了比原圖輪廓周圍區域更暗的區域
且這一操作與選擇的核的大小相關
黑帽運算用來分離比鄰近點暗一些的斑塊,效果圖有着非常完美的輪廓。

	Mat BlackHatImg;
	morphologyEx(Img1, BlackHatImg, MORPH_BLACKHAT, element);
	imshow("Blackhat Img", BlackHatImg);


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章