跳轉到內容

資料壓縮/有損與無失真壓縮

來自華夏公益教科書,自由的教科書,為一個開放的世界

有失真壓縮與無失真壓縮

[編輯 | 編輯原始碼]

有損影像壓縮和有損影片壓縮(如JPEG壓縮、MPEG壓縮和分形影像壓縮)比資料壓縮幾乎任何其他領域都能提供更好的尺寸減小(更高的壓縮率)。

有失真壓縮最適合用於減小影片資料的大小,其中影像中的缺陷可以被隱藏,只要影像的總體結構保持完整即可。這種壓縮型別被稱為有失真壓縮,因為它壓縮如此好的部分原因是,影片影像中的實際資料被丟失,然後被一些近似值所代替。

分形壓縮基於分形中自相似的概念。它使用具有自相似性的分形元件,這些元件與影像中周圍區域的其餘部分具有自相似性。

儲存如此不準確,以至於透過用加密文字替換一些分形資料,很難看到影像的差異,這意味著可以將重要資訊嵌入到影片影像中,而無需擔心被檢測到。 [需要引用]

如果我們能夠在不丟失資料的情況下實現相同的壓縮水平,我們就不會使用有失真壓縮,因為影像會有不可察覺的質量損失。

有失真壓縮仍然存在一些新技術的原因之一是,只有非常不精確的資料結構才能經受住有失真壓縮。通常情況下,丟失單個位元會導致整個短語或行資料變得不準確。這就是為什麼我們試圖構建越來越穩定的記憶體系統的原因。例如,最近從RD RAM到SD RAM的轉變,部分原因是RD RAM需要更多地對資料進行互動式維護。

如果我們如此保護資料的記憶,那麼我們必須保護我們用來儲存和檢索資料的壓縮方案就說得通了。因此,有失真壓縮唯一可以使用的地方是,在位元級別上的準確性不會實質性地影響資料質量的地方。

影像壓縮

[編輯 | 編輯原始碼]

大多數影像壓縮和影片壓縮演算法具有4層:這些東西有標準術語嗎?

  • 一個“建模”或“預處理”[1]或“濾波”[1]或“去相關”層將原始畫素轉換為有關圖片的更抽象的資訊 - 並且,在解碼器中,一個“渲染”部分將這些抽象資訊轉換回原始畫素。
  • 一個“量化器”層,它丟棄這些抽象資訊中人類不太可能注意到的某些細節 - 並且,在解碼器中,一個“反量化器”,它恢復資訊的近似值。
  • 一個“熵編碼器”層,它壓縮並將每個資訊片段打包到要傳輸的位元流中 - 並且,在解碼器中,“熵解碼器”,它接收位元流並解壓縮每個資訊片段。
  • 一個在傳輸前向原始位元流新增同步、交織和錯誤檢測的層。

由於我們在本書的其他地方討論了熵編碼,並且資料編碼理論一書討論了同步和錯誤檢測,因此本節將重點介紹其他層。

某些型別的“建模”過程會提供對資料壓縮以外的其他事情有用的資訊,例如“去噪”和“解析度增強”。

一些流行的“建模”或“去相關”演算法包括

  • 差分編碼
  • 傅立葉變換 - 使用快速傅立葉變換 (FFT) 計算 - 特別是離散餘弦變換 (DCT)
  • 小波變換 - 使用快速小波變換 (FWT) 計算 - 特別是一些離散小波變換 (DWT)
  • 運動補償
  • 匹配追蹤
  • 分形變換[2][3][4][5]


原始的未壓縮電影中包含大量資訊。所有電影和影像壓縮演算法都可以歸類為以下兩種:

  • 無損方法:對影像不進行任何更改的方法;未壓縮影像與原始影像在位元級別上完全相同。
  • “非降級方法”或“透明方法”:對影像進行一些微小更改的方法;未壓縮影像並不完全與原始影像在位元級別上相同,但更改(希望)對人眼來說是不可見的。 [6]
  • “降級方法”或“低質量方法”:對影像引入可見更改的方法。

...“冪等”一次性損失與每次迭代的“世代”損失...


Clipboard

待辦事項
資料壓縮/多個變換#一些資訊理論術語部分移到這裡?


理論上,任何型別的“完美”壓縮檔案都不應該包含任何剩餘的模式。許多致力於壓縮演算法的人會將壓縮資料繪製成影像,就好像它本身就是一張影像一樣。 [7] 人類視覺系統對資料中的(某些型別的)模式非常敏感。如果人能夠足夠精確地描述壓縮資料中的重複模式,就可以使用該描述來更準確地建模原始影像,從而導致更小的壓縮影像檔案。

