圖像處理之動態范圍壓縮


1 動態范圍壓縮介紹

       自然界中真實場景能夠表現比較廣泛的顏色亮度區間,比如從很暗(10^-5 cd/m2)的黑夜到明亮(10^5 cd/m2)的太陽光,有將近10個數量級的動態方位。而傳統顯示設備所能顯示的場景、視頻和圖像通常受限於硬件設備,通常只能表達出很小一部分的亮度范圍,比如如常見的8比特圖像顯示0到255的整數范圍,因此為了能夠顯示高動態范圍的影響,需要實現從高動態范圍圖像(HDR)到低動態范圍圖像(LDR)的映射,並且不同顯示設備的出現,需要實現HDR和之間的相互轉換 ,即動態范圍壓縮(DRC,Dynamic Range Compression)。
       動態范圍壓縮算法常見的分為全局映射和局部映射。全局映射:像素的一對一映射,降低一致的分辨率,這樣得到的LDR圖像的對比度大大地減少,容易丟失細節部分的信息 。局部映射:考慮像素和像素之間的關系,能夠適當增強局部范圍的亮度對比度,它保留了一定的細節,但是某些區域會出現失真的現象,並且它的復雜度較高 。鑒於這個原因,我們希望有一個理想算法:既要能保持像素的整體變化,又要能保存一部分細節特征,使得亮度效果能夠達到人眼可以接受的接近現實的場景。

2 動態范圍壓縮算法

       實現動態范圍壓縮有許多種算法,比如線性移位算法、對數映射算法、分段函數映射算法、自適應性對數映射算法、高動態范圍圖像可視化算法。

2.1 線性移位算法

      原理:是最簡單的DRC算法,它將以n比特整數表示的HDR圖像直接右移(n—m)個比特得m(m<n)比特整數的LDR圖像。
      缺點:考慮像素顏色的分布,會使數值集中的顏色分辨率降低,對於大部分圖像來說,像素顏色不均,並且多分布於中低數值區間,高數值區間的顏色較少,這樣映射后的LDR圖像,顏色暗的地方更暗了,丟失很多細節,顏色高亮的地方會變得很尖銳,有失真的表現。
2.2 對數映射算法
      原理:為簡便起見以2為底,將數值區間[0,2^n]對數化到區間[0,n],然后再線性變換到區間[0,2^m] 。

      缺點:與線性移位算法一樣,都是全局算法,不能對圖像的局部進行有效的修正,圖像效果一般,但是效率較高 。
2.3 分段函數映射
      原理:考慮到低數值區間、高數值區間以及它們之間區域的不同特點,使用三段式的分段函數對HDR圖像進行壓縮,對不同的亮度區域進行分辨率調整。
      優點:兩端的線段斜率較小,中間的斜率較大,即算法有意地提高中間值像素的分辨率。映射曲線的兩個拐點值視不同的圖像而定,即它考慮到了圖像的局部特征變化, 所以不完全是全局算法。
      缺點:仍然是粗粒度的,因為它沒有考慮像素之間的關系。
2.4 自適應性對數映射
      原理:引入實際場景最高亮度值和現實場景最高亮度值的對數比,並且選取一個較優對比度調節算子,實現HDR到LDR的映射。
      優點:樣擴大中間亮度值的映射范圍,壓縮高亮度值的映射斜率。后兩種算法的復雜度一般,圖像效果比之前兩種算法好。
2.5 高動態范圍圖像可視化算法

      原理:用快速雙向濾波器對輸入圖像進行對數域分解,分解為基本層和細節層,分別進行全局和局部映射算法,基本層進行直方圖映射調整,細節層進行自適應細節增強。
      優點:既保留了全局對比信息,又增強了局部細節,視覺效果更好一些,但是雙向濾波器的引入,使得算法的復雜度較高。
      本文為了考慮性能和實現復雜度,提出了一種新算法:以對數映射為基礎,結合對數映射和分段映射的特點,划分出不同的亮度范圍,然后分段映射。這樣既不需要太高復雜度的算法將圖像的全局信息和局部信息分開來,又能實現對局部區域的調節。

3 對數分段映射算法實現

      對數分段映射算法的實現步驟如下:

      (1) 將原始輸入進行指定區間的改進對數映射

      (2)  將對數區間進行分段調整

3.1 改進的對數映射

      傳統對數映射公式如下,其中:對數底數base和前面的系數a視具體的映射范圍而定,這里取以2為底。

                                                                 f(x) = a * logbase(x + 1)

      改進全局映射步驟中的對數映射算法,以10比特的HDR圖像為例,公式如下:

                                                f(x) = [[lb(x+1) * 1..6]^2 - 0.5]; 0=<x<=1023

      Matlab各自擬合的曲線對比如下(輸入:[0,1023],輸出:[0,255]):

      其中L1為傳統對數算法,L2曲線為改進后的算法,L3為線性移位算法。可以看出改進后的L2曲線優勢是擴 大了中間數值區域的映射范圍,提高了該區域的分辨率。

3.2 對數區間進行分段調整

       我們對局部區域進行適當處理,使得數據分布較多的區域能夠擴大映射范圍,數據分布較少的區域能夠縮映
射范圍,即將改進后的算法加以適應性調整后作用到不同的區間段上以產生更好的效果。

        假如把需要映射的亮度區間分為兩段:[0,511]和(511,1023],在這兩段區間上使用不同的含參數的映射曲線:

        令A(x) = [(1.6 * lb(x + 1))^2 - 0.5],則滿足如下條件:

        另外,引入一個漸變參數a: a = a3/a1 = N2/N1,其中Ni為亮度值分布在第i個區間內的像素個數,漸變系數值反映了每個區間像素分布的遞增趨勢。

4 算法仿真對比

        以10bit的HDR圖像為例,該圖亮度值范圍為0~1023,分為兩個映射區間后的曲線表達式為:

     

         仿真對比如下:

         線性移位算法                                              典型對數映射法                                          本文算法

          

        結論:本文提出的算法更好地增強了高低亮度區域的對比度,並且高低亮度區域交界處變化平滑。

 

 

 

 

 

 

 

      

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM