发布于 2011-07-14 22:12:00
这里有一种使用分水岭分割图像的方法。你还可以做更多的事情(例如,如果两个核的细胞还没有完成胞质分裂,就将它们融合在一起),但下面的步骤应该会给你一个初步的想法。
(1)细胞背景阈值、细胞核阈值的确定
%# read image
img = imread('http://i.stack.imgur.com/nFDkX.png');
%# normalize to 0...1
imgN = double(img-min(img(:)))/(max(img(:)-min(img(:))));
th1=graythresh(imgN);
th2 = graythresh(imgN(imgN>th1));
cellMsk = imgN>th1;
nucMsk = imgN>th2;
figure,imshow(cellMsk+nucMsk,[])

(2)平滑原始图像(以避免过度分割),并将核作为最小值
[xx,yy]=ndgrid(-5:5,-5:5);
gf = exp((-xx.^2-yy.^2)/20);
filtImg = conv2(imgN,gf,'same');
figure,imshow(filtImg,[])
filtImgM = imimposemin(-filtImg,nucMsk);

(3)分水岭、遮罩单元和显示
ws = watershed(filtImgM);
ws(~cellMsk) = 0;
lblImg = bwlabel(ws);
figure,imshow(label2rgb(lblImg,'jet','k','shuffle'));

(4)现在您可以在已标记的图像上使用REGIONPROPS来提取所需的统计信息。
发布于 2011-07-14 18:54:52
请参阅图像处理工具箱中的watershed和“Steve on Image Processing”博客上的关于细胞分割的this post。
https://stackoverflow.com/questions/6691991
复制相似问题