然而,在完全沒有模式(真正隨機資料)的情況下,人眼往往會看到“團塊”和其他“模式”,這些模式對資料壓縮沒有用處。(有些藝術家會將隨機放置的資料精心調整,使它們更均勻地分佈,使它們看起來是隨機的,但實際上結果的隨機性更低,通常可以至少壓縮一點點,不像真正的隨機資料)。

JPEG DCT 的二維“基函式”。

標準 JPEG 使用(有損)離散餘弦變換 (DCT),標準 MP3 使用(有損)修改後的離散餘弦變換 (MDCT)。由這些標準變換引起的原始輸入和解碼輸出之間的差異小於由量化引起的誤差,而量化引起的誤差通常小到難以察覺。

整數變換

[編輯 | 編輯原始碼]

幾個小波變換隻使用整數係數,例如那些用於漸進式圖形檔案 (PGF)、無損 JPEG 2000、CineForm、ICER 等的係數。

一些類似 DCT 的變換隻使用整數係數,例如 MPEG 整數 IDCT 標準 [8],H.264 中使用的 4×4 和 8×8 整數變換,以及 JPEG XR 中使用的 4×4 變換。

這些變換中的大多數最初是為了在嵌入式系統中快速執行而開發的 - 這些系統中,標準 JPEG/MPEG 使用的浮點變換執行速度太慢。


2012 年,壓縮研究人員 Rock Brentwood 釋出了幾個針對一維 DCT 和 IDCT 的無損近似值,包括以下內容:[9]

LDCT 正向變換變換矩陣

17 17 17 17 17 17 17 17
24 20 12 6 −6 −12 −20 −24
23 7 −7 −23 −23 −7 7 23
20 −6 −24 −12 12 24 6 −20
17 −17 −17 17 17 −17 −17 17
12 −24 6 20 −20 −6 24 −12
7 −23 23 −7 −7 23 −23 7
6 −12 20 −24 24 −20 12 −6

ILDCT 逆變換逆變換矩陣是 LDCT 矩陣的轉置

17 24 23 20 17 12 7 6
17 20 7 −6 −17 −24 −23 −12
17 12 −7 −24 −17 6 23 20
17 6 −23 −12 17 20 −7 −24
17 −6 −23 12 17 −20 −7 24
17 −12 −7 24 −17 −6 23 −20
17 −20 7 6 −17 24 −23 12
17 −24 23 −20 17 −12 7 −6

JPEG 資料壓縮演算法和檔案格式在華夏公益教科書 JPEG - Idea and Practice 中有詳細介紹。


Clipboard

待辦事項
提供一些關於 JPEG 壓縮的一般概念和具體細節。


JFIF:JPEG 檔案交換格式

[編輯 | 編輯原始碼]
Clipboard

待辦事項
擴充套件


JPEG 2000

[編輯 | 編輯原始碼]

JPEG 2000 在需要極高質量的應用中很有用,例如 DICOM 醫學影像格式,因為壓縮器可以選擇比早期 JPEG 標準更高的質量設定,包括完全無損模式。

JPEG 2000 是一種基於小波技術的影像編碼系統。 [10] JPEG 2000 壓縮標準使用雙正交 CDF 5/3 小波(也稱為 LeGall 5/3 小波)進行無失真壓縮,並使用 CDF 9/7 小波進行有失真壓縮。但是,在實驗資料壓縮演算法中已經提出並使用了一些其他型別的小波。 [11]

JPEG 2000 的開源實現可用。 [12]

顏色變換

[編輯 | 編輯原始碼]

大多數影像壓縮演算法使用某種顏色空間變換來去相關每個畫素的 R、G、B 值。我們在 資料壓縮/多重變換#顏色變換 中討論了顏色變換。

音訊壓縮

[編輯 | 編輯原始碼]

正如我們所見,壓縮不僅取決於應用的演算法,還取決於要壓縮的資料型別以及解壓縮時生成的副本的質量。這在上一節中已經涉及,對於影像來說非常重要,對於聲音也一樣。

聲音和影像的一個重要區別是,公眾通常沒有能力對音訊進行合格的區分,這是由於感官的主觀性和缺乏對複雜音訊製作內在原理的瞭解。


Clipboard

待辦事項
涵蓋動態範圍 - “響度戰爭”並區分聲波壓縮與資料壓縮


如今,由於數字音訊檔案傳輸的重要性日益提高。這似乎最終得到了音樂媒體巨頭的支援,消費者對質量的重視至關重要。

