Thursday, June 28, 2007

關於 QIM 的點點滴滴(一): H. Noda

High-performance JPEG steganography using quantization index modulation in DCT domain
Pattern Recognition Letters, Vol. 27 , Iss. 5 (April 2006)
Hideki Noda (野田 秀樹), Michiharu Niimi (新見 道治), Eiji Kawaguchi (河口 英二)


Hideki Noda 野田 秀樹

這篇 paper 的 Section 2 大致介紹了 Chen and Wornell 在 2001年 5 月在 IEEE Trans. on Information Theory 所提出的 QIM 嵌入技術。

QIM embedding 使用 2 個 quantizers 來取代原先用於 JPEG 壓縮程序的 1 個 quantizer, 分別用來嵌入 0 與 1。

假設某個 frequency 的 quantization step size 為 8, 那麼用來嵌入 0 的 quantizer 的 codebook C0 就是 2j*8 所形成的集合, j 屬於整數 Z = {... -2, -1, 0, 1, 2 ... }
C0 = { ... -32, -16, 0, 16, 32, ...}
而另一個用來嵌入 1 的 codebook C1 就是 (2j+1)*8 所形成的集合
C1 = { ... -40, -24, -8, 8, 24, 40, ...}

給定一個 DCT 係數 x, 如果要嵌入 0, DCT 係數就會被量化成 2q, 而 q 被定義成 C0 中最接近 x 的那個 code 所使用的 j 值。同樣地, 如果要嵌入 1, DCT 係數就會被量化成 2q+1。

我們用例子說明, 假設 x 為 19, 要嵌入的訊息為 0, 由於 codebook 中最接近 x 的 code 為 16, 而 16 所用的 j 值為 1, 因此 19 就被量化成 2。如果要嵌入的訊息為 1, 在 C1 中最接近的 code 為 24, 24 = (2j+1)*8, j=1=q , 所以 19 會被量化成 2q+1 = 3。

假設嵌入的二元資料中, 0 與 1 的個數是一樣多的, 使用 QIM embedding 嵌入資料前後, DCT 係數 histogram 的變化情況, 則是接下來的討論重點。

令 hi 表示範圍屬於 i-0.5 < x < i+0.5 的 DCT 係數的個數,
  hi- 表示範圍屬於 i-0.5 < x < i 的 DCT 係數的個數,
  hi+ 表示範圍屬於 i < x < i+0.5 的 DCT 係數的個數。

因此, hi = hi- + hi+

使用 QIM embedding 後, 令 hi' 為量化還原後 DCT 係數的個數, 原來的 hi 有一半並不會遭到嵌入更改原來的值, 而屬於 h(i-1)+ 的係數則是有一半會被嵌入更改變成屬於 hi 的範圍, 同理 h(i+1)- 也有一半變成 hi 的範圍。

因此, hi' = hi / 2 + ( h(i-1)+ + (h(i+1)- ) / 2
 
 

No comments:

Post a Comment