边缘检测和透明度(Edge Detection and transparency)

2019-09-01 08:09发布

使用针对一致的背景下采取的衣物的图像,我愿作除了服装图像中的所有像素透明。 什么是去了解这一点的最好方法是什么? 我已经研究了为这和开源库通用算法的OpenCV 。 除了我自己的滚动或使用OpenCV的是有一个简单的方法来做到这一点? 我愿意接受任何语言或平台。

谢谢

Answer 1:

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

  1. 分离图像分成一些强度/颜色形式,诸如YUV或Lab。
  2. 请在颜色部分的直方图。 找到最发生的历史色彩,这是(最有可能)你的背景(更新)也许在这里更好的窍门是找到内图像的边缘的一个或两个像素的所有像素的大部分发生的历史色彩。
  3. 从图像的eddges开始,设置有颜色,并通过该颜色对透明的像素连接到所述边缘的所有像素。
  4. 那件衣服的边缘,现在是要看上去有点难看,因为它包含的是获得从背景和一件衣服都自己颜色的像素。 为了解决这个问题,你需要做更多的工作:

    1. 发现通过一些衣服的边缘边缘检测机制。
    2. 与色只要“内部”的边缘像素(即,在该区域中的服装的颜色)和透明(如果您的输出图像格式支持)的共混物代替边缘像素的颜色。
    3. 如果你想获得真正看中的,你这取决于有多少“之类的”背景色像素的颜色是增加透明度。


Answer 2:

基本上,发现背景的颜色和减去它,但我想你知道这一点。 这是一个有点棘手所有自动做到这一点,但它似乎可能。

首先,来看看斑点检测用OpenCV的,看看这基本上是为你做。

做自己:

找到背景 :有几种选择。 也许最简单的是直方图中的图像,以及大量有类似值的像素是背景,如果有两个大的集合,背景将是一个在中间有一个大洞。 另一种方法是采取在周边作为背景色带,但这似乎逊色,例如,从一个闪光反射可显着提亮更位于中央的背景像素。

去除背景 :第一放这将是基于阈值的背景颜色的图像,然后运行该“打开”或“关闭”的算法,然后用这个作为掩模来选择你的衣服用品。 (开/关的要点是白色上衣的衣服不删除小背景颜色的项目,如黑色的按钮,或者说,在黑色服装的明亮反射。)

OpenCV的是一个很好的工具。

这样做的最棘手的部分可能会在周围的物体的阴影(如白色背景上的黑色外套会在某个边缘,在那里,使这个切?有一个连续的灰色阴影),但如果你走这么远,后一个问题。



Answer 3:

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



Answer 4:

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

  • 你的图像转换为HSV或HSL
  • 确定背景(+/- 10)的色相值:做到这一步一次,例如使用的Photoshop,然后使用您的所有照片相同的值。
  • 执行颜色阈值:色相通道排除背景的色调([0,色调[+]色调,255]典型的),对于所有其它信道包括整个值范围(0到255典型地)。 这将选择哪个不是背景像素。
  • 执行“补洞”操作(通常沿斑点分析或标签功能发现)来完成这可能是相同的颜色比背景的衣服的一部分。
  • 现在你有一个图像,其是一衣物的“掩模”:非零像素代表的衣服,0个像素表示背景。
  • 在处理这一步取决于你想如何使像素透明:通常,如果您保存为PNG图片的alpha(透明度)通道,使用逻辑AND(也称为“屏蔽”)操作的alpha通道之间原始图像与在上一步面具构建。
  • 瞧,背景消失,保存生成的图像。


文章来源: Edge Detection and transparency