JPEG文件格式简单分析._第1页
JPEG文件格式简单分析._第2页
JPEG文件格式简单分析._第3页
JPEG文件格式简单分析._第4页
JPEG文件格式简单分析._第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要:这篇文章大体上介绍了 JPEG文件的结构信息以及它的压缩算法和编码方式。使读者能够对JPEG文件格式有大体上的了解。为读者进一步进行学习JPEG文件压缩做好准备关键字:十六进制,段格式,编码JPEG文件格式概述:图像和动画的存储方式是一个很重要的问题。幸好我们有了数据压缩,有了 JPEG等多种压缩存储图像的文件格式,我们今天才能够拿着小小的一个存储器,却存上许多张色彩鲜艳的图片。如果没有图像压缩算法,也许我 们的多媒体时代就会晚到来许多年。JPEG图像存储格式一个比较成熟的图像有损压缩格式,虽然一个图片经过转化为JPEG图像后,一些数据会丢失,但是,人眼是很不容易分辨出来 这种差别的。也

2、就是说,JPEG图像存储格式既满足了人眼对色彩和分辨率的要求,又适当的去除了图像中很难被人眼所分辨出的色彩,在图像的清晰与大小中JPEG找到了一个很好的平衡点。虽然图像转化为JPEG格式会减小很多,但是并不是文件就变得简单了, 相反,JPEG文件的格式是比较复杂的。不经过认真地分析,是不容易弄懂它的。JPEG文件的存储方式:JPEG文件的格式是分为一个一个的段来存储的(但并不是全部都是段), 段的多少和长度并不是一定的。只要包含了足够的信息,该JPEG文件就能够被打开,呈现给人们。JPEG文件的每个段都一定包含两部分一个是段的 标识,它由两个字节构成:第一个字节是十六进制OxFF,第二个字节对

3、于不 同的段,这个值是不同的。紧接着的两个字节存放的是这个段的长度(除了 前面的两个字节0xFF和0xXX,X表示不确定。他们是不算到段的长度中的)。注意:这个长度的表示方法是按照高位在前,低位在后的,与In tel的表示方法不同。比方说一个段的长度是 0X12AB,那么它会按照0x12,0xAB的顺序存储。但是如果按照In tel的方式:高位在后,低位在前的方式会存储 成0xAB,0x12,而这样的存储方法对于JPEG是不对的。这样的话如果一个 程序不认识JPEG文件某个段,它就可以读取后两个字节,得到这个段的长 度,并跳过忽略它。JPEG图片的信息片断:本人曾经编写过一个读取JP EG文件

4、信息的程序,该程序能够读取 JPEG 文件中包含的段的信息并显示出来。下面是一个2860SOIAPP0Len gth: 0x1031DQTDQT 0:10121213202029292630353146505050505079111526445091119283456521218283261520253239575206036463949253500Len gth: 0x43DQTDQT 1:991224505050911133350505012132850505050243350505050505050505050505050505050505005050505050050500505050

5、505025350Len gth: 0x43SOFOImage Height: 173Image Width: 401Number of Frame(s): 3*Con te nt ID: 1H Factor: 2V Factor: 2QT ID: 0*Content ID: 2H Factor: 1V Factor: 1QT ID: 1*Content ID: 3H Factor: 1V Factor: 1QT ID: 1Len gth: 0x11DHTTyp e: DC TABLEID: 0Len gth: 0x1fDHTType: AC TABLEID: 0Len gth: 0xb5DH

