PNG声搁、JPEG黑竞、BMP等幾種圖片格式詳解(二)—— JPEG

版本記錄

版本號 時(shí)間
V1.0 2017.09.06

前言

只要是做圖片的或者與圖片相關(guān)的,那么圖片的格式就是一個(gè)不可以繞過的問題疏旨,我們見過很多的圖片格式很魂,但是具體不同的圖片格式是如何定義的,又具有什么特點(diǎn)檐涝,很多時(shí)候我們都沒有深入研究過遏匆,下面我們就開始深入研究。感興趣的可以看我上面這篇谁榜。
1. PNG幅聘、JPEG、BMP等幾種圖片格式詳解(一)—— PNG

JPEG

以下部分內(nèi)容來自百度百科惰爬,還會(huì)有一部分是自己的見解喊暖,我寫這篇文章的目的是既讓大家可以了解百度上已有的知識惫企,但是不用再去找百度撕瞧,還有就是可以看到我關(guān)于這種圖片格式的深層次的了解,看完這篇狞尔,包括我在內(nèi)丛版,會(huì)感覺到即使很小很小的一個(gè)知識點(diǎn),深入以后都是非常深的偏序,底層和深層次原理是我的最愛页畦,這也是我寫博客的初衷和目的。


基本介紹

JPEGJoint Photographic Experts Group(聯(lián)合圖像專家小組)的縮寫研儒,是第一個(gè)國際圖像壓縮標(biāo)準(zhǔn)豫缨。JPEG圖像壓縮算法能夠在提供良好的壓縮性能的同時(shí),具有比較好的重建質(zhì)量端朵,被廣泛應(yīng)用于圖像好芭、視頻處理領(lǐng)域。人們?nèi)粘E龅降?code>“.jpeg”冲呢、‘’.jpg“等指代的是圖像數(shù)據(jù)經(jīng)壓縮編碼后在媒體上的封存形式舍败,不能與JPEG壓縮標(biāo)準(zhǔn)混為一談。

JPEG(Joint Photographic Experts Group)是在國際標(biāo)準(zhǔn)化組織(ISO)領(lǐng)導(dǎo)之下制定靜態(tài)圖像壓縮標(biāo)準(zhǔn)的委員會(huì)敬拓,第一套國際靜態(tài)圖像壓縮標(biāo)準(zhǔn)ISO 10918-1(JPEG)就是該委員會(huì)制定的邻薯。由于JPEG優(yōu)良的品質(zhì),使他在短短幾年內(nèi)獲得了成功乘凸,被廣泛應(yīng)用于互聯(lián)網(wǎng)數(shù)碼相機(jī)領(lǐng)域厕诡,網(wǎng)站上80%的圖像都采用了JPEG壓縮標(biāo)準(zhǔn)。

JPEG本身只有描述如何將一個(gè)影像轉(zhuǎn)換為字節(jié)的數(shù)據(jù)串流(streaming)营勤,但并沒有說明這些字節(jié)如何在任何特定的儲(chǔ)存媒體上被封存起來灵嫌。.jpeg/.jpg是最常用的圖像文件格式信柿,由一個(gè)軟件開發(fā)聯(lián)合會(huì)組織制定,是一種有損壓縮格式醒第,能夠?qū)?a target="_blank" rel="nofollow">圖像壓縮在很小的儲(chǔ)存空間渔嚷,圖像中重復(fù)或不重要的資料會(huì)被丟失,因此容易造成圖像數(shù)據(jù)的損傷稠曼。尤其是使用過高的壓縮比例形病,將使最終解壓縮后恢復(fù)的圖像質(zhì)量明顯降低,如果追求高品質(zhì)圖像霞幅,不宜采用過高壓縮比例漠吻。但是JPEG壓縮技術(shù)十分先進(jìn),它用有損壓縮方式去除冗余的圖像數(shù)據(jù)司恳,在獲得極高的壓縮率的同時(shí)能展現(xiàn)十分豐富生動(dòng)的圖像途乃,換句話說,就是可以用最少的磁盤空間得到較好的圖像品質(zhì)扔傅。而且 JPEG是一種很靈活的格式耍共,具有調(diào)節(jié)圖像質(zhì)量的功能,允許用不同的壓縮比例對文件進(jìn)行壓縮猎塞,支持多種壓縮級別试读,壓縮比率通常在10:1到40:1之間,壓縮比越大荠耽,品質(zhì)就越低钩骇;相反地,品質(zhì)就越高铝量。比如可以把1.37Mb的BMP位圖文件壓縮至20.3KB倘屹。當(dāng)然也可以在圖像質(zhì)量和文件尺寸之間找到平衡點(diǎn)。JPEG格式壓縮的主要是高頻信息慢叨,對色彩的信息保留較好纽匙,適合應(yīng)用于互聯(lián)網(wǎng),可減少圖像的傳輸時(shí)間插爹,可以支持24bit真彩色哄辣,也普遍應(yīng)用于需要連續(xù)色調(diào)的圖像。


