连接物体分割问题(truncated watershed method)

来源:互联网 发布:制作动画人物的软件 编辑:程序博客网 时间:2024/05/22 17:45

连接物体分割问题(truncated watershed method)

连接物体分割在医学图像处理当中的一个非常常见的应用,如处理细胞粘连,本文就一个具体例子试图与大伙探讨一下这个有趣的问题(注:图片由会友刘yan?提供)。程序代码并不复杂,
         
        图(1)            
  
图(2)
      
图(3)
 
首先对输入图片(图1)进行预处理得到图2, 对图2做分水岭分割,得到图3。图3已经非常接近我们需要的结果颜色较亮的发条可以认为是应该去除的噪声, 对于该例子可以用利用面积信息(如regionprops函数)很轻易的去除掉得到想要的结果。
note: 与传统的分水岭分割不同(参见help watershed-->2d example),这里加入了一个很简单的修正语句:“invd_map(invd_map < -MIN_DIST) = -inf;”
有待改进的地方:
1.输出的结果不是很完美,如亮彩色的发条, 如何改进?各位有没有更好的办法?
2.关键语句中的MIN_DIST如何选择,在这里我用的是try&fail的方法得到40,有没有可能开发出自动选择该参数的方法?
3.各位有没有更简洁的办法?
代码(matlab):
function res = partition_jointObjs(im)%Effect: partition the joint objs into the originally independent obj.%inputs: %im:  input bw image%output:%res: integert matrix indicating the partitioned objs%Author: Su dongcai at 2011/12/28MIN_SIZE = 5;MIN_DIST = 40;%0. pre-process:im = im(:, :, 1);se = strel('disk', 5);im = ~im; im = imclose(im, se);im = imfill(im, 'holes');figure, imshow(im), title('smoothed image');%1. calculate the inverse distance mapinvd_map = -bwdist(~im);%truncate the distance map:min_dist = min(invd_map(:));invd_map(invd_map < -MIN_DIST) = -inf;invd_map(~im) = -inf;res = watershed(invd_map);%displaying:rgb = label2rgb(res);figure, imshow(rgb), title('partitioned image');