JPEG 2000

维基百科,自由的百科全书
跳转至: 导航搜索
JPEG 2000
JPEG JFIF and 2000 Comparison.png
扩展名 .jp2, .j2c
互联网媒体类型 image/jp2
開發者 Joint Photographic Experts Group
格式 图形文件格式

JPEG 2000是基于小波变换图像压缩标准,由Joint Photographic Experts Group组织创建和维护。JPEG 2000通常被认为是未来取代JPEG(基于离散余弦变换)的下一代图像压缩标准。JPEG 2000文件的副檔名通常为.jp2MIME类型image/jp2

JPEG 2000的压缩比更高,而且不会产生原先的基于离散余弦变换的JPEG标准产生的塊狀模糊瑕疵。JPEG 2000同时支持有损数据压缩无损資料壓縮。另外,JPEG 2000也支持更复杂的渐进式显示和下载。

JPEG 2000是国际标准化组织(ISO)发布的标准,文档代码为ISO/IEC 15444-1:2000。虽然JPEG 2000在技术上有一定的优势,但是到目前为止(2006年),網際網路上采用JPEG 2000技术制作的图像文件数量仍然很少,并且大多数的浏览器仍然不支持JPEG 2000图像文件的显示。但是,由于JPEG 2000在无损压缩下仍然能有比较好的压缩率,所以JPEG 2000在图像品質要求比较高的医学图像的分析和处理中已经有了一定程度的广泛应用。

技術目標[编辑]

JPEG 2000與JPEG XR及JPEG的壓縮結果比較。

JPEG 2000的目标不仅仅是性能要超越JPEG,而且增加和增强了如可缩放性和可编辑性这样的特性。 JPEG 2000最大的特色在於,與JPEG等技術在資料編碼上採取了不一樣的思維,同樣的資料編碼可以使用多種手段解碼以應付不同需求。JPEG 2000的編碼內容具有可縮放性(Scaling)。其編碼內容可以在任意位置截斷,從頭至此的編碼片段可被解碼回一張較低解析度的圖片。編碼片段越長,解碼後的解析度越高(或說放大到相同解析度時,其峰值信噪比(PSNR)較佳)。這意味了當需要更高壓縮率時,直接丟棄後方的編碼資料即可達成;或者,可以視需求只解碼頭一部分而得到縮圖。不過這樣的特徵也使得編碼解碼單元必須更複雜。

相关标准[编辑]

已经发布的JPEG 2000标准包括ISO/IEC 15444-1:2000。另外,和JPEG 2000相关的一些额外标准也正在制定和讨论中,比如JPEG 2000安全图像传输(JPSEC)以及基于连接的JPEG 2000图像浏览JPIP)等。

JPEG 2000 與原有技術比較[编辑]

技術優勢[编辑]

File:JPEG 2000 Artifacts Demonstration.png
壓縮率再高只有模糊失真.

較佳的壓縮率及品質[编辑]

尤其在低壓縮比情形下,JPEG 2000優勢尤其明顯。主要因為其基於小波轉換並搭配更強的熵編碼小波轉換避免了離散餘弦轉換區塊化時(如JPEG的8×8網格)造成的馬賽克失真熵編碼也從JPEG的霍夫曼編碼改用效能更佳的算術編碼。(JPEG 2000在後續編碼時仍需要區塊化的動作,不過其區塊通常都遠比JPEG的8×8區塊來的大。)

遞進性與可縮放性[编辑]

遞進性(Progressive)與可適性(Scaling)在此可以算是一體的兩面。JPEG 2000在編碼技術上使用了不同的思維,類似於從低解析度的資訊慢慢遞進排列到高解析度的資訊。

  • 從遞進性的角度來看,解碼的過程會先去擷取前端低解析度資訊,先解得低解析度圖片;再一步步擷取更多資訊,逐步增進解析度。這代表了使用者可以視需求只解碼部分而得到縮圖,節省計算量。
  • 可適性的角度來看,其編碼內容可以在任意位置截斷,從頭至此的編碼片段可被解碼回一張較低解析度的圖片。編碼片段越長,解碼後的解析度越高(或說放大到同樣解析度時,其峰值信噪比(PSNR)較佳)。這意味了當需要更高壓縮率時,直接丟棄後方的編碼資料即可達成。

區域解碼(Random Access)[编辑]

JPEG 2000的編碼除了在大小∕品質上有遞進性或可適性,在圖片的空間區域上也同樣有特別的安排。當使用者只想解碼取用圖片中特定區域時,可以依特定規律找出該區域的編碼資料,而不需預先解碼整張圖片。

重點區塊處理(Region of Interest)[编辑]

類似可適性與區域解碼的綜合結果,不同的區域可以挑選不同的壓縮品質。通常圖片中特定部分的重要性遠大於其他部位,此時可利用重點區塊處理達到差異化處理的效果。