詳細(xì)介紹

JPEG是第一個(gè)國際圖像壓縮標(biāo)準(zhǔn)赠尾,用于連續(xù)色調(diào)靜態(tài)圖像(即包括灰度圖像和彩色圖像)
力穗。JPEG是聯(lián)合圖像專家組(Joint Photographic Experts Group)的縮寫,這個(gè)圖像壓縮標(biāo)準(zhǔn)是國際電信聯(lián)盟(International Telecommunication Union气嫁,ITU)当窗、國際標(biāo)準(zhǔn)化組織(International Organization for Standardization,ISO)和國際電工委員會(huì)(International Electrotechnical Commission寸宵,IEC)合作努力的成果崖面。JPEG標(biāo)準(zhǔn)正式地稱為ISO/IEC IS(國際標(biāo)準(zhǔn))10918-1:連續(xù)色調(diào)靜態(tài)圖像數(shù)字壓縮和編碼(Digital Compression and Coding of Continuous-tone Still Images)ITU-T建議T.81元咙。這個(gè)標(biāo)準(zhǔn)目的在于支持用于大多數(shù)連續(xù)色調(diào)靜態(tài)圖像壓縮的各種各樣的應(yīng)用,這些圖像可以是任何一個(gè)色彩空間巫员,用戶可以調(diào)整壓縮比庶香,并能達(dá)到或者接近技術(shù)領(lǐng)域中領(lǐng)先的壓縮性能,且具有良好的重建質(zhì)量简识。這個(gè)標(biāo)準(zhǔn)的另一個(gè)目標(biāo)是對普遍實(shí)際的應(yīng)用提供易處理的計(jì)算復(fù)雜度赶掖。

在 Photoshop軟件中以JPEG格式儲(chǔ)存時(shí),提供11級壓縮級別七扰,以0—10級表示奢赂。其中0級壓縮比最高,圖像品質(zhì)最差颈走。即使采用細(xì)節(jié)幾乎無損的10 級質(zhì)量保存時(shí)膳灶,壓縮比也可達(dá) 5:1。以BMP格式保存時(shí)得到4.28MB圖像文件立由,在采用JPG格式保存時(shí)轧钓,其文件僅為178KB,壓縮比達(dá)到24:1拆吆。經(jīng)過多次比較聋迎,采用第8級壓縮為存儲(chǔ)空間與圖像質(zhì)量兼得的最佳比例脂矫。

然而枣耀,JPEG靜止圖像壓縮標(biāo)準(zhǔn),中端和高端比特速率上的良好的速率畸變特性,但在低比特率范圍內(nèi)庭再,將會(huì)出現(xiàn)很明顯的方塊效應(yīng)捞奕,其質(zhì)量變得不可接受。JPEG不能在單一碼流中提供有損和無損壓縮拄轻,并且不能支持大于64×64 K的圖像壓縮颅围。同時(shí),盡管當(dāng)前的JPEG標(biāo)準(zhǔn)具有重新啟動(dòng)間隔的規(guī)定恨搓,但當(dāng)碰到比特差錯(cuò)時(shí)圖像質(zhì)量將受到嚴(yán)重的損壞院促。

