matlab 获取图像轮廓两种方法

在图像的视觉特征研究范畴,外形特征因更接近人的视觉特点,一向是人们的研究重点,而外形的边缘又反映出良多信息,所以在研究图像的特征时有需要提取其边缘轮廓以便今后的深切阐发。

matlab中有良多集当作的边缘函数,可以很便利的提取图像的边缘。今天小沙就为大师介绍一下。

利用beperim方式

  1. 1

    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');

    dc54564e9258d109c035b404db58ccbf6d814db5.jpg
  2. 2

    由上图可以看出,这个函数的局限性在于, 它不仅提取外轮廓, 对图形区域内部的孔洞所围当作的内部边缘也提掏出来。若是想只获得外形轮廓,则需要进步前辈行填洞操作,后进行膨胀操作,去除孔、洞。填洞为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'); 

    c83d70cf3bc79f3d7707f986b0a1cd11738b29a5.jpg
  3. 3

    这种方式具有必然局限性和长处,可按照小我的具体需要合理利用。

    下面介绍一下另一种方式,也是较为常用的方式:edge。

  • 发表于 2019-12-09 20:01
  • 阅读 ( 353 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论