我已经建立了一个带有网络摄像头和功能匹配的成像系统,这样当我移动摄像头时;我可以跟踪相机的运动。我正在做类似于这里的事情,除了网络摄像头框架作为输入。
它对于“好”图像非常有效,但是在非常低的光线下拍摄图像时会出现很多噪点(相机高增益),这会干扰特征检测和匹配。基本上,它没有检测到任何好的特征,当它检测到时,它无法在帧之间正确匹配它们。
有谁知道一个好的解决方案?还有哪些其他方法可用于查找和匹配特征?
以下是两个特征非常低的示例图像:
我已经建立了一个带有网络摄像头和功能匹配的成像系统,这样当我移动摄像头时;我可以跟踪相机的运动。我正在做类似于这里的事情,除了网络摄像头框架作为输入。
它对于“好”图像非常有效,但是在非常低的光线下拍摄图像时会出现很多噪点(相机高增益),这会干扰特征检测和匹配。基本上,它没有检测到任何好的特征,当它检测到时,它无法在帧之间正确匹配它们。
有谁知道一个好的解决方案?还有哪些其他方法可用于查找和匹配特征?
以下是两个特征非常低的示例图像:
我认为相位相关将是你最好的选择。它旨在告诉您两个图像之间的相移(即平移)。与特征检测相比,它对噪声更具弹性(但不能免疫),因为它在频率空间中运行;而特征检测器在空间上运行。另一个好处是,与特征检测方法相比,它非常快。我在 OpenCV 主干中有一个可用的实现,它位于此处,是亚像素精确的。
但是,除了中间的折痕之外,您的图像几乎是“没有特征的”,因此即使是相位相关也可能会遇到一些问题。把它想象成试图在暴风雪中检测翻译。如果你能看到的只是白色,你根本无法判断你已经翻译了,因此术语whiteout。在您的情况下,该算法可能会遭受“greenout”的影响:)
您能否调整相机设置以在弱光条件下更好地工作。您是否完全打开了虹膜?你能忍受较低的帧率吗?设置更长的曝光时间将允许相机收集更多光线,从而以增加运动模糊为代价为您提供更多功能。或者,如果低光是您的默认环境,您可能需要为此设计的东西,例如红外摄像机,但这些可能很昂贵。除此之外,大镜头和长时间曝光是你的朋友:)
直方图均衡化可能对提高图像对比度感兴趣。但是,有时它只会增强噪音。OpenCV 有一个称为equalizeHist的全局直方图均衡函数。对于更本地化的实现,您需要查看对比度受限自适应直方图均衡或简称CLAHE。这是一篇很好的文章。这个页面有一些很好的例子和一些代码。