噪声图像中的特征检测

时间:2012-02-21 21:26:02

标签: image-processing opencv noise noise-reduction

我已经建立了一个带有网络摄像头和功能匹配的成像系统,以便在我移动相机时;我可以跟踪相机的动作。我正在做与here类似的事情,除了将网络摄像头帧作为输入。

它对于“好”的图像效果非常好,但是当在非常低的光线下拍摄图像时会出现大量噪点(相机高增益),并且会出现特征检测和匹配的混乱。基本上,它没有检测到任何好的功能,当它发生时,它在帧之间无法正确匹配。

有谁知道这方面的好解决方案?还有哪些其他方法可用于查找和匹配功能?

以下是两个功能非常低的示例图像:

Frame 1

Frame 2

1 个答案:

答案 0 :(得分:3)

我认为phase correlation将是您最好的选择。它旨在告诉您两个图像之间的相移(即平移)。噪声比特征检测更具弹性(但不是免疫),因为它在频率空间中运行;而特征检测器在空间上运行。另一个好处是,与特征检测方法相比,它非常快。我在OpenCV主干中有一个实现可用的子像素精确here

然而,除了中间的折痕之外,你的图像几乎是“无特征的”,所以即使相位相关也可能有一些问题。把它想象成试图在暴风雪中探测翻译。如果所有你看到的都是白色的,你就不能说你已经翻译了,因此术语whiteout。在您的情况下,算法可能会遭受“绿色”:)

您可以调整相机设置,以便在光线不足的情况下更好地工作。你完全打开了虹膜吗?你能用更低的帧率生活吗?设置较长的曝光时间可使相机聚集更多光线,从而以增加运动模糊为代价为您提供更多功能。或者,如果低光是您的默认环境,您可能需要像红外摄像机那样设计的东西,但这些可能很昂贵。除此之外,大镜头和长时间曝光是你的朋友:)

Histogram equalization可能对改善图像对比度感兴趣。但是,有时它只会增强噪音。 OpenCV具有名为equalizeHist的全局直方图均衡功能。对于更局部化的实现,您需要查看对比度有限自适应直方图均衡或简称CLAHEHere是一篇很好的文章。 This页面有一些很好的例子和一些代码。