針對這些問題,自1997年3月起斧抱,JPEG圖像壓縮標(biāo)準(zhǔn)委員會(huì)開始著手制定新一代的圖像壓縮標(biāo)準(zhǔn)以解決上述問題常拓。2000年3月的東京會(huì)議,確定了彩色靜態(tài)圖像的新一代編碼方式JPEG2000圖像壓縮標(biāo)準(zhǔn)的編碼算法辉浦。
JPEG2000作為JPEG的升級版弄抬,其壓縮率比JPEG高約30%左右,同時(shí)支持有損和無損壓縮宪郊。JPEG2000格式有一個(gè)極其重要的特征在于它能實(shí)現(xiàn)漸進(jìn)傳輸掂恕,即先傳輸圖像的輪廓拖陆,然后逐步傳輸數(shù)據(jù),不斷提高圖像質(zhì)量懊亡,讓圖像由朦朧到清晰顯示依啰。此外,JPEG2000還支持所謂的"感興趣區(qū)域" 特性店枣,可以任意指定影像上感興趣區(qū)域的壓縮質(zhì)量孔飒,還可以選擇指定的部分先解壓縮。在有些情況下艰争,圖像中只有一小塊區(qū)域?qū)τ脩羰怯杏玫幕得椋瑢@些區(qū)域,采用低壓縮比甩卓,而感興趣區(qū) 域之外采用高壓縮比鸠匀,在保證不丟失重要信息的同時(shí),又能有效地壓縮數(shù)據(jù)量逾柿,這就是基于感興趣區(qū)域的編碼方案所采取的壓縮策略缀棍。其優(yōu)點(diǎn)在于它結(jié)合了接收方對壓縮的主觀需求,實(shí)現(xiàn)了交互式壓縮机错。而接收方隨著觀察爬范,常常會(huì)有新的要求,可能對新的區(qū)域感興趣弱匪,也可能希望某一區(qū)域更清晰些青瀑。
JPEG2000和JPEG相比優(yōu)勢明顯,從無損壓縮有損壓縮可以兼容萧诫,而JPEG不行斥难,JPEG的有損壓縮和無損壓縮是完全不同的兩種方法。JPEG2000即可應(yīng)用于傳統(tǒng)的JPEG市場帘饶,如掃描儀哑诊、數(shù)碼相機(jī)等,又可應(yīng)用于新興領(lǐng)域及刻,如網(wǎng)路傳輸镀裤、無線通訊等等。

注意:JPEG標(biāo)準(zhǔn)不指定任何固有的文件格式缴饭。它只定義壓縮比特流的語法暑劝。這就產(chǎn)生了一定數(shù)量的文件格式來存儲(chǔ)JPEG壓縮后的圖像,例如JPEG文件交換格式(JPEG File Interchange Format茴扁,JFIF)铃岔,JPEG推廣到TIFF6.0FlashPix等。但它們中的每一個(gè)都不能認(rèn)為是由國際標(biāo)準(zhǔn)委員會(huì)支持的正式定義的國際標(biāo)準(zhǔn)毁习。

1. 部分JPEG標(biāo)準(zhǔn)

  • ⑴核心圖像編碼系統(tǒng)[3]
    智嚷,為JPEG2000指定了基本的特征集合和碼流語法。
  • ⑵擴(kuò)充(給⑴的核心定義添加更多的特征和完善度)纺且。
  • ⑶運(yùn)動(dòng)JPEG2000指定了文件格式(MJ2)盏道,它包含用于動(dòng)態(tài)視頻的具有JPEG2000核心編碼算法的圖像序列編碼。
  • ISO/IEC15444-4:2002载碌。它指定了使用第一部分的JPEG2000用于編碼/解碼一致性測試枷畏。
  • ⑸參考軟件 (包含Java和C實(shí)現(xiàn))伐债。在這一部分中峭弟,提供了兩個(gè)軟件源包(使用Java和C編程語言)用于測試和開發(fā)商對于JPEG2000系統(tǒng)實(shí)現(xiàn)的有效性檢驗(yàn)好渠。
  • ⑹復(fù)合圖像文件格式(用于文件掃描和傳真應(yīng)用程序)指定了其他文件格式(JPM)用于存儲(chǔ)復(fù)合圖像。ITU-TT.441ISO 16485多層混合光柵內(nèi)容(mixed raster content步咪,MRC)模型用于表示在第6部分的JPEG2000復(fù)合圖像论皆。
  • ⑺對⑴的最小支持(技術(shù)報(bào)告)【已摒棄】。
  • ⑻安全JPEG2000(JPSEC)猾漫。這一部分設(shè)計(jì)了用于JPEG2000應(yīng)用的安全方面点晴,例如加密、數(shù)字水印等悯周。
  • ⑼交互工具粒督、API和協(xié)議(JPIP)。這一部分定義了一個(gè)交互式網(wǎng)絡(luò)協(xié)議禽翼,并且它指定了用于JPEG2000圖像和相關(guān)元數(shù)據(jù)高效的交換工具屠橄。
  • ⑽3D和浮點(diǎn)數(shù)據(jù)(JP3D)。這一部分開發(fā)與三維數(shù)據(jù)有關(guān)的內(nèi)容捐康,以3D醫(yī)療圖像重建作為例子仇矾。
  • ⑾無線(JPWL)。這一部分開發(fā)了用于無線多媒體的應(yīng)用解总。主要涉及用JPEG2000在易出錯(cuò)的無線網(wǎng)環(huán)境中JPWL的差錯(cuò)保護(hù)、檢測和修正姐仅。
  • ⑿對MPEG-4花枫,ISO基本媒介文件格式(media file format)具有共同的文本ISO/IEC 14496-12

