低亮度图片增强方法:基于Retinex理论的低亮度图片增强算法1

Retinex理论是基于色彩恒常的一种代表性计算理论,全称是视网膜皮层理论(Retinal-cortex theory)。Retinex理论认为人类知觉到的物体表色与物体表面的反射性质有着密切的关系。照度(illumination)引起的色彩变化一般是平缓的,通常表现为平缓的照明梯度,而由表面反射性质(reflection)引发的颜色变化效应则往往表现为突变形式。通过分辨这两种变化形式,人们就能将图像的照度变化作出区分,从而得知由照度变化引起的表色变化,使对表色的知觉保持横常。

基于Retinex理论的低亮度图片增强算法,通常把图片分解为亮度分量(illumination)和反射分量(reflection),通过增强分解得到的亮度部分,最后将增强的亮度分量与反射分量融合得到增强后的低亮度图片。

本文介绍两种基于Retinex理论的低亮度增强算法:

  • 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理论,我们可以将观测的图像S分解成图片的亮度I和图片的反射部分R:
\mathbf{S} = \mathbf{R}.\mathbf{I}
S是8比特的图像,其范围在[0,255],R的范围在[0,1],I的范围也是[0,255],"."表示逐元素相乘。

由于我们的目标是通过观察到的图像S得到图像的亮度分量I和反射分量R,则根据贝叶斯理论,可以得到:
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})是后验概率,p(\mathbf{S} | \mathbf{I}, \mathbf{R})是似然函数,p(\mathbf{I})p(\mathbf{R}是先验概率。

为了减少计算的复杂度,之前的方法通常对等式的两边采取了对数操作,将乘法变成了加法,而且,对数转换的操作有利于增强图像暗部区域的对比度。然而对数操作的副作用会造成很多低亮度区域不需要恢复的结构也被恢复出来,导致恢复出错误的图像。

为此,该文章并没有采用对数转换,依然在线性域上去求解R和I。

首先,文章先分析了似然函数与先验概率:

  • likelihood p(\mathbf{S} | \mathbf{I}, \mathbf{R})
    假设估计的误差\boldsymbol{\varepsilon}=\mathbf{S}-\mathbf{\mathbf { R }} \cdot \mathbf{I}符合均值为0,方差为\zeta_{1}^{2}高斯分布的独立同分布随机变量:
    p(\mathbf{S} | \mathbf{I}, \mathbf{R})=N\left(\varepsilon | 0, \zeta_{1}^{2} \mathbf{1}\right)

  • prior p(\mathbf{R})
    基于反射分量包含的边缘信息是分段连续的(piece-wise continuous),所以反射分量的梯度分布满足拉普拉斯分布:
    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)
    基于亮度分量在数值上是显著区别与反射分量,因此需要一个正则项来限制亮度分量的数值范围:
    p_{2}(\mathbf{I})=N\left(\mathbf{I} | I_{0}, \zeta_{4}^{2} \mathbf{1}\right)
    I_{0}是高斯分布的均值,在这篇文章里,I_{0}用图像S的平均值来替代。
    最后:
    p(\mathbf{I})=p_{1}(\mathbf{I}) p_{2}(\mathbf{I})

为了有效地同时估计图像亮度和反射分量,最大后验概率估计(MAP)问题被转化成能量最小化问题,即:
E(\mathbf{I}, \mathbf{R})=-\log (p(\mathbf{I}, \mathbf{R} | \mathbf{S}))

将以上的先验和似然概率考虑其中,可以得到以下的目标函数:
\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为正的参数,\| \|_{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}是对应于TV反射稀疏性,为了保证反射分量的piece-wise continuous.
\left\|\mathbf{I}-I_{0}\right\|_{2}^{2}是为了限制亮度分量的数值。

这这篇文章中使用了交替方向乘子算法(alternating direction method of multipliers,ADMM)来求解目标函数的极值点,由于L1-norm难以求解,文章中引入了辅助的参数,目标函数被改写为:
\begin{aligned} E(\mathbf{I}, \mathbf{R}, \mathbf{d}, \mathbf{b})=&\|\mathbf{R} \cdot \mathbf{I}-\mathbf{S} \mathbf{I}\|_{2}^{2}+\alpha\|\nabla \mathbf{I}\|_{2}^{2} \\ &+\beta\left\{\|\mathbf{d}\|_{1}+\lambda\|\nabla \mathbf{R}-\mathbf{d}+\mathbf{b}\|_{2}^{2}\right\} \\ &+\gamma\left\|\mathbf{I}-I_{0}\right\|_{2}^{2} \quad \text { s.t. } \mathbf{S} \leq \mathbf{I} \end{aligned}

由ADMM理论,原目标函数被分为三个子优化问题迭代求解,在第j次迭代过程中,三个子优化问题分别是:
(P 1) \quad \mathbf{d}^{j}=\underset{\mathbf{d}}{\arg \min }\|\mathbf{d}\|_{1}+\lambda\left\|\nabla \mathbf{R}^{j-1}-\mathbf{d}+\mathbf{b}^{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}-\mathbf{d}^{j}+\mathbf{b}^{j-1}\right\|_{2}^{2} \\ \mathbf{b}^{j} &=\mathbf{b}^{j-1}+\nabla \mathbf{R}^{j}-\mathbf{d}^{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}

