低亮度圖片增強方法:基于相機相應模型的低亮度圖片增強算法

這篇博客介紹一篇基于相機相應模型的低亮度圖片增強算法:

  • A New Low-Light Image Enhancement Algorithm using Camera Response Model (CRM)

這篇文章指出,對于相機拍攝到的圖片而言,其像素值并非是正比于物體反射的亮度值。對于從相機感光元件感受到的亮度值到圖像實際像素值之間的非線性變換函數(shù),稱之為相機響應函數(shù)(camera response function, CRF)。

這篇文章:

  • 首先通過分析不同曝光度的圖片之間的關系得到一個相機響應模型
  • 然后利用圖片亮度分量估計方法得到圖像的曝光比圖(exposure ratio)
  • 最后使用相機相應模型和曝光比圖來對低亮度圖片進行增強。

相機響應模型

將相機響應模型定義為:

\mathbf{P}=f(\mathbf{E})

其中 \mathbf{E}是圖片的輻照度,\mathbf{P}是圖片的像素值。

f應當滿足:
\mathcal{F} :=\{f | f(0)=0, f(1)=1, x>y \Leftrightarrow f(x)>f(y)\}

文章使用亮度變換函數(shù)(brightness transform function, BTF)來估計f。BTF是一個對于相同場景但是曝光度不同的兩幅圖之間的映射函數(shù):

\mathbf{P}_{1}=g\left(\mathbf{P}_{0}, k\right)
其中\mathbf{P}_{1}\mathbf{P}_{0}是同一場景下不同曝光程度的圖像,k為曝光比。

則CRM可以由下式計算得到:
g(f(\mathbf{E}), k)=f(k \mathbf{E})

  • 估計BTF


通過比較相同從場景下不同曝光程度的兩幅圖的直方圖,可以用以下的函數(shù)來描述BTF:

\mathbf{P}_{1}=g\left(\mathbf{P}_{0}, k\right)=\beta \mathbf{P}_{0}^{\gamma}
其中\beta\gamma是由相機參數(shù)和曝光比決定的參數(shù)。

  • 估計CRM

    f(k E)=\beta f(E)^{\gamma}
    可解得:
    f(E)=\left\{\begin{array}{ll}{e^{b\left(1-E^{a}\right)},} & {\text { if } \gamma \neq 1} \\ {E^{c},} & {\text { if } \gamma=1}\end{array}\right.
    \gamma \neq 1時:
    a=\log _{k} \gamma, \quad b=\frac{\ln \beta}{1-\gamma}
    \gamma=1時:
    c=\log _{k} \beta
    在大多數(shù)情況,僅考慮當\gamma \neq 1的情形。

文章中有比較該CRM模型相比于其他模型的優(yōu)勢,這里不做詳述。

  • 參數(shù)求解
    由上式:
    \beta=e^{b\left(1-k^{a}\right)}, \quad \gamma=k^{a}
    對于給定的相機,其CRM是固定的,參數(shù)ab也是固定的。對于給定的輸入圖片\mathbf{P}_{0}和任意的的曝光比k_{x},我們可以得到相應的圖片\mathbf{P}_{*}:
    g\left(\mathbf{P}_{0}, k_{*}\right)=\mathbf{P}_{*}=\beta_{*} \mathbf{P}_{0}^{\gamma_{*}}=e^{b\left(1-k_{*}^{a}\right)} \mathbf{P}_{0}^{\left(k_{*}^{a}\right)}

圖像的亮度增強

基于Retinex理論:
\mathbf{E}=\mathbf{R} \circ \mathbf{T}
其中,\mathbf{R}\mathbf{T}分別對應圖片的反射圖和亮度圖。

這里,考慮\mathbf{R}作為理想亮度下的圖像。

當考慮到相機相應模型時,有:

\mathbf{P}=f(\mathbf{E}), \quad \mathbf{P}^{\prime}=f(\mathbf{R})

其中\mathbf{P}是實際該分解的圖像,\mathbf{P}^{\prime}是實際理想亮度下的圖像。

則:
\mathbf{P}^{\prime}=f(\mathbf{R}) = f(\mathbf{E} \circ(\mathbf{1} \oslash \mathbf{T})) = g(f(\mathbf{E}), \mathbf{1} \oslash \mathbf{T})=g(\mathbf{P}, \mathbf{1} \oslash \mathbf{T})

則可以發(fā)現(xiàn)\mathbf{T}\mathbf{K}之間的關系:
\mathbf{K}=1 \oslash \mathbf{T}

  • 圖像亮度分量的估計
    這篇文章借鑒了Lime: Low-light image enhancement
    via illumination map estimation文章中求取亮度圖的方法:
    初始亮度圖:
    \mathbf{L}(x)=\max _{c \in\{R, G, B\}} \mathbf{P}_{c}(x)
    作者設計了新的權重函數(shù):
    \mathbf{W}_u0z1t8os(x)=\frac{1}{\left|\sum_{y \in \omega(x)} \nabla_u0z1t8os \mathbf{L}(y)\right|+\epsilon}, \quad d \in\{h, v\}
    目標函數(shù)可寫為:
    \min _{\mathbf{T}} \sum_{x}\left((\mathbf{T}(x)-\mathbf{L}(x))^{2}+\lambda \sum_{d \in\{h, v\}} \frac{\mathbf{W}_u0z1t8os(x)\left(\nabla_u0z1t8os \mathbf{T}(x)\right)^{2}}{\left|\nabla_u0z1t8os \mathbf{L}(x)\right|+\epsilon}\right)
    具體求解過程不做詳解,可參見原文和LIME的文章。

則可得到曝光比圖:
\mathbf{K}(x)=\frac{1}{\max (\mathbf{T}(x), \epsilon)}

最后,基于相機相應模型的低亮度增強算法可由下式計算得到:
\mathbf{P}_{c}^{\prime}(x)=e^{b\left(1-\mathbf{K}(x)^{a}\right)} \mathbf{P}_{c}(x)^{\left(\mathbf{K}(x)^{a}\right)}

文章中設置(a=-0.3293, b=1.1258)

算法實現(xiàn)

https://github.com/baidut/OpenCE

增強效果

低亮度圖片
增強后的效果圖

參考文獻

  1. https://ieeexplore.ieee.org/document/8265567
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容