HD Photo 怎么樣定義DC/LOWPADD/HIGHPASS的?
HD的圖象結構
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
12
|
13
|
14
|
15
|
HD Photo編碼的單元是宏塊,而變換的單元是塊,每個塊是4*4的像素點(有其他特殊情況這里不表),而宏塊是4*4的塊組成。
上圖中的表格是16*16的像素塊,是一個完整的宏塊。
這樣的劃分是按照顏色分量來的,比如YUV色彩空間的Y分量,當然還有U和V分量。
HD 的變換
HD的PCT變換是針對宏塊里的塊進行的,實際上可以分為兩個階段:
1. 塊單獨PCT變換階段;這個階段宏塊中的每個塊執行對應的PCT變換;這個變換比較類似于DCT;變換后得到的結果也分為DC系數和AC系數,DC系數就是每個塊的0位置,其他的都是AC系數。
2. 對于宏塊中的每個塊進行PCT變換后,得到的16個DC系數(如上圖中蘭色顯示的),然后針對這個DC系數再進行PCT變換。這次變換后,我們得到DC的DC在左上角(綠色表示的位置),而其他的DC系數保留的是DC的AC系數。
HD帶的定義
到目前位置我們可以來說明HD是如何定義其帶的了。
1. DC;這個很簡單,也就是上圖中左上角(綠色表示的位置)。對于一個圖像來說,可能存在很多個宏塊,每個宏塊的該位置變換后的系數都是DC,他們組成了DC帶。對于整個圖象來說,這是能量最集中的地方,我們可以在后面量化和編碼的時候區分處理。
2. LOWPASS;從名字看叫低通,表示低頻的信號保存在該頻帶;這個正如上圖中蘭色表示的區域(除了DC);這些區域也是能量高度集中的部分,他們保存了圖象低頻的信息,例如:連續色調圖象的漸進色。
3. HIGHPASS:除了LOWPASS和DC外的所有系數都叫HIGHPASS(高通);這些系數保存圖象的高頻信息,也是圖象輪廓信息所在。圖中所有墨綠色的區域都是HIGHPASS。
HD變換的優點
從對HD變換過程的理解,HD的PCT變換具有這些優點:
1. 變換相對于JPEG2000的DWT確實是輕量級的;DWT的變換一般我5級,而這里的變換只有兩級,而第二級是其原圖象的16分之一。因此這里的運算量是少的。
2. 與JPEG的DCT比較起來,這里進一步找出了低頻通道和高頻通道,這個為后面自適應量化和變換提供了可以區分對待的依據。
JPEG2000高頻區域和HD高頻區域的比較
在看到的HD與JPEG2000的比較結果中發現,HD對高頻部分誤差的比較小,而對低頻部分處理的不夠好;為什么呢?
見連接。
首先來看看低頻部分:
1. DWT的一個LEVEL的變換得到的是1/4的低頻系數,5個level的DWT變換后,低頻系數是原來的1/32。
2. HD中有DC和LOWPASS之分,我們可以設想這里的DC對應DWT的LL,結果2級變換后,低頻能量高集中的僅僅是原來圖象的1/256(1/16*1/16)。從這個角度可以看到為什么JPEG2000在低頻部分的誤差比HD要小。
那么為什么在同等壓縮比的情況下JPEG2000的高頻部分誤差比較多呢?
實際上我們不能忽略另一個問題;就是隨著壓縮比的提高,HD在圖象質量上并不表現的比JPEG2000好。
我想應該可以從這幾個方面來得到答案:
1. HD的高頻部分的系數占了大多數;從對低頻系數的分析我們已經知道這點。所以同樣壓縮比的時候,HD包含了大部分的高頻數據,所以誤差相對較少。
2. HD的每個頻帶采用自適應的量化;采用的量化系數是不一樣的,這相對于采用統一量化的JPEG2000來說還是有優勢的。
3. 這點不是很清楚的就是HD怎么樣來截斷壓縮流到指定大小的?我們知道JPEG2000中根據誤差的值來均勻丟棄高頻部分的系數;也就是DWT變換中分辨率較大中的系數。當然JPEG2000可以設定不同子帶和分量丟棄碼流的規則。因此一般有數據被丟棄的時候,頻率越高的系數越可能被丟棄,從而帶來了高頻部分的誤差。
那么為什么隨著壓縮比的提高,JPEG2000不在比HD差呢?
我想這個地方涉及到HD如何在高壓縮比情況下丟棄數據;這個需要繼續研究。
先來看看HD是如何量化和編碼的?
在HD的編碼之前,需要對不同的頻帶系數先量化。
不同的頻帶采用的量化系數是不一樣;這個量化參數是由用戶輸入的,總體量化過程可描述為:
1. Y分量的量化系數一般直接來自于用戶輸入的系數。而U和V分量的數據一般是Y分量量化系數的2倍(如果小于10)或加上18。這樣的分配比例可以保證在U和V分量上有較好的壓縮。
2. 在不同的頻帶上量化系數梢有不同,主要的不同集中在高通頻帶的U和V分量上。在高頻的這兩個子帶上的量化程度要較其他頻帶該U和V分量上的大。
實際上我們可以發現,變換之后的大部分系數是高頻的,占63/64,而3/2的系數是U和V;對這些對圖象視覺效果影響不明顯的系數大幅度量化可以提高壓縮比。
量化過后的系數就可以進行編碼了。
每個宏塊的DC塊是首先被編碼的;在完成量化之后,首先需要做的是對各參數的預測。預測的最基本目的是讓被編碼的系數變小,這里的方法也就是:
1. 首先塊變換的系數分成3種類型:DC系數,ACDC系數(每個block的最左邊一列和最上邊一行,除了DC),AC系數(block其他的系數)。
2. 首先第一個宏塊的沒有辦法通過預測來編碼
3. 其他宏塊通過前面(上面或左邊)宏塊來預測DC和ACDC的,基本上先對系數做與前一宏塊當前位置系數的減法,保存的是差值,然后將差值送到編碼器中。
4. 對于AC系數,通過上邊或左邊的ACDC系數來預測,其中通過上邊還是左邊的系數由低通轉換的系數決定。
通過預測以后,系數變小,編碼的效率提高。
在對系數編碼的時候基于一個默認:DC使用8bit來編碼,而LOWPASS和HIGHPASS使用4bit來編碼。當然這個編碼的bit數量會在編碼過程中變化。
基于變化的bit來編碼的目的,首先必須將每個待編碼的系數分成高于8bit的部分和8bit范圍的部分,不同的部分采用不同的編碼環境。
如果在編碼過程中發現系數總是比8(對于DC)或4(對于LOWPASS和HIGHPASS)大,那么在一個宏塊編碼后需要對相應的bit位增加,用更多的bit位來編碼;如果小,那么減少編碼使用的bit位來使用更少的bit位來編碼。這里通過統計移位操作后的值是否大于0的數目來統計。
在編碼過程中使用了自適應掃描的方式;開始的時候16個被掃描的系數按照最初的順序被設置一個從32到0的逐漸變小的權值,但在掃描過程中一旦發現某個系數的移動8/4位以后的值仍然大于0,那么需要在他的權值上增加一;如果更新以后按照掃描順序的兩個位置的權值順序不在是逐漸減小,這個時候需要交換掃描順序。
HD中稱這些仍然大于0的系數為顯著系數。對他們的編碼方法采用顯著絕對值和RUN模式編碼;而自適應掃描的目的是想將移位后系數仍然大于0的那些系數安排在掃描順序的連路上,這樣保證可以對這些系數有更好的編碼。
這里有一個各頻帶系數在輸入系數變化時的分布。
QPIndex = 10:
DC
|
0
|
1
|
2
|
|
iQP
|
20
|
20
|
20
|
|
iOffset
|
7
|
7
|
7
|
|
iMan
|
-858993459
|
-858993459
|
-858993459
|
|
iExp
|
4
|
4
|
4
|
|
iIndex
|
10
|
20
|
20
|
|
LP
|
0
|
1
|
2
|
|
iQP
|
20
|
20
|
20
|
|
iOffset
|
7
|
7
|
7
|
|
iMan
|
-858993459
|
-858993459
|
-858993459
|
|
iExp
|
4
|
4
|
4
|
|
iIndex
|
10
|
20
|
20
|
|
HP
|
0
|
1
|
2
|
|
iQP
|
20
|
40
|
40
|
|
iOffset
|
7
|
15
|
15
|
|
iMan
|
-858993459
|
-858993459
|
-858993459
|
|
iExp
|
4
|
5
|
5
|
|
iIndex
|
10
|
20
|
20
|
|
QPIndex = 40:
DC
|
0
|
1
|
2
|
|
iQP
|
96
|
104
|
104
|
|
iOffset
|
36
|
39
|
39
|
|
iMan
|
-1431655765
|
-1651910498
|
-1651910498
|
|
iExp
|
6
|
6
|
6
|
|
iIndex
|
40
|
58
|
58
|
|
LP
|
0
|
1
|
2
|
|
iQP
|
96
|
104
|
104
|
|
iOffset
|
36
|
39
|
39
|
|
iMan
|
-1431655765
|
-1651910498
|
-1651910498
|
|
iExp
|
6
|
6
|
6
|
|
iIndex
|
40
|
58
|
58
|
|
HP
|
0
|
1
|
2
|
|
iQP
|
96
|
208
|
208
|
|
iOffset
|
36
|
78
|
78
|
|
iMan
|
-1431655765
|
-1651910498
|
-1651910498
|
|
iExp
|
6
|
7
|
7
|
|
iIndex
|
40
|
58
|
58
|
|
QPIndex = 50
DC
|
0
|
1
|
2
|
|
iQP
|
144
|
176
|
176
|
|
iOffset
|
54
|
66
|
66
|
|
iMan
|
-477218588
|
-1171354717
|
-1171354717
|
|
iExp
|
7
|
7
|
7
|
|
iIndex
|
50
|
70
|
70
|
|
LP
|
0
|
1
|
2
|
|
iQP
|
144
|
176
|
176
|
|
iOffset
|
54
|
66
|
66
|
|
iMan
|
-477218588
|
-1171354717
|
-1171354717
|
|
iExp
|
7
|
7
|
7
|
|
iIndex
|
50
|
70
|
70
|
|
HP
|
0
|
1
|
2
|
|
iQP
|
144
|
352
|
352
|
|
iOffset
|
54
|
132
|
132
|
|
iMan
|
-477218588
|
-1171354717
|
-1171354717
|
|
iExp
|
7
|
8
|
8
|
|
iIndex
|
50
|
70
|
70
|
|
QPIndex = 100
DC
|
0
|
1
|
2
|
|
iQP
|
1280
|
1536
|
1536
|
|
iOffset
|
480
|
576
|
576
|
|
iMan
|
-858993459
|
-1431655765
|
-1431655765
|
|
iExp
|
10
|
10
|
10
|
|
iIndex
|
100
|
120
|
120
|
|
LP
|
0
|
1
|
2
|
|
iQP
|
1280
|
1536
|
1536
|
|
iOffset
|
480
|
576
|
576
|
|
iMan
|
-858993459
|
-1431655765
|
-1431655765
|
|
iExp
|
10
|
10
|
10
|
|
iIndex
|
100
|
120
|
120
|
|
HP
|
0
|
1
|
2
|
|
iQP
|
1280
|
3072
|
3072
|
|
iOffset
|
480
|
1152
|
1152
|
|
iMan
|
-858993459
|
-1431655765
|
-1431655765
|
|
iExp
|
10
|
11
|
11
|
|
iIndex
|
100
|
120
|
120
|
|
現在再來看看上面的問題:
HD是通過量化來控制壓縮比的;隨著壓縮比的提高,HD對系數的量化是越來小,導致很大部分信息都已經丟失,因此他質量的損失是明顯的。
但JPEG2000卻不同時,他丟棄較高頻率頻帶的數據,而且其丟棄也是按照計算的PCRTD-OPT算法來在一些截斷點丟棄的,因此相對來說保證的圖象質量應該接近最優化值。
到這里我們已經明白,HD隨著壓縮比的提高,其質量的損失接近于線性的或分段線性的;而JPEG2000的失真最優算法保證其每個截斷點都應該在率失真曲線上。