JPEG文件格式简单分析.docx

上传人:b****0 文档编号:17128646 上传时间:2023-07-22 格式:DOCX 页数:31 大小:641.52KB
下载 相关 举报
JPEG文件格式简单分析.docx_第1页
第1页 / 共31页
JPEG文件格式简单分析.docx_第2页
第2页 / 共31页
JPEG文件格式简单分析.docx_第3页
第3页 / 共31页
JPEG文件格式简单分析.docx_第4页
第4页 / 共31页
JPEG文件格式简单分析.docx_第5页
第5页 / 共31页
JPEG文件格式简单分析.docx_第6页
第6页 / 共31页
JPEG文件格式简单分析.docx_第7页
第7页 / 共31页
JPEG文件格式简单分析.docx_第8页
第8页 / 共31页
JPEG文件格式简单分析.docx_第9页
第9页 / 共31页
JPEG文件格式简单分析.docx_第10页
第10页 / 共31页
JPEG文件格式简单分析.docx_第11页
第11页 / 共31页
JPEG文件格式简单分析.docx_第12页
第12页 / 共31页
JPEG文件格式简单分析.docx_第13页
第13页 / 共31页
JPEG文件格式简单分析.docx_第14页
第14页 / 共31页
JPEG文件格式简单分析.docx_第15页
第15页 / 共31页
JPEG文件格式简单分析.docx_第16页
第16页 / 共31页
JPEG文件格式简单分析.docx_第17页
第17页 / 共31页
JPEG文件格式简单分析.docx_第18页
第18页 / 共31页
JPEG文件格式简单分析.docx_第19页
第19页 / 共31页
JPEG文件格式简单分析.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JPEG文件格式简单分析.docx

《JPEG文件格式简单分析.docx》由会员分享,可在线阅读,更多相关《JPEG文件格式简单分析.docx(31页珍藏版)》请在冰点文库上搜索。

JPEG文件格式简单分析.docx

JPEG文件格式简单分析

摘要:

这篇文章大体上介绍了JPEG文件的结构信息以及它的压缩算法和编码方式。

使读者能够对JPEG文件格式有大体上的了解。

为读者进一步进行学习JPEG文件压缩做好准备

关键字:

十六进制,段格式,编码

JPEG文件格式概述:

图像和动画的存储方式是一个很重要的问题。

幸好我们有了数据压缩,有了JPEG等多种压缩存储图像的文件格式,我们今天才能够拿着小小的一个存储器,却存上许多张色彩鲜艳的图片。

如果没有图像压缩算法,也许我们的多媒体时代就会晚到来许多年。

JPEG图像存储格式一个比较成熟的图像有损压缩格式,虽然一个图片经过转化为JPEG图像后,一些数据会丢失,但是,人眼是很不容易分辨出来这种差别的。

也就是说,JPEG图像存储格式既满足了人眼对色彩和分辨率的要求,又适当的去除了图像中很难被人眼所分辨出的色彩,在图像的清晰与大小中JPEG找到了一个很好的平衡点。

虽然图像转化为JPEG格式会减小很多,但是并不是文件就变得简单了,相反,JPEG文件的格式是比较复杂的。

不经过认真地分析,是不容易弄懂它的。

JPEG文件的存储方式:

JPEG文件的格式是分为一个一个的段来存储的(但并不是全部都是段),段的多少和长度并不是一定的。

只要包含了足够的信息,该JPEG文件就能

够被打开,呈现给人们。

JPEG文件的每个段都一定包含两部分一个是段的标识,它由两个字节构成:

第一个字节是十六进制OxFF,第二个字节对于不同的段,这个值是不同的。

紧接着的两个字节存放的是这个段的长度(除了前面的两个字节OxFF和0xXX,X表示不确定。

他们是不算到段的长度中的)。

注意:

这个长度的表示方法是按照高位在前,低位在后的,与Intel的表示

方法不同。