Mp3 不僅是一種壓縮型別,也是一種資料格式。它用於音訊的有失真壓縮,並作為數字音訊分發和分類的工具。

大多數人將無法區分原始(自然音訊)和 256kbps mp3 有損重放。

經過大量聲音壓縮的音訊檔案,在應用 mp3 壓縮後,通常會讓人耳聽起來比原始音訊更差,尤其是在 128 kbps(或更低)的編碼情況下。

AAC 主要由蘋果使用,有時與蘋果無損音訊編解碼器 (ALAC) 編碼在一起,但 AAC 相容各種非蘋果裝置;請參閱維基百科關於 AAC 的頁面。


Clipboard

待辦事項
新增更多資訊


FLAC 使用無失真壓縮。


Clipboard

待辦事項
完整


有損和殘差產生無損

[編輯 | 編輯原始碼]

有時人們會下載(高度壓縮的)影像、影片或音樂檔案,用它來決定是否真的要花(更長的時間)下載該檔案的無損高解析度版本。

而不是刪除原始(有損)檔案版本並從頭開始下載無損版本,一些人正在嘗試使用某種方法來利用有損版本檔案中的部分資訊,以減少下載“殘差”所需的時間,也稱為“殘餘”——檔案的“剩餘部分”(即,填充有失真壓縮器丟棄的細節)。

[13] [14] [15] [16] [17] [18] [19] [20] [21]

只要(壓縮的)殘差的大小明顯小於以獨立無損格式儲存的檔案的大小,使用者就節省了時間——即使總的有損+殘差大小通常大於獨立無損格式。

GIF 和 PNG 是專為透過相對較慢的調變解調器下載而設計的影像檔案格式,它們具有一些這種特性——它們被設計為支援“部分下載”。

此類無損格式包括 JPEG XR、DTS-HD Master Audio、MPEG-4 SLS(無損音訊壓縮)、Wavpack Hybrid、OptimFROG DualStream 等。

參考文獻

[編輯 | 編輯原始碼]
  1. a b Greg Roelofs。 "PNG: The Definitive Guide: Chapter 9. Compression and Filtering"
  2. Wikipedia: fractal transform
  3. "基於分形的影像壓縮演算法(以及原始碼)" [1]
  4. 分形/迭代函式系統
  5. "FAQ:What is the state of fractal compression?"
  6. Sergei Vasilyev。 "Contour-Based Image Compression for Fast Real-Time Coding"。1999。引用:“有損 REIC 屬於非降級方法……因為一旦應用,對同一影像重複應用不會對影像造成任何進一步改變。”
  7. "Technical Overview of Cartesian Perceptual Compression" (c) 1998-1999 Cartesian Products, Inc.
  8. http://www.reznik.org/software.html#IDCT
  9. Rock Brentwood。 "Lossless & Non-Degrading Lossing DCT-Based Coding"
  10. 聯合影像專家組:JPEG 2000 標準
  11. 小波討論論壇
  12. JasPer 專案 由 Michael D. Adams 開發,是 JPEG-2000 第 1 部分的實現。
  13. "靈活的'可擴充套件至無損'?"
  14. Detlev Marpe、Gabi Blättermann、Jens Ricke 和 Peter Maaß "A two-layered wavelet-based algorithm for efficient lossless and lossy image compression" 2000。
  15. GCK Abhayaratne 和 DM Monro。 "Embedded to lossless coding of motion compensated prediction residuals in lossless video coding"
  16. G.C.K. Abhayaratne 和 D.M. Monro。 "Embedded to Lossless Image Coding (ELIC)"。2000。
  17. CH Ritz 和 J Parsons。 "無損寬頻語音編碼". 2004. "透過在標準化寬頻語音編碼器產生的有損基礎層上新增無損增強層來實現寬頻語音的無損編碼"
  18. Nasir D. Memon,Khalid Sayood,Spyros S. Magliveras。 "用於增強有損加無損影像壓縮方案效能的簡單方法" 1993.
  19. 張奇 雲陽 戴 闊,C.-C.J. Ming Hsieh "基於殘差影像預測和編碼 (RIPC) 的無損影片壓縮". 2009.
  20. Gianfranco Basti 和 M. Riccardi 和 Antonio L. Perrone。 "使用動態預處理進行哈勃太空望遠鏡擬合影像的有損加無損殘差編碼" 1999.
  21. Majid Rabbani 和 Paul W. Jones。 "數字影像壓縮技術". 1991. 第 8 章:有損加無損殘差編碼。


華夏公益教科書