当前位置: 首页>移动开发>正文

android 自适应亮度 手机自适应亮度 启用自适应亮度

简单介绍



  本篇主要是对论文:Automatic Exposure Correction of Consumer Photographs 的实现总结。 作用是为了让图像曝光、细节更好。


实现原理



  依据对输入图像的亮度信息进行分析处理,进而获得该图片相应的S型Gamma曲线。利用这条曲线对输入图像进行处理,得到更好曝光和细节效果的图像。



算法实现

图像切割



  将输入图像缩放后。利用:graph-based segmentation方法进行图像切割。直接网上搜索该keyword,有相应的论文和直接的代码下载。代码做点小改动之后 能够直接opencv编译通过。   得到的结果例如以下: 缩放后图像 区域切割后图像



区域合并



  首先将图像归一化。接着依据亮度0.0、0.1....1.0将图像分为11层。



然后将之前切割出来的区域块,依据亮度层进行合并。

得到的结果例如以下:

android 自适应亮度 手机自适应亮度 启用自适应亮度,android 自适应亮度 手机自适应亮度 启用自适应亮度_直方图,第1张

区域合并后图像

细节提取


  将图像依据前面的分层和亮度中间值V为分界线。将图像分为暗区和两区两部分。,对图像分别用Gamma(2.2, 0.445)进行处理,得到欠曝和过曝图像。接着对着三张图像进行canny 细节提取。


针对之前得到的前面分层。依据每层亮度是否大于V,计算出该层的细节占总细节的比例:Vb或者Vh。

区域尺寸比例


  计算出每层区域的像素占整个图像像素的比例。相应为:Ci;


相邻层直方图距离


  得到每层相应的直方图,计算两两相邻层之间。直方图重合区域最大时候移动的距离,记录为Dij。


区域层亮度重映射


  依据论文上公式:  


  依据公式算法。枚举全部可能的的区域层亮度组合,算出每种组合的Z值,取Z值最小时候的组合。就是我们求得的新区域层亮度。如本文图片范例所看到的:最開始的区域层亮度为:0 1 2 3 4 7 8;算法调整后为:2, 2, 2, 3, 5, 7, 8。亮处的区域层亮度没有变化,暗处区域层 亮度添加了不少。


S曲线调整


  前面得到的区域层亮度。就是用来求S曲线的Qs, Qh。例如以下图所看到的:


  Qs由例如以下公式求得:


  ei能够理解为区域层亮度调整前的区域亮度与区域size的比值。e'i为区域层亮度调整后的区域亮度与区域size的比值。Qh也是类似方式求得,本文范例图像上,亮处区域调整为0。所以Qh计算出来为0。Qs为正数。



  接着便能够利用公式: 对原图像进行S曲线调整。

  处理后的结果对照方下:

android 自适应亮度 手机自适应亮度 启用自适应亮度,android 自适应亮度 手机自适应亮度 启用自适应亮度_ViewUI_02,第2张

S曲线调整后结果对照

  能够明显的看到。暗处的亮度和细节已经起来了。


细节优化


  前面的调整。提高暗处亮度,本质上会压缩了中间区域的动态范围。将会导致图像看起来有些朦胧模糊。因此在这基础上,还须要做些细节增强的处理。对原图像I做guided filter,到新图像F,用I - F得到用来增强细节的图像。

接着使用例如以下公式进行处理:

android 自适应亮度 手机自适应亮度 启用自适应亮度,android 自适应亮度 手机自适应亮度 启用自适应亮度_人工智能_03,第3张


处理后的结果对照方下:


能够看到右边图像细节部分,得到了增强。


色彩调整


  前面能够看到,新图像亮度添加之后,饱和度会减少。所以。这里依据原图像亮度和色彩的比值。以及新图像的亮度,来从新调整新图像的色彩。 处理后的结果对照方下:


  能够看到新图像的色彩饱和度已经起来了。


另外须要注意,该算法的大缺点:会放大噪声。


  以上,图像调整完成。


结果显示


  最后。看几组该算法的处理结果:


  能够看到:该算法对弱光下拍摄的图像,暗处细节得到了明显的加强,同一时候对正常曝光的图像,也不会造成变坏的影响。