截止于2007年掏膏,⑴為完全被認(rèn)可的ISO標(biāo)準(zhǔn)劳翰,定義了核心壓縮技術(shù)和最小文件格式,⑵~⑹定義壓縮和文件格式的擴(kuò)充馒疹。其中佳簸,⑺已摒棄。⑻~仍在發(fā)展之中


技術(shù)概括

在計(jì)算機(jī)處理中,JPEG是一種廣泛適用的壓縮圖像標(biāo)準(zhǔn)方式生均。JPEG就是「聯(lián)合圖像專家組」(JointPhotographicExpertsGroup)的首字母縮寫听想。采用這種壓縮格式的文件一般就稱為JPEG;此類文件的一般擴(kuò)展名有:.jpeg马胧、.jfif汉买、.jpg或.jpe,其中在主流平臺最常見的是.jpg佩脊。JPEG只描述一副圖像如何轉(zhuǎn)換成一組數(shù)據(jù)流蛙粘,而不論這些字節(jié)存儲(chǔ)在何種介質(zhì)上。由獨(dú)立JPEG組創(chuàng)立的另一個(gè)進(jìn)階標(biāo)準(zhǔn)威彰,JFIF(JPEGFileInterchangeFormat出牧,JPEG文件交換格式)則描述JPEG數(shù)據(jù)流如何生成適于電腦存儲(chǔ)或傳送的圖像。在一般應(yīng)用中歇盼,我們從數(shù)碼相機(jī)等來源獲得的“JPEG文件”崔列,指的就是JFIF文件,有時(shí)是ExifJPEG文件旺遮。

JPEG/JFIF是互聯(lián)網(wǎng)上最常見的圖像存儲(chǔ)和傳送格式赵讯。但此格式不適合用來繪制線條、文字或圖標(biāo)耿眉,因?yàn)樗膲嚎s方式對這幾種圖片損壞嚴(yán)重边翼。PNGGIF文件更適合以上幾種圖片。不過GIF每像素只支持8bits色深鸣剪,不適合色彩豐富的照片组底,但PNG格式就能提供JPEG同等甚至更多的圖像細(xì)節(jié)。

JPEG(發(fā)音為/jay-peg/)是一種針對相片影像而廣泛使用的一種失真壓縮標(biāo)準(zhǔn)方法筐骇。使用這種壓縮的檔案格式一般也被稱為JPEG债鸡;雖然在所有平臺上.jpg是最普遍的,但是針對這種格式一般的擴(kuò)展名是.jpeg铛纬、.jfif厌均、.jpg、.JPG告唆、或是.JPE棺弊。

