天天看點

Adaptive piece-wise approximation method for gamma correction

分享一篇美國專利:《Adaptive piece-wise approximation method for gamma correction --United States Patent》

一、背景

      Gamma校正是isp pipeline中的一個重要子產品,主要是為了補償CRT screen的非線性特性。

      針對數字圖像信号,gamma校正簡單的實作方式是使用查找表實作。查找表一般儲存在ROM中,每個查找表中儲存Gamma校正之後的亮度值。然而,通路ROM中的查找表需要許多工作時鐘才能完成。

      另外一種Gamma校正的方式是使用固定點的分段線性插值實作。把n bit輸入信号所表示的最大亮度值平分為幾段,在ROM中儲存分段的節點所對應的Gamma校正值,位于節點之間的值通過線性插值的到。具體原理如下圖所示:

Adaptive piece-wise approximation method for gamma correction

      這種方法由于隻需要存儲少量節點對應的Gamma校正值,而不是存儲所有點的gamma校正值,是以其消耗的記憶體比查找表的方法要少很多。但是,這種分段線性插值并不是太精确。(如果節點足夠的話,還是可以比較精确的;如果節點比較少的話,這種方式确實不太精确)。由于每條分段之間的間距是固定的,是以在特點節點數量的情況下,不能兼顧gamma曲線中的線性部分和非線性部分的精确度。

      還有一種方法是結合分段線性和查找表的方法。為了保證其精度,在gamma曲線非線性部分使用查找表的方式;在gamma曲線線性部分使用分段插值的方式進行校正。這種方式仍然需要較多的記憶體。

二、自适應分段線性插值硬體實作

      本專利使用較小記憶體的前提下,對分段線性插值進行自适應,較好的兼顧了gamma曲線的非線性和線性部分的插值精度。

      分段線性插值主要原理為:

Adaptive piece-wise approximation method for gamma correction

      G(B)、G(A)為可程式設計的采用點所對應的gamma矯正值,A和B為分段節點值。

Adaptive piece-wise approximation method for gamma correction

FIG1,是該專利的硬體實作示意圖

       如上圖所示:是gamma校正硬體實作圖100,主要由資料選擇器110,減法器115,偏移子產品120,乘法器125,除法器130以及加法器135。

Adaptive piece-wise approximation method for gamma correction

FIG2,是自适應分段線性插值算法示意圖

上圖是自适應分段線性插值示意圖。主要實作步驟為:

  1. 選取輸入0和最大值N,最為輸入範圍的兩端點。
  2. 把上述兩端點平分為兩部分200
  3. 把步驟2所平分的兩部分,再繼續平分,分成四段相等的範圍210
  4. 按照自适應分段的方法把上述四部分繼續劃分下去,直到達到預設的最小寬度範圍。自适應分段方法由平分兩部分220;或/和平分成三部分230;或/和平分成四部分240構成。
Adaptive piece-wise approximation method for gamma correction

FIG3,是自适應分段線性插值拟合曲線示意圖

       如圖3,Gamma校正曲線為10bit的輸入資料,被七個點分成八段。首先G5把範圍平分為兩段,然後G3、G6把範圍平分為四段。此後,應用自适應分段的方法把曲線繼續劃分,為了簡單闡述原理,平分兩段的操作執行了兩次,得到的節點為G1,G4,G0和G2。所選取的分段節點多對應的灰階值和二進制表示如下圖所示:

Adaptive piece-wise approximation method for gamma correction

       圖像數字信号通過0-G7八個點進行采樣,得到其灰階值儲存在RAM中,為後續分段線性插值做準備。

Adaptive piece-wise approximation method for gamma correction

      如圖FIG1,輸入10bit圖像亮度資料IN[9:0]140,是以有1024個不同的亮度等級。資料線140與偏移子產品120連接配接,高四位IN[9:6]和高兩位IN[9:8]資料分别和資料選擇器110和除法器連接配接。資料選擇器資料110存放于ROM中。針對圖3而言,G0-G7儲存于110A,0-G6儲存于110B中,這樣可以通過輸入資料高四位IN[9:6]在一個時鐘内讀取到相鄰的兩個節點的gamma矯正灰階值。高節點所對應的10bit gamma矯正值G(B)145和低節點所對應的10bit gamma矯正值G(A)150。

      減法器115所計算的是高節點對應的gamma校正值減去低節點所對應的gamma校正值155。同時,偏移器120通過移位的方式去掉高位保留t-bit位資料160,得到輸入資料與低節點gamma校正值的內插補點。t表示可能的最大資料位,在該示例中最大為8位。其移位計算結果如下圖示:

Adaptive piece-wise approximation method for gamma correction

      例如,假設輸入資料亮度值為134,其二進制表示為:00 1000 0110,高位為00,故輸出值160為00110,即十進制6,表示134與節點128之間的內插補點IN-A。

      乘法器125把高節點與低節點的內插補點155與偏移子產品輸出資料160相乘,乘積的結果輸入到除法器130,通過移位的方式輸出的結果即為(G(B)-G(A))/(B-A)。除法器移中移動的位數由下表得出:

Adaptive piece-wise approximation method for gamma correction

      例如,假設輸入資料亮度值為134,其二進制表示為:00 1000 0110,高位為00,位于128和192之間,而192-128=64,即B-A= 64,是以需要将除法器輸入資料右移6位。

      最後,加法器135機上低節點值150和除法器輸出的結果170,得到內插補點之後的結果。

繼續閱讀