唔...
根據BOSS的說法
我似乎已經懂了JPEG規格書了
應該可以寫完JPEG Decoder了
真開心
覺得自己被認同了XDD
不過
因為人家現在的那個程式長的太大了
很礙眼啊
很難Debug
可是程式有問題又超痛苦的
現在想說先整理自己的想法
重新寫一次程式
首先
在Start of Image之後
我們會讀到DQT
也就是define Quantization table
接著會讀到Frame Header
在Frame Header中的資訊對於我們整張圖是很重要的
由規格書P35頁可以知道
除了一開始的tag之外
Frame Header還提供了Lf,P,Y,X,Nf,[C,H,V,Tq]等的資訊
Lf 就是Frame的Length是指這串tag佔了幾個byte
因為[C,H,V,Tq]可以有很多組啊
所以要跟人家說到多少個byte是我現在要解讀的東西
不然會讀到錯的資訊
然後由Y跟X就可以知道這張影像的大小
New相對應的陣列
可是要new幾個陣列咧
如果一張影像都是灰階
那就不需要那麼多個啦
一個就好!!
這時候Nf就派上用場了
Nf就是Number of Frame component
所以根據這個的值去產生Nf個 X * Y 的陣列
然後啊
JPEG不是有做Downsampling的動作
所以要根據接下來的[C,H,V,Tq]去做還原sampling的動作
那個C只是編號
H和V則是sampling的係數
而Tq則是這個Frame Component 要讀哪個Quantization Table
這就是Frame Header的功用