6、TType: DC TABLEID: 1Len gth: 0x1fDHTType: AC TABLEID: 1Len gth: 0xb5SOSLen gth: 0xcv-Will Not P rocess This Seg.FATAL ERROR: File Structure Does NOT Support.你首先会想到为什么最后会出现一个错误的信息呢?这是因为,在SOS(Start Of Scan )段的后面,就是编码后的一行一行的图像信息。不再是段 的结构了。在开始的SOI (Start Of Image )不是一个段,它是文件的开始, 它的值也是类似于0xFF,0xXX的结构(SOI

7、的具体数值清自己察看相关书 籍,本文章中将不作重点介绍),但是后面没有段的长度。在文件的最后, 有一个EOI (End Of Image )的标识,它的结构和SOI是类似的。它标志着 文件的结束。在这中间,包含了 APP0段,DQT段,SOF0段,DHT段,SOS段。有的段的个数是不唯一的,比方说 DQT段。我们现在重点地介绍各个段的作用。JPEG文件中段的介绍:APP0段中主要存储的是图片的识别信息(字符串” JFIF)”)、一些分辨率的信息以及缩略图的信息。在我的实际测试中,发现并不是所有的JPEG文件都有APP0段的,有的仅是有APP2之类的其他段,但是每个文件中肯定是包含APPX的段(

8、X可以取得的值可以查阅相关文档)。我个人估计, 这些APPX的段的信息应该是大同小异。这个的验证还有待本人进一步的学 习,目前只能说到这里。DQT段的内容是量化表的信息。众所周知,一个颜色可以分为RGB(红、绿、兰)三个分量,这三色光组成了我们可以见到的所有色彩。 但是,在JPEG 文件中,RGB色彩格式需要先转化为YUV的格式。丫分量代表了亮度信息,UV分量代表了色差信息。相比之下,人眼对于 丫分量更为敏感。量化表的 作用就是对于一些不需要的量进行去除,这也是 JPEG有损压缩损失数据的关键。上面的输出可以看到两个量化表, 其实,他们也可以共用一个量化表。一个给丫分量,另一个给UV分量。一个

