opencv:执行夜视

Pea*_*Gen 5 c++ opencv image image-processing computer-vision

首先,我不是在谈论真正的夜视。我说的是在光线条件较差时用于提高图片亮度/光线的技术。您可以在智能手机中完美地看到这种技术,在平板手机中非常出色。我知道这里使用的技术,获取现有光线并使用它使图片清晰。但是如何在opencv中做到这一点?任何方法或分步过程?

小智 2

本质上有两种方法可以使图像变亮:

  1. 在相机中获取更多光子
  2. 赋予每个光子更多的“重量”

对于方法 1,假设您无法控制照明,那么获得更多光子的唯一方法就是让传感器暴露更长时间。假设您可以更改相机的积分时间。这种方法的缺点是您可以获得更多的运动模糊。

对于方法 2,这相当于对输入图像应用乘法增益,这使得每个光子为结果图像贡献更多的 DN。应用这样的增益假设您有关于输入图像亮度的先验信息。如果您的增益值不好,您的图像要么饱和,要么太暗。

要自动改善图像,最好的方法是使用 OpenCV 的 equalizeHist 函数,如此处所述。该操作并不完全是乘法增益,但效果相似。

正如之前在评论中建议的那样,最后一步是应用此处所述的伽玛校正。伽玛校正往往会降低图像的对比度,但由于您使用直方图均衡化提高了对比度,因此您应该会获得良好的结果。