這個(gè)名稱代表JointPhotographicExpertsGroup(聯(lián)合圖像專家小組)。一個(gè)由獨(dú)立JPEG小組(IndependentJPEGGroup)所建立的額外標(biāo)準(zhǔn)擒悬,稱為JFIF(JPEGFileInterchangeFormat模她,JPEG檔案交換格式)詳細(xì)說明如何從一個(gè)JPEG串流,產(chǎn)出一個(gè)適合于電腦儲(chǔ)存和傳輸(像是在因特網(wǎng)上)的檔案懂牧。在普遍的用法侈净,當(dāng)有人稱呼一個(gè)"JPEG檔案",一般而言他是意指一個(gè)JFIF檔案,或有時(shí)候是一個(gè)ExifJPEG檔案畜侦。然而元扔,也有其他以JPEG為基礎(chǔ)的檔案格式,像是JNG夏伊。JPEG/JFIF是最普遍在萬維網(wǎng)(WorldWideWeb)上被用來儲(chǔ)存和傳輸照片的格式摇展。它并不適合于線條繪圖(drawing)和其他文字或圖示(iconic)的圖形,因?yàn)樗膲嚎s方法用在這些圖形的型態(tài)上溺忧,會(huì)得到不適當(dāng)?shù)?a target="_blank" rel="nofollow">結(jié)果(PNG和GIF格式通常是用來針對這種目的之圖形咏连;GIF每一像素只有8位元,并不很適合于用在彩色照片鲁森,PNG可以被用來無失真地儲(chǔ)存照片祟滴,但是檔案太大讓它不適合在網(wǎng)頁上放照片)。

在ISO公布的JPEG標(biāo)準(zhǔn)方案中歌溉,包含了兩種壓縮方式垄懂。一種是基于DCT變換的有損壓縮編碼方式,它包含了基本功能和擴(kuò)展系統(tǒng)兩部分:一種是基于空間DPCM(差分脈沖編碼調(diào)制痛垛,是預(yù)測編碼的一種)方法的無損壓縮編碼方式草慧。


特點(diǎn)

  • 優(yōu)點(diǎn):攝影作品或?qū)憣?shí)作品支持高級壓縮。

    • 利用可變的壓縮比可以控制文件大小匙头。
    • 支持交錯(cuò)(對于漸近式JPEG文件)漫谷。
    • 廣泛支持Internet標(biāo)準(zhǔn)。
  • 缺點(diǎn):有損耗壓縮會(huì)使原始圖片數(shù)據(jù)質(zhì)量下降蹂析。

    • 當(dāng)您編輯和重新保存JPEG文件時(shí)舔示,JPEG會(huì)混合原始圖片數(shù)據(jù)的質(zhì)量下降。這種下降是累積性的电抚。
    • JPEG不適用于所含顏色很少惕稻、具有大塊顏色相近的區(qū)域或亮度差異十分明顯的較簡單的圖片。

壓縮標(biāo)準(zhǔn)

1. 壓縮操作模式

基于DCT的連續(xù)模式(Sequential DCT-based mode of operation)

1) baseline sequential;
2) extended sequential, Huffman coding, 8-bit sample precision;
3) extended sequential, arithmetic coding, 8-bit sample precision;
4) extended sequential, Huffman coding, 12-bit sample precision;
5) extended sequential, arithmetic coding, 12-bit sample precision.

一次將圖像由左到右蝙叛、由上到下順序處理俺祠。

基于DCT的漸進(jìn)模式(Progressive DCT-based mode of operation)

1) spectral selection only, Huffman coding, 8-bit sample precision;
2) spectral selection only, arithmetic coding, 8-bit sample precision;
3) full progression, Huffman coding, 8-bit sample precision;
4) full progression, arithmetic coding, 8-bit sample precision;
5) spectral selection only, Huffman coding, 12-bit sample precision;
6) spectral selection only, arithmetic coding, 12-bit sample precision;
7) full progression, Huffman coding, 12-bit sample precision;
8) full progression, arithmetic coding, 12-bit sample precision.

當(dāng)圖像傳輸?shù)臅r(shí)間較長時(shí),可將圖像分?jǐn)?shù)次處理甥温,以從模糊到清晰的方式來傳送圖像(效果類似GIF在網(wǎng)絡(luò)上的傳輸)锻煌。

無失真模式(Lossless mode of operation)

1) lossless processes with Huffman coding;
2) lossless processes with arithmetic coding.

使用預(yù)測性編碼代替基于DCT的變換,而且在這個(gè)模式中沒有涉及量化姻蚓。

