低亮度圖片增強(qiáng)方法:基于Retinex理論的低亮度圖片增強(qiáng)算法1

Retinex理論是基于色彩恒常的一種代表性計(jì)算理論,全稱(chēng)是視網(wǎng)膜皮層理論(Retinal-cortex theory)。Retinex理論認(rèn)為人類(lèi)知覺(jué)到的物體表色與物體表面的反射性質(zhì)有著密切的關(guān)系。照度(illumination)引起的色彩變化一般是平緩的,通常表現(xiàn)為平緩的照明梯度,而由表面反射性質(zhì)(reflection)引發(fā)的顏色變化效應(yīng)則往往表現(xiàn)為突變形式。通過(guò)分辨這兩種變化形式,人們就能將圖像的照度變化作出區(qū)分,從而得知由照度變化引起的表色變化,使對(duì)表色的知覺(jué)保持橫常。

基于Retinex理論的低亮度圖片增強(qiáng)算法,通常把圖片分解為亮度分量(illumination)和反射分量(reflection),通過(guò)增強(qiáng)分解得到的亮度部分,最后將增強(qiáng)的亮度分量與反射分量融合得到增強(qiáng)后的低亮度圖片。

本文介紹兩種基于Retinex理論的低亮度增強(qiáng)算法:

  • A Probabilistic Method for Image Enhancement With Simultaneous Illumination and Reflectance Estimation (PLE)
  • A weighted variational model for simultaneous reflectance and illumination estimation(SRIE)

PLE

由Retinex理論,我們可以將觀測(cè)的圖像S分解成圖片的亮度I和圖片的反射部分R:
\mathbf{S} = \mathbf{R}.\mathbf{I}
S是8比特的圖像,其范圍在[0,255],R的范圍在[0,1],I的范圍也是[0,255],"."表示逐元素相乘。

