1. 基于区域生长算法的图像分割原理
数字图像分割算法一般是基于灰度值的两个基本特性之一:不连续性和相似性。前一种性质的应用途径是基于图像灰度的不连续变化分割图像,比如图像的边缘。第二种性质的主要应用途径是依据实现指定的准则将图像分割为相似的区域。区域生长算法就是基于图像的第二种性质,即图像灰度值的相似性。
转载:http://blog.csdn.net/shenziheng1/article/details/50878911
1.1 基本公式
令R表示整幅图像区域,那么分割可以看成将区域R划分为n个子区域R1,,R2,......Rn的过程,并需要满足以下条件:
a: U(Ri) = R;
b: Ri是一个连通区域,i=1,2,3,......n;
c: Ri ∩ Rj = 空集,对于任何的i,j;都有i≠j;
d: P(Ri) = Ture, 对i=1,2,......n;
e: R(Pi U Rj) = False, i≠j;
正如“区域生长”的名字所暗示的:区域生长是根据一种事先定义的准则将像素或者子区域聚合成更大区域的过程,并且要充分保证分割后的区域满足a~e的条件。
1.2 区域生长算法设计思路
区域生长算法的设计主要由以下三点:生长种子点的确定,区域生长的条件,区域生长停止的条件。种子点的个数根据具体的问题可以选择一个或者多个,并且根据具体的问题不同可以采用完全自动确定或者人机交互确定。
区域生长的条件实际上就是根据像素灰度间的连续性而定义的一些相似性准则,而区域生长停止的条件定义了一个终止规则,基本上,在没有像素满足加入某个区域的条件的时候,区域生长就会停止。在算法里面,定义一个变量,最大像素灰度值距离reg_maxdist.当待加入像素点的灰度值和已经分割好的区域所有像素点的平均灰度值的差的绝对值小于或等于reg_maxdist时,该像素点加入到已经分割到的区域。相反,则区域生长算法停止。
在种子店1的4邻域连通像素中,即2、3、4、5点,像素点5的灰度值与种子点的灰度值最接近,所以像素点5被加入到分割区域中,并且像素点5会作为新的种子点执行后面的过程。在第二次循环过程中,由于待分析图像中,即2、3、4、6、7、8,像素7的灰度值和已经分割的区域(由1和5组成)的灰度均值10.5最接近,所以像素点7被加入到分割区域中。最后一幅图,示意了区域生长的方向(由浅入深)。
从上面的分析中,我们可以看出,在区域生长过程中,需要知道待分析像素点的编号(通过像素点的x和y坐标值来表示),同时还要知道这些待分析点的像素的灰度值。
1.3 区域生长算法伪代码
begin
初始化变量 pixdist = 0;
交互式选择一个种子点,并且初始化区域的灰度均值变量reg_mean为该种子点的灰度值。
while (pixdist < reg_maxdist)
将当前种子点的四邻域像素点加入到链表neg_list中;
分别计算neg_list中所有元素的灰度值和reg_mean差的绝对值,并且得到最小值的元素i(x,y).令pixdist = abs(neg_list(i,3)-reg_mean);
更新 reg_mean = (reg_mean*reg_size + neg_list(i,3))/(reg_size + 1);(注:reg_size表示分割好区域内像素点的数量)
将旧的种子点标记为已经分割好的区域像素点;
将i(x,y)当做新的种子点,并将新的种子点i(x,y)从链表neg_list中移除
end
end
1.4 基于MATLAB的区域生长算法设计
2. 算法实验分析
2.1 CT图像实验-分割肝脏实质
2.2 US图像实验-分割肝脏血管
分割不完整
过分割
对有明显边界的分割效果好
3.算法应用总结
1.对CT图像、MR图像以及所有的具有边界效应,或者是该区域与外界区域有明显差距的图像,分割效果很好。
2.对感兴趣区域与外接区域存在边缘连通现象的图像,分割效果很差。如超声图像,肝脏对超声的反应就是“均匀性”散点回声。这造成“基于邻域像素相似性”分割很难应用。阈值设置的小,造成分割不完整;阈值设置得太大,造成过分割现象。