比方说一个段的长度是0x12AB,那么它会按照0x12,OxAB的顺序存储。

但是如果按照Intel的方式:

高位在后,低位在前的方式会存储成OxAB,0x12,而这样的存储方法对于JPEG是不对的。

这样的话如果一个程序不认识JPEG文件某个段,它就可以读取后两个字节,得到这个段的长度,并跳过忽略它。

本人曾经编写过一个读取JPEG文件信息的程序,该程序能够读取JPEG文件中包含的段的信息并显示出来。

下面是一个JPEG图片的信息片断:

SOI

APP0Length:

0x10

DQT

DQT[0]:

8

6

5

8

12

20

26

31

6

6

7

10

13

29

30

28

7

7

8

12

20

29

35

7

9

11

15

26

44

50

31

9

11

19

28

34

56

52

0

12

18

28

32

61

52

0

46

25

32

39

57

52

0

60

0

36

46

39

49

253

50

0

50

Length:

0x43

DQT

DQT[1]:

50

9

9

12

24

50

50

50

50

9

11

13

33

50

50

50

50

12

13

28

50

50

50

50

50

24

33

50

50

50

50

50

50

50

50

50

50

50

50

0

50

50

50

50

50

50

50

0

50

50

50

50

50

0

50

0

500

50505050253

50

Length:

0x43

SOFO

ImageHeight:

173

ImageWidth:

401

NumberofFrame(s):

3

****************

ContentID:

1

HFactor:

2

VFactor:

2

QTID:

0

****************

ContentID:

2

HFactor:

1

VFactor:

1

QTID:

1

****************

ContentID:

3

HFactor:

1

VFactor:

1

QTID:

1

Length:

0x11

DHT

Type:

DCTABLE

ID:

0

Length:

0x1f

DHT

Type:

ACTABLE

ID:

0

Length:

0xb5

DHT

Type:

DCTABLE

ID:

1

Length:

0x1f

DHT

Type:

ACTABLE

ID:

1

Length:

0xb5

SOS

Length:

0xc

v-WillNotProcessThisSeg.

FATALERROR:

FileStructureDoesNOTSupport.

你首先会想到为什么最后会出现一个错误的信息呢?

这是因为,在SOS

(StartOfSean)段的后面,就是编码后的一行一行的图像信息。

不再是段的结构了。

在开始的SOI(StartOfImage)不是一个段,它是文件的开始,它的值也是类似于OxFF,0xXX的结构(SOI的具体数值清自己察看相关书籍,本文章中将不作重点介绍),但是后面没有段的长度。

在文件的最后,有一个EOI(EndOfImage)的标识,它的结构和SOI是类似的。

它标志着文件的结束。

在这中间,包含了APP0段,DQT段,SOFO段,DHT段,SOS段。

有的段的个数是不唯一的,比方说DQT段。

我们现在重点地介绍各个段的作用。

三、JPEG文件中段的介绍:

APP0段中主要存储的是图片的识别信息(字符串”JFIIO”)、一些分辨率的信息以及缩略图的信息。

在我的实际测试中,发现并不是所有的JPEG

文件都有APP0段的,有的仅是有APP2之类的其他段,但是每个文件中肯定是包含APPX的段(X可以取得的值可以查阅相关文档)。

我个人估计,这些APPX的段的信息应该是大同小异。

这个的验证还有待本人进一步的学习,目前只能说到这里。

DQT段的内容是量化表的信息。

众所周知,一个颜色可以分为RGB(红、绿、兰)三个分量,这三色光组成了我们可以见到的所有色彩。

但是,在JPEG文件中,RGB色彩格式需要先转化为YUV的格式。

丫分量代表了亮度信息,UV分量代表了色差信息。

相比之下,人眼对于丫分量更为敏感。

量化表的作用就是对于一些不需要的量进行去除,这也是JPEG有损压缩损失数据的

关键。