由于我們的目標(biāo)是通過(guò)觀察到的圖像S得到圖像的亮度分量I和反射分量R,則根據(jù)貝葉斯理論,可以得到:
p(\mathbf{I}, \mathbf{R} | \mathbf{S}) \propto p(\mathbf{S} | \mathbf{I}, \mathbf{R}) p(\mathbf{I}) p(\mathbf{R})
其中p(\mathbf{I}, \mathbf{R} | \mathbf{S})是后驗(yàn)概率,p(\mathbf{S} | \mathbf{I}, \mathbf{R})是似然函數(shù),p(\mathbf{I})p(\mathbf{R}是先驗(yàn)概率。

為了減少計(jì)算的復(fù)雜度,之前的方法通常對(duì)等式的兩邊采取了對(duì)數(shù)操作,將乘法變成了加法,而且,對(duì)數(shù)轉(zhuǎn)換的操作有利于增強(qiáng)圖像暗部區(qū)域的對(duì)比度。然而對(duì)數(shù)操作的副作用會(huì)造成很多低亮度區(qū)域不需要恢復(fù)的結(jié)構(gòu)也被恢復(fù)出來(lái),導(dǎo)致恢復(fù)出錯(cuò)誤的圖像。

為此,該文章并沒(méi)有采用對(duì)數(shù)轉(zhuǎn)換,依然在線(xiàn)性域上去求解R和I。

首先,文章先分析了似然函數(shù)與先驗(yàn)概率:

  • likelihood p(\mathbf{S} | \mathbf{I}, \mathbf{R})
    假設(shè)估計(jì)的誤差\boldsymbol{\varepsilon}=\mathbf{S}-\mathbf{\mathbf { R }} \cdot \mathbf{I}符合均值為0,方差為\zeta_{1}^{2}高斯分布的獨(dú)立同分布隨機(jī)變量:
    p(\mathbf{S} | \mathbf{I}, \mathbf{R})=N\left(\varepsilon | 0, \zeta_{1}^{2} \mathbf{1}\right)

  • prior p(\mathbf{R})
    基于反射分量包含的邊緣信息是分段連續(xù)的(piece-wise continuous),所以反射分量的梯度分布滿(mǎn)足拉普拉斯分布:
    p(\mathbf{R})=L\left(\nabla \mathbf{R} | 0, \zeta_{2} \mathbf{1}\right)

  • prior p(\mathbf{I})
    基于亮度分量的梯度分布在空域上是光滑的:
    p_{1}(\mathbf{I})=N\left(\nabla \mathbf{I} | 0, \zeta_{3}^{2} \mathbf{1}\right)
    基于亮度分量在數(shù)值上是顯著區(qū)別與反射分量,因此需要一個(gè)正則項(xiàng)來(lái)限制亮度分量的數(shù)值范圍:
    p_{2}(\mathbf{I})=N\left(\mathbf{I} | I_{0}, \zeta_{4}^{2} \mathbf{1}\right)
    I_{0}是高斯分布的均值,在這篇文章里,I_{0}用圖像S的平均值來(lái)替代。
    最后:
    p(\mathbf{I})=p_{1}(\mathbf{I}) p_{2}(\mathbf{I})

為了有效地同時(shí)估計(jì)圖像亮度和反射分量,最大后驗(yàn)概率估計(jì)(MAP)問(wèn)題被轉(zhuǎn)化成能量最小化問(wèn)題,即:
E(\mathbf{I}, \mathbf{R})=-\log (p(\mathbf{I}, \mathbf{R} | \mathbf{S}))

將以上的先驗(yàn)和似然概率考慮其中,可以得到以下的目標(biāo)函數(shù):
\begin{aligned} E(\mathbf{I}, \mathbf{R})=&\|\mathbf{R} \cdot \mathbf{I}-\mathbf{S}\|_{2}^{2}+\alpha\|\nabla \mathbf{I}\|_{2}^{2} \\ &+\beta\|\nabla \mathbf{R}\|_{1}+\gamma\left\|\mathbf{I}-I_{0}\right\|_{2}^{2} \quad \text { s.t. } \mathbf{S} \leq \mathbf{1} \end{aligned}

其中,\alpha\beta 、\gamma為正的參數(shù),\| \|_{p}為p-norm操作。

\left(\|\mathbf{R} \cdot \mathbf{I}-\mathbf{S}\|_{2}^{2}\right)是為了保證分解后圖像的L2的保真度,即最小化 \mathbf{R} \cdot \mathbf{I}\mathbf{S}的歐式距離。
\|\nabla \mathbf{I}\|_{2}^{2}是為了保證亮度分量在空間域上的光滑性。
\|\nabla \mathbf{R}\|_{1}是對(duì)應(yīng)于TV反射稀疏性,為了保證反射分量的piece-wise continuous.
\left\|\mathbf{I}-I_{0}\right\|_{2}^{2}是為了限制亮度分量的數(shù)值。

這這篇文章中使用了交替方向乘子算法(alternating direction method of multipliers,ADMM)來(lái)求解目標(biāo)函數(shù)的極值點(diǎn),由于L1-norm難以求解,文章中引入了輔助的參數(shù),目標(biāo)函數(shù)被改寫(xiě)為:
\begin{aligned} E(\mathbf{I}, \mathbf{R}, \mathbfu0z1t8os, \mathbf)=&\|\mathbf{R} \cdot \mathbf{I}-\mathbf{S} \mathbf{I}\|_{2}^{2}+\alpha\|\nabla \mathbf{I}\|_{2}^{2} \\ &+\beta\left\{\|\mathbfu0z1t8os\|_{1}+\lambda\|\nabla \mathbf{R}-\mathbfu0z1t8os+\mathbf\|_{2}^{2}\right\} \\ &+\gamma\left\|\mathbf{I}-I_{0}\right\|_{2}^{2} \quad \text { s.t. } \mathbf{S} \leq \mathbf{I} \end{aligned}

由ADMM理論,原目標(biāo)函數(shù)被分為三個(gè)子優(yōu)化問(wèn)題迭代求解,在第j次迭代過(guò)程中,三個(gè)子優(yōu)化問(wèn)題分別是:
(P 1) \quad \mathbfu0z1t8os^{j}=\underset{\mathbfu0z1t8os}{\arg \min }\|\mathbfu0z1t8os\|_{1}+\lambda\left\|\nabla \mathbf{R}^{j-1}-\mathbfu0z1t8os+\mathbf^{j-1}\right\|_{2}^{2}

\begin{aligned}(P 2) & \mathbf{R}^{j}=\underset{\mathbf{R}}{\arg \min }\left\|\mathbf{R}-\frac{\mathbf{S}}{\mathbf{I}^{j-1}}\right\|_{2}^{2}+\beta \lambda\left\|\nabla \mathbf{R}-\mathbfu0z1t8os^{j}+\mathbf^{j-1}\right\|_{2}^{2} \\ \mathbf^{j} &=\mathbf^{j-1}+\nabla \mathbf{R}^{j}-\mathbfu0z1t8os^{j} \end{aligned}

(P 3) \quad \mathbf{I}^{j}=\underset{\mathbf{I}}{\arg \min }\left\|\mathbf{I}-\frac{\mathbf{S}}{\mathbf{R}^{j}}\right\|_{2}^{2}+\alpha\|\nabla \mathbf{I}\|_{2}^{2}+\gamma\left\|\mathbf{I}-I_{0}\right\|_{2}^{2}

具體求解過(guò)程可參考原文,這里不做過(guò)多解釋。

得到R和I后,使用Gamma矯正來(lái)增強(qiáng)亮度分量I:
\mathbf{I}^{\prime}=W\left(\frac{\mathbf{I}}{W}\right)^{\frac{1}{\gamma^{\prime}}}
其中W是255,參數(shù)\gamma^{\prime}設(shè)置為2.2。

增強(qiáng)后的圖片可有以下公式得到:
\mathbf{S}_{\text {enhanced}}=\mathbf{R} \cdot \mathbf{I}^{\prime}

SRIE

之前討論到在求解亮度和反射分量的過(guò)程中,通常會(huì)使用對(duì)數(shù)操作來(lái)減少計(jì)算量,但是對(duì)數(shù)操作的副作用會(huì)造成很多低亮度區(qū)域不需要恢復(fù)的結(jié)構(gòu)也被恢復(fù)出來(lái),導(dǎo)致恢復(fù)出錯(cuò)誤的圖像。這里先介紹為什么會(huì)出現(xiàn)這種情況。

由Retinex理論,我們可以將觀測(cè)的圖像S分解成圖片的亮度I
和圖片的反射部分R:
\mathbf{S} = \mathbf{R}.\mathbf{I}
S是8比特的圖像,其范圍在[0,255],R的范圍在[0,1],I的范圍也是[0,255],"."表示逐元素相乘。

采用對(duì)數(shù)變換后,可以得到:
\mathbf{s}=\mathbf{r}+\mathbf{l}
其中\mathbf{s}=\log (\mathbf{S}), \mathbf{r}=\log (\mathbf{R}) \text { and } \mathbf{l}=\log (\mathbf{L})。

與上篇文章類(lèi)似,可以得到以下的目標(biāo)優(yōu)化函數(shù):
\begin{aligned} E(\mathbf{r}, \mathbf{l})=&\|\mathbf{I}+\mathbf{r}-\mathbf{s}\|_{2}^{2}+\lambda_{1}\|\nabla \mathbf{I}\|_{2}^{2}+\lambda_{2}\|\nabla \mathbf{r}\|_{1} \\ & \text { s.t. } \mathbf{r} \leq 0 \text { and } \mathbf{s} \leq \mathbf{l} \end{aligned}

在對(duì)數(shù)域上,對(duì)于一個(gè)給定的信號(hào)x,梯度的變化為:
\nabla(\log (x))=\frac{1}{x} \nabla x

因此,當(dāng)信號(hào)x很小的時(shí)候,\nabla(\log (x))的值會(huì)變得很大,從而暫居主導(dǎo)地位。即在恢復(fù)圖像的過(guò)程中,目標(biāo)函數(shù)會(huì)更加傾向于恢復(fù)圖像暗部區(qū)域,導(dǎo)致很多不該恢復(fù)出的細(xì)節(jié)恢復(fù)出來(lái),而圖像的亮度區(qū)域則無(wú)法恢復(fù)出較出真實(shí)的結(jié)構(gòu)。

對(duì)數(shù)變換比較

上圖顯示了原圖和對(duì)數(shù)域圖以及他們相對(duì)應(yīng)的梯度圖,可以明顯的觀察到在對(duì)數(shù)域的梯度圖,很多背景區(qū)域上的細(xì)節(jié)被放大。

為了解決這個(gè)問(wèn)題,上篇文章PLE沒(méi)有采用對(duì)數(shù)變換,而這篇文章則采用了一個(gè)補(bǔ)償?shù)姆绞剑瑏?lái)彌補(bǔ)在對(duì)數(shù)域上梯度過(guò)于放大暗部區(qū)域的問(wèn)題。

