matlab中的分水岭算法

matlab中的分水岭算法,matlab,report,image-segmentation,watershed,Matlab,Report,Image Segmentation,Watershed,任何人都知道如何在matlab中编写函数来分割单元并计算平均值 单元格区域是否使用? 任何帮助都将不胜感激。谢谢大家! 这是一张酵母细胞的图片 请参见“图像处理工具箱”和“Steve on Image Processing”博客上的关于细胞分割的内容。这里有一种使用分水岭分割图像的方法。你还可以做更多的事情(例如,如果细胞还没有完成胞质分裂,就将细胞与两个细胞核融合),但是下面的步骤应该会给你一个初步的想法 (1) 确定细胞背景阈值、细胞核阈值 %# read image img = imrea

任何人都知道如何在matlab中编写函数来分割单元并计算平均值 单元格区域是否使用? 任何帮助都将不胜感激。谢谢大家!

这是一张酵母细胞的图片


请参见“图像处理工具箱”和“Steve on Image Processing”博客上的关于细胞分割的内容。

这里有一种使用分水岭分割图像的方法。你还可以做更多的事情(例如,如果细胞还没有完成胞质分裂,就将细胞与两个细胞核融合),但是下面的步骤应该会给你一个初步的想法

(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) 现在,您可以使用标签图像提取所需的统计信息