上面的输出可以看到两个量化表,一个给丫分量,另一个给UV分量

其实,他们也可以共用一个量化表。

一个量化的结果如下所示(摘自《JPEG

压缩编码标准》

):

15

0

-1

0

00

0

0

-2

-1

0

0

00

0

0

-1

-1

0

0

00

0

0

0

0

0

0

00

0

0

0

0

0

0

00

0

0

0

0

0

0

00

0

0

0

0

0

0

00

0

0

0

0

0

0

00

0

0

我们可以看到,

量化后出现了大量的

0,

这种结果很有利于我们进行下一步

的数据压缩的。

至于为什么是

8x8的大小,待会你就知道了。

SOFO段的内容是图像的大小信息,每个像素的位数信息,以及YUV每

个分量分别得的采样信息(这部分如果读者想要进一步学习,请参考相应书籍和文档)。

JPEG文件图像的编码是一个方块一个方块进行的,每块的大小为8x8大小(如果图像不是整数个方块的大小那么就对图像补齐为整数个大小)。

简略地说采样信息,就是如何按组记录YUV的信息,即若干个丫

方块,若干个U方块,若干个V方块经过量化的数据再次经过编码后组成一组记录,保存在SOS段结束后。

DHT段的内容是一个重头戏,如果没有它,JPEG压缩效率就不会那么高了。

它内部定义的是一个Huffman表,不同的DHT段定义不同的Huffman表,有的是直流量的表,有的是交流量的表。

什么是直流量,什么是交流量呢?

待会我再作介绍。

最多的Huffman表示几个呢?

YUV各一个,直流交流各一个,因为YUV每个分量都有直流和交流,所以最多时,Huffman表有3x2个,也就是可以有6个DHT段。

该文件中有4个DHT表,您可以大概猜出来是哪几个表么?

丫的直流和交流各一个Huffman表,UV和起来直流和交流各一个Huffman表。

这样说应该比较合理吧。

好了,现在我们应该弄明白什么是交流量,什么是直流量了。

还举上面那个有许多个0的8x8的表的例子说,所谓交流量,是经过量化后的块内部除了左上角15那个值的其余值。

实际上,块与块之间左上角那个值是用直流Huffman表来单独编码的。

不与块内部一同编码。

虽然不同的编码,但是要注意的事,不同的编码方式并不意味着它们是不在一起的,具体的存储编码后的数据的时候,还是按照若干个丫方块,若干个U方块,若干个V方块经过量化的数据再次经过编码后组成一组记录来存储的。

SOS段的内容是关于YUV每个分量的直流和交流各使用那个Huffman表来编码的。

四、JPEG文件十六进制代码解析

我觉得,如果想要的了解JPEG,对十六进制代码的观察是必不可少的。

不要认为这样有多难,我会让你知道这是很简单的。

目前我们只需要了解我们能够了解的东西就可以了。

要记住,每个段的开始是0xFF,0xXX,紧接

着两个字节是长度信息。

可以看到,上图被选定的标记是SOI标记

9tem

11

J16

00

91

01

•1

■Iilfi

」・」F1F■…■■用

SUUIITU

ff

UU

flft

IS

«a

曲1

口*

U3K

