在圖像的視覺特征研究范疇,外形特征因更接近人的視覺特點,一向是人們的研究重點,而外形的邊緣又反映出良多信息,所以在研究圖像的特征時有需要提取其邊緣輪廓以便今后的深切闡發。
matlab中有良多集當作的邊緣函數,可以很便利的提取圖像的邊緣。今天小沙就為大師介紹一下。
matlab中有提取圖形輪廓的函數bwperim。
但其只針對二值圖像,所以需要先對灰度圖像進行二值化,選心猿意馬合適的閾值進行二值化。
I = imread('1.jpg');BW = im2bw(I,0.4);BW2 = bwperim(BW,8);
顯示圖像:
subplot(1,2,1);imshow(I);title('original iamge');subplot(1,2,2), imshow(BW2);title('bwperim');
由上圖可以看出,這個函數的局限性在于, 它不僅提取外輪廓, 對圖形區域內部的孔洞所圍當作的內部邊緣也提掏出來。若是想只獲得外形輪廓,則需要進步前輩行填洞操作,后進行膨脹操作,去除孔、洞。填洞為imfill。
IBW = ~BW;F1 = imfill(IBW,'holes');SE = ones(3);F2 = imdilate(F1,SE,'same');BW3 = bwperim(F2);
顯示圖像:
subplot(1,2,1);imshow(I);title('original iamge');subplot(1,2,2), imshow(BW3);title('operated bwperim');
這種方式具有必然局限性和長處,可按照小我的具體需要合理利用。
下面介紹一下另一種方式,也是較為常用的方式:edge。
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!