JPEG图片格式简单分析Word文件下载.docx
- 文档编号:22849131
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:11
- 大小:20.50KB
JPEG图片格式简单分析Word文件下载.docx
《JPEG图片格式简单分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《JPEG图片格式简单分析Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
(2)从YCbCr转换成RGB
RGB分量可直接从YCbCr(256级)分量计算得到:
R=Y +1.402(Cr-128)
G=Y-0.34414(Cb-128)-0.71414(Cr-128)
B=Y+1.772(Cb-128)
在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。
这就是说JFIF文件中的第一个图像样本是图像左上角的样本。
2文件结构
JFIF文件格式直接使用JPEG标准为应用程序定义的许多标记,因此JFIF格式成了事实上JPEG文件交换格式标准。
JPEG的每个标记都是由2个字节组成,其前一个字节是固定值0xFF。
每个标记之前还可以添加数目不限的0xFF填充字节(fillbyte)。
下面是其中的8个标记:
1.SOI 0xD8 图像开始
2.APP00xE0 JFIF应用数据块
3.APPn0xE1-0xEF 其他的应用数据块(n,1~15)
4.DQT 0xDB 量化表
5.SOF00xC0 帧开始
6.DHT 0xC4 霍夫曼(Huffman)表
7.SOS 0xDA 扫描线开始
8.EOI 0xD9 图像结束
为使读者对JPEG定义的标记一目了然,现将JPEG的标记码列于表6-05,并保留英文解释。
表6-05JPEG定义的标记
Symbol
(符号)
CodeAssignment
(标记代码)
Description
(说明)
StartOfFramemarkers,non-hierarchicalHuffmancoding
SOF0
0xFFC0
BaselineDCT
SOF1
0xFFC1
ExtendedsequentialDCT
SOF2
0xFFC2
ProgressiveDCT
SOF3
0xFFC3
Spatial(sequential)lossless
StartOfFramemarkers,hierarchicalHuffmancoding
SOF5
0xFFC5
DifferentialsequentialDCT
SOF6
0xFFC6
DifferentialprogressiveDCT
SOF7
0xFFC7
Differentialspatiallossless
StartOfFramemarkers,non-hierarchicalarithmeticcoding
JPG
0xFFC8
ReservedforJPEGextensions
SOF9
0xFFC9
ExtendedsequentialDCT
SOF10
0xFFCA
SOF11
0xFFCB
Spatial(sequential)Lossless
StartOfFramemarkers,hierarchicalarithmeticcoding
SOF13
0xFFCD
SOF14
0xFFCE
DifferentialprogressiveDCT
SOF15
0xFFCF
DifferentialspatialLossless
Huffmantablespecification
DHT
0xFFC4
DefineHuffmantable(s)
arithmeticcodingconditioningspecification
DAC
0xFFCC
Definearithmeticconditioningtable
Restartintervaltermination
RSTm
0xFFD0~0xFFD7
Restartwithmodulo8counterm
Othermarker
SOI
0xFFD8
Startofimage
EOI
0xFFD9
Endofimage
SOS
0xFFDA
Startofscan
DQT
0xFFDB
Definequantizationtable(s)
DNL
0xFFDC
Definenumberoflines
DRI
0xFFDD
Definerestartinterval
DHP
0xFFDE
Definehierarchicalprogression
EXP
0xFFDF
Expandreferenceimage(s)
APPn
0xFFE0~0xFFEF
Reservedforapplicationuse
JPGn
0xFFF0~0xFFFD
ReservedforJPEGextension
COM
0xFFFE
Comment
Reservedmarkers
TEM
0xFF01
Fortemporaryuseinarithmeticcoding
RES
0xFF02~0xFFBF
Reserved
JPEG文件由下面的8个部分组成:
(1)图像开始SOI(StartofImage)标记
(2)APP0标记(Marker)
①APP0长度(length)
②标识符(identifier)
③版本号(version)
④X和Y的密度单位(units=0:
无单位;
units=1:
点数/英寸;
units=2:
点数/厘米)
⑤X方向像素密度(Xdensity)
⑥Y方向像素密度(Ydensity)
⑦缩略图水平像素数目(thumbnailhorizontalpixels)
⑧缩略图垂直像素数目(thumbnailverticalpixels)
⑨缩略图RGB位图(thumbnailRGBbitmap)
(3)APPn标记(Markers),其中n=1~15(任选)
①APPn长度(length)
②由于详细信息(applicationspecificinformation)
(4)一个或者多个量化表DQT(difinequantizationtable)
①量化表长度(quantizationtablelength)
②量化表数目(quantizationtablenumber)
③量化表(quantizationtable)
(5)帧图像开始SOF0(StartofFrame)
①帧开始长度(startofframelength)
②精度(precision),每个颜色分量每个像素的位数(bitsperpixelpercolorcomponent)
③图像高度(imageheight)
④图像宽度(imagewidth)
⑤颜色分量数(numberofcolorcomponents)
⑥对每个颜色分量(foreachcomponent)
∙ID
∙垂直方向的样本因子(verticalsamplefactor)
∙水平方向的样本因子(horizontalsamplefactor)
∙量化表号(quantizationtable#)
(6)一个或者多个霍夫曼表DHT(DifineHuffmanTable)
①霍夫曼表的长度(Huffmantablelength)
②类型、AC或者DC(Type,ACorDC)
③索引(Index)
④位表(bitstable)
⑤值表(valuetable)
(7)扫描开始SOS(StartofScan)
①扫描开始长度(startofscanlength)
②颜色分量数(numberofcolorcomponents)
③每个颜色分量
∙交流系数表号(ACtable#)
∙直流系数表号(DCtable#)
④压缩图像数据(compressedimagedata)
(8)图像结束EOI(EndofImage)
表6-06表示了APP0域的详细结构。
有兴趣的读者可通过UltraEdit或者PCTOOLS等工具软件打开一个JPG图像文件,对APP0的结构进行分析和验证。
表6-06JFIF格式中APP0域的详细结构
偏移
长度
内容
块的名称
说明
2byte
(StartofImage,SOI)
图像开始
2
2byte
0xFFE0
APP0(JFIFapplicationsegment)
JFIF应用数据块
4
2bytes
lengthofAPP0block
APP0块的长度
6
5bytes
"
JFIF"
+"
0"
识别APP0标记
11
1byte
<
Majorversion>
主要版本号(如版本1.02中的1)
12
Minorversion>
次要版本号(如版本1.02中的02)
13
UnitsfortheX
andYdensities>
X和Y的密度单位
units=0:
无单位
点数/英寸
点数/厘米
14
2bytes
Xdensity>
水平方向像素密度
16
Ydensity>
垂直方向像素密度
18
1byte
Xthumbnail>
缩略图水平像素数目
19
Ythumbnail>
缩略图垂直像素数目
3n
ThumbnailRGBbitmap>
缩略RGB位图(n为缩略图的像素数)
OptionalJFIFextensionAPP0markersegment(s)
任选的JFIF扩展APP0标记段
……
0xFFD9
(EOI)end-of-file
图像文件结束标记
JPEG图像大多都使用JFIF格式—JPEG文件交换格式(JPEGFileInterchangeFormat,JFIF),现在JFIF格式已经成为JPEG文件交换格式标准。
SOI
0xD8 图像开始
APP0
0xE0 JFIF应用数据块
APPn
0xE1–0xEF
其他的应用数据块(n,1~15)
DQT
0xDB 量化表
SOF0
0xC0 帧开始
DHT
0xC4 霍夫曼(Huffman)表
SOS
0xDA 扫描线开始
EOI
0xD9 图像结束
SOI=StartOfImage=FFD8
=DefineQuantizationTable=FFDB
APP0=themarkerusedtoidentifyaJPGfilewhichusestheJFIFspecification
=FFE0
COM
=Comment
=FFFE
DNL
=DefineNumberofLines
=FFDC
SOF0=StartOfFrame0=FFC0
DRI
=DefineRestartInterval
=FFDD
=DefineHuffmanTable
=FFC4
SOS
=StartOfScan
=FFDA
EOI=EndOfImage=FFD9
段的类型:
SOF0:
StartOfFrame0:
FFC0
~~~~~~~~~~~~~~~~~~~~~~~
–$ff,$c0(SOF0)
–长度(高字节,低字节),8+components*3
–数据精度(1byte)每个样本位数,通常是8(大多数软件不支持12和16)
–图片高度(高字节,低字节),如果不支持DNL就必须>
–图片宽度(高字节,低字节),如果不支持DNL就必须>
–components数量(1byte),灰度图是1,YCbCr/YIQ彩色图是3,CMYK彩色图
是4
–每个component:
3bytes
–componentid(1=Y,2=Cb,3=Cr,4=I,5=Q)
–采样系数(bit0-3vert.,4-7hor.)
–quantizationtable号
DRI:
DefineRestartInterval:
FFDD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
–$ff,$dd(DRI)
–长度(高字节,低字节),必须是4
–MCU块的单元中的重新开始间隔(高字节,低字节),
意思是说,每n个MCU块就有一个RSTn标记.
第一个标记是RST0,然后是RST1等,RST7后再从RST0重复
DQT:
DefineQuantizationTable:
FFDB
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
–$ff,$db(DQT)
–长度(高字节,低字节)
–QT信息(1byte):
bit0..3:
QT号(0..3,否则错误)
bit4..7:
QT精度,0=8bit,否则16bit
–n字节的QT,n=64*(精度+1)
备注:
–一个单独的DQT段可以包含多个QT,每个都有自己的信息字节
–当精度=1(16bit),每个字都是高位在前低位在后
DAC:
DefineArithmeticTable:
法律原因,现在的软件不支持arithmetic编码.
不能生产使用arithmetic编码的JPEG文件
DHT:
DefineHuffmanTable:
FFC4
~~~~~~~~~~~~~~~~~~~~~~~~~~
–$ff,$c4(DHT)
–HT信息(1byte):
HT号(0..3,否则错误)
bit4
:
HT类型,0=DCtable,1=ACtable
bit5..7:
必须是0
–16bytes:
长度是1..16代码的符号数.这16个数的和应该<
=256
–nbytes:
一个包含了按递增次序代码长度排列的符号表
(n=代码总数)
–一个单独的DHT段可以包含多个HT,每个都有自己的信息字节
COM:
注释:
~~~~~~~~~~
–$ff,$fe(COM)
–注释长度(高字节,低字节)=L+2
–注释为长度为L的字符流
SOS:
StartOfScan:
FFDA
~~~~~~~~~~~~~~~~~~~
–$ff,$da(SOS)
–长度(高字节,低字节),必须是6+2*(扫描行内组件的数量)
–扫描行内组件的数量(1byte),必须>
=1,<
=4(否则是错的)通常是3
–每个组件:
2bytes
–componentid(1=Y,2=Cb,3=Cr,4=I,5=Q),见SOF0
–使用的Huffman表:
–bit0..3:
ACtable(0..3)
–bit4..7:
DCtable(0..3)
–忽略3bytes(?
?
)
–图片数据(一个个扫描行)紧接着SOS段.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JPEG 图片格式 简单 分析