matlab影像處理之開運算閉運算(1)

zyb_初學者發表於2017-03-09
matlab影像處理形態學濾波之開運算閉運算(1)

       剛入門的朋友估計對開閉運算還不太瞭解,首先先了解幾個名詞:

腐蝕:  是一種消除邊界點,使邊界向內部收縮的過程。可以用來消除小且無意義的物體。
 
膨脹:  是將與物體接觸的所有背景點合併到該物體中,使邊界向外部擴張的過程。可以用來填補物體中的空洞。 


開運算:  先腐蝕後膨脹的過程開運算。用來消除小物體、在纖細點處分離物體、平滑較大物 體的邊界的同時並不明顯改變其面積。開運算通常是在需要去除小顆粒噪聲,以及斷開目標物之間粘連時使用。其主要作用與腐蝕相似,與腐蝕操作相比,具有可以基本保持目標原有大小不變的優點。 


閉運算:  先膨脹後腐蝕的過程稱為閉運算。用來填充物體內細小空洞、連線鄰近物體、平滑 其邊界的同時並不明顯改變其面積。

       對一個影像先進行腐蝕運算然後再膨脹的操作過程稱為開運算,它可以消除細小的物體、在纖細點處分離物體、平滑較大物體的邊界時不明顯的改變其面積。如果對一個影像先膨脹然後再收縮,我們稱之為閉運算,它具有填充物體內細小的空洞、連線鄰近物體、在不明顯改變物體面積的情況下平滑其邊界的作用。通常情況下,當有噪聲的影像用閾值二值化後,所得到的邊界是很不平滑的,物體區域具有一些錯判的孔洞,背景區域散佈著一些小的噪聲物體,連續的開和閉運算可以顯著的改善這種情況,這時候需要在連線幾次腐蝕迭代之後,再加上相同次數的膨脹,才可以產生所期望的效果。

       所以,換一種說法,影像的開閉運算實質上是數學形態的非線性濾波去噪的一個過程。

       知道以上名詞了我們就可以把我們的想法與之匹配,通過開閉運算來實現我們的目的。

       matlab程式如下:
i=imread('image.jpg');
i1=rgb2gray(i); %轉灰度影像
i2=im2bw(i1);    %二值化搜尋
i3 = bwmorph(i2,'close');  %閉運算
imshow(i3)
i4 = bwmorph(i2,'open');  %開運算
figure, imshow(i4)
%bwmorph還支援類似bothat tophat thin等操作個體看下help引數
%說明:前提條件是傳入的影像應該是二值後的

更強大的有關腐蝕膨脹以及開閉運算的matlab程式參考連結:

http://blog.csdn.net/zhangyibo123456789/article/details/60957376


相關文章