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 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!