image - 删除背景并将鹿作为前景?

标签 image matlab opencv image-processing computer-vision

我想删除背景并将鹿作为前景图像。

这是我用 trail 相机拍摄的源图像:

enter image description here

enter image description here

这就是我想要的。此输出图像可以是二值图像或 RGB。

enter image description here

我研究了它并尝试了很多方法来获得解决方案,但每次都在特定点失败。所以请先了解我的确切问题是什么。

  1. 图像由跟踪相机拍摄,相机是运动检测器。当鹿来到相机前时,它会捕捉图像。
  2. 场景模式随着天气变化或白天和黑夜等而变化。所以我不能使用帧差或类似的东西。
  3. 分割可能无法正常工作,因为前景(鹿)和背景在许多情况下具有相同的颜色。

如果有人对我的问题还有什么不明白的地方,请先让我弄清楚再回答,我们将不胜感激。 提前致谢。

最佳答案

这是我会做的:

正如对您的问题的评论,您可以检测亲爱的,然后执行抓取以将其从图片中分割出来。

为了检测亲爱的,我会将分类器与滑动窗口方法相结合。这意味着您将拥有一个分类器,该分类器给出了图像中的一个补丁(可以是一个大补丁),输出的是该补丁与亲爱的相似程度的分数。滑动窗口方法意味着您在窗口大小上循环,然后在窗口位置上循环。对于图像中窗口的每个位置,您应该在该窗口上应用分类器并获得该窗口在多大程度上“看起来像”亲爱的分数。完成后,对所有分数设置阈值以获得“最佳窗口”,即与亲爱的最相似的窗口。这背后的原因是,如果我们亲爱的出现在图像中的某个位置,分类器将在所有与实际亲爱的位置接近/重叠的窗口输出高分。我们想将所有这些位置合并到一个位置。这可以通过应用 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/

相关文章:

java - 如何在 Java Swing GUI 中放置图像

c - 提高 Matlab 中卡尔曼滤波器的计算速度

python - 将1D字节对象 reshape 为3D numpy数组

image-processing - 如何在 numpy 中优化这个图像迭代?

php - 通过 PHP 优化图像

javascript - 图片onclick事件的使用方法

javascript - 如何在浏览器中通过 POST 请求加载外国图片?

arrays - 使用 2D 索引矩阵索引 4D 数组

matlab - Matlab中的位级运算

c++ - 检测图像中圆圈和十字的位置