去雾算法总结

之前搞个去雾算法,原理几乎全部忘记,这里再回忆一下

参考链接是:

https://blog.csdn.net/songhhll/article/details/12612681

https://blog.csdn.net/kuweicai/article/details/78385871

https://blog.csdn.net/baimafujinji/article/details/74750283

论文是 Single Image Haze Removal Using Dark Channel Prior

----------------------------------暗通道理论------------------------------------

论文的核心是提出了暗通道先验: 非天空的局部区域内,总有一些像素,至少一个颜色通道具有很低的值

在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值。换言之,该区域光强度的最小值是个很小的数。

暗通道的计算公式是。实际上是分两步计算

(1): 首先求出图像中每个像素RGB分量中的最小值,得到结果图像,为灰度图像。

(2): 然后是对灰度图像进行最小值滤波,滤波器的半径由窗口大小决定。一般有WindowSize = 2 * Radius + 1;

公式(5)的最右边min是对3个通道取最小值,而左边的min是对图像的局部信息取最小值。

------------------------基于暗通道数据进行去雾的推导------------------------

其中,I(X)就是我们现在已经有的图像(待去雾的图像),J(x)是我们要恢复的无雾的图像,A是全球大气光成分, t(x)为透射率。现在的已知条件就是I(X),要求目标值J(x),显然,这是个有无数解的方程,因此,就需要一些先验了。


将式(1)稍作处理,变形为下式:

                                                    

    如上所述,上标C表示R/G/B三个通道的意思。

    首先假设在每一个窗口内透射率t(x)为常数,定义他为,并且A值已经给定,然后对式(7)两边求两次最小值运算,得到下式:

                                  

    上式中,J是待求的无雾的图像,根据前述的暗原色先验理论有:

                                               

     因此,可推导出:

                                                         

    把式(10)带入式(8)中,得到:

                                                 

    这就是透射率的预估值。

    在现实生活中,即使是晴天白云,空气中也存在着一些颗粒,因此,看远处的物体还是能感觉到雾的影响,另外,雾的存在让人类感到景深的存在,因此,有

必要在去雾的时候保留一定程度的雾,这可以通过在式(11)中引入一个在[0,1] 之间的因子,则式(11)修正为:

                                               


实际上是对原图用255(或者求出一个值)进行归一化,然后求暗通道图像,把这个暗通道图像当做t(x)来对待

上面12示子是一个粗的图像,然后需要对这个t(x)进行精细化


------------------------对于透视率t(x)的精细化--------------------------------

对t(x)精细化有两个方法,

1: 解一个soft matting方程

2: Guided filter, 对于guided filer是输入原图,和暗通道图,原图可以是灰度也可以是彩色,然后对暗通道图进行细化处理

guided filter 输入的guided图像可以是原图,也可以是其他的图像,核心是在滤波的时候保持边缘信息,认为噪声是的梯度变换在各个方向上都有发生,而边缘的梯度变换只在一个方向上发生

至于guided filter 详细信息略过


猜你喜欢

转载自blog.csdn.net/hnshahao/article/details/80698902