如何在图像中分离对象与背景?

时间:2010-01-24 11:43:47

标签: algorithm image-processing

我有一个分段图像,如下所示:

//我不允许发布图片,因为我是新成员,所以只有链接:

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

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

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

我还有一个清晰显示细分的地图文件:

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

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

您建议合并细分的方法是什么?

我有这样的想法:

  1. 计算每个细分的颜色平均值。
  2. 比较它们并合并最相似的部分。
  3. 如果我这样做,我最终得到3个部分:地板(白色部分),墙(黑色和浅灰色部分组合)和物体(灰色部分)。

    此时可以做些什么来正确获取对象?

    请注意,对象不一定在中心,甚至可能部分在屏幕外。

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

    我真的很感激任何帮助。提前谢谢。

3 个答案:

答案 0 :(得分:3)

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

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

我只是将各种乐谱功能加在一起。一些好的可能是:

  • 段的中心到图像的确切中心的距离或平方距离(这将找到您的示例对象。)
  • 图像边框上的线段像素数(这会找到您的示例对象,因为坏簇具有较大的边框)
  • 段中的Canny边缘数 段除以段中的像素数,如果您认为您的对象将比背景“更有趣”
  • SIFT关键点的数量除以像素数,与之前相同的基本原理
  • 将RGB空间分成相对较少数量的区域,如512(因此,将R,G,B中的每一个分成8个粗略级别,如0-31,32-63等,如果您正在使用8-比特图像)并查看被视为该空间上的分布的每个片段的属性。一个有趣的对象可能具有更高的熵分布,或者更低的熵分布,具体取决于您的上下文。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

出版物是从2005年开始的,有可用的MATLAB库 http://www.mathworks.com/matlabcentral/fileexchange/19091-growcut-image-segmentation

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

例如,鹿是棕色的,可以帮助进行直方图比较。