圖像開運算和閉運算

一、原理html

圖像開運算與閉運算與膨脹和腐蝕運算有關,由膨脹和腐蝕兩個運算的複合與集合操做(並、交、補等)組合成的運算構成。開運算與閉運算依據腐蝕和膨脹演變而來。函數

1)開運算:先對圖像腐蝕後膨脹。spa

A○S= (AΘS)⊕ Scode

做用:用來消除小的物體,平滑形狀邊界,而且不改變其面積。能夠去除小顆粒噪聲,斷開物體之間的粘連。orm

2)閉運算:先對圖像膨脹後腐蝕htm

A●S= (A⊕S)Θ Sblog

做用:用來填充物體內的小空洞,鏈接鄰近的物體,鏈接斷開的輪廓線,平滑其邊界的同時不改變面積。get

二、開運算的實現it

imgPath = 'E:\opencv_pic\src_pic\pic2.bmp';
img = imread(imgPath);
img=rgb2gray(img);
img = 255-img;
 
se = strel('square', 5);
img2 = imerode(img, se);
img3 = imdilate(img2, se);
subplot(1,3,1),imshow(img),title('原始圖像');
subplot(1,3,2),imshow(img2),title('腐蝕後');
subplot(1,3,3),imshow(img3),title('膨脹後');

效果以下圖。腐蝕消除了小的噪點,保留了最大的一個噪點,膨脹以後還原了噪點的形狀。圖像上,草莓蒂上的小花紋已經消失。io

 放大後觀察,原圖裏有較大的斑點,6*5的方塊(縱向缺1個點),腐蝕後只剩下1個點,膨脹後變爲5*5的方塊。

放大到像素級可見,腐蝕圖上的點(32,110)在膨脹圖裏被還原爲5*5的塊。

 使用imopen函數,效果相同。

三、閉運算的實現

imgPath = 'E:\opencv_pic\src_pic\pic2.bmp';
img = imread(imgPath);
img=rgb2gray(img);
img = 255-img;
 
se = strel('square', 4);
img2 = imdilate(img, se);
img3 = imerode(img2, se);
subplot(1,3,1),imshow(img),title('原始圖像');
subplot(1,3,2),imshow(img2),title('膨脹後');
subplot(1,3,3),imshow(img3),title('腐蝕後');

閉運算效果以下圖。

放大後,圖像左側的噪點在膨脹過程被連在一塊兒,體積增大不少。腐蝕後形狀發生了一些改變,體積變小不少。

使用大小爲15的結構元素,se = strel('square', 15);草莓中間的空心圈變爲實心圈。膨脹過程當中,空心被高亮白色填充,可是花瓣部分已經鏈接在一塊兒形狀發生了較大改變。再次腐蝕後,去掉了膨脹形成的粘連,花瓣部分大致形狀恢復。

在matlab裏,使用imclose函數也能夠達到上面先膨脹後腐蝕的效果。

四、總結

單獨對比開運算和閉運算,對比圖以下。

開運算先腐蝕後膨脹,去除了小的黑點,方塊邊緣變得圓潤了,也就是開運算對圖像輪廓進行平滑。

而閉運算先膨脹後腐蝕,把中心比較大的塊鏈接爲一個總體,填補了空白的縫隙。

開運算可以除去孤立的小點,毛刺和小橋,而物體的形狀輪廓基本不變。

閉運算與開運算相反,可以填平前景物體內的小裂縫、間斷和小孔,而總的位置和形狀不變。

結構元素大小的不一樣將致使濾波效果的不一樣。

不一樣的結構元素的選擇致使了不一樣的分割,即提取出不一樣的特徵。

五、參考文獻

一、形態學開運算閉運算

https://www.jianshu.com/p/2eae48a44f83

二、More Morphology Transformations

https://docs.opencv.org/2.4/doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.html#more-morphology-transformations

 

尊重原創技術文章,轉載請註明。

http://www.javashuo.com/article/p-estrhtyv-ck.html

相關文章
相關標籤/搜索