边缘检测和透明度

Joe*_*tti 6 image image-processing computer-vision edge-detection background-subtraction

使用在一致背景下拍摄的服装图像,我想使图像中的所有像素都透明,除了衣服.最好的方法是什么?我研究了常见的算法和开源库opencv.除了滚动我自己或使用opencv有一个简单的方法来做到这一点?我对任何语言或平台都持开放态度.

谢谢

jil*_*wit 6

如果你的背景在图像中是一致的,但在图像中不一致则可能会变得棘手,但这就是我要做的事情:

  1. 将图像分成一些强度/颜色形式,如YUV或Lab.
  2. 在颜色部分上做直方图.找到最常出现的颜色,这是(最有可能)你的背景(更新)可能是一个更好的技巧,可以找到距离图像边缘一到两个像素内所有像素最常出现的颜色.
  3. 从图像的边缘开始,设置具有该颜色并通过该颜色的像素连接到边缘的所有像素为透明.
  4. 这件衣服的边缘现在看起来有点难看,因为它包含从背景和衣服中获得颜色的像素.为了解决这个问题,你需要做更多的工作:

    1. 通过一些边缘检测机制找到一件衣服的边缘.
    2. 用边缘像素"内部"(即该区域中的服装颜色)和透明(如果输出图像格式支持)的颜色混合来替换边缘像素的颜色.
    3. 如果你想变得非常花哨,你可以根据背景颜色"喜欢"那个像素的颜色来增加透明度.