Matlab医学图像分割区域生长

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验十医学图像分割(二)实验目的:1.了解图像分割的基本理论和方法;2.掌握阈值分割的方法和阈值的选择;3.掌握基于分水岭分割的原理和应用;实验内容:1.区域生长法利用图像像素间的相似性进行分割,调用regiongrow函数对图像weld.tif进行处理,注意参数中S(种子值),T(阈值)的选择对分割效果的影响。S=255,T=65和S=255T=150和S=150,T=65三组值进行处理,理解在区域生长法的原理。同时对liver.bmp,自己选择合适的S和T,以较好得分割出肝脏。代码1:closeall;f=imread('weld.tif');figure(1),imshow(f),title('原图');[g1,NR]=regiongrow(f,255,65);[g2,NR]=regiongrow(f,255,150);[g3,NR]=regiongrow(f,150,65);figure(2),imshow(g1),title('S=255,T=65');figure(3),imshow(g2),title('S=255,T=150');figure(4),imshow(g3),title('S=150,T=65');[y,x]=ginput();x=floor(x);y=floor(y);G=zeros(size(g));G(g3==g3(x,y))=255;结果:代码2:closeall;f=imread('liver1.bmp');figure(1),imshow(f),title('原图');g=regiongrow(f,255,135);%肝脏分离figure(2),imshow(g),title('S=255,T=135');[y,x]=ginput();x=floor(x);y=floor(y);G=zeros(size(g));G(g==g(x,y))=255;figure(3),imshow(G);结果:2.编写m文件,实现单一型或质心型区域生长算法。由用户通过ginput函数选择种子点,然后根据用户输入的阈值T进行区域生长。输入为:待分割的图片f和阈值T,输出为分割后的二值图片g。代码1:(单一型)function[a]=regiongrow2(f,T)imshow(f);se=[0,1,0;1,1,1;0,1,0];[y,x]=ginput();x=floor(x);y=floor(y);a=im2bw(zeros(size(f)));a(x,y)=1;while1b=imdilate(a,se);P=b-a;find(P);index=find(P);n=size(index);fori=1:nt=abs(f(x,y)-f(index(i)));ift=Tb(index(i))=0;P(index(i))=0;endenda=b;ifsum(sum(P))==0break;endend应用:f=imread('weld.tif');figure(1),imshow(f)g=regiongrow3(f,30);figure(2),imshow(g)代码2:(质心型)function[a]=regiongrow4(f,T)imshow(f);se=[0,1,0;1,1,1;0,1,0];[y,x]=ginput();x=floor(x);y=floor(y);a=im2bw(zeros(size(f)));a(x,y)=1;average=f(x,y);while1b=imdilate(a,se);P=b-a;index=find(P);n=size(index);fori=1:nt=abs(average-double(f(index(i))));ift=Tb(index(i))=0;P(index(i))=0;endenda=b;indexb=find(b);N=length(indexb);All=0;fori=1:NAll=All+double(f(indexb(i)));endaverage=All/N;ifsum(sum(P))==0break;endend结果:3.用课本中分水岭的距离变换分水岭分割、梯度分水岭分割和控制标记符分水岭分割对liver1和liver2图像进行分割,分析上述算法的特点和存在的问题,考虑如何进行改进?代码1:closeall;f=imread('liver1.bmp');figure(1),imshow(f);%g=im2bw(f,graythresh(f));[g,NR]=regiongrow(f,255,135);%肝脏分离figure(2),imshow(g);gc=~g;D=bwdist(gc);L=watershed(-D);w=L==0;figure(3),imshow(w);g2=g&~w;figure(5),imshow(g2);代码2:closeall;f=imread('liver1.bmp');F=regiongrow(f,255,135);%F=im2bw(f,graythresh(f));figure(1),imshow(F);h=fspecial('sobel');fd=double(f);g=sqrt(imfilter(fd,h,'replicate').^2+...imfilter(fd,h','replicate').^2);figure(2),imshow(g);L=watershed(g);wr=L==0;figure(3),imshow(wr);g2=imclose(imopen(g,ones(3,3)),ones(3,3));L2=watershed(g2);wr2=L2==0;f2=F;f2(wr2)=255;figure(4),imshow(f2);代码3:closeall;f=imread('liver1.bmp');F=regiongrow(f,255,135);%F=im2bw(f,graythresh(f));figure(1),imshow(F);h=fspecial('sobel');fd=double(f);g=sqrt(imfilter(fd,h,'replicate').^2+...imfilter(fd,h','replicate').^2);figure(2),imshow(g);L=watershed(g);wr=L==0;figure(3),imshow(wr);rm=imregionalmin(g);im=imextendedmin(f,2);fim=f;fim(im)=175;Lim=watershed(bwdist(im));em=Lim==0;figure(4),imshow(em);g2=imimposemin(g,im|em);L2=watershed(g2);f2=f;f2(L2==0)=255;figure(5),imshow(f2);实验报告:1.实验目的2.实验内容(部分可略写)每题分开写,并标明题号3.实验小结和体会小结:1、第一题重在理解S和T的涵义,若S是一个标量,则它定义一个亮度值,f中有着该值的所有点都变成种子;若T是标量,则它会定义一个全局阈值,阈值用来测试图像中的像素是否与该种子或8连接种子足够相似。2、第二题比较注重算法。用膨胀的方法解决四连接生长点的确定,即先膨胀再进行判断,直到没有出现新的生长点为止。效果与重建很像,但算法不同,适合不同的场合。3、第三题重在理解分水岭的原理,即基于距离变换找出分水岭。但对于梯度分水岭和控制标记符的分水岭分割不理解,需要听老师和其他同学的讲解。还有第二张liver2.bmp有点问题,需要用以前的图片。

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功