转载于:


简单介绍


  本篇主要是对论文:Automatic Exposure Correction of Consumer Photographs 的实现总结。作用是为了让图像曝光、细节更好。 论文地址:点击打开链接


实现原理


  依据对输入图像的亮度信息进行分析处理,进而获得该图片相应的S型Gamma曲线。利用这条曲线对输入图像进行处理,得到更好曝光和细节效果的图像。


算法实现

图像切割


  将输入图像缩放后。利用:graph-based segmentation方法进行图像切割。直接网上搜索该keyword,有相应的论文和直接的代码下载。代码做点小改动之后能够直接opencv编译通过。  得到的结果例如以下: 缩放后图像 区域切割后图像


区域合并


  首先将图像归一化。接着依据亮度0.0、0.1....1.0将图像分为11层。


然后将之前切割出来的区域块,依据亮度层进行合并。

得到的结果例如以下:

android 自适应亮度 手机自适应亮度 启用自适应亮度,android 自适应亮度 手机自适应亮度 启用自适应亮度_直方图,第1张

区域合并后图像

细节提取


  将图像依据前面的分层和亮度中间值V为分界线。将图像分为暗区和两区两部分。,对图像分别用Gamma(2.2, 0.445)进行处理,得到欠曝和过曝图像。接着对着三张图像进行canny 细节提取。


针对之前得到的前面分层。依据每层亮度是否大于V,计算出该层的细节占总细节的比例:Vb或者Vh。

区域尺寸比例


  计算出每层区域的像素占整个图像像素的比例。相应为:Ci;


相邻层直方图距离


  得到每层相应的直方图,计算两两相邻层之间。直方图重合区域最大时候移动的距离,记录为Dij。


区域层亮度重映射


  依据论文上公式:  


  依据公式算法。枚举全部可能的的区域层亮度组合,算出每种组合的Z值,取Z值最小时候的组合。就是我们求得的新区域层亮度。如本文图片范例所看到的:最開始的区域层亮度为:0 1 2 3 4 7 8;算法调整后为:2, 2, 2, 3, 5, 7, 8。亮处的区域层亮度没有变化,暗处区域层亮度添加了不少。


S曲线调整


  前面得到的区域层亮度。就是用来求S曲线的Qs, Qh。例如以下图所看到的:


  Qs由例如以下公式求得:


  ei能够理解为区域层亮度调整前的区域亮度与区域size的比值。e'i为区域层亮度调整后的区域亮度与区域size的比值。Qh也是类似方式求得,本文范例图像上,亮处区域调整为0。所以Qh计算出来为0。Qs为正数。



  接着便能够利用公式: 对原图像进行S曲线调整。

  处理后的结果对照方下:

android 自适应亮度 手机自适应亮度 启用自适应亮度,android 自适应亮度 手机自适应亮度 启用自适应亮度_ViewUI_02,第2张

S曲线调整后结果对照

  能够明显的看到。暗处的亮度和细节已经起来了。


细节优化


  前面的调整。提高暗处亮度,本质上会压缩了中间区域的动态范围。将会导致图像看起来有些朦胧模糊。因此在这基础上,还须要做些细节增强的处理。对原图像I做guided filter,到新图像F,用I - F得到用来增强细节的图像。

接着使用例如以下公式进行处理:

android 自适应亮度 手机自适应亮度 启用自适应亮度,android 自适应亮度 手机自适应亮度 启用自适应亮度_人工智能_03,第3张


处理后的结果对照方下:


能够看到右边图像细节部分,得到了增强。


色彩调整


  前面能够看到,新图像亮度添加之后,饱和度会减少。所以。这里依据原图像亮度和色彩的比值。以及新图像的亮度,来从新调整新图像的色彩。 处理后的结果对照方下:


  能够看到新图像的色彩饱和度已经起来了。


另外须要注意,该算法的大缺点:会放大噪声。


  以上,图像调整完成。


结果显示


  最后。看几组该算法的处理结果:


  能够看到:该算法对弱光下拍摄的图像,暗处细节得到了明显的加强,同一时候对正常曝光的图像,也不会造成变坏的影响。


https://www.xamrdz.com/mobile/4su1964512.html

相关文章: