美文网首页LowLight Image
低亮度图片增强方法:基于保持图像自然度的低亮度图片增强算法

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

作者: GreatSun | 来源:发表于2019-06-09 17:04 被阅读0次

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

    • Naturalness Preserved Enhancement Algorithm for Non-Uniform Illumination Images

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

    • 提出了一个衡量保持自然度的变量LOE(lightness-order-error)
    • 使用bright-pass滤波器将图片分解为反射分量和亮度分量
    • 使用bi-log变换来对亮度分量进行亮度增强。

    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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/uxzgxctx.html