【问题标题】:How to separate object from background in an image?如何将图像中的对象与背景分开?
【发布时间】:2010-02-09 04:18:59
【问题描述】:

我有一个分段的图像,看起来像这样:

//我是新会员,不能发图片,只能发链接:

// 原来我也不能发两个超链接,所以我只发地图文件的链接。

编辑:我相信我现在可以发布图片了:

alt text http://img4.imageshack.us/img4/917/test0seg.jpg

我还有一个地图文件,清楚地显示了路段:

alt text http://img4.imageshack.us/img4/6904/test0map.jpg

现在,我需要做的是创建一个二进制图像文件,该文件只包含中间涂成白色的鹿,图像的其余部分涂成黑色。

您建议使用哪些方法来合并细分?

我有这样的想法:

  1. 计算每个段的颜色平均值。
  2. 比较它们并合并最相似的片段。

如果我这样做,我最终会得到 3 个部分:地板(白色部分)、墙壁(黑色和浅灰色部分相结合)和物体(灰色部分)。

此时如何才能正确获取对象?

请注意,对象不必位于中心,它甚至可以部分在屏幕外。

(我也想过计算每个段所占用的面积,并将最小的区域标记为对象;但是有时对象可能会覆盖图像的大部分,因此可能不会产生正确的结果。)

非常感谢任何帮助。提前致谢。

【问题讨论】:

  • 我不知道你能从这个问题中得到多少帮助(可能是骗子?):stackoverflow.com/questions/2100064/…
  • 如果你检查上面的图片,你会注意到这是一个不同的情况。我没有静态相机,因此是静态背景。至少我觉得不一样。

标签: algorithm image-processing


【解决方案1】:

这是一个有点困难的问题,因为“对象”是一个主观术语。显然,你想要最有趣的对象,所以我们只需要决定一个有趣的对象是什么样子。这必须是统计数据。

让我们假设,就像在您的图像中一样,您感兴趣的对象是少数片段之一。我们将为每个片段计算一个分数,并将得分最高的一个称为对象。

我只想将各种得分函数加在一起。一些好的可能是:

  • 片段中心到图像确切中心的距离或平方距离(这将找到您的示例对象。)
  • 图像边界上的片段像素数(这将找到您的示例对象,因为坏簇的边界很大)
  • 如果您认为您的对象将比背景“更有趣”,则该片段内部的 Canny 边缘数除以该片段中的像素数
  • SIFT 关键点数除以像素数,原理与之前相同
  • 将 RGB 空间分解为数量相对较少的 bin,例如 512(因此,如果您使用 8-位图像)并查看每个片段的属性,这些属性被视为该空间上的分布。一个有趣的对象可能具有较高的熵分布,也可能具有较低的熵分布,具体取决于您的上下文。

【讨论】:

  • 这是一个非常好的答案。评估函数听起来不错。我将研究这些方法并选择合适的方法。非常感谢您花时间回答。非常感谢。
【解决方案2】:

我不明白,你已经创建了一个分割图(你链接到什么)?

或者链接是图像本身? 如果它在 Matlab 中,一旦你有一个分割图,你可以很容易地从中创建一个二进制矩阵,然后将它乘以原始图像。因此,剩下的就是您想要的部分。

【讨论】:

  • 是的,它是一个分割图。但正如您所见,该分割图至少有 4 个不同的区域。我需要将其减少到 2 个区域:仅对象和背景。
  • 你能假设你对这个对象了解多少?如果它一定是您示例中的图像,为什么不通过灰度级进行硬阈值处理?
  • 目前,我只能假设对象的颜色与背景和墙壁有些不同。但我不想将背景和墙壁颜色的任何值硬编码到程序中。
  • 如果您可以假设它更暗/更亮,那么您可以使用自适应阈值。地图是如何创建的?您可以使用 K-Mean Clustering 创建 3 个不同的二进制图像(对于每个灰色),并让用户选择他想要的。如果没有关于对象的任何特定假设,您希望代码如何识别它?
【解决方案3】:

对于分割尝试 whit grow cut algorhitm http://en.wikipedia.org/wiki/GrowCut_algorithm

出版于 2005 年,有 MATLAB 库可在 http://www.mathworks.com/matlabcentral/fileexchange/19091-growcut-image-segmentation

你事先知道你的兴趣对象是什么吗?

例如,鹿是棕色的,这有助于进行直方图比较。

【讨论】:

  • 在我的情况下,必须在没有任何用户交互的情况下识别对象。所以,我认为这个算法不合适。如果我误解了什么,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2021-04-07
  • 2022-07-21
  • 2011-10-20
  • 1970-01-01
  • 2014-11-18
  • 2015-05-23
  • 2012-11-06
  • 1970-01-01
相关资源
最近更新 更多