我想删除背景并将鹿作为前景图像。
这是我用 trail 相机拍摄的源图像:
这就是我想要的。此输出图像可以是二值图像或 RGB。
我研究了它并尝试了很多方法来获得解决方案,但每次都在特定点失败。所以请先了解我的确切问题是什么。
- 图像由跟踪相机拍摄,相机是运动检测器。当鹿来到相机前时,它会捕捉图像。
- 场景模式随着天气变化或白天和黑夜等而变化。所以我不能使用帧差或类似的东西。
- 分割可能无法正常工作,因为前景(鹿)和背景在许多情况下具有相同的颜色。
如果有人对我的问题还有什么不明白的地方,请先让我弄清楚再回答,我们将不胜感激。 提前致谢。
最佳答案
这是我会做的:
正如对您的问题的评论,您可以检测亲爱的,然后执行抓取以将其从图片中分割出来。
为了检测亲爱的,我会将分类器与滑动窗口方法相结合。这意味着您将拥有一个分类器,该分类器给出了图像中的一个补丁(可以是一个大补丁),输出的是该补丁与亲爱的相似程度的分数。滑动窗口方法意味着您在窗口大小上循环,然后在窗口位置上循环。对于图像中窗口的每个位置,您应该在该窗口上应用分类器并获得该窗口在多大程度上“看起来像”亲爱的分数。完成后,对所有分数设置阈值以获得“最佳窗口”,即与亲爱的最相似的窗口。这背后的原因是,如果我们亲爱的出现在图像中的某个位置,分类器将在所有与实际亲爱的位置接近/重叠的窗口输出高分。我们想将所有这些位置合并到一个位置。这可以通过应用 OpenCV 中的函数 groupRectangles 来完成:
http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html#grouprectangles
看看 OpenCV 中的一些人脸检测示例,它基本上执行相同的操作(滑动窗口 + 分类器),其中分类器是 Haar 级联。
现在,我没有提到“亲爱的分类器”是什么。您可以使用 HOG+SVM(它们都包含在 OpenCV 中)或使用运行深度卷积神经网络(深度 CNN)的更强大的方法。幸运的是,您不需要训练深度 CNN。您可以将以下软件包与它们的“现成”ImageNet 网络(非常强大,甚至无需进一步培训就可以识别亲人)一起使用:
Decaf- 仅可用于研究目的: https://github.com/UCB-ICSI-Vision-Group/decaf-release/
或 Caffe - BSD 许可:
http://caffe.berkeleyvision.org/
您可以在此处阅读其他软件包: http://deeplearning.net/software_links/
最常见的是 Theano、Cuda ConvNet 和 OverFeat(但这真的是基于意见,你应该从我链接到的列表中选择最好的包)。
“现成的”ImageNet 网络在来自 1000 个类别的大约 1000 万张图像上进行了训练。如果这些类别包含“亲爱的”,则您可以按原样使用它们。如果没有,您可以使用它们来提取特征(在 Decaf 的情况下作为 4096 维向量)并在正面和负面图像上训练分类器以构建“亲爱的分类器”。
现在,一旦您检测到亲爱的,这意味着您周围有一个边界框,您就可以应用抓取:
http://docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_grabcut/py_grabcut.html
您需要先在亲爱的身上涂鸦才能执行 grabcu。你可以只在边界框中间画一条水平线,希望它在亲爱的躯干上。更精细的方法是找到亲爱的对称轴并将其用作涂鸦,但您必须谷歌搜索,研究一种从图像中提取对称轴的实现方法。
就是这样。不简单,但问题也是如此。
如果您有任何问题,请告诉我。
关于image - 删除背景并将鹿作为前景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24386438/