使用在一致背景下拍摄的衣物图像,我想使图像中的所有像素都透明,除了衣服。最好的方法是什么?我研究了常见的算法和开源库opencv。除了滚动我自己或使用opencv有一个简单的方法来做到这一点?我对任何语言或平台都持开放态度。
谢谢
答案 0 :(得分:6)
如果你的背景在图像中是一致的,但在图像中不一致,那可能会变得棘手,但这就是我要做的事情:
这件衣服的边缘现在看起来有点难看,因为它包含从背景和衣服中获取颜色的像素。为了解决这个问题,你需要做更多的工作:
答案 1 :(得分:2)
基本上,找到背景的颜色并减去它,但我猜你知道这一点。完全自动完成这一点有点棘手,但似乎有可能。
首先,使用OpenCV查看 blob detection ,看看这是否基本完成。
自己动手:
找到背景:有几个选项。可能最简单的是对图像进行直方图,并且具有相似值的大量像素是背景,如果有两个大集合,则背景将是中间有大洞的背景。另一种方法是在周边采用一个带作为背景颜色,但这似乎较差,例如,闪光灯的反射可以显着提亮位于中心的背景像素。
删除背景:首先要考虑的是基于背景颜色对图像进行阈值处理,然后对此运行“打开”或“关闭”算法,然后使用此作为选择你的服装文章的面具。 (打开/关闭的目的是不要去除衣服上的小背景色,如白色衬衫上的黑色纽扣,或者说,黑色衣服上的明亮反光。)
OpenCV是一个很好的工具。
最棘手的部分可能是在物体周围的阴影处(例如,白色背景上的黑色夹克会在某些边缘处产生连续的灰色阴影以及在哪里进行切割?)但是如果你得到的话到目前为止,发布了另一个问题。
答案 2 :(得分:0)
如果您知道背景的确切颜色强度并且它永远不会改变并且衣物将永远不会与此颜色重合,那么这是背景减法的简单应用,即所有不是特定颜色强度的被认为是一个“开”的像素,一个有趣的。然后,您可以使用连通组件标签(http://en.wikipedia.org/wiki/Connected_Component_Labeling)来确定对象的单独分组。
答案 3 :(得分:0)
用于彩色图像,每张图片背景相同: