暗通道去雾算法
(基本上都是网上找的资料,也没啥好说的,就这样写吧)


其中c表示rgb三通道中的某一通道。上式表示在一幅输入图像中,先取图像中每一个像素的三通道中的灰度值的最小值,得到一幅灰度图像,再在这幅灰度图像中,以每一个像素为中心取一定大小的矩形窗口,取矩形窗口中灰度值最小值代替中心像素灰度值(最小值滤波),从而得到该雾天图像的暗通道图像。暗通道图像为灰度图像,通过大量统计并观察发现,暗通道图像的灰度值是很低的,所以将整幅暗通道图像中所有像素的灰度值近似为0,即:

对于成像模型,将其归一化,即两边同时除以每个通道的大气光值:

假设在图像中一定大小的矩形窗口Ω(x)内,传输函数t(x)的值为定值t^(x),对上式两边用最小化算子(minimum operators)作最小化运算:

由于t^(x)在矩形区域内为定值,故将其拿出运算符外部。由于场景辐射(scene radiance)是无雾图像,将暗通道先验应用于J,则有:

由于Ac总是正值,则有:

将上式代入到最小化运算的式子中,即可得到传输函数的估计值为:

为了防止去雾太过彻底,恢复出的景物不自然,应引入参数

重新定义传输函数为:

找到两份代码,效果相似,第二个运行的快一点