Correcting Over-Exposure in Phot
论文:Correcting Over-Exposure in Photographs
本论文主要讨论过曝光校正算法。所谓过曝光,示例如下所示:
图片中女孩脸部有部分过亮(用蓝色画出部分)。为了达到曝光校正的目的,作者的方法分为以下几步:
- 为了给过曝光区域的亮度恢复腾出空间,压缩曝光良好区域图像的动态范围。
- 基于过曝光的可能性掩膜,进行亮度恢复。
- 基于近邻传播(neighborhood propagation)以及原来颜色的置信度进行颜色校正。
先前的方法大都利用不同颜色通道的比值恢复过曝光区域。然而,对于过曝光像素点,可能3个通道都是过曝光的,即均为255。如果这样,前人的方法就失效了,作者的方法就不会有这种限制。
曝光校正
首先看下整个流程:
算法流程图
给一张输入图像,根据一定的方法判定出过曝光区域(over-exposure map)。由这个over-exposure map就可以得到相应的over-exposure likelihood(用于校正亮度)和confidence map(用于校正颜色)。所以,很自然的,作者将图像转换到Lab空间处理。
过曝光检测
以往检测过曝光就是看亮度是否大于254(用254是为了避免图像压缩产生的误差)。这种硬阈值的方法难以处理过曝光区域向中间正常区域渐变的情况。于是,作者提出了如下公式(即over-exposure map的计算方式):
下式中L表示输入图像的亮度通道值,C表示(a, b)通道值。
over-exposure map计算公式
公式中,双曲正切函数y = 1/2 * tanh(x)的函数关系如下:
y = 1/2 * tanh(x)显然,其实相比硬阈值而言,就是一个软阈值罢了。这样可以使得曝光校正后图像过度会更好一些。根据公式计算之后,把M > 0.5的像素作为需要进行曝光校正的区域。
亮度恢复
过曝光区域信息严重丢失,所以作者考虑压缩非过曝光区域的动态范围,这样就可以对过曝光区域进行拓展,补偿丢失的信息。对于非过曝光区域的压缩,可以让图像梯度进行非线性减弱,具体而言,大梯度压缩多,小梯度压缩小,可以看参考文献[3],公式如下:
非过曝光区域动态范围压缩
所以,优化的目标函数其中一项就是使得输出图像的梯度尽可能等于上式的梯度:
亮度梯度损失函数此处,作者引入过曝光似然(over-exposure likelihood),以此评估输入图像的一个像素在输出中依然是过曝光的,公式如下:
over-exposure likelihood
上式中,P反映了输入图像像素值与实际亮度的关联性。大部分情况下为0,只有当M很多,即完全过曝光时,P为1,表示输入图像像素值与实际亮度强相关,即输入图像像素值应为255。因为输出结果是做了曝光校正的,所以输入图像中的许多像素亮度值基本不可靠了,除了过曝光很严重的像素点。
基于此,作者引入了损失函数的第二项,对于过曝光区域,其亮度变化越小越好:
过曝光区域亮度变化最小化损失函数
综合起来,亮度调整过程优化如下的目标函数: 亮度调整优化的目标函数
约束(7)表示低亮度区域保持不变。(6)式的求解等效于求a banded linear system,这个可以高效的求解。
彩色校正
过曝光区域周围的像素或多或少会受影响,于是作者此处定义了一个over-exposed map。
over-exposed map估计得到over-exposed map之后,通过优化如下目标函数进行色彩校正,公式本身比较好理解,但是怎么优化是一个问题?:
色彩校正上式中,权值w的设置类似于双边滤波中的设置:
权值w的设置根据上式,权重和距离,亮度,颜色差异均相关。也就是说,影响最终色彩校正的因素有:over-exposed map,距离,亮度,颜色。这也就是开头说的:基于近邻传播(neighborhood propagation)以及原来颜色的置信度进行颜色校正。
总结
总的来说,作者没用什么很复杂的公式,方法也比较简单。其实这种基于颜色去纠正的方式个人觉得不靠谱,背景稍微复杂点就失效了。