[.H.,|.,.C,,„T»・*

tseora

IM3断齢

IK

u?

VC

BW

fl/

a/

0/

nr

贤w

eeuv^i

UU09W11

at

1?

12

11

of

11

11

13

16

ic

1/13

MOMB

Uh1A1b11

n

Itt

1H

1A

1i>

w

If

tF

1317

t

1旦

tilingg

2222U

24

1C

n

TF

1E

If

Dtt

43

01

KK

jid,3(:

■DOMI

DPS07U6*7

OE

QB

M

PH

IE

i-t

11

t・

1C

IL

ICIE

fl4911137a

1CIEIEIE

1E

IE

IF

ir

1[

it

ir

ir

IE

IE

IEIE

SBnama

1ETE1E1E

IE

IE

If

HE

1E

IE

1E

TF

w

IF

IE1E

irifirir

ir

IE

IE

1E

IE

IE

1T

ir

IE

IF

FFCl

eani&.iii

on11M•■

64

Bl

?

C

?

?

nia

■2

11

HI

Q311

d「…応………

01FFCi•■

1C

BQ

Bft

«a

・\

fti

91

01

Qi

OftAB

meet

noQB80馳

«JQ

Bfl

S7

>3

>1

S2FF

»■■**V■*■4i!

8-«*»H«

CI|HU1|.Oin

to

ai

iia

ea

HI

(El

■?

OJi

02

04M

■用……………

6QBDm>|

Mt4PQHlid

411

a?

IM

AU

H6

11

1?

21

0/HH

t.*

»OOQF<

133122**

2

1S

32

SI

16

91

23

52

41“

.1'華”f.的册他

•oai•>

17z样as

33

95

3?

U

2

U

76

11

*12

.$lj3*>^Cblvw.,

BOQI111

AlFFUh

14

111

»1

MU

]i9

tlUi

iW

Urt

dB

UH0|

If即SB11ugri

eii

nn

tiv

FF

it

11

in

0Q

0Ugg

CIUU13I

uu

FF

DAIB

a001Hl

DC0301•■

BZ

11

03

11

«iU

3f

tm

FB

CA

Qh

Abtt?

OBOlliM

94M呻

az

Vi*

AF

E1

co

62

33

12

5EBA

■a.•■■■■■■■•■a"W■ab-^l.A*

eaoiAi

rn«i:

ueem

6E)

?

^7

g

7U

7B

93

M

D7DF

A0017I

54IE1*A5

7B

Bfl:

77

CC

13

3C

7C

Ch

9F

7D*5

T…Jr.4…讣

fianiffi

rr■■«i:

Fti

7A

DF

HE

IB

DT

ZA

arF・

«A1BiJF■.SKK■

eanwa

ill)"£29・■

ifl

ns

■■

20

29・■

孔)孔申」0・)氐JI3

ce^idi

?

94flH号

囱号

?

9

1*0

AS

29

4*

屿

29

4f>粘

.)o4B.)e9>i*.>9.

ftanifri

;o*BAS?

»

2*

h・

AB

R?

?

c

?

f

7E

FJAO

eeout

40VC42CO

?

A

69

6A

«C

EC

AE

5・

iflM

'.b,-$iJ,.„[PAT

紳91iDO30

D%

E5

FF

t>A

FF

an62

0HO1e>

UFFMM眄

1$

60

F・

55

DZ

FO

BA

Ob

35?

e

N11AeIII■■■■.5■

00t>1F>

A317tiBF5

0t

31

yi

TP

57

2H

FE收却

卞・•・・1taaV(・・■

ndot?

as

RJLI£tlt9

ti-y

IB

6C

81

HL

C&

Lfl

1U66

deo2ia

Of/2C/»■

*C

63

2E

f2

B6

EC

5

•r■«it.rdt—T■

OUUrZZB

A3I5i2UIC

[g

BO

4|0

29

R7

VL

BM

V

Ft

OB

E1M

=・**-nd1・a--亠a--

C1QU23I

9EBDAH9E

85

0F

AC

9D

B7

FF

2F

2F

FE

50CA

+■»«v

U口孵斷・

B27A51・D

93

3C

Cl

9t

ce

21

A1

fi9SB

.;QM.<...U

■tawi■►H-

Jj

上图被选定的段是APP0段

U0

*8

uoai

Dis»UM3

AUft

an

as

■oettiB

>4

U405

<6

齢闆9f

0/

ISZ

0/

07

*

M

UU

n

K11

flt

121211

•11

11

13

14

IE

1/

13

BEIODliB

1出

1A

1511

11

IS2119

1AID

W

IF

IF

1F

13

ir

eeoKi

22

2鲤

221E

1C1EH

it|n

Dtt

43

ei

BS

05

oaoiai&s

■7

MV7

MMBE

IE14

11

IE

IE

rc

IE

flaao/n

IC

IE

1CIE

IE

IEIEIE

IEIE

IE

IE

1E

IE

ir

IE

ei0M>

nr

1E

1F1E

IE

1fIf1f

1E1E

11

1:

E

1E

IF

1E

1E

eani»B

IF

1E

IE1E

ir

IE1F1F

1F1E

ir

If

IF

FF

Cl

ionia.ifl

nn

11

mta

11?

CB3

01?

7

na

1?

11

gi

V)

11

m

FF

C4»A

1C

MA1Aft

帕町

ai

01

hi

an

«D

nMcl

00

no»e

va

vif)a«5