文章中采用的目標(biāo)函數(shù)是:
\begin{aligned} E(\mathbf{r}, \mathbf{l})=&\|\mathbf{r}+\mathbf{l}-\mathbf{s}\|_{2}^{2}+c_{1}\left\|e^{\mathbf{r}} \cdot \nabla \mathbf{r}\right\|_{1}+c_{2}\left\|e^{\mathbf{l}} \cdot \nabla \mathbf{l}\right\|_{2}^{2} \\ & \text { s.t. } \mathbf{r} \leq 0 \text { and } \mathbf{s} \leq \mathbf{l} \end{aligned}

即在梯度部分直接乘上了一個(gè)‘x’來(lái)彌補(bǔ)對(duì)數(shù)梯度上‘\frac{1}{x}’的影響。

在求解過(guò)程中,文章中直接使用了前次迭代結(jié)果的RL來(lái)代替e^{\mathbf{r}}e^{\mathbf{l}},即:

\begin{aligned} E\left(\mathbf{r}^{k}, \mathbf{l}^{k}\right) &=\left\|\mathbf{r}^{k}+\mathbf{l}^{k}-\mathbf{s}\right\|_{2}^{2}+c_{1}\left\|\mathbf{R}^{k-1} \cdot \nabla \mathbf{r}^{k}\right\|_{1} \\ &+c_{2}\left\|\mathbf{L}^{k-1} \cdot \nabla \mathbf{I}^{k}\right\|_{2}^{2} \\ & \text { s.t. } \mathbf{r}^{k} \leq 0 \text { and } \mathbf{s} \leq \mathbf{l}^{k} \end{aligned}

