JPEG2000
的壓縮方式有可逆和不可逆兩種方式,這里分別介紹。
界定
在可逆和不可逆方式中,需要為塊編碼器提供待編碼整數(shù)的絕對(duì)范圍一致的解釋,這叫界定。簡(jiǎn)單的說(shuō),也就是
DWT
變化后的系數(shù)在什么范圍內(nèi),用多少二進(jìn)制位來(lái)表示。
不可逆方式
不可逆
DWT
變化后,通過(guò)量化將樣本映射到量化索引中,然后再進(jìn)行編碼。因?yàn)榱炕旧硎遣豢赡娴模钥赡娣绞街胁淮嬖诹炕?/span>
不可逆方式中,界定與量化的參數(shù)有關(guān)。
量化
不可逆方式采用的是恒域(
deadzone
)標(biāo)量量化,量化操作由步長(zhǎng)參數(shù)
(△
b
)定義:
q
b
[n] = sign(y
b
[n]) [|y
b
[n]|/
△
b
]???????????????????? --------------------------
(
1
)
其中
y
b
[n]
表示子代樣本,被歸一化到標(biāo)稱范圍:
-1/2
到
1/2
,
q
b
[n]
表示量化之后的索引。每個(gè)子帶可以有不同的步長(zhǎng)參數(shù)
△
b
。
可以將上面的表達(dá)式理解符號(hào)部分和量值部分:
符號(hào)部分由
X
b
[n] = sign(y
b
[n])
給出,而量值部分由
v
b
[n] =[|y
b
[n]|/
△
b
]
給出。
這里需要注意的是步長(zhǎng)參數(shù)由指數(shù)
E
b
(Epsilon)
和尾數(shù)
u
b
給出
:
△
b
= 2
-E
b
(1+u
b
/2
11
)--------------------------------------------------------
(
2
)
E
b
和
u
b
都是非負(fù)整數(shù);范圍為:
0<=Eb <25, 0<=ub <211-----------------------------------------------------
(
3
)
?
?
界定
編碼器和解碼器一般取相同的位數(shù)來(lái)表示子代
b
中的量化索引
v
b
[n]
,這個(gè)值是
K
b
max
。
當(dāng)然子帶的樣本值可能會(huì)超出規(guī)定的標(biāo)稱范圍,因此引入一個(gè)參數(shù)
G
,來(lái)規(guī)定所有子帶樣本遵從下面的界限:
-2
G
-1
< y
b
[n] <2G-1
--------------------------------------------------------------
(
4
)
-
這里的
G
叫做保護(hù)位(
guard bits
)。取
0
到
7
之間的值。
?
結(jié)合前面的量化步驟,這里來(lái)推導(dǎo)幾個(gè)參數(shù)。
由(
2
)和(
4
)得到:
vb[n] =[|yb[n]|/
△
b
]<2Eb+G-1
具體如下:
v
b
[n] =[|y
b
[n]|/
△
b
]= v
b
[n] =[|y
b
[n]|/
(
2
-E
b
(1+u
b
/2
11
)
)
]
而
y
b
[n] <2G-1
因此:
[|y
b
[n]|/
(
2
-E
b
(1+u
b
/2
11
)
)
] < [2G-1? /
(
2
-E
b
(1+u
b
/2
11
)
)
]
另外,
2
-E
b
(1+u
b
/2
11
) < 2
-E
b
,因?yàn)?/span>
E
b
>0
,切
u
b
/2
11
小于
1
且大于
0
。
從而:
v
b
[n]< [2G-1? /
2
-E
b
] = 2
Eb+G-1
那么這里的
K
b
max
也可以表示為
0
和
Eb+G-1
的最大值了。
因此可以看到
Eb + G =
K
b
max
+1
K
b
max
= Eb + G -1----------------------------------------------------
(
5
)
反量化
如果采用恒域標(biāo)量量化,反量化操作將一個(gè)量化索引重建一個(gè)位于對(duì)應(yīng)量化間隔中某個(gè)確定的位置。用
^y
b
表示,那么:
^y
b
[n] = 0,
如果
vb[n] = 0
^y
b
[n] = X
b
[n]*(v
b
[n]+&
b,
v
b[n]
)*
△
b
,
如果
vb[n] != 0
&
b,
v
=1/2
對(duì)應(yīng)于中間點(diǎn)的重建。
可逆方式
量化
可逆方式中實(shí)際上沒(méi)有量化,因此提供給塊編碼器的量化索引與整數(shù)的子代樣本是相等的;用不可逆方式中的符號(hào)來(lái)表示為:
q
b
[n] =y
b
[n]?? ----------------------------------------------------------------(6)??????
界定
可逆方式中樣本值的標(biāo)稱范圍可以使用原來(lái)樣本深度
B
和線性化小波核的增益來(lái)確定。如下:
-2
B-1+Xb+G
<y
b
[n] < 2
B-1+Xb+G
G
是額外的保護(hù)位,而
X
b
是線性化小波核的標(biāo)稱增益的不一定都為
1
;具體情況是:
X
LLd
= 0, X
LHd
= X
HLd
= 1, X
HHd
= 2
那么因此可以得到
vb[n]]
的位數(shù)為:
K
b
max
=B-1+X
b
+G---------------------------------------------------------------- (7)?
在
JPEG2000
中使用
G
和
Eb
來(lái)表示
K
b
max
的。不可逆與可逆方式有相同的表現(xiàn),但對(duì)于不可逆方式中
Eb
表示量化步長(zhǎng)指數(shù),而可逆方式中是界定參數(shù),同時(shí)由編碼器設(shè)置
Eb
來(lái)保證有足夠的位數(shù)來(lái)表示每個(gè)樣本的大小。
那么由(
5
)和(
7
),這里可以得到:
Eb = B + Xb---------------------------------------------------------------- (8)
在可逆變換中,我們使用如下的轉(zhuǎn)換方式:
X
Y
[n] = [(X
R
[n] + 2X
G
[n] +X
B
[n])/4]
X
Db
[n] = X
B
[n] –X
G
[n]
X
Dr
[n] = X
R
[n] –X
G
[n]
?
由于在進(jìn)行變換之前需要對(duì)樣本進(jìn)行水平偏移,因此如果假設(shè)數(shù)據(jù)的樣本值是
B
位,那么變換之前的
R
,
G
,
B
的樣本范圍是:
-2
B-1
<= X[n] <= 2
B-1
-1
而變換之后可以看出:
X
Y
[n]
的最小值為:
[-2
B-1
+2*(-2
B-1
) + (-2
B-1
)]/4 = -2
B-1
X
Y
[n]
的最大值為:
[2
B-1
-1
+2*(2
B-1
-11
) + (2
B-1
-1
)]/4 = 2
B-1
-1
因此
X
Y
[n]
仍然用
B
位可以表示
而
X
Db
[n]
和
X
Dr
[n]
的最大值和最小值為:
最小值:
-2
B-1
-(2
B-1
-1
) = 1-2
B
最
大
值:
2
B-1
-1
-(-2
B-1
) = 2
B
-1
因此對(duì)于他們需要
B+1
位來(lái)表示。
?
從上面的推論我們知道在(
8
)中,對(duì)于色度分量,
B
需要用
B+1
來(lái)提到計(jì)算。
?
反量化
雖然可逆方式?jīng)]有明確的量化過(guò)程,但對(duì)于有編碼塊碼流被截?cái)嗟那闆r可以等同于量化。
對(duì)于碼流的截?cái)鄬?dǎo)致解碼出來(lái)的樣本值
^v
i
[j]
與原樣本值
v
i
[j]
僅僅在低
p
i
[j]
個(gè)位不同;實(shí)際上這些
LSB
都是
0
。因此可以將其看成等效的步長(zhǎng)為
△
i
[
j
]=2pi[j]
的恒域標(biāo)量量化。
因此反量化表示為:
在
^v
i
[j]=0
的時(shí)候,
^yi[j] = 0,
其他時(shí)候,
^yi[j] =
符號(hào)
*
(
^v
i
[j]+
[2pi[j]*&]
)
Kakadu
中表示
在
JPEG2000
中使用
QCD
和
QCC
碼流標(biāo)記參數(shù)來(lái)表示量化和界定的參數(shù)。這里看一下
Kakadu
代碼中如何表示的。
JPEG2000
中
QCD
叫默認(rèn)量化參數(shù),而
QCC
是量化分量參數(shù)。對(duì)于到
Kakadu
中的
qcd_params
參數(shù)類(lèi)。
Kakadu
中的
QCD
參數(shù)類(lèi)
Kakadu
為
qcd_params
類(lèi)定義下列參數(shù)屬性。
參數(shù)名稱
|
說(shuō)明
|
默認(rèn)值
|
Qguard
|
保護(hù)位;前面已經(jīng)介紹了其作用。
|
1
|
Qderived
|
量化步驟從
LL
子帶參數(shù)中繼承嗎?如果是繼承,那么所有量化步長(zhǎng)都通過(guò)
2
的相應(yīng)冪與
LL
子帶步長(zhǎng)關(guān)聯(lián),并且只有
LL
子帶的步長(zhǎng)會(huì)寫(xiě)到碼流標(biāo)記中;否則必須為每個(gè)子帶寫(xiě)步長(zhǎng)參數(shù)。對(duì)于可逆壓縮不能使用。
|
不能繼承
|
Qstep
|
不可逆量化中每個(gè)子帶使用的基礎(chǔ)量化步長(zhǎng)。應(yīng)該在
0
到
2
之間。
|
1/256
|
Qabs_steps
|
每個(gè)子帶的絕對(duì)量化步長(zhǎng)。用每個(gè)子帶的動(dòng)態(tài)范圍來(lái)表示。范圍等于
2^B
(
B
是深度)乘上每個(gè)低通濾波器的
DC
增益以及高通濾波器的
AC
增益。用下面的順序描述:
LL_D,HL_D,LH_D,….,HL_1,LH_1,HH_1
。這里的
D
是
DWT
的級(jí)別。如果不是繼承的,每個(gè)子帶都要有步長(zhǎng)參數(shù)。如果
Qstep
使用了,這個(gè)參數(shù)就忽略。
|
?
|
Qabs_ranges
|
可逆壓縮過(guò)程子帶編碼中使用的位數(shù)。子帶的順序同上面。
Qabs_ranges +Qguard = 1+ K_max
。因此這正是
(7)
中
Xb+B
,
(
5
)的
Eb
。
通常情況下,這里使用默認(rèn)的不上溢出和下溢出的最小值。如果顯式設(shè)置一個(gè)值,需要為每個(gè)子帶都指定。
這個(gè)就是前面說(shuō)的界定
。
|
?
|
?