星期三, 6月 06, 2007

[JPEG]JPEG小簡介

各位鄉親阿

我又來啦咧了

沒錯!!

如同老師所預告的

我們在這個禮拜要進入 Information Hiding in JPEG的部份了

既然要談到在JPEG中藏資訊的方法

怎麼可以不知道JPEG是怎麼做的呢...

----以下所說的話 僅代表正cos一個人的立場 有錯的話...那也是正常的...反正我是學生嘛XDD----

1.JPEG是一種針對相片影像而廣泛使用的一種失真壓縮標準方法。

 我們之前談的影像檔呢

 都是以RGB的方式來紀錄color值的

 可是JPEG這傢伙呢 卻是以YCbCr的方式來紀錄的喔

 根據我從維基百科抄下來的話
 RGB方式將所有的顏色資訊作同等的處理,雖然有最高的畫質,但由於RGB方式對傳輸頻寬
 和儲存空間的消耗太大,為節省頻寬,使用色差方式來傳送與紀錄分量視訊是現在的主流。

 色差在設計上利用了「人眼對明度較敏感,而對彩度較不敏感」的特性,
 將視訊中的色彩資訊加以削減,轉換公式如下:

 明度: Y = 0.299*R + 0.587*G + 0.114*B
 色差: Cb= 0.564*(B-Y) = -0.169*R - 0.331*G + 0.500*B
     Cr= 0.713*(R-Y) = 0.500*R - 0.419*G - 0.081*B

 所謂的「色差」即為顏色值與明度之間的差值。轉換過後的顏色資訊量被刪減了約一半,
 但由於人眼的特性,使得色差處理過後的影像與原始影像的差異很難被察覺。
 最終的色差資料與RGB資料相比節省了1/3的頻寬。

 嘖...
 我之前都覺得YCbCr和RGB一樣...
 不過就是座標軸轉換而已嘛...
 為什麼它會說節省頻寬咧...
 到底是哪裏被減掉啦...


 反正他換成YCbCr之後阿...
 因為人眼對這三個座標軸的強度感受不同阿
 就可以分開壓比較多或比較少...
 在Down Sampling那邊...
 四個取一個兩個取一個 取出來的量就不同啦...


2.8x8的陣列做處理 
 我不知道為什麼是8x8...
 他高興吧...

3.DCT轉換
 從空間域轉到頻率域...
 同上...我不知道為什麼...
 維基百科有關DCT的連結
在這...
 可是我知道DCT轉換這邊沒有失真...

4.量化
 我不會解釋這邊...
 可是這邊的目的也是降低資料的複雜度啦...以後比較好壓縮...
 我只會舉例
 像是16.1 16.2 16.3 16.5 16.8 16.75 16.9 17.1 16.2 17.25 17.33 17.54 這樣子的數列
 如果都取整數值作代表的話
 就會變成 16 16 16 16 16 16 16 16 17 16 17 16 17 17 17
 我們可以記成 16*5 + 17*1 + 16*1 + 17*3
 這樣傳輸的資料量就變少啦...
5.zig-zag
 把那個8x8的陣列變成一維陣列
6.huffmancoding
我想睡覺了啦...

寫blog超累的...

我有寫了一個JPEG Decoder 的半成品...

大家有空可以玩一下...

我下次再補其他的部份好了...


加入書籤:MyShareHemiDemiDel.icio.usfurlGoogle BookmarksYahoo! My Webtechnorati