影像處理之動態范圍壓縮
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,分為兩個映射區間后的曲線運算式為:

仿真對比如下:
線性移位演算法

典型對數映射法

本文演算法

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/213505.html
標籤:其他
上一篇:ISP基礎(07)-自動曝光
下一篇:ISP基礎(06):AWB演算法
