论文学习记录:Automatic Exposure Correction of Consumer Photographs

  本文将计算出一条最适合输入图像的S型非线性色调曲线来自动校正曝光。区域级别的最优曝光计算,不仅考虑了各自区域的可见性,还考虑了邻域的相对对比度,这样在调整曝光的同时还保持住了细节。

一、算法流程

  

  整个算法分为两步:
  1. 曝光计算。
  2. S曲线调整。
  本文中所有计算都是在亮度通道进行,并且将亮度归一化到[0,1]。

二、具体方法

2.1 区域级的曝光计算

      借鉴了Ansel Adams’的Zone System,整个亮度范围[0,1]被均为的划分为11个zones,用罗马数字来表示这些区域,O表示黑,V表示中间灰度,X表示白。
  首先对图像进行分割,每个区块的平均亮度作为该区域的亮度,这样每一个区域都对应到一个zone。
  在实际中,并不需要11个zones一一对应这样细致的划分,可以适当的对一些zones进行合并,如下图所示。

  

2.1.1 细节量计算

        对于图像过曝和欠曝区域的细节量可以用检测到的边缘数量来计算,过曝和欠曝可以通过调整图像的gamma曲线来模拟。
  这里使用一对默认的gamma值,gamma = 2.2和gamma-1 = 0.455,用canny算子分别检测原图,过曝图和欠曝图的边缘,得到三个集合,暗区(zone<V)的细节,亮区(zone>V)的细节,总的细节量
  用图像来表示如下。

  然后计算出相对细节量。

  

2.1.2 相对对比度计算

  相对对比度的计算是用亮度直方图距离,其定义是两个直方图有最大相交时的最小移动距离。
  把每一个区域看成一个节点,那么每个节点有一到两个邻域,定义分割图像的马尔科夫能量方程:

  

  其中,Ei是第i个独立区域的数据项,Ei,j是第i个区域的j个邻域的数据项,在本文中Ei = -log(P(i)),Eij = -log(P(i,j))。
  似然度P(i)的计算方式如下:

  

  其中,vi即是前面计算的细节量,Ci是区域大小,thetai是重要区域大小,比如人脸或者天空等,zi是原始的zone,zi`是新的zone,p(t) = 1/(1+exp(-t))。
  相关性P(i,j)的计算方式如下:

  

  其中,dij是原始相对对比度,dij`是新的相对对比度,Cj是邻域大小,G(.)是零均值高斯函数,方差为0.15。P(i,j)是相对对比度动态变化的惩罚项。
关于马尔科夫能量方程中lamda的取值,论文中提到是对所有数据项求和,对两两配对的zone candidates求和,然后求二者的比值。

2.2 细节保持的S曲线调整

  下图是一条典型的S曲线。

  

  用公式可以表示如下:

  

  其中,x是输入像素亮度,f(x)是输出像素亮度,,k1 = 5, k2 = 14, k3 = 1.6。
  假设第i个欠曝区域的原曝光值和新曝光值分别是ei,ei`,可以计算出如果将所有欠曝区域的值求平均可以得到一个统一的值。过曝区域的计算方式类似。

注:按照

的关系推导出的公式并不是

它的最后一项应该在分母上,但是用

却能得到正确的结果,那么应该是

有错,其中分子中的乘法该为除法。

   以上所有步骤除计算f(x)都可以用小图计算减少计算量。
  直接做完S曲线映射会丢失部分细节,需要再做一次锐化。
  对图像I用guided filter做一次保边滤波得到图像IF,原图减去滤波后的图像得到细节图像,最终的输出图像按照如下方式计算:
  
  最后,因为亮度的调整导致图像饱和度的变化,需要对色度通道也做一定的调整。

三、结果


  

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/80895398