分級模式(Hierarchical mode of operation)

圖像以數(shù)種分辨率來壓縮,其目的是為了讓具有高分辨率的圖像也可以在較低分辨率的設(shè)備上顯示匣沼。

2. JPEG編解碼器

下圖為JPEG基本系統(tǒng)的編解碼器原理圖狰挡,輸入的彩色圖像為Y、U、V三個(gè)分量加叁,JPEG對它們分別進(jìn)行編碼倦沧。

3. 壓縮步驟

由于JPEG的有損壓縮方式(Lossy mode of operation)并不比其他的壓縮方法更優(yōu)秀,
因此我們著重來看它的有損壓縮中最常用的基線JPEG算法(baseline sequential)它匕。以一幅24位彩色圖像為例展融,JPEG的壓縮步驟分為:

顏色轉(zhuǎn)換

JPEG支持圖像采用任何一個(gè)色彩空間,支持1~4個(gè)顏色分量豫柬「嫦#灰度圖像顏色分量數(shù)為1。RGB烧给、YUV燕偶、YCbCr等擁有3種顏色分量。4種顏色分量的例子是青础嫡、洋紅指么、黃和黑(Cyan,Magenta榴鼎,Yellow伯诬,and Black,CMYK)巫财。為了減少色度通道包含的大量的冗余信息盗似,本例中采用YCbCr色彩空間。首先需要進(jìn)行從RGB到Y(jié)CbCr的色彩空間變換:

Y = 0.299000R + 0.587000G + 0.114000B
Cb = -0.168736R - 0.331264G + 0.500002B
Cr = 0.500000R - 0.418688G - 0.081312B

其中翁涤,Y表示亮度分量桥言,Cb和Cr表示藍(lán)紅色度分量。

DC電平偏移

最初葵礼,在圖像中的像素存儲(chǔ)在無符號的整數(shù)中号阿。對于數(shù)學(xué)計(jì)算,在圖像中任何變換或數(shù)學(xué)計(jì)算開始之前鸳粉,根本上是將這些采樣轉(zhuǎn)換成兩個(gè)補(bǔ)碼表示扔涧。DC電平偏移的目的是保證輸入圖像的采樣有近似地集中在零附近的動(dòng)態(tài)范圍。DC電平偏移執(zhí)行的圖像采樣只通過無符號數(shù)表示届谈。

方法:假設(shè)圖片分量的采樣精度為n枯夜,那么分量中的每個(gè)像素值應(yīng)減去2的(n-1)次冪。

對于圖像而言他的采樣由無符號的整數(shù)表示艰山,例如CT(X光斷層成像)圖像湖雹,動(dòng)態(tài)范圍已經(jīng)集中于零附近,所以不需要DC電平偏移曙搬。

子采樣

色彩空間轉(zhuǎn)換之后摔吏,圖像的大多數(shù)空間信息包含在亮度分量Y中鸽嫂。色度分量Cb和Cr包含大量冗余的顏色信息,所以我們運(yùn)用子采樣較少色度數(shù)據(jù)量以在丟失少量信息的情況下壓縮圖像征讲【菽常基線JPEG常用的子采樣格式為4:2:0,同時(shí)支持4:2:2和4:4:4顏色格式诗箍。

DCT變換

DCT(DiscreteCosineTransform)是將圖像信號在頻率域上進(jìn)行變換癣籽,分離出高頻和低頻信息的處理過程。然后再對圖像的高頻部分(即圖像細(xì)節(jié))進(jìn)行壓縮滤祖,以達(dá)到壓縮圖像數(shù)據(jù)的目的筷狼。首先將圖像劃分為多個(gè)8*8的矩陣。然后對每一個(gè)矩陣作DCT變換氨距。變換后得到一個(gè)頻率系數(shù)矩陣桑逝,其中的頻率系數(shù)都是浮點(diǎn)數(shù)。

量化

由于在后面編碼過程中使用的碼本都是整數(shù)俏让,因此需要對變換后的頻率系數(shù)進(jìn)行量化楞遏,將之轉(zhuǎn)換為整數(shù)。由于進(jìn)行數(shù)據(jù)量化后首昔,矩陣中的數(shù)據(jù)都是近似值寡喝,和原始圖像數(shù)據(jù)之間有了差異,這一差異是造成圖像壓縮后失真的主要原因勒奇。

