【问题标题】:MATLAB image processing HELP!MATLAB图像处理帮助!
【发布时间】:2013-07-03 21:38:37
【问题描述】:

我正在尝试查找图像上某些区域的面积。

alt text http://img821.imageshack.us/img821/7541/cell1.jpg

例如,我想找到左上角的深色大区域的面积。 我想从图像中找到任何封闭几何的区域。

如何在 matlab 中做到这一点。

我在网上查了一下,我尝试了 regionprops(),但它没有识别出不同的区域。

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    使用“imfilter”过滤您的图像。使用“fspecial”来定义您的过滤器。然后使用活动轮廓模型来分割大对象。谷歌“活动轮廓 matlab”。使用“多边形”和面积函数来查找封闭轮廓的面积。

    【讨论】:

    • 我尝试了一些来自 mathworks 网站的代码来进行主动轮廓绘制。其中一些有效,但我无法获得任何区域,并且它不适用于小区域!我想先裁剪图片,以消除任何噪点,然后我使用 imadjust 稍微调整对比度。我需要任何例子来更好地理解它。
    • 您应该能够使用 [C,h] = contour(...) 提取轮廓的 x 和 y 坐标。请参阅mathworks.com/access/helpdesk/help/techdoc/ref/contour.html 然后查看此链接以查找该区域:mathworks.com/access/helpdesk/help/techdoc/ref/polyarea.html 像任何其他图像处理方法一样的活动轮廓并不完美。您将不得不试验模型的参数以满足您的需求。另外一个好主意是对活动轮廓方法进行文献搜索并自己在 MATLAB 中实现它们。应该很有趣!
    【解决方案2】:

    我可以向您推荐几种方法:

    a) 算术均值滤波器:

    f = imfilter(g, fspecial('average', [m n]))
    

    b) 几何均值滤波器

    f = exp(imfilter(log(g), ones(m, n), 'replicate')) .^ (1/(m*n))
    

    c) 谐波均值滤波器

    f = (m*n) ./ imfilter(1 ./ (g + eps), ones(m, n), 'replicate');
    

    其中n 和m 是掩码的大小(例如,您可以设置m=3 n=3)

    【讨论】:

      【解决方案3】:

      要添加到 hkf 的答案,您可能需要对图像进行一些预处理以使其更易于处理。

      我认为您在降噪方面走在了正确的轨道上。您的轮廓看起来相对容易检测 - 也许您可以简单地对图像进行二值化,应用 imdilate、imclose 和 imerode 的组合来处理伪影(这主要是反复试验),然后尝试检测轮廓。

      然后,当然,挑战是找到适用于所有图像的配方,而不仅仅是一个样本。

      【讨论】:

      • 我喜欢使用 imdilate、imclose 和 imerode 的方法,但是有没有办法消除主要形状周围的所有噪音。我的意思是有些物体靠近图像的边界,这会导致问题。我在 mathworks 演示的某个地方看到了它,但不确定用什么名字!
      • drop.io/319wyii 这就是我正在处理的图像。我想填充里面的白色区域,平滑边界并消除它周围的所有噪音。我尝试使用 iclose 和 ierode,并没有真正改变。提前致谢
      【解决方案4】:

      我认为你可以使用轮廓方法来解决这个问题。最后,您可以借助轮廓数据提取功能进行提取。研究,您将在 Mathworks 网站上看到它。

      【讨论】:

        猜你喜欢
        • 2013-05-27
        • 2013-04-20
        • 1970-01-01
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多