MATLAB获取图像轮廓:两种方法对比

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

这个函数的局限性在于, 它不仅提取外轮廓, 对图形区域内部的孔洞所围成的内部边缘也提取出来。如果想只得到外形轮廓,则需要先进行填洞操作,后进行膨胀操作,去除孔、洞。填洞为imfill。

IBW = ~BW;F1 = imfill(IBW,'holes');

SE = ones(3);F2 = imdilate(F1,SE,'same');B

W3 = bwperim(F2);

%显示图像:

subplot(1,2,1);imshow(I);title('original iamge');

subplot(1,2,2), imshow(BW3);title('operated bwperim');

 

2. edge方法适用于灰度图像。

edge的语法较为简单。Bw = edge(I,‘methodname’)%第一个参数为要提取轮廓的图像,第二个参数为使用的算子。不同算子提取出来的效果略有不同。

第一种:SOBEL算子。

I=imread('lena.bmp');%提取图像

BW1=edge(I,'sobel'); %用SOBEL算子进行边缘检测

figure;

subplot(1,2,1), imshow(I);title('original image');

subplot(1,2,2), imshow(BW1);title('sobel');

第二种:Roberts算子。

I=imread('lena.bmp');%  提取图像

BW2=edge(I,'roberts');%用Roberts算子进行边缘检测

figure;

subplot(1,2,1), imshow(I);title('original image');

subplot(1,2,2), imshow(BW2);title('roberts');

第三种:prewitt算子。

I=imread('lena.bmp');%  提取图像

BW3=edge(I,'prewitt'); %用prewitt算子进行边缘检测

figure;

subplot(1,2,1), imshow(I);title('original image');

subplot(1,2,2), imshow(BW3);title('prewitt');

第四种:log算子。

I=imread('lena.bmp');%  提取图像

BW4=edge(I,'log'); %用log算子进行边缘检测

figure;subplot(1,2,1), imshow(I);title('original image');subplot(1,2,2), imshow(BW4);title('log');

第五种:canny算子。

I=imread('lena.bmp');%  提取图像

BW5=edge(I,'canny'); %用canny算子进行边缘检测

figure;

subplot(1,2,1), imshow(I);title('original image');subplot(1,2,2), imshow(BW5);title('canny');

第六种:加噪音提取。

I=imread('lena.bmp');%  提取图像

h=fspecial('gaussian',5);BW6=edge(I,'canny');

figure;

subplot(1,2,1),imshow(I);title('original image');

subplot(1,2,2), imshow(BW6);title('gasussian&canny');

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空