资源描述:
《图像分割matlab代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、图像分割Matlab代码(一)图像边缘检测不同方法比较将Roberts、Sobel、Prewitt、LOG、Canny算子等经典图像分割算法对灰度图像分割的结果进行比较。Matlab代码如下:%%图像边缘检测不同方法比较%Roberts、Sobel、Prewitt、LOG、Canny算子对灰度图像分割的结果比较clc;clearall;closeall;f=imread('8_256_lena.bmp','bmp');subplot(2,3,1);subimage(f);title('原始图像');[g,t]=
2、edge(f,'roberts',[],'both');subplot(2,3,2);subimage(g);title('Roberts算子对图像分割的结果');[g,t]=edge(f,'sobel',[],'both');subplot(2,3,3);subimage(g);title('Sobel算子对图像分割的结果');[g,t]=edge(f,'prewitt',[],'both');subplot(2,3,4);subimage(g);title('Prewitt算子对图像分割的结果');[g,t
3、]=edge(f,'log');subplot(2,3,5);subimage(g);title('LOG算子对图像分割的结果');[g,t]=edge(f,'canny');subplot(2,3,6);subimage(g);title('Canny算子对图像分割的结果');(二)区域生长法分割图像区域生长法分割图像,matlab代码如下:%%区域生长法分割图像clc;clearall;closeall;f=imread('rice_1.bmp','bmp');%f=imread('rice.png','p
4、ng');%f=imread('8_256_lena.bmp','bmp');subplot(1,2,1);subimage(f);%选择三个种子点seedx=[63,10,85];%rice图的生长点seedy=[30,56,60];%seedx=[100,150,227];%lena图的生长点%seedy=[56,130,189];holdonplot(seedx,seedy,'gs','linewidth',1);title('原始图像及种子点位置');f=double(f);markerim=f==f(
5、seedy(1),seedx(1));fori=2:length(seedx)markerim=markerim
6、(f==f(seedy(i),seedx(i)));end%3个种子点区域的阈值thresh=[12,6,12];maskim=zeros(size(f));fori=1:length(seedx)g=abs(f-f(seedy(i),seedx(i)))<=thresh(i);maskim=maskim
7、g;end[g,nr]=bwlabel(imreconstruct(markerim,mask
8、im),8);%g=mat2gray(g);%以灰度级显示,注释掉此行以二值图像显示subplot(1,2,2);subimage(g);title('三个种子点区域生长分割结果');(三)迭代阈值选择法二值化图像与Otsu阈值选择法二值化图像比较迭代阈值选择法二值化图像与Otsu阈值选择法二值化图像比较的matlab代码如下:%%迭代阈值选择法二值化图像与Otsu阈值选择法二值化图像比较clc;clearall;closeall;f=imread('8_256_lena.bmp','bmp');subplot
9、(2,2,1);subimage(f);title('原始图像');f=double(f);T=(min(f(:))+max(f(:)))/2;done=false;i=0;while~doner1=find(f<=T);r2=find(f>T);Tnew=(mean(f(r1))+mean(f(r2)))/2;done=abs(Tnew-T)<1;T=Tnew;i=i+1;endf(r1)=0;f(r2)=1;subplot(2,2,2);subimage(f);title('迭代阈值二值化图像图像');f=
10、imread('8_256_lena.bmp','bmp');subplot(2,2,3);subimage(f);title('原始图像');T=graythresh(f);g=im2bw(f,T);subplot(2,2,4);subimage(g);title('Otsu方法二值化图像');