W17

n

>1

<2

FF

■MOdl

C4

SB

舟0w

00

Bl軸

«211

S3

>2

02

06

M

Mf

»l

uhn

HI

垃翻殖

M那

11

t?

?

1

a?

BH

laoara

13

31

22

14»

151251

U«1

23

38

*2

52

fli

71

netjis>

17

?

*

7582

B3

B阳3335

37剋J

A2

M

77

81

UM

6UU11B

Al

FF

C4I9H

1*

91(HBtt

WV>•

»»

Ub

QB

UH

«■

FFOHFF1■哺局屜Oft訓*111SOW

.1,hA.«2Q^mRaq

.$uw..S57Cbt:

vWp.

...…JF)F・

mj・••以」

aotn^iun・■utivtfruDi

eaititia

IK

A3

81

•■R

11

«3

11

0Q

aooi*>・

94

0?

gA5

fiF

77

ainifti

FD

«C

ne

£4刃

75

6D

91

•■01”

54

IF

1*

Bfl

CC

13

nenifti

FF

BD

AC

FB

7A

DF

1E

•arivi

nn

血号

2V

・・•葺

ns

eenua

?

9

48

A$?

9

fianwn

20

IvB

29kO

29

aeoic>

40

9C

2

69

6A

SC

eaeiiia

8D

DB

3D佃

A7

DA

E5

ES

QSUIel

FF

un

15

ee

FS

55

•■•ifi

A3

17

SB

IF5肛

31

91

2E

tlUtK>aB

LB

10

E9M

KB

Ff»

95

«0K*ia

nr

/2

C7

l$SVC

63

2E

fleU2ZB

A3

2H

fiLB

&P

29

■HF

tlQlJ(23l

9L

OD

AB

9E»5i

BF

AC

90

87

B2

7A

51

W*3

3C

Cl

AE

9t

 

 

800001

Ff

OHFF

El

00

ia

J|6

0091

01

ei

90斷。

11UUU14

UH

iH

Qtl

Hi

»U

AU

M

•3

IM

03

#5

K

9/

K

W

0/

(M

07

廿

W

flQUBIS

m

K

SC

11

at

12

12

11

11

11

13

16

ic

17

13

in

1A

15

11

11

18

11

18

IA

ID

w

If

IF

ir

13

ir

tiaoKi

22

2*

22

1E

1C

It

If

FF

D6

・・

<9

>1

K

0

■7

M

•7

flC

m

M

BE

IE

11

11

T・

IE

IE

FC

1E

■■0071

pit

IE

IE

1E

H

IE

IE

IE

1E

IE

IE

IE

It

IE

IE

IE

fiHOEilia

11

1E

1F

1E

If

ir

IE

1E

1E

11

1E

1E

IE

1F

1E

dann?

n

ir

IE

IE

IE

1E

IE

ir

K

1[

IE

ir

IF

IE

IE

FF

Cl

eanoi.ifl

an

11

M

M

Bl

?

c

■3

ri

OQ!

97

11

ai

K)

11

•VMbl

餌i|

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2