Skip to content

Commit 94ae56a

Browse files
committed
add notes
1 parent 57a26f7 commit 94ae56a

4 files changed

Lines changed: 568 additions & 0 deletions

File tree

VideoDevelopment/JPEG 2.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# JPEG
2+
3+
JPEG(Joint Photographic Experts Group),全称为联合图像专家小组,是国际标准化组织(ISO)制定的静态图像压缩标准,文件扩展名为.jpg或.jpeg,适用于连续色调静止图像处理。
4+
5+
6+
JPEG只描述一副图像如何转换成一组数据流,而不论这些字节存储在何种介质上。由独立JPEG组创立的另一个进阶标准,JFIF(JPEGFileInterchangeFormat,JPEG文件交换格式)则描述JPEG数据流如何生成适于电脑存储或传送的图像。在一般应用中,我们从数码相机等来源获得的“JPEG文件”,指的就是JFIF文件,有时是ExifJPEG文件。
7+
8+
9+
该格式采用有损压缩算法,通过牺牲部分画质换取较小文件体积,压缩过程包含色彩空间转换(RGB转YCbCr)、离散余弦变换(DCT)、量化和熵编码等步骤。
10+
11+
支持标准JPEG、渐进式JPEG和JPEG2000三种格式,其中渐进式格式可实现图像由模糊到清晰的渐进加载.
12+
13+
JPEG压缩技术通过分离高频与低频信息并对高频部分进行压缩,压缩比可通过量化表参数调节,典型压缩率为原始大小的10%.
14+
15+
16+
### 说明
17+
1. jpeg是一种压缩标准,大幅度缩小数据流,jpeg以FF D8开头,FF D9结束。
18+
2. jpeg文件中有一些形如0xFF**这样的数据,它们被称为标志(Markeer),它表示jpeg信息数据段。例如0xFFD8代表SOI(Startof image)。OxFFD9代表EOI(End of image)。
19+
4. jpeg图像由多个maker组成,多个maker+compressed组成了jpeg。
20+
5. jiff是一种在万维网上进行jpeg传输的格式,可以理解是对jpeg图片的封装,符合jpeg标准,jiff的maker是app0,记录了图像的基本信息,也可能有缩略图。jiff格式比较老,老式的数码相机使用此格式。
21+
6. exif新比较新的jpeg封装格式,exif的maker是app1,记录了更多的东西,如ISP信息、GPS信息、相机信息,图像旋转等等
22+
7. jiff和exif可以共存,很多jpeg图像都有app0的jiff段和app1的exif段
23+
24+
25+
26+
## 压缩流程
27+
28+
1. 原始图像
29+
2. 8x8分块
30+
3. DCT(Discrete Cosine Transform,离散余弦变换)变换: 把数据从时域转化到频域的数学方法,把图像数据转换到频域之后,可以从中分离出各种频率的信息。
31+
4. 量化
32+
5. Z字形扫描
33+
6. 对系数编码
34+
7. 熵编码
35+
8. 压缩数据
36+
37+
38+
39+
40+
41+
JPEG文件除了图像数据之外,还保存了与图片相关的各种信息,这些信息通过不同类型的TAG存储在文件中。
42+
43+
44+
## TAG
45+
46+
JPEG通过TAG编辑压缩数据之外的信息。
47+
48+
所有的TAG都包含一个TAG类型,TAG类型的大小为两个字节,位于一个TAG的最前面。TAG类型的第一个字节一定为0xFF
49+
50+
一般情况下,是按照这个顺序排列的:
51+
52+
53+
| TAG 类型 | 数值(十六进制标识符) | 全称 | 其他备注 |
54+
|-------------------|----------|----------------------------|-----------------------------------|
55+
| SOI | 0xFFD8 | Start of Image | 必带 |
56+
| APP0 | 0xFFE0 | application0 | 必带 |
57+
| APPn | 0xFFEn | applicationn | 可选带(APP1一般为Exif信息) |
58+
| DQT | 0xFFDB | Define Quantization Table | 必带 |
59+
| SOF | 0xFFC0 | Start of Frame | 必带 |
60+
| DHT | 0xFFC4 | Define Huffman Table | 必带 |
61+
| SOS | 0xFFDA | Start of Scan | 必带 |
62+
| compress data | ... | ... | 必带 |
63+
| EOI | 0xFFD9 | End of Image | 必带 |
64+
65+
标志OxFFE0~OxFFEF被称为"Application Marker",它们不是解码JPEG文件必须得,可以被用来存储配置信息等。
66+
EXIF也是利用这个标志段来插入信息的。具体来说,是APP1(0xFFE1)Marker,所有的EXIF信息都存储在该数据段。
67+
​EXIF(Exchangeable Image File Format)​​ 是嵌入在 JPEG 文件中的 ​元数据标准,记录拍摄设备、参数和场景信息,相当于照片的“数字身份证”。
68+
69+
70+
![Image](https://raw.githubusercontent.com/CharonChui/Pictures/master/jpeg_1.png?raw=true)
71+
72+
73+
#### 典型JPEG文件结构
74+
75+
[SOI] -> [APP0] -> [APP1(EXIF)] -> [DQT] -> [SOF] -> [DHT] -> [SOS] -> [压缩数据] -> [EOI]
76+
77+
78+
![Image](https://raw.githubusercontent.com/CharonChui/Pictures/master/jpeg_2.png?raw=true)
79+
80+
##### 怎么判断是不是JPEG图片?
81+
82+
jpeg是一种压缩标准,大幅度缩小数据流,jpeg以FF D8开头,FF D9结束。
83+
84+
85+
其实很简单,就是判断前面3个字节是什么,如果发现是FF D8 FF开始,那就认为它是JEPG图片。(注意android不是根据后缀名来判断是什么文件的,当然你必须是图片的后缀名文件管理器才可以打开
86+
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+
97+
98+
99+
100+
101+
102+

VideoDevelopment/JPEG.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# JPEG
2+
3+
JPEG(Joint Photographic Experts Group),全称为联合图像专家小组,是国际标准化组织(ISO)制定的静态图像压缩标准,文件扩展名为.jpg或.jpeg,适用于连续色调静止图像处理。
4+
5+
6+
JPEG只描述一副图像如何转换成一组数据流,而不论这些字节存储在何种介质上。由独立JPEG组创立的另一个进阶标准,JFIF(JPEGFileInterchangeFormat,JPEG文件交换格式)则描述JPEG数据流如何生成适于电脑存储或传送的图像。在一般应用中,我们从数码相机等来源获得的“JPEG文件”,指的就是JFIF文件,有时是ExifJPEG文件。
7+
8+
9+
该格式采用有损压缩算法,通过牺牲部分画质换取较小文件体积,压缩过程包含色彩空间转换(RGB转YCbCr)、离散余弦变换(DCT)、量化和熵编码等步骤。
10+
11+
支持标准JPEG、渐进式JPEG和JPEG2000三种格式,其中渐进式格式可实现图像由模糊到清晰的渐进加载.
12+
13+
JPEG压缩技术通过分离高频与低频信息并对高频部分进行压缩,压缩比可通过量化表参数调节,典型压缩率为原始大小的10%.
14+
15+
16+
### 说明
17+
1. jpeg是一种压缩标准,大幅度缩小数据流,jpeg以FF D8开头,FF D9结束。
18+
2. jpeg文件中有一些形如0xFF**这样的数据,它们被称为标志(Markeer),它表示jpeg信息数据段。例如0xFFD8代表SOI(Startof image)。OxFFD9代表EOI(End of image)。
19+
4. jpeg图像由多个maker组成,多个maker+compressed组成了jpeg。
20+
5. jiff是一种在万维网上进行jpeg传输的格式,可以理解是对jpeg图片的封装,符合jpeg标准,jiff的maker是app0,记录了图像的基本信息,也可能有缩略图。jiff格式比较老,老式的数码相机使用此格式。
21+
6. exif新比较新的jpeg封装格式,exif的maker是app1,记录了更多的东西,如ISP信息、GPS信息、相机信息,图像旋转等等
22+
7. jiff和exif可以共存,很多jpeg图像都有app0的jiff段和app1的exif段
23+
24+
25+
26+
## 压缩流程
27+
28+
1. 原始图像
29+
2. 8x8分块
30+
3. DCT(Discrete Cosine Transform,离散余弦变换)变换: 把数据从时域转化到频域的数学方法,把图像数据转换到频域之后,可以从中分离出各种频率的信息。
31+
4. 量化
32+
5. Z字形扫描
33+
6. 对系数编码
34+
7. 熵编码
35+
8. 压缩数据
36+
37+
38+
39+
40+
41+
JPEG文件除了图像数据之外,还保存了与图片相关的各种信息,这些信息通过不同类型的TAG存储在文件中。
42+
43+
44+
## TAG
45+
46+
JPEG通过TAG编辑压缩数据之外的信息。
47+
48+
所有的TAG都包含一个TAG类型,TAG类型的大小为两个字节,位于一个TAG的最前面。TAG类型的第一个字节一定为0xFF
49+
50+
一般情况下,是按照这个顺序排列的:
51+
52+
53+
| TAG 类型 | 数值(十六进制标识符) | 全称 | 其他备注 |
54+
|-------------------|----------|----------------------------|-----------------------------------|
55+
| SOI | 0xFFD8 | Start of Image | 必带 |
56+
| APP0 | 0xFFE0 | application0 | 必带 |
57+
| APPn | 0xFFEn | applicationn | 可选带(APP1一般为Exif信息) |
58+
| DQT | 0xFFDB | Define Quantization Table | 必带 |
59+
| SOF | 0xFFC0 | Start of Frame | 必带 |
60+
| DHT | 0xFFC4 | Define Huffman Table | 必带 |
61+
| SOS | 0xFFDA | Start of Scan | 必带 |
62+
| compress data | ... | ... | 必带 |
63+
| EOI | 0xFFD9 | End of Image | 必带 |
64+
65+
标志OxFFE0~OxFFEF被称为"Application Marker",它们不是解码JPEG文件必须得,可以被用来存储配置信息等。
66+
EXIF也是利用这个标志段来插入信息的。具体来说,是APP1(0xFFE1)Marker,所有的EXIF信息都存储在该数据段。
67+
​EXIF(Exchangeable Image File Format)​​ 是嵌入在 JPEG 文件中的 ​元数据标准,记录拍摄设备、参数和场景信息,相当于照片的“数字身份证”。
68+
69+
70+
![Image](https://raw.githubusercontent.com/CharonChui/Pictures/master/jpeg_1.png?raw=true)
71+
72+
73+
#### 典型JPEG文件结构
74+
75+
[SOI] -> [APP0] -> [APP1(EXIF)] -> [DQT] -> [SOF] -> [DHT] -> [SOS] -> [压缩数据] -> [EOI]
76+
77+
78+
![Image](https://raw.githubusercontent.com/CharonChui/Pictures/master/jpeg_2.png?raw=true)
79+
80+
##### 怎么判断是不是JPEG图片?
81+
82+
jpeg是一种压缩标准,大幅度缩小数据流,jpeg以FF D8开头,FF D9结束。
83+
84+
85+
其实很简单,就是判断前面3个字节是什么,如果发现是FF D8 FF开始,那就认为它是JEPG图片。(注意android不是根据后缀名来判断是什么文件的,当然你必须是图片的后缀名文件管理器才可以打开
86+
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+
97+
98+
99+
100+
101+
102+
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# JPEG
2+
3+
[JPEG](https://www.w3.org/Graphics/JPEG/itu-t81.pdf)
4+
JPEG(Joint Photographic Experts Group),全称为联合图像专家小组,是国际标准化组织(ISO)制定的静态图像压缩标准,文件扩展名为.jpg或.jpeg,适用于连续色调静止图像处理。
5+
6+
7+
8+
JPEG只描述一副图像如何转换成一组数据流,而不论这些字节存储在何种介质上。由独立JPEG组创立的另一个进阶标准,JFIF(JPEGFileInterchangeFormat,JPEG文件交换格式)则描述JPEG数据流如何生成适于电脑存储或传送的图像。在一般应用中,我们从数码相机等来源获得的“JPEG文件”,指的就是JFIF文件,有时是ExifJPEG文件。
9+
10+
11+
该格式采用有损压缩算法,通过牺牲部分画质换取较小文件体积,压缩过程包含色彩空间转换(RGB转YCbCr)、离散余弦变换(DCT)、量化和熵编码等步骤。
12+
13+
支持标准JPEG、渐进式JPEG和JPEG2000三种格式,其中渐进式格式可实现图像由模糊到清晰的渐进加载.
14+
15+
JPEG压缩技术通过分离高频与低频信息并对高频部分进行压缩,压缩比可通过量化表参数调节,典型压缩率为原始大小的10%.
16+
17+
18+
### 说明
19+
1. jpeg是一种压缩标准,大幅度缩小数据流,jpeg以FF D8开头,FF D9结束。
20+
2. jpeg文件中有一些形如0xFF**这样的数据,它们被称为标志(Markeer),它表示jpeg信息数据段。例如0xFFD8代表SOI(Startof image)。OxFFD9代表EOI(End of image)。
21+
4. jpeg图像由多个maker组成,多个maker+compressed组成了jpeg。
22+
5. jiff是一种在万维网上进行jpeg传输的格式,可以理解是对jpeg图片的封装,符合jpeg标准,jiff的maker是app0,记录了图像的基本信息,也可能有缩略图。jiff格式比较老,老式的数码相机使用此格式。
23+
6. exif新比较新的jpeg封装格式,exif的maker是app1,记录了更多的东西,如ISP信息、GPS信息、相机信息,图像旋转等等
24+
7. jiff和exif可以共存,很多jpeg图像都有app0的jiff段和app1的exif段
25+
26+
27+
28+
## 压缩流程
29+
30+
1. 原始图像
31+
2. 8x8分块
32+
3. DCT(Discrete Cosine Transform,离散余弦变换)变换: 把数据从时域转化到频域的数学方法,把图像数据转换到频域之后,可以从中分离出各种频率的信息。
33+
4. 量化
34+
5. Z字形扫描
35+
6. 对系数编码
36+
7. 熵编码
37+
8. 压缩数据
38+
39+
40+
41+
42+
43+
JPEG文件除了图像数据之外,还保存了与图片相关的各种信息,这些信息通过不同类型的TAG存储在文件中。
44+
45+
46+
## TAG
47+
48+
JPEG通过TAG编辑压缩数据之外的信息。
49+
50+
所有的TAG都包含一个TAG类型,TAG类型的大小为两个字节,位于一个TAG的最前面。TAG类型的第一个字节一定为0xFF
51+
52+
一般情况下,是按照这个顺序排列的:
53+
54+
55+
| TAG 类型 | 数值(十六进制标识符) | 全称 | 其他备注 |
56+
|-------------------|----------|----------------------------|-----------------------------------|
57+
| SOI | 0xFFD8 | Start of Image | 必带 |
58+
| APP0 | 0xFFE0 | application0 | 必带 |
59+
| APPn | 0xFFEn | applicationn | 可选带(APP1一般为Exif信息) |
60+
| DQT | 0xFFDB | Define Quantization Table | 必带 |
61+
| SOF | 0xFFC0 | Start of Frame | 必带 |
62+
| DHT | 0xFFC4 | Define Huffman Table | 必带 |
63+
| SOS | 0xFFDA | Start of Scan | 必带 |
64+
| compress data | ... | ... | 必带 |
65+
| EOI | 0xFFD9 | End of Image | 必带 |
66+
67+
标志OxFFE0~OxFFEF被称为"Application Marker",它们不是解码JPEG文件必须得,可以被用来存储配置信息等。
68+
EXIF也是利用这个标志段来插入信息的。具体来说,是APP1(0xFFE1)Marker,所有的EXIF信息都存储在该数据段。
69+
​EXIF(Exchangeable Image File Format)​​ 是嵌入在 JPEG 文件中的 ​元数据标准,记录拍摄设备、参数和场景信息,相当于照片的“数字身份证”。
70+
71+
72+
![Image](https://raw.githubusercontent.com/CharonChui/Pictures/master/jpeg_1.png?raw=true)
73+
74+
75+
#### 典型JPEG文件结构
76+
77+
[SOI] -> [APP0] -> [APP1(EXIF)] -> [DQT] -> [SOF] -> [DHT] -> [SOS] -> [压缩数据] -> [EOI]
78+
79+
80+
![Image](https://raw.githubusercontent.com/CharonChui/Pictures/master/jpeg_2.png?raw=true)
81+
82+
##### 怎么判断是不是JPEG图片?
83+
84+
jpeg是一种压缩标准,大幅度缩小数据流,jpeg以FF D8开头,FF D9结束。
85+
86+
87+
其实很简单,就是判断前面3个字节是什么,如果发现是FF D8 FF开始,那就认为它是JEPG图片。(注意android不是根据后缀名来判断是什么文件的,当然你必须是图片的后缀名文件管理器才可以打开
88+
89+
90+
![Image](https://raw.githubusercontent.com/CharonChui/Pictures/master/jpeg_3.png?raw=true)
91+
92+
93+
94+
95+
### Exif是什么
96+
97+
98+
Exif(Exchangeable Image File可交换图像文件)就是用来记录拍摄图像时的各种信息:
99+
- 图像信息(厂商、分辨率等)
100+
- 相机拍摄记录(ISO、白平衡、饱和度、锐度等)
101+
- 缩略图(缩略图宽度、高度等)
102+
- gps(拍摄时的经度、纬度、高度等)
103+
104+
将这些信息按照JPEG文件标准放在图像文件头部。
105+
106+
107+
108+
109+
110+
111+
112+
113+
114+
115+
116+
117+

0 commit comments

Comments
 (0)