噪声图像中的特征检测

发布于 2025-01-07 23:32:24 字数 543 浏览 1 评论 0原文

我构建了一个带有网络摄像头和功能匹配的成像系统,这样当我移动相机时;我可以跟踪摄像机的运动。我正在做类似于这里,除了网络摄像头帧作为输入。

它对于“好”图像非常有效,但是当在非常低的光线下拍摄图像时,会出现大量噪点(相机高增益),这会扰乱特征检测和匹配。基本上,它不会检测到任何好的特征,即使检测到,它也无法在帧之间正确匹配它们。

有谁知道这个问题有一个好的解决方案吗?还有哪些其他方法用于查找和匹配特征?

以下是两个特征非常低的示例图像:

Frame 1

帧 2

I've built an imaging system with a webcam and feature matching such that as I move the camera around; I can track the camera's motion. I am doing something similar to here, except with the webcam frames as the input.

It works really well for "good" images, but when taking images in really low light lots of noise appears (camera high gain), and that messes with the feature detection and matching. Basically, it doesn't detect any good features, and when it does, it cannot match them correctly between frames.

Does anyone know a good solution for this? What other methods are used for finding and matching features?

Here are two example images with very low features:

Frame 1

Frame 2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哀由 2025-01-14 23:32:24

我认为相位相关将是你最好的选择。它旨在告诉您两个图像之间的相移(即平移)。与特征检测相比,它对噪声的适应能力更强(但并非免疫),因为它在频率空间中运行;然而,特征检测器在空间上运行。另一个好处是,与特征检测方法相比,它非常快。我在 OpenCV 主干中有一个实现,它是亚像素精确的,位于 这里

然而,除了中间的折痕之外,您的图像几乎“没有特征”,因此即使是相位相关也可能会遇到一些问题。可以把它想象成试图在暴风雪中检测翻译。如果你看到的都是白色,你根本无法判断你已经翻译了,因此术语

您能否调整相机设置以在弱光条件下更好地工作。您是否已完全打开虹膜?您能忍受较低的帧速率吗?设置较长的曝光时间将使相机收集更多的光线,从而为您提供更多功能,但代价是增加运动模糊。或者,如果低光是您的默认环境,您可能需要为此设计的设备,例如红外摄像机,但这些设备可能很昂贵。除此之外,大镜头和长时间曝光是您的朋友:)

直方图均衡化可能会感兴趣提高图像对比度。但是,有时它只会增强噪音。 OpenCV 有一个全局直方图均衡函数,名为 equalizeHist。对于更本地化的实现,您需要查看对比度有限自适应直方图均衡或 CLAHE短的。 这里是一篇关于它的好文章。 页面有一些很好的示例和一些代码。

I think phase correlation is going to be your best bet here. It is designed to tell you the phase shift (i.e., translation) between two images. It is much more resilient (but not immune) to noise than feature detection because it operates in frequency space; whereas, feature detectors operate spatially. Another benefit is, it is very fast when compared with feature detection methods. I have an implementation available in the OpenCV trunk that is sub-pixel accurate located here.

However, your images are pretty much "featureless" with the exception of the crease in the middle, so even phase correlation may have some trouble with it. Think of it like trying to detect translation in a snow storm. If all you can see is white, you can't tell that you have translated at all, thus the term whiteout. In your case, the algorithm might suffer from "greenout" :)

Can you adjust the camera settings to work better in low-light conditions. Have you fully opened the iris? Can you live with lower framerates? Setting a longer exposure time will allow the camera to gather more light, thus giving you more features at the cost of adding motion blur. Or, if low-light is your default environment you probably want something designed for this like an IR camera, but those can be expensive. Other than that, a big lens and long exposures are your friend :)

Histogram equalization may be of interest in improving the image contrast. But, sometimes it can just enhance the noise. OpenCV has a global histogram equalization function called equalizeHist. For a more localized implementation, you'll want to look at Contrast Limited Adaptive Histogram Equalization or CLAHE for short. Here is a good article on it. This page has some nice examples, and some code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文