logo资料库

图像分割matlab代码.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
图像分割 Matlab 代码 (一)图像边缘检测不同方法比较 将 Roberts、Sobel、Prewitt、LOG、Canny 算子等经典图像分割算法对灰度图像 分割的结果进行比较。 Matlab 代码如下: %% 图像边缘检测不同方法比较 % Roberts、Sobel、Prewitt、LOG、Canny 算子对灰度图像分割的结果比较 clc; clear all; close all; f=imread('8_256_lena.bmp','bmp'); subplot(2,3,1); subimage(f);title('原始图像'); [g, t]=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]=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; clear all;
close all; f=imread('rice_1.bmp','bmp'); % f=imread('rice.png','png'); % 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]; hold on plot(seedx,seedy,'gs','linewidth',1); title('原始图像及种子点位置'); f=double(f); markerim=f==f(seedy(1),seedx(1)); for i=2:length(seedx) markerim=markerim|(f==f(seedy(i),seedx(i))); end %3 个种子点区域的阈值 thresh=[12,6,12]; maskim= zeros(size(f)); for i=1:length(seedx)
g=abs(f-f(seedy(i),seedx(i)))<=thresh(i); maskim=maskim|g; end [g,nr]=bwlabel(imreconstruct(markerim,maskim),8); % g=mat2gray(g);%以灰度级显示,注释掉此行以二值图像显示 subplot(1,2,2); subimage(g); title('三个种子点区域生长分割结果');
(三)迭代阈值选择法二值化图像与 Otsu 阈值选择法二值化图像比较 迭代阈值选择法二值化图像与 Otsu 阈值选择法二值化图像比较的 matlab 代码如 下: %% 迭代阈值选择法二值化图像与 Otsu 阈值选择法二值化图像比较 clc; clear all; close all; f=imread('8_256_lena.bmp','bmp'); subplot(2,2,1); subimage(f);title('原始图像'); f=double(f); T=(min(f(:))+max(f(:)))/2; done=false;
i=0; while ~done r1=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; end f(r1)=0; f(r2)=1; subplot(2,2,2); subimage(f);title('迭代阈值二值化图像图像'); f=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 方法二值化图像');
分享到:
收藏