3

我在检测图像中的对象时遇到了一个大问题——我知道这个话题已经在许多论坛中得到了高度的讨论,但我在过去的 4 天里一直在寻找答案,但没有找到答案。

事实上:我有一张来自分支的图片(http://cl.ly/image/343Y193b2m1c)。我的目标是计算这张照片中的每一根针。所以我不得不面对几个问题:

将带有针头的分支与背景分开(在这种情况下没有问题)。

选择针的边界。这是一个大问题;我尝试了不同的方法,包括所有边缘()函数,但问题总是相同的 - 针周围的边界没有关闭 - 这导致了最后一个问题:

针是重叠的!这会导致“针之间的正方形”,如果我使用 imfill() 或相等的公式,则填充而不是针。并且:针集中的地方(一个地方有很多针)几乎无法区分。

我尝试了分水岭,我尝试增强对比度,Kmeans 聚类,我尝试了 imerose、imdilate 和相关功能以及后续的边缘检测。我还尝试对图片进行一些过滤和平滑处理,以便稍微“锐化”针,这样并不是每一个颜色的微小变化都被识别为边框(这是另一个问题)。

我对matlab比较陌生,所以我不知道我要寻找什么。我尝试按照用于核检测的 MatLab 教程进行操作 - 但这样我就可以获得所有绿色物体(一次所有针)。

我希望这个问题以前没有出现过 - 如果是的话,我为双重职位深表歉意。如果有人知道该做什么或使用什么方法,那将是很棒的,并且可以保护这个非常糟糕的一周开始。

非常感谢您,

菲利普

4

2 回答 2

1

区分重叠的对象非常非常困难,尤其是在您不知道必须区分多少对象的情况下。你的大脑在区分重叠对象方面比我知道的任何分割算法都要好得多,因为它能够整合很多难以编码的信息。因此:如果您自己无法区分某些功能,请忘记通过代码进行操作。

话虽如此,可能有一种方法可以让您获得针的大致数量:如果您可以将图像像素分为两类:“针”与“非针”,并且您知道有多少区域您的照片被针覆盖(在拍照时包括尺子可能会有所帮助),然后您可以将“针”像素数除以单个针覆盖的像素数以估计针的总数在图像中。由于重叠,这会有点低估针数,并且会低估针越密集(由于更多重叠),但它应该允许您自动比较具有大量针的分支和具有少量针的分支,以及至于识别时间变化,这应该是您的目标之一。

于 2013-01-28T18:25:40.363 回答
0

我同意@Jonas = 你自己遇到了一个巨大的问题。

让我提几个建议。

首先,沿着@Jonas 的方向,而不是获得准确的计数,另一种粗略估计的方法是计算针尖。显然,并非所有提示都清晰可见。但是,如果你能得到一个清晰的分支遮罩,那么使用你自己提到的一些形态学操作来识别针尖可能相对容易。

其次,有什么方法可以获取更多信息?例如,如果您可以获得深度信息,它可能有助于将针彼此区分开来(它不会完全解决任务,但可能会有所帮助)。您可能会从立体图像中获得深度信息——也就是说,在稍微移动相机的同时拍摄两张树枝的照片。如果您可以使用 Kinect 设备(或其他一些测距相机),您可以直接获取深度图...

于 2013-01-28T18:59:20.247 回答