具体求解过程可参考原文,这里不做过多解释。

得到R和I后,使用Gamma矫正来增强亮度分量I:
\mathbf{I}^{\prime}=W\left(\frac{\mathbf{I}}{W}\right)^{\frac{1}{\gamma^{\prime}}}
其中W是255,参数\gamma^{\prime}设置为2.2。

增强后的图片可有以下公式得到:
\mathbf{S}_{\text {enhanced}}=\mathbf{R} \cdot \mathbf{I}^{\prime}

SRIE

之前讨论到在求解亮度和反射分量的过程中,通常会使用对数操作来减少计算量,但是对数操作的副作用会造成很多低亮度区域不需要恢复的结构也被恢复出来,导致恢复出错误的图像。这里先介绍为什么会出现这种情况。

由Retinex理论,我们可以将观测的图像S分解成图片的亮度I
和图片的反射部分R:
\mathbf{S} = \mathbf{R}.\mathbf{I}
S是8比特的图像,其范围在[0,255],R的范围在[0,1],I的范围也是[0,255],"."表示逐元素相乘。

采用对数变换后,可以得到:
\mathbf{s}=\mathbf{r}+\mathbf{l}
其中\mathbf{s}=\log (\mathbf{S}), \mathbf{r}=\log (\mathbf{R}) \text { and } \mathbf{l}=\log (\mathbf{L})

与上篇文章类似,可以得到以下的目标优化函数:
\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}

在对数域上,对于一个给定的信号x,梯度的变化为:
\nabla(\log (x))=\frac{1}{x} \nabla x

因此,当信号x很小的时候,\nabla(\log (x))的值会变得很大,从而暂居主导地位。即在恢复图像的过程中,目标函数会更加倾向于恢复图像暗部区域,导致很多不该恢复出的细节恢复出来,而图像的亮度区域则无法恢复出较出真实的结构。

对数变换比较

上图显示了原图和对数域图以及他们相对应的梯度图,可以明显的观察到在对数域的梯度图,很多背景区域上的细节被放大。

为了解决这个问题,上篇文章PLE没有采用对数变换,而这篇文章则采用了一个补偿的方式,来弥补在对数域上梯度过于放大暗部区域的问题。

文章中采用的目标函数是:
\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}

即在梯度部分直接乘上了一个‘x’来弥补对数梯度上‘\frac{1}{x}’的影响。

在求解过程中,文章中直接使用了前次迭代结果的RL来代替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}

与前篇文章类似,引入了新的变量来解决L1-norm难以求解的问题:

\begin{array}{c}{E\left(\mathbf{r}^{k}, \mathbf{l}^{k}, \mathbf{d}^{k}, \mathbf{b}^{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\|\mathbf{d}^{k}\right\|_{1}+\lambda\left\|\mathbf{R}^{k-1} \cdot \nabla \mathbf{r}^{k}-\mathbf{d}^{k}+\mathbf{b}^{k}\right\|_{2}^{2}\right\}} \\ {\text { s.t. } \mathbf{r}^{k} \leq 0 \text { and } \mathbf{s} \leq \mathbf{l}^{k}}\end{array}

同样地使用了ADMM算法将原问题分为三个子优化问题:
\begin{aligned}(P 1) \mathbf{d}^{k} &=\underset{\mathbf{d}}{\arg \min }\|\mathbf{d}\|_{1} \\ &+\lambda\left\|\mathbf{R}^{k-1} \cdot \nabla \mathbf{r}^{k-1}-\mathbf{d}+\mathbf{b}^{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}-\mathbf{d}^{k}+\mathbf{b}^{k-1}\right\|_{2}^{2} \\ \mathbf{b}^{k} &=\mathbf{b}^{k-1}+\mathbf{R}^{k} \cdot \nabla \mathbf{r}^{k}-\mathbf{d}^{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}

具体求解过程也与前篇文章类似,具体可参考原文,这里不做过多解释。

得到R和I后,使用Gamma矫正来增强亮度分量I:
\mathbf{I}^{\prime}=W\left(\frac{\mathbf{I}}{W}\right)^{\frac{1}{\gamma^{\prime}}}
其中W是255,参数\gamma^{\prime}设置为2.2。

增强后的图片可有以下公式得到:
\mathbf{S}_{\text {enhanced}}=\mathbf{R} \cdot \mathbf{I}^{\prime}

算法实现

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

结果比较

低亮度图片
增强后的低亮度图片_PLE
增强后的低亮度图片_SRIE

参考文献

  1. http://psychology.wikia.com/wiki/Retinex_theory
  2. https://ieeexplore.ieee.org/document/7229296
  3. https://ieeexplore.ieee.org/document/7780673
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容