使用Matlab对二值图像进行轮廓提取

    本文主要总结一下在matlab中可用于进行轮廓提取的函数。

1 bwperim

    根据参考资料[2]的提示,可以使用bwperim()函数进行轮廓提取,具体代码如下:

%读取原图
im = imread( filepath );              
imshow(im);
title('原图');                       

% 转二值图像
bw = im2bw( im );                       

 %轮廓提取   
contour = bwperim(bw);                  
figure
imshow(contour);
title('轮廓')

    原图和所提取的轮廓分别如图1和图2所示。

使用Matlab对二值图像进行轮廓提取_第1张图片

                   图1 原图

使用Matlab对二值图像进行轮廓提取_第2张图片
                    图2 轮廓

2 edge

    可以借助edge()函数进行边界检测,算子可以选择canny,soble等等。具体代码如下:

%读取原图
im = imread( filepath );              
imshow(im);
title('原图');                       

% 转二值图像
bw = im2bw( im );                       
% 边界检测
contour = edge(bw ,'canny');
figure
imshow(contour);
title('边界')
    对图1的检测效果如图3所示:

使用Matlab对二值图像进行轮廓提取_第3张图片
                       图3 edge检测结果


参考资料

[1]轮廓提取

[2]matlab 二值图像 外轮廓提取

[3]matlab 二进制图像轮廓提取

你可能感兴趣的:(使用Matlab对二值图像进行轮廓提取)