跳轉到內容

JPEG - 思想與實踐/指南和實現

來自華夏公益教科書

T.81 建議以有關實現算術編碼和分層過程所需專利的列表作為結尾(這可能是這些方法沒有更廣泛傳播的原因),以及一個參考文獻列表。但在這些附錄之前,有一個名為“示例和指南”的附錄(“不構成本建議/國際標準的組成部分”)。在這個附錄中,您可以找到上面顯示的量化表和我們在(真正的)JPEG 程式中顯示和使用的霍夫曼表。關於量化表,它說:“這些基於心理視覺閾值,並使用亮度和色度以及 2:1 水平子取樣以經驗方式得出。這些表僅作為示例提供,不一定適合任何特定應用。這些量化值已在 8 位每樣本亮度和色度影像上取得良好的效果”。霍夫曼表“是根據大量 8 位精度的影像的平均統計資料開發的”。附錄還包括用於生成指定霍夫曼碼錶的列表的程式,即:1)上面提到的基於頻率構建霍夫曼樹的程式,以及如何從樹中找到碼長並計算每個碼長的碼數以獲得 BITS 列表(以及可能修改此列表,使其從 1 到 16);以及 2)根據碼長對霍夫曼值進行排序以獲得 HUFFVAL 列表的程式。因為我們假設我們已經匯入了這些列表,所以我們這裡不會詳細介紹這些過程——我們將在附錄 2 中展示這些程式。

顏色空間指定,在我們的例子中是從 RGB 三元組到 YCbCr 三元組的轉換(透過第一部分 中顯示的線性轉換 RGB → YCbCr),在 T.81 中根本沒有提到。像這樣的東西屬於 JPEG 方法的具體實現,並且使用的實現是在一個或多個 APP 段中指定的。有兩種型別的實現:交換格式,其中所有必要的表都包含在檔案中,以及縮寫格式,其中一些表(可能是全部)丟失,因為應用程式提供它們(可能透過用於表規範的縮寫格式安裝,這是一個沒有顏色資料的 JPEG 檔案)。

這裡我們應用在 APP0 段中指定的交換格式,該段在說明段長度的(0,16)對之後具有這些位元組

識別符號 (= JFIF):五個位元組 74、70、73、70 和 0,構成字串“jfif#”
版本(對):在我們的例子中是(1,2)
單位(位元組):0
Xdensity(對):(0,1)
Ydensity(對):(0,1)
Xthumbnail(位元組):0
Ythumbnail(位元組):0

Xdensity 和 Ydensity 分別是水平和垂直畫素密度,以每英寸點數(單位 = 1)或每釐米點數(單位 = 2)測量。我們選擇了 X = 1 和 Y = 1,並且沒有單位(單位 = 0),這意味著沒有這樣的預設列印資訊。Xthumbnail 和 Ythumbnail 分別是縮圖的寬度和高度。我們將這些數字設定為 0,這意味著這樣的圖片沒有儲存在標題中。在相反的情況下,此(例如 RGB 值)資料必須儲存在上面的位元組之後,或在緊隨此 APP 段之後的 APP 段中。

如果沒有 APP 段,您將獲得預設實現,這就是我們在這裡使用的實現。此實現的描述可以在“JPEG 檔案交換格式/版本 1.02”(1992)中找到。沒有預設的量化表和霍夫曼表。如果其中一些丟失,則一定是使用了縮寫格式,並且這些表必須出現在開啟檔案的程式中並在 APP 段中引用。

華夏公益教科書