JPEG
维基百科,自由的百科全书
-{zh-cn:文件扩展名;zh-tw:檔案副檔名}-: | .jpeg, .jpg, .jpe |
---|---|
MIME类型: | image/jpeg |
开发者: | Joint Photographic Experts Group |
在電腦中,JPEG(發音為/jay-peg/)是一種針對相片影像而廣泛使用的一種失真壓縮標準方法。使用這種壓縮的檔案格式一般也被稱為JPEG;雖然在所有平台上.jpg是最普遍的,但是針對這種格式一般的扩展名是 .jpeg、.jfif、.jpg、.JPG、或是.JPE。
這個名稱代表Joint Photographic Experts Group(聯合圖像專家小組)。JPEG本身只有描述如何將一個影像轉換為字节的數據串流(streaming),但並沒有說明這些位元組如何在任何特定的儲存媒體上被封存起來。一個由獨立JPEG小組(Independent JPEG Group)所建立的額外標準,稱為JFIF(JPEG File Interchange Format,JPEG檔案交換格式)詳細說明如何從一個JPEG串流,產出一個適合於電腦儲存和傳輸(像是在網際網路上)的檔案。在普遍的用法,當有人稱呼一個"JPEG檔案",一般而言他是意指一個JFIF檔案,或有時候是一個Exif JPEG檔案。然而,也有其他以JPEG為基礎的檔案格式,像是JNG。
JPEG/JFIF是最普遍在全球資訊網(World Wide Web)上被用來儲存和傳輸照片的格式。它並不適合於線條繪圖(drawing)和其他文字或圖示(iconic)的圖形,因為它的壓縮方法用在這些圖形的型態上,會得到不適當的結果(PNG和GIF格式通常是用來針對這種目的之圖形;GIF每一像素只有8位元,並不很適合於用在彩色照片,PNG可以被用來無失真地儲存照片,但是檔案太大讓它不適合在網頁上放照片)。
對於JFIF的MIME媒體型態是image/jpeg(定義在RFC 1341)。
目录 |
[编辑] 編碼
在JPEG標準中這個選項大多都是很少使用。當應用到一個擁有每個像素24位元(24 bits per pixel,紅、藍、綠各有八位元)的輸入時,這邊只有針對更多普遍編碼方法之一的簡潔描述。這個特定的選擇是一種失真資料壓縮方法。
[编辑] 色彩空間轉換
首先,影像由RGB(紅綠藍)轉換為一種稱為YUV的不同色彩空間。這與NTSC和PAL彩色電視傳輸所使用的色彩空間相似,但是更類似於MAC電視傳輸系統運作的方式。
這種編碼系統非常有用,因為人類的眼睛在 Y 成份可以比 U 和 V 看得更仔細。使用這種知識,編碼器(encoder)可以被設計得更有效率地壓縮影像。
[编辑] 縮減取樣(Downsampling)
上面所作的轉換使下一步驟變為可能,也就是減少 U 和 V 的成份(稱為"縮減取樣"或"色度抽样"(chroma subsampling)。在JPEG上這種縮減取樣的比例可以是4:4:4(無縮減取樣),4:2:2(在水平方向 2 的倍數中取一個),以及最普遍的4:2:0(在水平和垂直方向 2 的倍數中取一個)。對於壓縮過程的剩餘部份,Y、U、和 V 都是以非常類似的方式來個別地處理。
[编辑] 離散餘弦變換(Discrete cosine transform)
下一步,影像中的每個成份(Y, U, V)每一個是以 8 乘以 8 的像素如磁磚般排列成為一個個的區域,每一區使用二維的離散餘弦變換(DCT)轉換到頻率空間。
如果有一個如這樣的的8×8的8-位元(0~255)子影像是:
接著推移128,使其範圍變為 -128~127,得到結果為
且接著使用離散餘弦變換,和捨位取最接近的整數,得到結果為
注意左上角之相當大的數值。這就是DC係數。
[编辑] 量化(Quantization)
人類眼睛在一個相對大範圍區域,辨別亮度上細微差異是相當的好,但是在一個高頻率亮度變動之確切強度的分辨上,卻不是如此地好。這個事實讓我們能在高頻率成份上極佳地降低資訊的數量。簡單地把頻率領域上每個成份,除以一個對於該成份的常數就可完成,且接著捨位取最接近的整數。這是整個過程中的主要失真運算。以這個結果而言,經常會把很多更高頻率的成份捨位成為接近 0,且剩下很多會變成小的正或負數。
一個普遍的量化矩陣是:
使用這個量化矩陣與前面所得到的 DCT 係數矩陣,得到結果為:
舉個例子,使用−415(DC係數)且捨位得到最接近的整數
[编辑] 熵編碼技術(entropy coding)
熵編碼是無失真資料壓縮的一個特別形式。它牽涉到將影像成份以 Z 字型(zigzag)排列,把相似頻率群組在一起(矩陣中往左上方向是越低頻率之係數,往右下較方向是較高頻率之係數),插入長度編碼的零,且接著對剩下的使用霍夫曼編碼。 JPEG標準也允許(但是並不要求)在數學上優於霍夫曼編碼的算术编码之使用。然而,這個特色幾乎很少被使用,因為它被專利所涵蓋,且它相較於霍夫曼編碼在編碼和解碼上會更慢。使用算術編碼一般會讓檔案更小約 5%。
對於前者量化的係數所作的 Z 字型序列會是:
−26, −3, 0, −3, −3, −6, 2, −4, 1 −4, 1, 1, 5, 1, 2, −1, 1, −1, 2, 0, 0, 0, 0, 0, −1, −1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
當剩下的所有係數都是零,對於過早結束的序列,JPEG 有一個特別的霍夫曼編碼用詞。使用這個特殊的編碼用詞,EOB,該序列變為
−26, −3, 0, −3, −3, −6, 2, −4, 1 −4, 1, 1, 5, 1, 2, −1, 1, −1, 2, 0, 0, 0, 0, 0, −1, −1, EOB
[编辑] 壓縮比率與不自然痕跡(artifact)
按:artifact 在這個領域又被解釋為膺像、非自然信號、人為現象。
在量化階段時,依照除數的不同,會使結果的壓縮比率可能有很多變化。10:1通常可得到無法使用肉眼分辨與原圖差異的影像。100:1壓縮通常是可行的,但與原圖相較,會看起來是明顯不自然痕跡。壓縮的適當等級是依據要壓縮那一種影像而定。
使用全球資訊網的人,可能熟悉這種出現在JPEG數位影像,已知壓縮人為現象的不規則現象。這是由於JPEG演算法的量化步驟所造成的結果。這種現象在臉部照片中的眼睛四周特別明顯。他們可以藉由選擇壓縮的較低水平(不要壓縮率太高)來減少這種現象;他們可能藉由使用無失真檔案格式來儲存一個影像來消除這種現象,然而針對照片影像,這樣通常會導致更大的檔案大小。
[编辑] 解碼
解碼來顯示影像,包含反向作以上所有的過程
取 DCT 係數矩陣(在把 DC 係數差異加回去之後)
且以前面的量化矩陣乘以它,得到
左上角的部份與原本 DCT 係數矩陣非常接近地相似。 使用反向 DCT 得到一個有數值的影像(仍然被移位128)
注意原來(上)與解壓縮影像(下)的些微差異,在左下角可以輕易地看出來 |
且對每一個項目加上 128
這是解壓縮的子影像,且可以被用來與原本子影像相比(也可以看左方的影像),藉由取兩者之間的差異(原本—解壓縮)得到誤差值。
每個像素大約是 5 的平均絕對誤差,也就是說,。誤差在左下角顯而易見,左下方的像素變得比它鄰近右方的像素還更暗。
[编辑] 用法
JPEG在色調及顏色平滑變化的相片或是寫實繪畫(painting)上可以達到它最佳的效果。在這種情況下,它通常比完全無失真方法作得更好,仍然可以產生非常好看的影像(事實上它會比其他一般的方法像是GIF產生更高品質的影像,因為GIF對於線條繪畫(drawing)和圖示的圖形是無失真,但針對全彩影像則需要極困難的量化)。
[编辑] 照片
JPEG壓縮的不自然現象可以很好地調和到細微非均勻材質的相片中,因此允許得到更高的壓縮率。
附註:以上的影像並不是IEEE/CCIR/EBU測試影像,且壓縮編碼器的設定並沒有指明或是可以得到。
中等品質的相片只有六分之一的儲存空間,但是幾乎沒有明顯的細節損失或是看得到的人為效果。然而,一旦超過一個某整的壓縮限度,壓縮的影像逐漸地顯現出可以看得到的瑕疵。參考比率失真理論(en:rate distortion theory)的文章有針對這種限度效果的數學上之解釋。
[编辑] 醫學影像: 少見的JPEG 12位元支援模式
有很多醫學的影像系統可以建立和處理12位元JPEG影像。12位元JPEG格式已經是JPEG規格的一部份,但是非常少消費者的程式(或網頁瀏覽器)支援這種不常使用的JPEG格式。
[编辑] 其他失真壓縮的編碼格式
更新的失真方法,尤其是小波壓縮(wavelet compression),在這些情況下甚至能作得更好。然而,JPEG是一種建立得相當好的標準,擁有很多可使用的軟體,包含自由軟體,因此到2005年它持續被大量使用。很多小波演算法受到專利保護,要在很多軟體專案中自由地使用他們,因此是困難或是不可能的。
JPEG委員會現在也已經建立它自己擁有的小波基礎標準,JPEG 2000,意圖最終能取代原來的JPEG標準。
[编辑] 潛在的專利爭議
在2002年 Forgent Networks主張他擁有且將會履行在JPEG技術上的專利權,起因於一個在1986年已經被歸檔的專利。(美國專利 4,698,672)。這個公告已經引起一陣大騷動,令人想起Unisys試圖主張對於GIF影像壓縮標準的權利。
JPEG委員會審慎調查這個在2002年所主張的專利,且發現他們因為前案而無效作廢 [1]。其他的也已推斷Forgent並無擁有涵蓋JPEG的專利 [2] 。儘管如此,在2002年和2004年之間,Forgent藉由把他們的專利授權給某些30家公司,而獲得大約9千萬美金。在2004年4月,Forgent控告31家其他公司來強求更多的授權支付。同年的七月,21家較大的電腦公司組成的協會提出反控告,包含使該專利無效的目標。然而,到2005年7月的時候,這場官司仍然持續中(德國新聞連結)。
JPEG委員會在他的明確目標中有一項,是他們的標準在不支付授權金之下是可以被實作的,且他們已從超過20個大型組織中,得到適當的授權權利給他們即將到來的JPEG 2000標準。
[编辑] 無損耗旋轉 (lossless JPEG rotation)
雖然任何對JPEG圖像的處理都有可能導致因為解壓後再壓縮而引起的損耗,然而,對於簡單的旋轉動作,數學上是可以有辦法使圖像得以旋轉而無損圖像本身的資料。也就是說,有一種方法可以在無需把圖像解壓後才可以旋轉。這是因為JPEG的檔案格式本身是以一個個模塊為單位來壓縮,所以,只需要把模塊重排,再對每個模塊旋轉,就可以達至無損耗的旋轉。
目前只有少數繪圖軟件支援無損耗旋轉,但需要使用者在操作上加以注意。例如:在Adobe Photoshop裡,用戶若要作無損耗旋轉前,必須在載入圖像之後立刻用“Save As...”功能儲存一個備份。然後當圖像旋轉過後,由於Photoshop已掌握了圖像的基本資料,所以在儲存時得以使用原來的設定。若沒有作事先儲存,Photoshop就會把旋轉後的圖像重新計算各項參數,並重新對圖像進行壓縮處理。這樣就會造成資料的損耗。
參看:無損耗JPEG旋轉程式列表 (英語)
[编辑] 參見
- 影像壓縮
- JPEG-LS 非失真壓縮標準
- JPEG 2000
- Motion JPEG
- 影像編輯程式
- GDI文章的GDI+段落 (提到jpeg的漏洞)