與前篇文章類(lèi)似,引入了新的變量來(lái)解決L1-norm難以求解的問(wèn)題:

\begin{array}{c}{E\left(\mathbf{r}^{k}, \mathbf{l}^{k}, \mathbfu0z1t8os^{k}, \mathbf^{k}\right)=\left\|\mathbf{r}^{k}+\mathbf{l}^{k}-\mathbf{s}\right\|_{2}^{2}+c_{2}\left\|\mathbf{L}^{k-1} \cdot \nabla \mathbf{l}^{k}\right\|_{2}^{2}} \\ {+c_{1}\left\{\left\|\mathbfu0z1t8os^{k}\right\|_{1}+\lambda\left\|\mathbf{R}^{k-1} \cdot \nabla \mathbf{r}^{k}-\mathbfu0z1t8os^{k}+\mathbf^{k}\right\|_{2}^{2}\right\}} \\ {\text { s.t. } \mathbf{r}^{k} \leq 0 \text { and } \mathbf{s} \leq \mathbf{l}^{k}}\end{array}

同樣地使用了ADMM算法將原問(wèn)題分為三個(gè)子優(yōu)化問(wèn)題:
\begin{aligned}(P 1) \mathbfu0z1t8os^{k} &=\underset{\mathbfu0z1t8os}{\arg \min }\|\mathbfu0z1t8os\|_{1} \\ &+\lambda\left\|\mathbf{R}^{k-1} \cdot \nabla \mathbf{r}^{k-1}-\mathbfu0z1t8os+\mathbf^{k-1}\right\|_{2}^{2} \end{aligned}

\begin{aligned}(P 2) \mathbf{r}^{k} &=\underset{\mathbf{r}}{\arg \min }\left\|\mathbf{r}+\mathbf{l}^{k-1}-\mathbf{s}\right\|_{2}^{2} \\ &+c_{1} \lambda\left\|\mathbf{R}^{k-1} \cdot \nabla \mathbf{r}-\mathbfu0z1t8os^{k}+\mathbf^{k-1}\right\|_{2}^{2} \\ \mathbf^{k} &=\mathbf^{k-1}+\mathbf{R}^{k} \cdot \nabla \mathbf{r}^{k}-\mathbfu0z1t8os^{k} \end{aligned}

(P 3) \mathbf{l}^{k}=\underset{1}{\arg \min }\left\|\mathbf{I}+\mathbf{r}^{k}-\mathbf{s}\right\|_{2}^{2}+c_{2}\left\|\mathbf{L}^{k-1} \cdot \nabla \mathbf{l}\right\|_{2}^{2}

具體求解過(guò)程也與前篇文章類(lèi)似,具體可參考原文,這里不做過(guò)多解釋。

得到R和I后,使用Gamma矯正來(lái)增強(qiáng)亮度分量I:
\mathbf{I}^{\prime}=W\left(\frac{\mathbf{I}}{W}\right)^{\frac{1}{\gamma^{\prime}}}
其中W是255,參數(shù)\gamma^{\prime}設(shè)置為2.2。

增強(qiáng)后的圖片可有以下公式得到:
\mathbf{S}_{\text {enhanced}}=\mathbf{R} \cdot \mathbf{I}^{\prime}

算法實(shí)現(xiàn)

PLE: https://xueyangfu.github.io/paper/2015/TIP/Matlab_code.zip
SRIE: https://xueyangfu.github.io/paper/2016/cvpr/Matlab_implementation.zip

結(jié)果比較

低亮度圖片
增強(qiáng)后的低亮度圖片_PLE
增強(qiáng)后的低亮度圖片_SRIE

參考文獻(xiàn)

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

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

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