圖像亮度自適應調整

簡介

  本篇主要是對論文:Automatic Exposure Correction of Consumer Photographs 的實現總結。
作用是爲了讓圖像曝光、細節更好。
    論文地址:點擊打開鏈接

實現原理

  根據對輸入圖像的亮度信息進行分析處理,進而獲得該圖片對應的S型Gamma曲線。利用這條曲線對輸入圖像進行處理,得到更好曝光和細節效果的圖像。

算法實現

圖像分割

  將輸入圖像縮放後,利用:graph-based segmentation方法進行圖像分割,直接網上搜索該關鍵字,有對應的論文和直接的代碼下載,代碼做點小修改之後
可以直接opencv編譯通過。
  得到的結果如下:
           
               縮放後圖像                                區域分割後圖像

區域合併

  首先將圖像歸一化,接着根據亮度0.0、0.1....1.0將圖像分爲11層。然後將之前分割出來的區域塊,根據亮度層進行合併。
    得到的結果如下:
          
               區域合併後圖像

細節提取

  將圖像根據前面的分層和亮度中間值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曲線調整。
  處理後的結果對比如下:
         
                                                       S曲線調整後結果對比
  可以明顯的看到,暗處的亮度和細節已經起來了。

細節優化

  前面的調整,提高暗處亮度,本質上會壓縮了中間區域的動態範圍,將會導致圖像看起來有些朦朧模糊;因此在這基礎上,還需要
做些細節增強的處理。對原圖像I做guided filter,到新圖像F,用I - F得到用來增強細節的圖像。
     接着使用如下公式進行處理:
                 
     處理後的結果對比如下:
        
     可以看到右邊圖像細節部分,得到了增強。

色彩調整

  前面可以看到,新圖像亮度增加之後,飽和度會降低。所以,這裏根據原圖像亮度和色彩的比值,以及新圖像的亮度,
來從新調整新圖像的色彩。
     處理後的結果對比如下:
        
  可以看到新圖像的色彩飽和度已經起來了。
    另外需要注意,該算法的大缺點:會放大噪聲。
  以上,圖像調整完畢。

結果顯示

  最後,看幾組該算法的處理結果:
        
        
        
        
        
  可以看到:該算法對弱光下拍攝的圖像,暗處細節得到了明顯的加強,同時對正常曝光的圖像,也不會造成變壞的影響。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章