区域生长法的基本思想:
将具有相似性质的像素集合起来构成区域。具体说来,先对每一个需要分割的区域找一个种子像素作为生长起点,然后根据某种事先确定的生长或相似准则,将种子像素周围邻域中与种子像素具有相同或相似性质的像素合并到种子像素所在区域。此后,将这些新像素当作新的种子像素继续进行上面的过程,直至再没有满足条件的像素可以被包括进来为止。
区域生长法的一个关键是选择合适的生长或相似准则,大部分区域生长准则使用图像的局部性质。生长准则可以根据不同的原则制定,而使用不同的生长准则会影响到区域生长法的过程和效果。基本的生长准则和方法主要有:1)基于区域灰度差;2)基于区域内灰度分布统计性质;3)基于区域形状。
附代码:
I=imread('mri1.jpg');
imshow(I),title('原始图像');
%区域生长算法
I=double(I)/255;
[M,N]=size(I);
[y,x]=getpts;
x1=round(x);
y1=round(y);
seed=I(x1,y1);
Y =ones(M,N);
Y(x1,y1)=0;
sum=seed;
suit=1;
count=1;
threshold=0.0625;
while count>0
s=0;
count=0;
for i=1:M
for j=1:N
if Y(i,j)==0
if (i-1)>0&(i+1)<(M+1)&(j-1)>0&(j+1)<(N+1)
for u = -1:1
for v = -1:1
if Y(i+u,j+v)==1&abs(I(i+u,j+v)-seed)<=threshold
Y(i+u,j+v)=0;
count=count+1;
s=s+I(i+u,j+v);
end
end
end
end
end
end
end
suit=suit+count;
sum=sum+s;
seed=sum/suit;
end
figure,subplot(131);imshow(I),title('原始图像');
subplot(132);imshow(Y);title('初分割的图像');
clean=bwareaopen(Y,50,4);
subplot(133);imshow(clean);title('处理后的图像');
J=edge(clean,'canny');
figure,subplot(121);imshow(J),title('脑灰质边缘');
C=[1 0 0];
r=I;g=I;b=I;
r(J)=C(1);g(J)=C(2);b(J)=C(3);
g2=cat(3,r,g,b);
subplot(122);imshow(g2),title('红线勾出脑灰质');
MRI1结果参见图 1-6:






生长准测可以根据不同的原则制定,而使用不同的生长准测会影响到区域生长法的过程和效果,进而影响分割效果。在选取种子时出现种子选取不正确而导致边缘勾勒错误的情况。种子像素的选取也是区域生长法的关键,要想分割提取脑白质,种子像素就要选在脑白质里,要想分割提取脑灰质,种子像素就要选在脑灰质里。
边缘勾勒时会出现不连续的情况,只是因为图像过小,放大后不连续情况消失。