9、量化的结果如下所示(摘自 JPEG压缩编码标准15-1-2-1-1-1我们可以看到, 的数据压缩的。量化后出现了大量的这种结果很有利于我们进行下一步0,至于为什么是8x8的大小,待会你就知道了。SOF0段的内容是图像的大小信息,每个像素的位数信息,以及YUV每个分量分别得的采样信息(这部分如果读者想要进一步学习,请参考相应书 籍和文档)。JPEG文件图像的编码是一个方块一个方块进行的,每块的大 小为8x8大小(如果图像不是整数个方块的大小那么就对图像补齐为整数个 大小)。简略地说采样信息,就是如何按组记录 YUV的信息,即若干个丫方块,若干个U方块,若干个V方块经过量化的数据再次经过编码后组成

10、一 组记录,保存在SOS段结束后。DHT段的内容是一个重头戏,如果没有它,JPEG压缩效率就不会那么 高了。它内部定义的是一个Huffman表,不同的DHT段定义不同的Huffman 表,有的是直流量的表,有的是交流量的表。什么是直流量,什么是交流量 呢?待会我再作介绍。最多的 Huffman表示几个呢? YUV各一个,直流交 流各一个,因为YUV每个分量都有直流和交流,所以最多时, Huffman表 有3x2个,也就是可以有6个DHT段。该文件中有4个DHT表,您可以大 概猜出来是哪几个表么? 丫的直流和交流各一个Huffman表,UV和起来直流和交流各一个Huffman表。这样说应该比较合

11、理吧。好了,现在我们应该弄明白什么是交流量,什么是直流量了。还举上面 那个有许多个0的8x8的表的例子说,所谓交流量,是经过量化后的块内部 除了左上角15那个值的其余值。实际上,块与块之间左上角那个值是用直 流Huffman表来单独编码的。不与块内部一同编码。虽然不同的编码,但是 要注意的事,不同的编码方式并不意味着它们是不在一起的,具体的存储编 码后的数据的时候,还是按照若干个丫方块,若干个U方块,若干个V方块 经过量化的数据再次经过编码后组成一组记录来存储的。SOS段的内容是关于YUV每个分量的直流和交流各使用那个 Huffman表来编码的。四、JPEG文件十六进制代码解析我觉得,如果想要

12、的了解JPEG,对十六进制代码的观察是必不可少的。不要认为这样有多难,我会让你知道这是很简单的。目前我们只需要了解我们能够了解的东西就可以了。要记住,每个段的开始是0xFF, 0xXX,紧接着两个字节是长度信息。:*25Lb5s:-»料:*«sflq®.a"4匕5- q: ud虚(長d(K I: f :w£生”虫鱼Ti*mz :气 : ' _p匚匚tfn fc is:-OS -o Bss?盅二hi4«X*H«B0HdAhA«OEB*«Haa4LtjL亠Br4frAa 啊* 点"e*VH&

13、#171;u9Us5H & 労他 kR 豆®® G 屮 Ha5iiACEL®AtiJ 亍寸冇 oo* 扌 0 V o 9 « «H3 bqhs 口尽 nr*纽才 9ndinwhr4tLU:; :| 一 0D- -2 gL wl. - n:兽4: A" a: LL LL « s ¥s皆3fi£3S3aooaW【能弋£ZL UH E 3 an s E口 L -# 亠L QL h啊aL nn需SS!?i 摆4f4L.liLA6A.*a 事艮 S 匸 &CQ|AkS&9kb%as

14、aun6us 寸 Mrh*»u»u«d hazneusAah-uu 出 仕 oW4*sqgB 工EKALk 亠 4Maa 工 #EU=祝OUA* «aujea>«B*0085、3*0W4A*I 小n 上 LI '9 4 9 Si A 9 St n S畫SSS£當鬻 ;S5Sd£S5才 ZU® 士 JTKhg ft 孚 OAS 才ggclshcUSSCdZUB二SSS尸4=SbSngpQB auBT*-kM*99尸E n0 z z0*0SMS:芒aSg *rCM04#CS A s E 占 4 Ud bL

15、屮E E>E * «A 4 A 7 2A E 4 a 4« & 屮h, 5 礼寸g电a Ld9岳S4a强o#s*aq屮4村2EatHswgu才右£ a nh n « 1 44 A B 占M Bl M A 丄召dA U B斗Awj uuu noSMsaavasBaaBi画邑 39.存厂 sssBaeaasccccosssssob 9 3 i-B B a - B a BiiBa-o*9sa-Ba b b a4 4 a g*昌Eo£££co£»君直碧e密直tB 9 a BQSS999 9i=Ba&

16、#171;t上图被选定的段是APPO段。BUDIIIBneDBiB flaODhllODUI MOD? I oonmi tani»i Bana.ii ndAA 辆陌; meo咖 nUHDPB «aeoF« BMblBR saumflBDISICBDIrl CQinAI 4BniF< ttitnai eini4i «on>M> vanihB iseua «oeiii> euoie*«dlC>U'ReitEZB flait23i(M詁 OH «14 1R31 2*趴 DC1522K1111

17、nr>ot1174ILDttK1?ISICflU«ea/tl(jy.爲«cDttle# 11z»iiU40/11Cee seUJ»Hi171UJFlfJHa? IE II IF 11 FFir1F«DQ ei *e *D UttUD a (K n 94 H5 RD KIFK IE IE 1E 1E IF IE »1C » «Q i» «e »«IEIf31 22 Ml 1期 Z 2 妞2 (t3 U CJI »B fltt VI OD tl 01 nuttUn

18、a3Vi 棘 ue “ T9AA«91«yISBh91MI11慨75R 歸 7 Bl IB*rr AC FB 61 7A Hn AS 29 * AS ?9 "5 ?9 40 A耳* 20 4B 龄 “ hit ns 4 0 9C«P QI Kt FF «3 17 A9 LI iU7 7Zn3 9t SD <2 ”«2 CD 冷 ce 2D flfil in7 Utt *5ee fB AE 31 Ltl(L« W tft c/2UAB51ttt VC Ibl fI LB bP 9E S5 PFfa 3CiEIEi11tI

19、tILItIE1(IE1E1(1IE1EIEIf1EIfir1EifuIf,IEIFIE11irIf1F1FirIF1tIFFFCB+-+*7CnBl?啊?111«1ir)11.IIAlat朋AlPIOillAlanftl99IsWTfv*13Wail9?FF* -h -h i Ffaa 1«37Ml02u>M.思帕111?2107H! *32511巧91233冒h25261.MBRaq333S37«2Z/«7711站 rGtituw.eiBttatBUUib<BUBI ««uFFC4*1011nDO»flflB

20、«ftUB4iD>Dir tFcnD(f311ftU3F00F BcqPbR59JvnAF/?t1CD6733125£时*'W k皿广-AD9«347U7993>1D7DF+i.iH+iruii 一 Mtn 一 I7?CC133CWF砖C即K7inDFIf耕lb?Aft IF ( fl5iMi il 1 U.A7 Bi iBi _ Bi-3:】ans7fltns7»ftS?9 p,)0.)A.yEi)B )»R弓29辆AS?¥ut29*nrts?*ApR7Rft?CFF眄F?««JFZ«

21、;»«CFCBM. iNEsa*11w*pn.D6lESEfiSFFEDA4CFFoe62小6eF55D空5呻Ehl lOb35veH n.C lkh i-S 4VI21C/90FZ&/2«站FEttX.U(A9S3aACMtIDlCA ILAlyiAA 1 5 f Lf21fZ4*WU4ItCa/5CA.r k<c.rd'l出 « k f * 029flFBC.bv貼FFtl,nc90FFDO3r2WFt5'DicnClnive3211lAI£9HB.t.l.CIfl1A1DIDtrIfIP13Itzi4*eeo

22、MseflUbItIBOeDBil BDOIMI Mtfdst SiDKI BDD7I ovnEit* tanovi Bona.ii nunsbt veeoii <ieo»ije euHn>a «ae9Ft BliblBR saum «Btm flBDISIIBDIrl flODI& «ani7« Htnsi eini4i «eni4« eanihB eeeua toeiiio euoip*«卵诡i lenczB flaR23ffin F 0 抽 (u 16 If1"=lLI!.gJ-

23、 J-LBJ 电rIt1CIt>1ILIE irIF01U3 軒 1/130IE If 1FFF 卫sb 1 s- _B F* 95 3 B卜s 9 R 1 気 fl 5 ? i u M _s a ? t A F?斗国百DU£LC2A£ s9BctF7l-zbDA 卜 1 圧二Fla?IzudAnfEQCHLnsa7?4-a4vla4-cfl 1K7n7 7-r<E匚hJM1*L0bp39*AS*LS?V2k6E-F23/'2jrbfkfmuhARESDVA4VhA«E-$c24AF67777u-?iD95ulB ft D u 弓丁o吧7 血w

24、 (Mti 1? 昭/« u«niD'D Cihi3393Ct,AltQI0?215277> r?UiAlaiUPIcnrr9CEhl241CAFF2F2119h1;DIBF IF ft?2975IFF lOb 站 tnB/ Ft iftiDT7iB'?9*nn*11JFlfMFF MAK « » tD »? SA DF 齐Gtatvw.*iW62veAAcncnH'B紧接着的段是DQT段,这个JPEG文件有两个乍 . =. If =亠+LM+Vuati +* .b”Ai i,.H.ms.,pn. .tjr * .

25、c .rdl八-“ iW八* * + * 才抽,丄i-i/DQT段。这里需要强调一点的是,包括量化表在内8x8的块的值是按照Z形来保存量化表8x8的数据的。而不是按照一行一行的保存的。这样做的好处是,能够让实际上相邻的像素点保存后也排列得比较近,便于压缩和编码。如下图所示:/ZZZ/ Z/ ZZZ/Z/ ZZZ*/(摘自JPEG压缩编码标准):eosoi oaoaa OKI BtOM,Mo(r> 0M:0aofl7 aBM MOW O«Alk* fiflOOb eeodc6M 002M0»M»1« 011ei2 iioi3'Mn、Baei6

26、B«017 flOIS i UBIQ eaeu !eaeibM<Mc eaoid eooipM«ir C29(C1I MV22023;sag*FFoaFFEMItMFfOB00*9MMMKKKM>ZW99K11W1212111A1511111821IB2222It2llICItIFOfl11M17C3ftl f卜00u:n11 Toa00ae00010KCJ|80uo1 A00IMM«eeeStei?03詁133122ib111115325117247SB2B3BH33asfli 1ffc如(01SBiteo81«FF«OBeoi0

27、000OBBBQC03BlBln11B1194 12VV*Rb29MFBC48EM59756D90S4IE祚71S77GCFF6CFB61”OFIEHfl 129AS29ASAS?»40AS79HfAS2»29AS29初ftS?941«9C62CD2«2*696fl8091DS3D9Aft?06ESkt 1FFBOas11566“6317BeF5AC31912EA3 !ES19E9WEBFA35az72C7Be9C632EZ2fl3152BFaCB60*0299EBD689CasBFAC9D12S1 933CCl fl£7AIE IE IE i

28、r 01fl?99 16 3?9713 5F29AOAB8CES55C728 gA7879EMKn1 M azIC If iiM M 3 K » W17 1313 17 nJflF C.1* 11IE IE IEIE1EIEIEIEIEIEIEIEIEIEIEIEIEIEIEIFFF?eaB711ain01ni7BnRwa»1oafl?(Pl(12uS061112210?91233BIi25241M362八76Z781BB1*1191BBai00Ii00FFDA3F00ftCA9*5CB6233123747193DI073C聒7CC4or7BIB077ftAflF>站

29、AS29naAS29AS?94iAS29*<97887C7F75F2ECAE*9S«IdBFFEDA9CFFflD2FDME«0635K>F75Z28MFC6CBlBEC6“19WB6ECas87KB8B5FFi*E1FF002F2rFESOC8A*21Al69« 1C 1E1ECi11M M 71 8£.81"A$u.2Q35ZMBRdq btvw.HR or w29MtAS66«06298 帖66 CAM CA BBVURI. .03Mtx,<E|-.1.47.)9)» e.>a.)e.bUj.N

30、.A.f .U-)e)». )» )» u.f -IPA- .b -5 c.rdl/d_0001 002 003 aoM 005 0B6>007 eem 099 Aik* flOOb eoac SOM so鞅 0» 0»1« oil 0tf12 iO13 <n 015 aei6 «017 APIS ei9 aeu aeib »1c Old OOlp «ir «29 021 022 023 02*FF 0 FF 6MK1522B6IEIE 、EMIEIEIEOflM991Ai7IEIE

31、 IE11tb1111u71E IEMFfKW11acM MOB K 12 18 ic 08 IE ItIF 1M1221 ItIE IE IE 7C22ZSFF G«60 tC 06 iee ei 1仏2 B3 IK « BOnlSaoK1 M az icIf11a M 3 K » W17 13 13 17nJFIF C.«30319215B* 33 3S32 5101 n BOOB OS FFK03eiiK1183119ASc9*ASB294flFFBC48EM59756D91S*IE祚71S77GCFF6CFB61”OFIEHflA529AS29A

32、SAS?40AS79HfAS2»29AS29初ftS?941«9C62CD2«2*696fl80 kt63A3azfl39C1291FF17et7215BD7Aft9EnoMMft cIE1*11IEIEIEIEIE1EIEIEIEIEIEIEIEIEIEIEIEirIEIEIEIEIFrr01?ea711ainBlQI 11QI06M17(Ml3W192921«3292M99SM1112219716942331h2526137627h7677«1eoSt«e>0008CH1*11169eo00IBi4FFBABO3r«

33、;aFBCA9*577E,CB623312SC973747193DI07133C聒7CC4or7B5FIB077ftAflF>站29AS29naAS29AOAS?94iAS29*<AB97887C7F75F28CECAE*9S«IdESFFEDA9CFFfl55D2FD8AE«0635C7K>F75Z28MFC286CBlBEC6“19gWB6EC1%87A7KB805FFi*E1 7FF002F2rFESO9E3爲C821Al691C 1E 1ECi1192M or w29MtAS66«06298 9k66CAMCA BB1"A$叭2

34、Q35ZMM别 btvw. IvZ*«y 0)© )0. )(9 )Q0JP)0)仏 e.>a.)e.|.u.fN.A.f.u. CaaAala* 5(1 c.rdi -5 V( F T b3/ d_上图标记的段是DHT段,一共有4个DHT段。ceoMS BUDinBflDBl flaoiMlODU aoD? «0nm tanuv eana.i ndA斷 辆B鬲; 柚0射 OUHM ««eoF B'MblB «auiiABDISCBDIr flaiMA MOIF ttitns eini4 «Qn>M va

35、pih eeeu Aoeid euoie tfUOlifBitEZ flait23Ff 08 UD JhHIM) <*Ml n14 in 22 2* 22BTIEIIIF11IKICFF Et ea uoI ff0511ir1FPA 01 FF noDQC*OH131?AlliWC405 A1124KIE1EIE » «“ A 1C »« «Q II «e 911LIE1Eei *e*D Utt31 22 Ml 1期Z 2 412 朋 卄 CJI »B 14UO eu VI euia o» «s1?

36、IS ic wIE If«<91ISB輛91MflU1?It oe It If4&4ilU?11IB1IK iE tt4f*10 «(> «C011A1tIE1EASW1« 3? ev c(t(K01CJW111194VIAtFDCueE*75fiC91甜1Fu朋释Bt7?ccvr IACFn617ftDFIfnnAS?941AS?9*ans眄?9wnA耳29204Bns?*»409C«2CD曲£96 ft«pQ1ce2Dflfiltt7D6ESKtFFUtt*5作6eF<«31

37、7eefSAE31fli21A9£LtlWtftiA3SiU77Zc/tttVCibl214阳2Dt ILHbD«e9ESDAB9CPFnc9D51fa3CClni/?13斗F7fl 艸«C E«95C/2总«76e# 11»ii«1ee se#3nMlitf辭w«/9Tu/or«-W11111316icIf1310WIfirIF131/IFDtt»i05聲1411ItILIEIFItItnItIEIFIE1f11IF1CIF1Eir1FirIF1tIFFFCB7?oa7111«1ir)11t1AlPIOilaianftlTfVt13wQIff?FF»1«3I?(Mil0?uM筒111?07n91233K*25261.«2“/«7711AKBtBUB«U«>UDI «DDthDOifHI BC4Whfl5«?MCD673312StSA3*7U7993DIDTDF3CW朋C即W7iB'齐lb?rnAft IF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论