失真與非失真壓縮方法相同[编辑]

JPEG 2000可以採用同一套編碼方式產生失真非失真的壓縮結果。可以粗略想像為利用可縮放性直接把非失真的結果截斷為失真的結果。而JPEG的失真壓縮非失真壓縮作法差異較大。

錯誤容忍(Error Resilience)[编辑]

JPEG 2000與JPG同樣有錯誤容忍的特性。若傳輸過程中出現些許位元錯誤,由於在編碼過程會切分許多階層結構,可以避免該錯誤影響範圍的擴大。

其他[编辑]

支援高動態範圍成像、支援圖片透明度。

與JPEG比較[编辑]

有损压缩下,JPEG 2000一个比较明显的优点就是没有JPEG压缩中的马赛克失真效果。JPEG 2000的失真主要是模糊失真模糊失真产生的主要原因是在编码过程中高频量一定程度的衰减。传统的JPEG压缩也存在模糊失真的问题。

就图像整体压缩性能来说,目前有一些文章可能夸大JPEG 2000的性能。事实上,在低压缩比情形下(比如压缩比小于10:1),传统的JPEG图像质量有可能要比JPEG 2000要好。JPEG 2000在压缩比比较高的情形下,优势才开始明显。整体来说,和传统的JPEG相比,JPEG 2000仍然有很大的技术优势,通常压缩性能大概可以提高20%以上。一般在压缩比达到100:1的情形下,采用JPEG压缩的图像已经严重失真并开始难以识别了,但JPEG 2000的图像仍可识别。有损压缩图像质量或失真程度一般用峰值信噪比(PSNR)指标来衡量。虽然峰值信噪比不能完全反映人类视觉效果,但是它仍是一个目前比较流行的量化指标。

與PNG比較[编辑]

雖然JPEG 2000也支援無失真的編碼方式,但是它並不企圖完全取代今日主要的無失真影像檔格式.
例如圖表之類的影像,如果圖檔之中有許多像素是同一顏色,那麼PNG(Portable Network Graphics)格式仍然會有更小的儲存空間,而且有一些JPEG 2000所沒有的特殊壓縮功能。

編碼技術[编辑]

此圖標示出JPEG 2000(品質50%模式)與原始圖片有差異之處。

概論[编辑]

JPEG 2000為了達成可適性的效果,將圖片的編碼分為眾多層級(由大至小):圖片(Image)、區塊(Tile)、頻塊(Sub-band)、編碼區段(Code-block)、位元層(Bit-plane)、分流(Pass)。依照壓縮編碼動作可以粗略分為:

  • 單元處理(Word Level Processing):負責圖片、區塊、頻塊層級,主要以「小波轉換」將圖片信號轉換至頻率世界,以利後續壓縮。
  • 位元處理(Bit Level Processing):負責編碼區段、位元層、位元條層級,以「內嵌區段編碼」方式壓縮資料。

以下將簡單解釋各個分段步驟:

轉換(Transform)[编辑]

前處理[编辑]

  • 區塊化(Tiling):對影像作分割,把完整的影像分割為數個相同大小(邊界的區塊除外)、彼此間沒有重疊且為長方形的區塊,作為小波轉換的基本單位。此處的區塊通常遠大於JPEG的8×8區塊,甚至整張圖片也可作為一個區塊。(JPEG 2000的區塊大小非固定值)
  • 零頻位移(或翻直流位移,DC shifting):對於區塊中的資料平移其數值,使區塊內的資料(如色彩數值)成為以0為中心,帶有正負號的數值資料。
  • 色彩空間轉換(Color Transformation):將傳統的RGB(紅綠藍)色域轉換至其他色彩空間
  1. 對於失真壓縮,採用不可完全回復色彩空間轉換(Irreversible Color Transform),轉換至一般熟悉的YCbCr色彩空間。
  2. 對於非失真壓縮,採用可完全回復色彩空間轉換(Reversible Color Transform),使用簡化後的YCbCr色彩空間。

理由是人眼對於明暗(YCbCr中的Y)較色度敏感(YCbCr中的CbCr),分開處理可以較單純的RGB更有視覺上的意義。簡化後的YCbCr色彩空間因為不需要小數計算,不會有運算上精確度的失真,但因為其係數較粗略,後續壓縮效果可能會稍差一些。

離散小波轉換(Discrete Wavelet Transform)[编辑]

非失真壓縮所採用的 CDF 5/3 離散小波濾波器。
離散小波變換應用於JPEG 2000的例子。此圖為二階 CDF 9/7 離散小波濾波器之結果。

