MATLAB图像处理帮助!
问题描述:
我正在尝试查找图像上某些区域的区域。MATLAB图像处理帮助!
alt text http://img821.imageshack.us/img821/7541/cell1.jpg
例如,我要找到深大区域的左上侧区域。 我想从图像中找到任何封闭几何图形的区域。
我该怎么在matlab中做到这一点。
我在网上看,我尝试了regionprops(),但它没有标识不同的地区。
答
使用'imfilter'过滤您的图片。使用'fspecial'来定义你的过滤器。然后使用活动轮廓模型来分割大对象。谷歌'主动轮廓matlab'。使用“多边形”和面积函数来查找封闭轮廓的面积。
答
要添加到hkf的答案中,您可能需要对图像应用一些预处理,以便于处理。
我觉得你正处在降低噪音的正确轨道上。您的轮廓看起来相对容易检测 - 也许您可以简单地对图像进行二值化处理,应用imdilate,imclose和imerode组合处理伪影(这主要是试验和错误),然后尝试检测轮廓。
然后,当然,挑战是找到适用于所有图像的配方,而不仅仅是一个样品。
答
我可以reccomand你几个方法可以做到这一点:
一)算术均值滤波:
f = imfilter(g, fspecial('average', [m n]))
二)几何均值滤波
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
)
答
我认为你可以使用轮廓方法来解决这个问题。最后,您可以借助轮廓数据提取功能进行提取。研究,你会在Mathworks网站上看到它。
我尝试了一些代码从mathworks网站主动轮廓。其中一些有效,但我无法获得任何区域,而且这对小区域无效! 我想先裁剪图片,为了消除任何噪音,然后我用imadjust调整一点对比度。 我需要任何例子来更好地理解它。 – Beho86 2010-06-12 21:13:01
您应该能够使用[C,h] =轮廓(...)提取轮廓的x和y坐标。请参阅http://www.mathworks.com/access/helpdesk/help/techdoc/ref/contour.html 然后查看此链接以查找该区域:http://www.mathworks.com/access/ helpdesk/help/techdoc/ref/polyarea.html 像任何其他图像处理方法一样的主动轮廓并不完美。您将不得不尝试模型的参数以满足您的需求。另外一个好主意是在主动轮廓方法上进行文献搜索,并在MATLAB中自己实现它们。它应该很有趣! – hkf 2010-06-14 15:58:45