C++ 如何检测鸟巢中鸟类的外观?
我对视频处理非常陌生,但我的朋友——生物学家提出了一个有趣的问题 任务 有一个摄像机指向一个特定的鸟巢。镜头很长(数百小时)。任务是给出特定的时间范围,当一只鸟造访鸟巢时 一些问题C++ 如何检测鸟巢中鸟类的外观?,c++,opencv,video,video-processing,C++,Opencv,Video,Video Processing,我对视频处理非常陌生,但我的朋友——生物学家提出了一个有趣的问题 任务 有一个摄像机指向一个特定的鸟巢。镜头很长(数百小时)。任务是给出特定的时间范围,当一只鸟造访鸟巢时 一些问题 特定任务 由于风的作用,图像在抖动,因此背景不是静止的 整体质量不高640x480,对比度不高 这只鸟与背景融为一体 特定于我 我的C++体验生活在未来而不是过去。 OpenCV..好吧,让我们只让它工作就像一天的工作。好的,这是因为我试图让它为Python3.5工作。没用。然后它做到了。但它没有打开一个文件。
特定任务
- 由于风的作用,图像在抖动,因此背景不是静止的
- 整体质量不高640x480,对比度不高
- 这只鸟与背景融为一体
-
我的C++体验生活在未来而不是过去。
- OpenCV..好吧,让我们只让它工作就像一天的工作。好的,这是因为我试图让它为Python3.5工作。没用。然后它做到了。但它没有打开一个文件。无论如何,这就是为什么我切换到C++(更不用说代码运行X倍更快)。
- 在可视化处理方面几乎没有经验
/src/main.cpp
脚本(bw_test_kuku.mp4)的结果
到目前为止我做了什么?
我已将文件转换为灰度,然后应用黑白阈值。在玩了一点之后,我达到了120(从0-255),因为它似乎消除了大部分噪音,而且鸟仍然可见
思想
- 对数字
像素使用某种阈值。这将是很好的,如果它能工作的话,但是只要看输出视频我就可以知道,没有鸟的帧比有鸟的帧具有更高的b_比率=黑色像素/(黑色像素+白色像素)
b_比率。但这一想法可能会被部分使用,例如,仅选择b_比率较高的视频部分进行进一步分析
- 根据相邻像素的颜色更改像素的颜色。这可能有助于进一步消除噪声(您可以在vids/bw_test_kuku.mp4中看到许多小颜色块)
- 最后一个想法是计算特定像素如何移动的某种向量。你可以看到很多来回运动(从风中)。所以,这应该被忽略,但是当鸟到达时,它会在一个方向上产生一种流动。因此,应该注意到这一点
我希望这个答案不会因为太宽泛而关闭。如果是的话,请给我指出一些方向。我的一般问题是如何解决类似的问题。也许还有具体的代码/算法等。谢谢 当你在寻找短而甜的东西时,试试以下任何一种:
@谢谢,现在我真的准备好完成这项任务了!说真的,有很多书都是关于这个话题的,这不是一个容易解决的问题。对堆栈溢出来说太宽了。:)我明白,有什么想法,从哪里开始?我希望这听起来不像是我在要求stackoverflow的人帮我解决这个问题。也许我应该说得更像:“识别运动物体的算法。”虽然我不希望得到更好的响应:)不过谢谢你的笑声。我猜:1)处理视频以获得稳定的视频;我不确定这里的艺术水平,但我想在非静态背景下,这会变得很困难。2) 确定要检测运动的位置(如果获得稳定的视频,可能很容易实现)3)检测运动。如果你不想要假阳性,这可能很难做到。4) 检测它是否是一只鸟;研究水平。例如,这是谷歌关于人脸检测的论文,这需要大量的共同努力和资源。另外,考虑到数据量,请确保它是并行的。
255 | 255 | 255 255 | 255 | 255
----|-----|---- ----|-----|----
255 | 0 | 0 ====> 255 | 255 | 0
----|-----|---- ----|-----|----
0 | 255 | 255 0 | 255 | 255