admin管理员组文章数量:1530842
2024年6月5日发(作者:)
JPEG文件格式解析
微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分。正序存放就是高字节存放在前
低字节在后,而逆序存放就是低字节在前高字节在后。例如,十六进制数为A02B,正序存放就是A02B,
逆序存放就是2BA0。摩托罗拉(Motorola)公司的微处理器使用正序存放,而英特尔(Intel)公司的微处理
器使用逆序。JPEG文件中的字节是按照正序排列的。
JPEG委员会在制定JPEG标准时,定义了许多标记(marker)用来区分和识别图像数据及其相关信息,但笔
者没有找到JPEG委员会对JPEG文件交换格式的明确定义。直到1998年12月从分析网上具体的JPG图像
来看,使用比较广泛的还是
JPEG文件交换格式(JPEG File Interchange Format,JFIF)
版本号
为1.02。这是1992年9月由在C-Cube Microsystems公司工作的Eric Hamilton提出的。此外还有TIFF
JPEG等格式,但由于这种格式比较复杂,因此大多数应用程序都支持JFIF文件交换格式。
JPEG文件使用的颜色空间是CCIR 601推荐标准进行的彩色空间(参看第7章)。在这个彩色空间中,每个
分量、每个像素的电平规定为255级,用8位代码表示。从RGB转换成YCbCr空间时,使用下面的精确的
转换关系:
Y = 256 * E'y
Cb = 256 * [E'
Cb
] + 128
Cr = 256 * [E'
Cr
] + 128
其中亮度电平E'
y
和色差电平E'
Cb
和E'
Cb
分别是CCIR 601定义的参数。由于E'
y
的范围是0~1,E'
Cb
和E'
C
b
的范围是-0.5~+0.5,因此Y, Cb和Cr的最大值必须要箝到255。于是RGB和YCbCr之间的转换关系需
要按照下面的方法计算。
(1) 从RGB转换成YCbCr
YCbCr(256级)分量可直接从用8位表示的RGB分量计算得到:
Y = 0.299 R + 0.587 G + 0.114 B
Cb = - 0.1687R - 0.3313G + 0.5 B + 128
Cr = 0.5 R - 0.4187G - 0.0813 B + 128
需要注意的是不是所有图像文件格式都按照R0,G0,B0,…… Rn,Gn,Bn的次序存储样本数据,因此在
RGB文件转换成JFIF文件时需要首先验证RGB的次序。
(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填充字节(fill byte)。下面是其中的8个标记:
1. SOI 0xD8 图像开始
2. APP0 0xE0 JFIF应用数据块
3. APPn 0xE1 - 0xEF 其他的应用数据块(n, 1~15)
4. DQT 0xDB 量化表
5. SOF0 0xC0 帧开始
6. DHT 0xC4 霍夫曼(Huffman)表
7. SOS 0xDA 扫描线开始
8. EOI 0xD9 图像结束
为使读者对JPEG定义的标记一目了然,现将JPEG的标记码列于表6-05,并保留英文解释。
表6-05 JPEG定义的标记
Symbol
(符号)
Code Assignment
(标记代码)
Description
(说明)
Start Of Frame markers, non-hierarchical Huffman coding
SOF
0
SOF
1
SOF
2
SOF
3
0xFFC0
0xFFC1
0xFFC2
0xFFC3
Baseline DCT
Extended sequential DCT
Progressive DCT
Spatial (sequential) lossless
Start Of Frame markers, hierarchical Huffman coding
SOF
5
SOF
6
SOF
7
0xFFC5
0xFFC6
0xFFC7
Differential sequential DCT
Differential progressive DCT
Differential spatial lossless
Start Of Frame markers, non-hierarchical arithmetic coding
JPG
SOF
9
0xFFC8
0xFFC9
Reserved for JPEG extensions
Extended sequential DCT
SOF
10
SOF
11
0xFFCA
0xFFCB
Progressive DCT
Spatial (sequential) Lossless
Start Of Frame markers, hierarchical arithmetic coding
SOF
13
SOF
14
SOF
15
0xFFCD
0xFFCE
0xFFCF
Differential sequential DCT
Differential progressive DCT
Differential spatial Lossless
Huffman table specification
DHT 0xFFC4 Define Huffman table(s)
arithmetic coding conditioning specification
DAC 0xFFCC Define arithmetic conditioning table
Restart interval termination
RSTm
Other marker
SOI
EOI
SOS
DQT
DNL
DRI
DHP
EXP
APP
n
JPG
n
COM
Reserved markers
TEM 0xFF01 For temporary use in arithmetic codi
ng
RES 0xFF02~0xFFBF Reserved
0xFFD8
0xFFD9
0xFFDA
0xFFDB
0xFFDC
0xFFDD
0xFFDE
0xFFDF
0xFFE0~0xFFEF
0xFFF0~0xFFFD
0xFFFE
Start of image
End of image
Start of scan
Define quantization table(s)
Define number of lines
Define restart interval
Define hierarchical progression
Expand reference image(s)
Reserved for application use
Reserved for JPEG extension
Comment
0xFFD0~0xFFD7 Restart with modulo 8 counter m
JPEG文件由下面的8个部分组成:
(1) 图像开始SOI(Start of Image)标记
(2) APP0标记(Marker)
① APP0长度(length)
② 标识符(identifier)
③ 版本号(version)
④ X和Y的密度单位(units=0:无单位;units=1:点数/英寸;units=2:点数/厘米)
⑤ X方向像素密度(X density)
⑥ Y方向像素密度(Y density)
⑦ 缩略图水平像素数目(thumbnail horizontal pixels)
⑧ 缩略图垂直像素数目(thumbnail vertical pixels)
⑨ 缩略图RGB位图(thumbnail RGB bitmap)
(3) APPn标记(Markers),其中n=1~15(任选)
① APPn长度(length)
② 由于详细信息(application specific information)
(4) 一个或者多个量化表DQT(difine quantization table)
① 量化表长度(quantization table length)
② 量化表数目(quantization table number)
③ 量化表(quantization table)
(5) 帧图像开始SOF0(Start of Frame)
① 帧开始长度(start of frame length)
② 精度(precision),每个颜色分量每个像素的位数(bits per pixel per color component)
③ 图像高度(image height)
④ 图像宽度(image width)
⑤ 颜色分量数(number of color components)
⑥ 对每个颜色分量(for each component)
o
ID
o
垂直方向的样本因子(vertical sample factor)
o
水平方向的样本因子(horizontal sample factor)
o
量化表号(quantization table#)
(6) 一个或者多个霍夫曼表DHT(Difine Huffman Table)
① 霍夫曼表的长度(Huffman table length)
② 类型、AC或者DC(Type, AC or DC)
③ 索引(Index)
④ 位表(bits table)
⑤ 值表(value table)
(7) 扫描开始SOS(Start of Scan)
① 扫描开始长度(start of scan length)
② 颜色分量数(number of color components)
③ 每个颜色分量
o
ID
o
交流系数表号(AC table #)
o
直流系数表号(DC table #)
④ 压缩图像数据(compressed image data)
(8) 图像结束EOI(End of Image)
表6-06表示了APP0域的详细结构。有兴趣的读者可通过UltraEdit或者PC TOOLS等工具软件打开一个J
PG图像文件,对APP0的结构进行分析和验证。
表6-06 JFIF格式中APP0域的详细结构
偏移
0
2
4
长度 内容 块的名称
(Start of Image,SOI)
APP0(JFIF application segment)
length of APP0 block
图像开始
说明
2 byte 0xFFD8
2 byte 0xFFE0
2 byte
s
JFIF应用数据块
APP0块的长度
6 5 byte
s
"JFIF"+"0" 识别APP0标记
11
12
1 byte
1 byte
主要版本号(如版本1.02中的1)
次要版本号(如版本1.02中的02)
13 1 byte and Y densities> X和Y的密度单位 units=0:无单位 units=1:点数/英寸 units=2:点数/厘米 14 2 byte s 16 2 byte s 18 19 1 byte 1 byte 3n < Thumbnail RGB bitmap> 缩略图水平像素数目 缩略图垂直像素数目 缩略RGB位图(n为缩略图的像素数) Optional JFIF extension APP0 mar任选的JFIF扩展APP0标记段 ker segment(s) …… …… (EOI) end-of-file 图像文件结束标记 2 byte 0xFFD9 上一篇:JPEG 压缩简介 Unicode编码 Re:JPEG文件格式解析 [ 2008-3-23 10:07:00 | By: 访客v06Du2(游客) ] GOOD 个人主?| 引用 | 返回 | 删除 | 回复 补充网址: [ 2006-4-14 11:14:00 | By: 徐(游客) ] JPG Cleaner V2.6: / 个人主页 | 引用 | 返回 | 删除 | 回复 回复:JPEG文件格式解析 [ 2006-4-14 11:12:00 | By: 徐(游客) ] 通过搜索引擎看到你这个笔记,先收藏了! JPG里是允许含有非图片数据的吧,比如数码相机里的数码照片,还有PHOTOSHOP处理过的等,我从网上 找到了声称可以清除这些非图片数据的一个软件,叫JPG Cleaner,目前是2.6版,网址是: 现在我想测试一下这个软件是不是真正的完全清除了非图片数据而保证图片没有任何不同(二进制级的完 全相同,我想用UltraEdit比较确定没有任何不同),但好像不太容易弄;我用Photoshop打开后另存为 另一个jpg文件,文件增肥了很多(另存时我选择的是最佳质量),但用这个软件却只清除了一点,仍然 比原图片大的多得多…… 我不懂jpg的格式,是不是photoshop用最佳质量另存为时采用了更多的象素位描述从而导致用JPG Clea ner清除时只清除了那么一点呢? 望指教! 另外,能否介绍一款比较好的完全查看jpg中各种非图片数据的软件?我在找,还没找到,acdsee似乎只 能看数码相片的那个exif数据! 多谢多谢!我的mail:cnchip@ 个人主页 | 引用 | 返回 | 删除 | 回复 发表评论: 昵称: 密码: (游客无须输入密码) 主页: 标题: Re:JPEG文件格式解析 提 交
版权声明:本文标题:JPEG文件格式 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1717565556a585126.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论