在這一過程中预鬓,質(zhì)量因子的選取至為重要。值選得過大赊颠,可以大幅度提高壓縮比格二,但是圖像質(zhì)量就比較差;反之竣蹦,質(zhì)量因子越卸ゲ隆(最小為1),圖像重建質(zhì)量越好痘括,但是壓縮比越低长窄。對此,ISO已經(jīng)制定了一組供JPEG代碼實(shí)現(xiàn)者使用的標(biāo)準(zhǔn)量化值纲菌。

右圖的兩個(gè)量化表的設(shè)計(jì)是根據(jù)由Lohscheller做的心理視覺實(shí)驗(yàn)來確定二維基函數(shù)的可見閾值挠日。

這些表也不適用于各種各樣的圖像,但他們?yōu)榇蠖?位精度自然圖像進(jìn)行亮度和色度采樣提供了合理的翰舌、出色的結(jié)果嚣潜。

編碼

從前面過程我們可以看到,顏色轉(zhuǎn)換完成到編碼之前椅贱,圖像并沒有得到進(jìn)一步的壓縮郑原,DCT變換和量化可以說是為編碼階段做準(zhǔn)備唉韭。

編碼采用兩種機(jī)制:一是0值的行程長度編碼夜涕;二是熵編碼(EntropyCoding)犯犁。

  • 之字形排序(Zig-zag ordering)
    • 在JPEG中,采用曲徊序列女器,即以矩陣對角線的法線方向作“之”字排列矩陣中的元素酸役。這樣做的優(yōu)點(diǎn)是使得靠近矩陣左上角、值比較大的元素排列在行程的前面驾胆,而行程的后面所排列的矩陣元素基本上為0值涣澡。

具體示意圖如下所示:

  • 使用RLE對交流系數(shù)(AC)進(jìn)行編碼

    • 行程長度編碼是非常簡單和常用的編碼方式,在此不再贅述丧诺。
      需要注意的是入桂,AC系數(shù)的之字形序列編碼中有兩個(gè)特殊符號——(0,0)和(15驳阎,0)抗愁。第一個(gè)特殊符號指的是塊的結(jié)束(end-of-block,EOB)呵晚,用來表明在之字形塊中剩余的元素都是零蜘腌。另一個(gè)特殊符號是指零游程長度(zero-run-length,ZRL)饵隙,用來表明16個(gè)零游程撮珠。基線JPEG允許的零游程最大長度是16個(gè)金矛。如果這里的零超過16個(gè)芯急,那么這個(gè)游程分成幾個(gè)長度為16的零游程。
  • 使用DPCM對直流系數(shù)(DC)進(jìn)行編碼

    • DCT系數(shù)量化之后驶俊,通過差分編碼對量化后的DC系數(shù)編碼娶耍。當(dāng)前塊的DC系數(shù)減去前個(gè)塊的DC系數(shù),然后對其差值進(jìn)行編碼废睦,如右圖所示伺绽。這就利用了鄰接塊DC值之間的空間相關(guān)性。
  • 熵編碼:編碼實(shí)際上是一種基于統(tǒng)計(jì)特性的編碼方法嗜湃。在JPEG中允許采用HUFFMAN編碼或者算術(shù)編碼奈应。而基線JPEG算法(baseline sequential)采用的是前者。
    經(jīng)過RLE編碼的AC系數(shù)可以映射成兩個(gè)標(biāo)志(RUNLENGTH购披,CATEGORY)和(AMPLITUDE)杖挣,前者采用的是霍夫曼編碼,而后者采用的是VLI編碼刚陡。同理經(jīng)過DPCM編碼的DC系數(shù)同樣可以映射成兩個(gè)標(biāo)志(CATEGORY)(AMPLITUDE)惩妇,前者采用霍夫曼編碼株汉,后者采用VLI編碼。
    基線JPEG允許使用4個(gè)霍夫曼表歌殃,兩個(gè)用于AC系數(shù)編碼乔妈,兩個(gè)用于DC系數(shù)編碼。

總體上來說氓皱,如下圖所示路召。

