【问题标题】:watershed algorithm in matlabmatlab中的分水岭算法
【发布时间】:2011-07-14 10:46:40
【问题描述】:

任何人都知道如何在 matlab 中编写一个函数来分割单元格并计算平均值 单元格区域使用watershed algorithm? 任何帮助将非常感激。谢谢!

这是酵母细胞的图像

【问题讨论】:

    标签: matlab report image-segmentation watershed


    【解决方案1】:

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

    (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 来提取您想要的统计信息。

    【讨论】:

      【解决方案2】:

      请参阅图像处理工具箱中的 watershed 和“史蒂夫谈图像处理”博客上的细胞分割this post

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-29
        • 1970-01-01
        • 1970-01-01
        • 2018-10-26
        • 1970-01-01
        • 2016-07-31
        • 1970-01-01
        • 2019-06-06
        相关资源
        最近更新 更多