LowLight Image

低亮度图片增强方法:基于保持图像自然度的低亮度图片增强算法

2019-06-09  本文已影响0人  GreatSun

这篇博客介绍一篇基于保持图像自然度的低亮度图片增强算法:

这篇文章主要主要有以下三个方面的工作:

LOE(lightness-order-error)

作者提出用相对亮度顺序(the relative lightness order)来衡量图像的自然程度。相对亮度顺序可以用来表示光照的方向和光照的变化程度。

文章中定义了LOE来衡量增强图片I_{e}I之间的亮度顺序差:
L(x, y)=\max _{c \in\{r, g, b\}} I^{c}(x, y)
其中L(x,y)为RGB channel中的最大值。

对于每个pixel (x,y),其在原图和增强图中的相对的亮度顺序差定义为:
\begin{aligned} R D(x, y)=& \sum_{i=1}^{m} \sum_{j=1}^{n}(U(L(x, y), L(i, j))\oplus U\left(L_{\mathrm{e}}(x, y), L_{\mathrm{e}}(i, j)\right) ) \end{aligned}

U(x, y)=\left\{\begin{array}{ll}{1,} & {\text { for } x \geq y} \\ {0,} & {\text { else }}\end{array}\right.
其中\oplus为异或操作。

最后,LOE定义为:
L O E=\frac{1}{m * n} \sum_{i=1}^{m} \sum_{j=1}^{n} R D(i, j)

Bright-Pass Filter的定义

文中首先选择了五个pixel的四连接域作为领域范围:
\begin{aligned} N B(x, y)=&\{G(x, y-1), G(x, y+1), G(x-1, y)\\ & G(x+1, y), G(x, y) \} \end{aligned}

对于在位置(x,y)的值kNN_{k, l}(x, y)表示领域内值为l的数量,Q^{\prime}(k, l)表示值为k和领域内值为l的数量在图片中所有位置的数量之和:
Q^{\prime}(k, l)=\sum_{x=1}^{m} \sum_{y=1}^{n} N N_{k, l}(x, y)
为了减少噪声的影响,使用局部的均值进行处理:
Q(k, l)=\left(\sum_{i=l-w i n}^{i=l+w i n} Q^{\prime}(k, i)\right) /(2 \cdot w i n+1)

Bright-Pass Filter定义为:
\begin{aligned} B P F[G(x, y)]=& \frac{1}{W(x, y)} \sum_{(i, j) \in \Omega}(Q(G(x, y), G(i, j))\\ & \cdot U(G(i, j), G(x, y)) \cdot G(i, j) ) \end{aligned}
其中\Omega为局部的一个patch,文中是用15x15,权重W定义为:
W(x, y)=\sum_{(i, j) \in \Omega}(Q(G(x, y), G(i, j)) \cdot U(G(i, j), G(x, y)))

由Retinex理论,
I^{c}(x, y)=R^{c}(x, y) \cdot F(x, y)
其中R^{c}(x, y)为每个channel的反射分量,F(x,y)为亮度分量:

亮度分量可有Bright-Pass Filter获得:
\begin{array}{c}{L_{r}(x, y)=\frac{1}{W(x, y)} \sum_{(i, j) \in \Omega}(Q(L(x, y), L(i, j))} \\ {\cdot U(L(i, j), L(x, y)) \cdot L(i, j) )}\end{array}

反射分量可由下式获得:
R^{c}(x, y)=I^{c}(x, y) / L_{r}(x, y)

使用Bi-Log Transformation进行亮度分量的增强

文中使用了直方图规范化的方法进行亮度分量的增强。文中使用了对数变换:
L_{\lg }(x, y)=\log \left(L_{r}(x, y)+\varepsilon\right)

但文中表示对数变换会使所有图像的亮度变得非常相似,作者根据输入图片的灰度值分布,适当地增加了低灰度值的数量,所以,新的加权的直方图分布为:

m p(k)=\frac{\sum_{i=0}^{m} \sum_{j=0}^{n} L_{\mathrm{lg}}(i, j) \cdot \delta\left(L_{r}(i, j), k\right)}{\sum_{i=0}^{m} \sum_{j=0}^{n} L_{\lg }(i, j)}

\delta(x, y)=\left\{\begin{array}{ll}{1,} & {\text { for } x=y} \\ {0,} & {\text { else }}\end{array}\right.

直方图的累积分布为:

c L(v)=\sum_{k=0}^{v} m p(k)=\frac{\sum_{i=0}^{m} \sum_{j=0}^{n} L_{\lg (i, j)} \cdot U\left(v, L_{r}(i, j)\right)}{\sum_{i=0}^{m} \sum_{j=0}^{n} L_{\lg }(i, j)}

经过CDF of the specified histogram后的直方图,s(z)为:

cf(z)=\sum_{i=0}^{z} s(i) / \sum_{i=0}^{255} s(i)

s(z)=\log (z+\varepsilon), \quad z \in N[0,255]

cf\left(z_{v}\right)=c L(v), \quad \text { for } v=0,1,2, \ldots, L-1

然后求解z:

z_{v}=c f^{-1}[c L(v)], \quad \text { for } v=0,1,2, \ldots, L-1

L_{m}(x, y)=c f^{-1}\left[c L\left(L_{r}(x, y)\right)\right], \quad \text { for } v=0,1,2, \ldots, L-1

最后,增强后的图片为:
E I^{c}(x, y)=R^{c}(x, y) \times L_{m}(x, y)

代码实现

http://blog.sina.com.cn/u/2694868761

效果比较

低亮度图 低亮度增强效果图

参考文献

  1. https://ieeexplore.ieee.org/document/6512558
上一篇下一篇

猜你喜欢

热点阅读