Glo*_*ove 8 matlab report image-segmentation watershed
谁知道如何在matlab中编写一个函数来分割细胞并使用分水岭算法计算平均细胞面积?任何帮助将非常感激.谢谢!
这是酵母细胞的图像

Jon*_*nas 13
这是使用分水岭分割图像的一种方法.你可以做更多的事情(例如,如果他们还没有完成胞质分裂,那么融合两个细胞核的细胞),但是下面的步骤应该给你一个第一个想法.
(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,[])
Run Code Online (Sandbox Code Playgroud)

(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);
Run Code Online (Sandbox Code Playgroud)

(3)流域,掩模细胞和显示器
ws = watershed(filtImgM);
ws(~cellMsk) = 0;
lblImg = bwlabel(ws);
figure,imshow(label2rgb(lblImg,'jet','k','shuffle'));
Run Code Online (Sandbox Code Playgroud)

(4)现在,您可以在标记图像上使用REGIONPROPS来提取所需的统计信息.