MATLAB图像分割和形态学处理

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

v2-650d7cf11ea8118ca6a582ea32f06a3d_b.jpg

v2-577dce77955a5c0e5fd6e4aa6ab411df_b.jpg


分析:随着阈值的减小,所检测出的点越来越多

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


分析:-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


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

v2-8f89d7d6c30cf0817d8144965c7ca3c6_b.jpg



v2-b424b421e2b1a89c93ba2c1d0cff7f49_b.jpg

v2-1f3aacde3845db303625fae01c48ab2e_b.jpg



v2-415a08def2166fd010659ed0add2daff_b.jpg

v2-a8cdce822a491b04182b352afda53c23_b.jpg


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

v2-05210894e86206cfc12f05b2a69fda0e_b.jpg

v2-633f96359821f4a11e526d11c92f51dd_b.jpg

v2-1248b04de089a67c4073a44822f7b7ef_b.jpg


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


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

v2-22f8461e288a75e9b9b482e45a264339_b.jpg


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

v2-d091f997e07b3ebf42113dcfe67e80c3_b.jpg


v2-b40faa0131618fd36c6e5d4e216d9f27_b.jpg

v2-d90bd47e74d300f142203677b62ff662_b.jpg

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

v2-964696afeffa95908c7acdf27a46a757_b.jpg

v2-8d7270bd3ae112ea05b4c1a609310ecb_b.jpg



v2-721f04fae4f28fecf0a60067df068f2e_b.jpg

v2-c5dd857ffce095203d9ff47d45873d5c_b.jpg

v2-3d3a85391a75e8b4486c69ce1a0d0912_b.jpg


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

v2-d358f37e2bca28432a8fb5aacce7a6a6_b.jpg

v2-8ef89d0fc7ec185d4adba3c180abad3c_b.jpg

v2-8d1928c9b7c738a10dd5605c06ac844e_b.jpg

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值