一些较新的去雾(dehazing)算法

提到去雾算法,首先想到的便是 2009 年的暗通道去雾算法,以及后续的导向滤波,搜索博客和 Github 发现了一些较新的去雾算法,也算是尝试跟上学术界的脚步。

实践

基于对比度增强的去雾算法(以下简称 DehazingCE,CE = Contrast enhancement)的作者给出了完整的 C++ 代码,只是是基于 OpenCV 2 的(而且代码风格也有些复古)。对我来说,从头完整地把代码迁移到 VapourSynth 上有点困难,所以先做原始代码从 OpenCV 2 到 OpenCV 3 的迁移。

数据类型的变化

从 OpenCV 2 的 IplImage 到 OpenCV 3 的 Mat。

函数名与类型名的变化

1
2
3
cvCopyImage → cvCopy
cvCvtPixToPlane → cvSplit
POINT → cv::Point // 这个像是手滑

数据类型的变化

1
2
3
4
double deMean[3];

double deMean_value[3];
CvScalar dpMean = cvScalar(deMean_value[1], deMean_value[2], deMean_value[3]);

添加头文件

1
2
#include <iostream>
#include <opencv2/videoio.hpp>

补齐依赖项

缺少 OpenCV 2.4.3 的四个 .lib 静态库

缺少 MSVCP100D.dll、MSVCR100D.dll

运行时遇到的问题

问题1
1
引发了异常: 读取访问权限冲突。 **iminput** 是 nullptr。

空指针,具体而言是没有定义输入图像…

问题2
1
Run-Time Check Failure #2 - Stack around the variable 'deMean_value' was corrupted.

指针越界了…