MATLAB图像分割和形态学处理
一、实验目的
- 掌握图像分割的基本方法。
- 掌握形态学处理的基本方法。
- 学会使用MATLAB编程实现上述方法。
二、实验任务
(1)编程实现基于阈值的图像分割方法和边缘检测方法。
(2)编程实现膨胀、腐蚀方法。
(3)编程实现开运算和闭运算的方法。
(4)编程实现提取骨架和细化的方法。
三、实验配套的主要仪器设备及台(套)数
教师示范用投影仪一台
微型计算机每个学生一台
四、报告要求
记录每一步的实验过程。
五、实验记录
5.1阈值图像分割方法1——点检测
5.1.1程序
clc
clear
data = imread('lianzipoint.jpg');
w = [-1 -1 -1; -1 8 -1; -1 -1 -1]
g =abs(imfilter(double(data),w));
t =max(g(:));
g1=(g>=t);
[m n]=find(g1)
figure
imshow(data)
hold on
plot(n,m,'ro')
g1=(g>=t-200);
[m n]=find(g1)
figure
imshow(data)
hold on
plot(n,m,'ro')
g1=(g>=t-800);
[m n]=find(g1)
figure
imshow(data)
hold on
plot(n,m,'ro')
5.1.2 效果
![v2-1463112d719a91b0b58bafb667b2cafd_b.jpg](https://img-blog.csdnimg.cn/img_convert/49cbb965cf6830167b9b11b0bd03642c.png)
![v2-650d7cf11ea8118ca6a582ea32f06a3d_b.jpg](https://img-blog.csdnimg.cn/img_convert/c14dae48cb0194df71815137380be8f0.png)
![v2-577dce77955a5c0e5fd6e4aa6ab411df_b.jpg](https://img-blog.csdnimg.cn/img_convert/9637aaf0a05595681af9c14084ead367.png)
分析:随着阈值的减小,所检测出的点越来越多
5.2 阈值分割方法2——线检测
5.2.1程序
clc
clear
data = imread('xian.jpg');
subplot(221),imshow(data);
title('检测指定方向线的原始图像');
w = [2 -1 -1; -1 2 -1; -1 -1 2];
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 处理效果
![v2-329eb113c146334ffbcf9d2e131bb25c_b.jpg](https://img-blog.csdnimg.cn/img_convert/0613be3d850e44025726aa830ac618ac.png)
分析:-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 -1 0 86 -1 0 1 87 0 1 2];
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 -2 95 1 0 -1 96 2 1 0];
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 效果
![v2-53e922c84e99378653707e1f7e783f7c_b.jpg](https://img-blog.csdnimg.cn/img_convert/4dd89794a1a3c20f890598f2543bcbc9.png)
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('g sobel default');
[g_log_default,tlog]=edge(f,'log');
figure
imshow(g_log_default);
title('g log default');
[g_canny_default,tc]=edge(f,'canny');
figure,imshow(g_canny_default);
title('g canny default');
g_sobel_best=edge(f,'sobel',0.25);
figure,imshow(g_sobel_best);
title('g sobel best');
g_log_best=edge(f,'log',0.003,2.25);
figure,imshow(g_log_best);
title('g log best');
g_canny_best=edge(f,'canny',[0.04 0.10],1.5);
figure,imshow(g_canny_best);
title('g canny best');
5.3.2.1 效果
![v2-41f311a687c637ae63f8eedfc633bd90_b.jpg](https://img-blog.csdnimg.cn/img_convert/5864752183cabc2ec54f08706e428337.png)
![v2-8f89d7d6c30cf0817d8144965c7ca3c6_b.jpg](https://img-blog.csdnimg.cn/img_convert/42dc1587638278ad3e764cc51e332621.png)
![v2-b424b421e2b1a89c93ba2c1d0cff7f49_b.jpg](https://img-blog.csdnimg.cn/img_convert/1ab3fd637228a9ef3c370c03296ec8fd.png)
![v2-1f3aacde3845db303625fae01c48ab2e_b.jpg](https://img-blog.csdnimg.cn/img_convert/3e3c99f09e2f9d911251e9a99e8605ae.png)
![v2-415a08def2166fd010659ed0add2daff_b.jpg](https://img-blog.csdnimg.cn/img_convert/dffc2425f33b18e7507b0182a2304091.png)
![v2-a8cdce822a491b04182b352afda53c23_b.jpg](https://img-blog.csdnimg.cn/img_convert/ca907e8d11361515a2c12547d2fb3607.png)
5.2 编程实现膨胀和腐蚀
5.2.1 膨胀
5.2.1.1程序
clc
clear
A1=imread('beitie.jpg');
A1 =im2bw(A1);
B=[1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1];
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 效果
![v2-9b8e66e2d8649d736f761b485db41770_b.jpg](https://img-blog.csdnimg.cn/img_convert/b9781d628a603e2cd25b42763400f2fa.png)
![v2-05210894e86206cfc12f05b2a69fda0e_b.jpg](https://img-blog.csdnimg.cn/img_convert/8689d321c513cadd3b94186bfc270e5d.png)
![v2-633f96359821f4a11e526d11c92f51dd_b.jpg](https://img-blog.csdnimg.cn/img_convert/4eee52474151dc6f0df09ad74d9fec09.png)
![v2-1248b04de089a67c4073a44822f7b7ef_b.jpg](https://img-blog.csdnimg.cn/img_convert/e008bc06b2bcec10ac225c6f8f7b8659.png)
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 效果
![v2-6b7fcbe09fefc914803eff16f18eda25_b.jpg](https://img-blog.csdnimg.cn/img_convert/cedfd0dfc82119df6e1537b3eb20b111.png)
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 效果
![v2-fb0f49ed52d060b387dd556c8ec88714_b.jpg](https://img-blog.csdnimg.cn/img_convert/6b608b4c21f113f14515236903282fb4.png)
![v2-22f8461e288a75e9b9b482e45a264339_b.jpg](https://img-blog.csdnimg.cn/img_convert/e145ee316007584651ea5da8595378c2.png)
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 效果
![v2-4bb275224c9319cfa8878611771563a9_b.jpg](https://img-blog.csdnimg.cn/img_convert/2c22d87889c07d3fbf3057952ffe842d.png)
![v2-d091f997e07b3ebf42113dcfe67e80c3_b.jpg](https://img-blog.csdnimg.cn/img_convert/344df25b201ee2dde9cd00ca21faa491.png)
![v2-b40faa0131618fd36c6e5d4e216d9f27_b.jpg](https://img-blog.csdnimg.cn/img_convert/e7844012e9c654f9743c171d9b3be137.png)
![v2-d90bd47e74d300f142203677b62ff662_b.jpg](https://img-blog.csdnimg.cn/img_convert/66cd658b343d86a209149525e1ceccdc.png)
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('骨架提取无穷大次');
for k=1:5
g3=g3&~endpoints(g3);
end
figure,imshow(g3);
title('骨架提取并消除毛刺');
5.4.1.2效果
![v2-ac6c97acd152272f0f96bd92f276c001_b.jpg](https://img-blog.csdnimg.cn/img_convert/1e2e03b18a87de7ed5d48b3e2975dbe3.png)
![v2-964696afeffa95908c7acdf27a46a757_b.jpg](https://img-blog.csdnimg.cn/img_convert/4ac4078a3cdf946976db95149e5e7b30.png)
![v2-8d7270bd3ae112ea05b4c1a609310ecb_b.jpg](https://img-blog.csdnimg.cn/img_convert/b8fa7afa2e9bb4b65e12a80faffeb311.png)
![v2-721f04fae4f28fecf0a60067df068f2e_b.jpg](https://img-blog.csdnimg.cn/img_convert/546626ddbfb210f5cbb0bfe6ea8d5b58.png)
![v2-c5dd857ffce095203d9ff47d45873d5c_b.jpg](https://img-blog.csdnimg.cn/img_convert/4ac4cce97ae3313aff9d9b89e4bcc396.png)
![v2-3d3a85391a75e8b4486c69ce1a0d0912_b.jpg](https://img-blog.csdnimg.cn/img_convert/4cf934c27afa58a75e1493d88ab2f0af.png)
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 效果
![v2-2530a6ca714b8fe7a8c846a55aeb0b13_b.jpg](https://img-blog.csdnimg.cn/img_convert/eb58190ddc4ec7430f027cd8c913a87f.png)
![v2-d358f37e2bca28432a8fb5aacce7a6a6_b.jpg](https://img-blog.csdnimg.cn/img_convert/b4dfa4e9167c0ffc3cb4a1d17f9067d8.png)
![v2-8ef89d0fc7ec185d4adba3c180abad3c_b.jpg](https://img-blog.csdnimg.cn/img_convert/95d75fdcddae8e890e2c3d57d5252ab1.png)
![v2-8d1928c9b7c738a10dd5605c06ac844e_b.jpg](https://img-blog.csdnimg.cn/img_convert/fd8b43868bc1e51561939b6464091834.png)