詳見離散小波變換條目。
係以階層式的採樣(down sampling)、升採樣(up sampling)、相減(取差異部分)的方式來取得階層狀的頻率資訊。把影像區塊分為多層次的高頻頻塊和低頻頻塊:其中低頻頻塊是直接採樣的結果,可以視為影像的近似,反映影像的大略情形;高頻頻塊則是剩餘部分,反映了影像的高頻資訊,可以理解為影像的細節。 此處的濾波器選擇主要有兩種:Daubechies 9-tap/7-tap filter(用於失真壓縮)和Le Gall 5tap/3-tap filter(用於非失真壓縮)。

量化(Quantization)[编辑]

量化的意義在於將一組連續訊號對應到一組離散訊號,後續的離散訊號以單純的位元表示,可達到壓縮資料並數位化的條件。簡言之為將頻塊帶有小數的資料分段、近似,以較為單純的位元表示。(從單元處理過渡到位元處理


內嵌區段編碼與最佳化(EBCOT)[编辑]

此技術先將資料作好適當的切割、歸類後,利用搭配統計分布模型的熵編碼法壓縮資料。由於資料經有條理的適當分割,具備可適性的特性,在最後可以衡量所需要的資料大小與品質,找出最佳分割點。捨棄該點以後的資料,仍保有高品質的特性。以下就三者分開描述:

內嵌區段編碼(Embedded Block Coding)[编辑]

首先對資料作適當的切割、歸類,如此有兩大好處:其一不同類型的資料其0、1位元的統計特性不同,分開處理可以增進壓縮效率;其二為依資料重要性的不同作出區隔,從最重要到不重要作排列,以達成可適性(Scaling)的效果。在切割歸類上,有以下名詞作為單位:

  • 編碼區段(Code-block):通常會將上一步動作算好的頻塊進一步切成32×32或64×64的區段,分開來平行運算,作為內嵌區段編碼的對象。
  • 位元層(Bit-plane):把編碼區段內的資料依照位元深度,從高位元(MSB)到低位元(LSB)分成數個位元層(不同於圖片水平、垂直方向,而是依位元深度的第三個維度)。如每筆數值利用P個位元(bit)來記錄,將會從高位元到低位元被分解為P個位元層面。位元層較高的通常被認為比較重要(通俗想像:一般人覺得「百位數」比「十位數」或「個位數」重要)。
  • 分流(Pass):每個位元層都再依「重要性」分為三個分流,分開套用內容統計模型(context modeling)處理。分流依據最高有效位元(對於正數,第一個從0變1的位置)的出現與否(以σ記)(通俗想像:判斷一個人究竟有「幾十萬」跟「幾萬」元的那個「幾」),以及該位元鄰近的八格範圍內,是否有其他位置出現最高有效位元(以φ記)(想像:鄰近處出現了,自己也很可能會出現)。
    • 分流一(Pass 1):最重要的資料,該處上一層還沒出現過最高有效位元但鄰近處出現者,將被分流至此。
    • 分流二(Pass 2):該位置已經出現過最高有效位元,對於較低位元繼續記錄其位元值。
    • 分流三(Pass 3):該處上一層還沒出現過最高有效位元,且鄰近處也都不曾出現過。

這些不同的分流還會依照與鄰近的八格範圍的關係,再分別查表套用不同的內容統計模型。大致上有以下四大類:

    • 零編碼(zero coding):用於分流一、三,紀錄非最高有效位元者。
    • 正負號編碼(sign coding):用於分流一、三,紀錄出現最高有效位元者。
    • 精細編碼(Magnitude refinement coding):用於分流二。
    • 遊程編碼(Run-length coding):用於分流三,紀錄全都不是最高有效位元的狀況。

算術編碼(Arithmetic coding)[编辑]

詳見算術編碼條目。
算術編碼是一種無損的熵編碼法算術編碼把輸入資料視為一種0~1之間的切割,根據內容統計模型決定這次輸入資料的切割位置。當所有資料輸入畢以後,可以得到一個0~1之間的小數,該小數的數值以資料形式表示(如位元)即為壓縮編碼後的結果。算術編碼較其他的熵編碼法(如哈夫曼編碼)還要更接近熵編碼法的數學理論極限。

最佳化[编辑]

由於上述壓縮後的資料,具備可適性的特性,在壓縮的最後可以視需求衡量最後資料大小與品質,找出最佳分割點。捨棄該點以後的資料,仍保有在該需求的衡量下,最高品質的特性。做到良好的壓縮率控制。

JPEG 2000版权专利问题[编辑]

JPEG 2000存在版权专利的风险。这也许是目前JPEG 2000技术没有得到广泛应用的原因之一。JPEG 2000标准本身是没有授权费用,但是,因为编码的核心部分的各种算法被大量注册专利,所以一般认为,不太可能避开这些专利费用开发出免授权费的商用编码器。

外部连接[编辑]