图像分割和形态学处理与MATLAB实现.docx
- 文档编号:3042610
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:19
- 大小:1.07MB
图像分割和形态学处理与MATLAB实现.docx
《图像分割和形态学处理与MATLAB实现.docx》由会员分享,可在线阅读,更多相关《图像分割和形态学处理与MATLAB实现.docx(19页珍藏版)》请在冰豆网上搜索。
图像分割和形态学处理与MATLAB实现
实验图像分割和形态学处理
一、实验目的
1、掌握图像分割的基本方法。
2、掌握形态学处理的基本方法。
3、学会使用MATLAB编程实现上述方法。
二、实验任务
(1)编程实现基于阈值的图像分割方法和边缘检测方法。
(2)编程实现膨胀、腐蚀方法。
(3)编程实现开运算和闭运算的方法。
(4)编程实现提取骨架和细化的方法。
三、实验配套的主要仪器设备及台(套)数
教师示范用投影仪一台
微型计算机每个学生一台
四、报告要求
记录每一步的实验过程。
五、实验记录
5.1阈值图像分割方法1——点检测
5.1.1程序
clc
clear
data=imread('lianzipoint.jpg');
w=[-1-1-1;-18-1;-1-1-1]
g=abs(imfilter(double(data),w));
t=max(g(:
));
g1=(g>=t);
[mn]=find(g1)
figure
imshow(data)
holdon
plot(n,m,'ro')
g1=(g>=t-200);
[mn]=find(g1)
figure
imshow(data)
holdon
plot(n,m,'ro')
g1=(g>=t-800);
[mn]=find(g1)
figure
imshow(data)
holdon
plot(n,m,'ro')
5.1.2效果
分析:
随着阈值的减小,所检测出的点越来越多
5.2阈值分割方法2——线检测
5.2.1程序
clc
clear
data=imread('xian.jpg');
subplot(221),imshow(data);
title('检测指定方向线的原始图像');
w=[2-1-1;-12-1;-1-12];
g=abs(imfilter(double(data),w));
subplot(222),imshow(g,[])
title('使用-45度检测器处理后的图像');
gtop=g(1:
40,1:
40);
gtop=pixeldup(gtop,4);%piceldup函数是将图片放大相应倍数
subplot(223),imshow(gtop,[])
title('-45度检测后左上角放大图');
gbot=g(end-40:
end,end-40:
end);
gbot=pixeldup(gbot,4);
subplot(224),imshow(gbot,[])
title('-45度检测后右下角后放大图');
5.2.2处理效果
分析:
-45度方向上的直线,经过处理后效果明显,其他方向上的线比较模糊。
5.3阈值分割方法3——边缘检测
5.3.1程序
clc
clear
f=imread('bianyuan.jpg');
f=rgb2gray(f);
subplot(321),imshow(f);
title('sobel检测的原始图像');
[gv,t]=edge(f,'sobel','vertical');
%斜线因为具有垂直分量,所以也能够被检测出来
subplot(322),imshow(gv);
title('sobel垂直方向检测后图像');
gv=edge(f,'sobel',0.15,'vertical');
subplot(323),imshow(gv);
title('sobel垂直检测0.15阈值后图像');
gboth=edge(f,'sobel',0.15);
subplot(324),imshow(gboth);
title('sobel水平垂直方向阈值0.15后图像');
w45=[-2-1086-10187012];
g45=imfilter(double(f),w45,'replicate');
T=0.3*max(abs(g45(:
)));
g45=g45>=T;
subplot(325),imshow(g45);
title('sobel正45度方向上检测图');
w_45=[0-1-29510-196210];
g_45=imfilter(double(f),w_45,'replicate');
T=0.3*max(abs(g_45(:
)));
g_45=g_45>=T;
subplot(326),imshow(g_45);
title('sobel负45度方向上检测图');
5.3.2效果
5.3.2边缘检测器的比较
5.3.2.1程序
clc
clear
f=imread('dalouj.jpg');
imshow(f)
[g_sobel_default,ts]=edge(f,'sobel');
imshow(g_sobel_default);
title('gsobeldefault');
[g_log_default,tlog]=edge(f,'log');
figure
imshow(g_log_default);
title('glogdefault');
[g_canny_default,tc]=edge(f,'canny');
figure,imshow(g_canny_default);
title('gcannydefault');
g_sobel_best=edge(f,'sobel',0.25);
figure,imshow(g_sobel_best);
title('gsobelbest');
g_log_best=edge(f,'log',0.003,2.25);
figure,imshow(g_log_best);
title('glogbest');
g_canny_best=edge(f,'canny',[0.040.10],1.5);
figure,imshow(g_canny_best);
title('gcannybest');
5.3.2.1效果
5.2编程实现膨胀和腐蚀
5.2.1膨胀
5.2.1.1程序
clc
clear
A1=imread('beitie.jpg');
A1=im2bw(A1);
B=[1111
1111
1111
1111];
A2=imdilate(A1,B);%图像A1被结构元素B膨胀
A3=imdilate(A2,B);
A4=imdilate(A3,B);
figure,imshow(A1);
title('imdilate膨胀原始图像');
figure,imshow(A2);
title('使用B后1次膨胀后的图像');
figure,imshow(A3);
title('使用B后2次膨胀后的图像');
figure,imshow(A4);
title('使用B后3次膨胀后的图像');
5.2.1.2效果
5.2.2腐蚀
5.2.2.1程序
clc
clear
A1=imread('xian.jpg');
A1=im2bw(A1);
figure,imshow(A1);
title('原始图像');
se1=strel('disk',2);
A2=imerode(A1,se1);
figure,imshow(A2);
title('用disk
(2)腐蚀后的图像');
se2=strel('disk',4);
A3=imerode(A1,se2);
figure,imshow(A3);
title('用disk(4)腐蚀后的图像');
se3=strel('disk',6);
A4=imerode(A1,se3);
figure,imshow(A4);
title('用disk(6)腐蚀后的图像');
5.2.2.2效果
5.3编程实现开运算和闭运算
5.3.1开运算
5.3.1.1程序
clc
clear
f=imread('beitie.jpg');
f=im2bw(f);
%se=strel('square',5');%方型结构元素
se=strel('disk',5');%圆盘型结构元素
imshow(f);%原图像
title('运算原始图像')
fo=imopen(f,se);
figure
imshow(fo);
title('直接开运算');
5.3.1.2效果
5.3.2闭运算
5.3.2.1程序
clc
clear
f=imread('beitie.jpg');
f=im2bw(f);
figure
imshow(f);%原图像
title('原始图像');
se=strel('disk',5');%圆盘型结构元素
fc=imclose(f,se);%直接闭运算
figure,imshow(fc);
title('直接闭运算');
foc=imclose(fc,se);%先开后闭运算
figure,imshow(foc);
title('先开后闭运算');
fco=imopen(fc,se);%先闭后开运算
figure,imshow(fco);
title('先闭后开运算');
5.3.2.2效果
5.4编程实现提取骨架和细化
5.4.1提取骨架
5.4.1.1程序
clc
clear
f=imread('guge.jpg');
f=im2bw(f);
figure,imshow(f);
title('骨架提取原图');
g1=bwmorph(f,'skel',1);
figure,imshow(g1);
title('骨架提取1次');
g2=bwmorph(f,'skel',5);
figure,imshow(g2);
title('骨架提取5次');
g3=bwmorph(f,'skel',20);
figure,imshow(g3);
title('骨架提取20次');
g4=bwmorph(f,'skel',Inf);
figure,imshow(g4);
title('骨架提取无穷大次');
fork=1:
5
g3=g3&~endpoints(g3);
end
figure,imshow(g3);
title('骨架提取并消除毛刺');
5.4.1.2效果
5.4.2细化
5.4.2.1程序
f=imread('zhiwen.jpg');
f=im2bw(f);
f=~f;
figure,imshow(f);
title('指纹细化原图');
g1=bwmorph(f,'thin',1);
figure,imshow(g1);
title('指纹细化1次');
g2=bwmorph(f,'thin',5);
figure,imshow(g2);
title('指纹细化5次');
g3=bwmorph(f,'thin',Inf);
figure,imshow(g3);
title('指纹细化无穷大次');
5.4.2.2效果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 分割 形态学 处理 MATLAB 实现