還可以如下表示:

上面的逆過程就是解碼過程。

4. 數(shù)據(jù)壓縮格式

JPEG定義了三種壓縮數(shù)據(jù)格式

  • a) 交換格式 (interchange format)
  • b) 壓縮圖像數(shù)據(jù)的縮略格式(abbreviated format for compressed image data)
  • c) 規(guī)范表數(shù)據(jù)的縮略格式(abbreviated format for table-specification data)

壓縮數(shù)據(jù)規(guī)范的基本內(nèi)容(General aspects of the compressed data formatspecifications)

在結(jié)構(gòu)上波材,壓縮數(shù)據(jù)格式包含一個(gè)由參數(shù)股淡、標(biāo)志和熵編碼數(shù)據(jù)段組成的有序集合。參數(shù)和標(biāo)記往往又形成標(biāo)志段廷区。由于所有這些組成部分是由字節(jié)對齊的代碼表示的唯灵,因此每一個(gè)壓縮數(shù)據(jù)格式由一個(gè)8-bits字節(jié)的有序序列組成。對于每一個(gè)字節(jié)隙轻,都定義了一個(gè)最高有效位(MSB)和一個(gè)最低有效位(LSB)埠帕。

插圖的語法規(guī)定 (Conventions for syntax figures)

為了便于了解JPEG壓縮數(shù)據(jù)流中每一個(gè)framescan的內(nèi)容,必須掌握以下語法

  • 參數(shù)/標(biāo)記指示符:一個(gè)細(xì)線框包含一個(gè)標(biāo)志或一個(gè)單獨(dú)的參數(shù)大脉;
  • 段指示符:一個(gè)粗線框包含一個(gè)標(biāo)志段搞监、一個(gè)熵編碼段或他們的結(jié)合;
  • 參數(shù)長度指示符:細(xì)線框的寬度與其包含的參數(shù)或標(biāo)志的位長成正比镰矿。相反琐驴,粗線框的寬度是無意義的;
  • 可選的/有條件的指示符:方括號標(biāo)明秤标,在壓縮數(shù)據(jù)中绝淡,當(dāng)前標(biāo)志段或標(biāo)記只是可選的或有條件的。
  • 次序:交換格式中苍姜,圖中所示的參數(shù)或標(biāo)志都先于其右邊所示的參數(shù)或標(biāo)志牢酵,并跟在它左邊的參數(shù)后面。
  • 熵編碼數(shù)據(jù)指示符:尖括號標(biāo)明衙猪,其包圍的內(nèi)容是已經(jīng)經(jīng)過了熵編碼的馍乙。

參考文章

1. JPEG原理詳細(xì)
2. 百度百科
3. JPEG編碼原理

后記

未完,待續(xù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垫释,一起剝皮案震驚了整個(gè)濱河市丝格,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棵譬,老刑警劉巖显蝌,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異订咸,居然都是意外死亡曼尊,警方通過查閱死者的電腦和手機(jī)酬诀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骆撇,“玉大人瞒御,你說我怎么就攤上這事“” “怎么了葵腹?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屿岂。 經(jīng)常有香客問我,道長鲸匿,這世上最難降的妖魔是什么爷怀? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮带欢,結(jié)果婚禮上运授,老公的妹妹穿的比我還像新娘。我一直安慰自己乔煞,他們只是感情好吁朦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渡贾,像睡著了一般逗宜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上空骚,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天纺讲,我揣著相機(jī)與錄音,去河邊找鬼囤屹。 笑死熬甚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肋坚。 我是一名探鬼主播乡括,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼智厌!你這毒婦竟也來了诲泌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤峦剔,失蹤者是張志新(化名)和其女友劉穎档礁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吝沫,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呻澜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年递礼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羹幸。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脊髓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栅受,到底是詐尸還是另有隱情将硝,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布屏镊,位于F島的核電站依疼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏而芥。R本人自食惡果不足惜律罢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棍丐。 院中可真熱鬧误辑,春花似錦、人聲如沸歌逢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秘案。三九已至砰苍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踏烙,已是汗流浹背师骗。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讨惩,地道東北人辟癌。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像荐捻,于是被迫代替她去往敵國和親黍少。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容