计算机科学与通信工程学院实验报告课程图像处理实验题目图像分割1.引言图像分割是一种重要的图像分析技术。在对图像的研究和应用中,人们往往只对图像中的特定某一部分感兴趣,他们一般对应着图像中某些特定的区域。为了识别它们,可以把他们从图像中分离提取出来。2.基本知识典型的图像分割方法可以分为基于阈值的方法、基于边缘的方法和基于区域的分割方法。灰度阈值法将图片灰度划分为不同等级,用设置灰度阈值的方法确定有意义的区域。它是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换:其中,T为阈值,对于物体的图像元素g(i,j)=1,对于背景的图像元素g(i,j)=0。由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。阈值确定后,将阈值与像素点的灰度值逐个进行比较,而且像素分割可对各像素并行地进行,分割的结果直接给出图像区域。图像边缘是图像识别中抽取图像特征的重要属性。是由于相邻像素间灰度值剧烈变化引起的。图像中边缘处像素的灰度值不连续,这种不连续性可通过求导数来检测到。对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。因此常用微分算子进行边缘检测。常用的一阶微分算子有Roberts算子、Prewitt算子和Sobel算子,二阶微分算子有Laplace算子和Kirsh算子等。在实际中各种微分算子常用小区域模板来表示,微分运算是利用模板和图像卷积来实现。这些算子对噪声敏感,只适合于噪声较小不太复杂的图像。水域分割是借鉴了形态学理论的分割方法,其本质是利用了图像的区域特征进行分割图像。将边缘检测与区域生长的优点相结合。3.功能分析及设计用全局阈值、OTSU及迭代法求阈值。结果如图2,3所示I=imread('i_boat_gray.bmp');[width,height]=size(I);%otsualgorithmlevel=graythresh(I);BW=im2bw(I,level);figureimshow(BW)%globalthresholdfori=1:widthforj=1:heightif(I(i,j)80)BW1(i,j)=0;elseBW1(i,j)=1;endendendfigureimshow(BW1)%迭代求阈值I=double(I);T=(min(I(:))+max(I(:)))/2;done=false;i=0;while~doner1=find(I=T);r2=find(IT);Tnew=(mean(I(r1))+mean(I(r2)))/2;done=abs(Tnew-T)1;T=Tnew;i=i+1;endI(r1)=0;I(r2)=1;Figure;imshow(I)用分水岭算法分割图像:center1=-10;center2=-center1;dist=sqrt(2*(2*center1)^2);radius=(dist/2)*1.4;lims=[floor(center1-1.2*radius)ceil(center2+1.2*radius)];[x,y]=meshgrid(lims(1):lims(2));bw1=sqrt((x-center1).^2+(y-center1).^2)=radius;bw2=sqrt((x-center2).^2+(y-center2).^2)=radius;bw=bw1|bw2;figure,imshow(bw,'InitialMagnification','fit'),title('二进制图像')D=bwdist(~bw);figure,imshow(D,[],'InitialMagnification','fit')title('距离变换')D=-D;D(~bw)=-Inf;L=watershed(D);rgb=label2rgb(L,'jet',[.5.5.5]);figure,imshow(rgb,'InitialMagnification','fit')title('分水岭方法')Sobel、Prewitt、Roberts等算子的边缘提取算法。a=imread('d:\skull.png');bw1=edge(a,'sobel');bw2=edge(a,'prewitt');bw3=edge(a,'roberts');bw4=edge(a,'log');figureimshow(a)figuresubplot(2,2,1)imshow(bw1)xlabel('soble')subplot(2,2,2)imshow(bw2)xlabel('prewitt')subplot(2,2,3)imshow(bw3)xlabel('roberts')subplot(2,2,4)imshow(bw4)xlabel('log')用形态学方法:BW1=imread('circbw.tif');figureimshow(BW1)SE=strel('arbitrary',eye(5));BW2=imerode(BW1,SE);figureimshow(BW2)BW3=imdilate(BW1,SE);figureimshow(BW3)BW4=imopen(BW1,SE);figure,imshow(BW4)BW4=imclose(BW1,SE);figure,imshow(BW4)4.实验结果与分析原图:图1图2图3图4用分水岭算法分割图像图5三种算子分割原图图6图7图8图95.总结与体会通过相关函数的调用增加了自己对于matlab的掌握,对数字图像处理有了更加熟悉的了解。在学习过程中有不懂的地方便去询问同学,也从优秀的同学那里学到了许多东西。但自己更应询问老师,从老师那里可以学到更多的东西。