您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 股票报告 > 图像分割和形态学处理与MATLAB实现
-1-实验图像分割和形态学处理一、实验目的1、掌握图像分割的基本方法。2、掌握形态学处理的基本方法。3、学会使用MATLAB编程实现上述方法。二、实验任务(1)编程实现基于阈值的图像分割方法和边缘检测方法。(2)编程实现膨胀、腐蚀方法。(3)编程实现开运算和闭运算的方法。(4)编程实现提取骨架和细化的方法。三、实验配套的主要仪器设备及台(套)数教师示范用投影仪一台微型计算机每个学生一台四、报告要求记录每一步的实验过程。五、实验记录5.1阈值图像分割方法1——点检测5.1.1程序clccleardata=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)figureimshow(data)holdonplot(n,m,'ro')g1=(g=t-200);[mn]=find(g1)figureimshow(data)holdonplot(n,m,'ro')g1=(g=t-800);[mn]=find(g1)-2-figureimshow(data)holdonplot(n,m,'ro')5.1.2效果分析:随着阈值的减小,所检测出的点越来越多5.2阈值分割方法2——线检测5.2.1程序clccleardata=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度检测后右下角后放大图');-3-5.2.2处理效果分析:-45度方向上的直线,经过处理后效果明显,其他方向上的线比较模糊。5.3阈值分割方法3——边缘检测5.3.1程序clcclearf=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');-4-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程序clcclearf=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');figureimshow(g_log_default);-5-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效果-6-5.2编程实现膨胀和腐蚀5.2.1膨胀5.2.1.1程序clcclearA1=imread('beitie.jpg');A1=im2bw(A1);B=[1111111111111111];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次膨胀后的图像');-7-5.2.1.2效果5.2.2腐蚀5.2.2.1程序clcclearA1=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效果-8-5.3编程实现开运算和闭运算5.3.1开运算5.3.1.1程序clcclearf=imread('beitie.jpg');f=im2bw(f);%se=strel('square',5');%方型结构元素se=strel('disk',5');%圆盘型结构元素imshow(f);%原图像title('运算原始图像')fo=imopen(f,se);figureimshow(fo);title('直接开运算');5.3.1.2效果5.3.2闭运算5.3.2.1程序clcclearf=imread('beitie.jpg');f=im2bw(f);figureimshow(f);%原图像title('原始图像');-9-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效果-10-5.4编程实现提取骨架和细化5.4.1提取骨架5.4.1.1程序clcclearf=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:5g3=g3&~endpoints(g3);endfigure,imshow(g3);title('骨架提取并消除毛刺');5.4.1.2效果-11-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效果
本文标题:图像分割和形态学处理与MATLAB实现
链接地址:https://www.777doc.com/doc-5891463 .html