图像分割与边缘提取Matlab实现

图像分割是把图像分成各具特性的互不重叠的区域,并提取出感兴趣目标的技术和过程。是图像处理过渡到图像分析的关键步骤,也是一种基本的计算机视觉技术。

一、实验内容

利用边缘检测法、阈值分割法进行图像分割,并分析图像分割后的视觉效果。

二、实验的实现

1、主要设计思想

边缘检测:Matlab存在相应边缘检测算子库,可以直接通过设置参数输入图像和算子名进行处理。
阈值检测:将输入图像转换为灰度值图像,根据灰度值设置不同阈值,通过设定不同的特征阈值,保留相应阈值以内的像素点,然后使用Matlab中提供的阈值分割函数,输入参数,图像和阈值来求得最终效果。

2、实现算法及程序流程图

process

3、源程序(包含必要的注释)

(1)图像边缘检测
pic=imread('D:\pic\HG.jpg'); %读取当前路径下的图像
I=rgb2gray(pic); %图像灰度化
 
dl1=edge(I,'sobel'); %对图像进行“Sobel”边缘提取
dl2=edge(I,'prewitt'); %对图像进行“Prewitt”边缘提取
dl3=edge(I,'roberts'); %对图像进行“Roberts”边缘提取
dl4=edge(I,'log'); %对图像进行“Laplace”边缘提取
dl5=edge(I,'canny'); %对图像进行“Canny”边缘提取
 
subplot(3,2,1); imshow(I); title('原图'); %输出原图像
subplot(3,2,2); imshow(dl1); title('索贝尔sobel算子');
subplot(3,2,3); imshow(dl2); title('普瑞维特算子');
subplot(3,2,4); imshow(dl3); title('罗伯特算子');
subplot(3,2,5); imshow(dl4); title('log算子');
subplot(3,2,6); imshow(dl5); title('canny算子');
(2)图像阈值分割
Img=imread('D:\pic\HG.jpg');       %读取当前路径下的图像
I1=rgb2gray(Img); %图像灰度化
subplot(2,3,1);imshow(I1);title('灰度图像');

grid on;                        %显示网格线
axis on;                        %显示坐标系
[m,n]=size(I1);                 %测量图像尺寸参数
GK=zeros(1,256);                %预创建存放灰度出现概率的向量
for k=0:255
	 GK(k+1)=length(find(I1==k))/(m*n);             %计算每级灰度出现的概率,将其存入GK中相应的位置
end
subplot(2,3,2),bar(0:255,GK,'g')                    %绘制直方图

title('灰度直方图')
xlabel('灰度值')
ylabel('出现概率')
I2=im2bw(I,120/255); 	
I3=im2bw(I,80/255);
I4=im2bw(I,160/255);
subplot(2,3,4),imshow(I2);title('直方图阈值T=120处理分割图像');
subplot(2,3,5),imshow(I3);title('直方图阈值T=80处理分割图像');
subplot(2,3,6),imshow(I4);title('直方图阈值T=160处理分割图像');

imwrite(I2,'05 直方图阈值120的分割图像.jpg');
imwrite(I3,'05 直方图阈值80的分割图像.jpg');
imwrite(I4,'05 直方图阈值160的分割图像.jpg');

grid on;                         %显示网格线
axis on;                         %显示坐标系

4、主要技术问题的处理方法

Roberts:又称为交叉微分算法,它是基于交叉差分的梯度算法,通过局部差分计算检测边缘线条。常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。其缺点是对边缘的定位不太准确,提取的边缘线条较粗。
Prewitt:Prewitt算子是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用 33 模板对区域内的像素值进行计算,而Robert算子的模板为 22,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像。
Sobel:Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。LoG:提取到了原图象大部分边缘信息,但是有很多非边缘区域。
Canny:比较完整的提取到了图像的边缘信息,但是出现太多非边缘信息。
基于点的全局阈值算法与其他几大类方法相比,算法时间复杂度较低,易于实现,适合应用于在线实时图像处理系统

5、实验结果及分析

边缘检测法进行图像分割

阈值分割法进行图像分割

本次实验图像构成简单,只有人像和简单的背景。采用双峰法计算每级灰度出现的概率绘制直方图,通过灰度直方图得知,图像灰度直方图两个峰尖的谷值大概在120的位置,所以将阈值设为120进行图像分割,可以分割出人物目标。然后将阈值设为80和160与之做对比,当阈值为80时分割出的图像信息丢失严重,已经无法辨别完整的人物目标;阈值信息位160时,留下了太多的目标外的信息,无法准确的定位分割目标。

  • 9
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值