边缘检测和透明度

问题描述:

使用针对一致背景拍摄的衣服的图像,我想让图像中的所有像素都透明,除了衣服。什么是最好的方式去做这件事?我研究了这个常用的算法和开源库opencv。除了滚动我自己或使用opencv有一个简单的方法来做到这一点?我接受任何语言或平台。边缘检测和透明度

感谢

+0

你使用的是什么图像类型:8bit,16bit,monochrome,color?衣服是什么颜色的?他们是否与背景形成对比?你说你想让背景变得透明:告诉我们更多关于你的目标的信息,你会把衣服叠加在另一张图片上吗? (你有我们可以看的样本图片吗?) – 2009-10-26 19:43:35

+0

什么是“一致”背景?这是一种颜色吗? – Jacob 2009-10-26 19:53:50

+0

我也忘了:你似乎有很多图像,是所有图像上相同颜色的背景还是背景颜色会根据图像而改变? – 2009-10-26 20:11:16

如果你的背景图像中consistend但整个图像不一致也可能变得棘手,但这里是我会做什么:

  1. 独立的图像转换成一些亮度/色彩的形式,如YUV或Lab。
  2. 在颜色部分制作直方图。找到最常见的颜色,这是(最有可能)你的背景(更新)也许一个更好的技巧是从图像的边缘找到一个或两个像素内的所有像素的最常见的颜色。
  3. 从图像的边缘开始,将具有该颜色并通过该颜色的像素连接到边缘的所有像素设置为透明。
  4. 这件衣服的边缘现在看起来有点丑陋,因为它由从背景和衣服上获得颜色的像素组成。为了解决这个问题,你需要做更多的工作:

    1. 通过一些edge detection机制找到这件衣服的边缘。
    2. 用仅在边缘像素“内部”(即该区域中的衣服颜色)和透明(如果输出图像格式支持该颜色)的颜色混合替换边缘像素的颜色。
    3. 如果你想变得很花哨,你可以增加透明度,这取决于像素的颜色是多少“喜欢”背景颜色。
+0

东西告诉我,如果有人拍下一件衣服的照片,它会安排他的照片,以便它大多填满图像。最出现的颜色将因此不是背景。也有了这个算法,如果有的话,衣服是触摸边缘,你会从图像中删除整件衣服... – 2009-10-28 20:06:11

+0

这是一个很好的观点。所以你应该看看最接近图像边缘的颜色。 – 2009-10-28 21:54:15

如果你知道背景的精确的颜色强度,它永远不会改变,服装的文章绝不会用这种颜色一致,那么这是背景减除的一个简单的应用,那就是一切不是一个特定的颜色强度被认为是一个“开”像素,一个有趣的。然后,您可以使用连接组件标签(http://en.wikipedia.org/wiki/Connected_Component_Labeling)来计算出单独的对象分组。

+0

感谢您的建议。图像将由用户采取。所以我不知道确切的颜色。 – 2009-10-26 20:14:12

彩色图像,对每一个图片相同的背景:

  • 您的图像转换为HSV或HSL
  • 确定背景(+/- 10)的色相值:做到这一步一次,例如使用photoshop,然后在所有图片上使用相同的值。
  • 执行色彩阈值:对于所有其他通道,通常包括整个值范围(通常为0到255),在色调通道上排除背景的色调([0,hue [+] hue,255])。这将选择不是背景的像素。
  • 执行“填充孔”操作(通常沿着斑点分析或标记功能发现)以完成可能与背景颜色相同的部分衣服。
  • 现在你有一个图像,它是衣服的“面具”:非零像素代表衣服,0像素代表背景。
  • 这一步的处理过程取决于你想如何使像素透明:通常,如果你将图像保存为具有alpha(透明度)通道的PNG,请在alpha之间使用逻辑AND(也称为“遮罩”)操作在上一步中创建原始图像的通道和蒙版。
  • voilà,背景消失,保存结果图像。
+0

好吧,我只是读了全白或全黑背景的评论......这个算法不适合,因为每张图片的背景都不一样。 – 2009-10-26 20:26:41

基本上,找到背景的颜色并减去它,但我想你知道这一点。自动完成这一切有点棘手,但似乎可能。

首先,看看斑点检测与OpenCV,看看这是否基本上为你做。

自己做:

找到背景:有几种选择。可能最简单的是对图像进行直方图分析,而具有相似值的大量像素是背景,如果有两个大集合,则背景将是中间有一个大洞的那个。另一种方法是将周围的带子作为背景颜色,但这看起来较差,例如,来自闪光的反射可能会使位于中心的背景像素显着变亮。

删除背景:首先在这将基于背景颜色阈值图像,然后对此运行“打开”或“关闭”算法,然后用它作为掩码选择你的服装文章。 (打开/关闭的要点是不要去除衣服上的小背景色物品,如白色衬衫上的黑色按钮,或者黑色衣服上的明亮反射。)

OpenCV是一个很好的工具。

这个最棘手的部分可能是在物体周围的阴影处(例如,在白色背景上的黑色夹克在某些边缘会产生连续的灰色阴影,以及在何处切割?),但是如果你得到这个远,发表另一个问题。