something about...JPEG
something about...JPEG
wuliwasomething about…JPEG
一些色彩空间(色彩模型):
- RGB:红绿蓝,通过三原色不同的配比表示不同的颜色,通常用于显示屏
- CMYK:用青色、品红、黄色、黑色四组颜色数值表示色彩,经过四种颜色不同配比显示不同色彩,常用于印刷
- YUV(YCbCr):JPEG编码使用的色彩模型,拥有三个分量,Y(亮度)、Cb(彩度蓝)、Cr(彩度红),
人眼工作机制:
人眼内含有视锥细胞和视杆细胞,前者具有感知颜色的能力,后者具有感知亮度的能力,通常眼中视杆细胞数量相对较多,因此对亮度的敏感程度高于色彩的的敏感程度。JPEG利用该特性,在压缩图像时将亮度和颜色分开处理。
JPEG压缩过程
- RGB -> YUV(BT.601标准):对每个像素点的RGB三个数值执行如下变换(该步骤结束后图像大小不变):
- Y = 0.299*R + 0.587*G + 0.114*B
- Cb = -0.1687*R - 0.3313*G + 0.5*B + 128
- Cr = 0.5*R - 0.4187*G - 0.0813*B + 128
- 色度抽样:对每个像素点的Y、Cb、Cr三个分量采取
Y:Cb:Cr=4:2:0的分量,即Y分量全采样,对CbCr分量进行1/4取样(2:0并不是Cb分量取一半而Cr不取,而是二者间隔取样,奇数行取Cb分量,偶数取Cr)。原本像素数为N的图片大小(字节数)为3N,经过该步骤后为1.5N,此为第一次压缩,称为缩减采样。 - 离散余弦变换(DCT)+量化:在JPEG算法中图像被分成了8*8的像素组,每个像素组的Y、Cb、Cr分量的数据都要单独进行处理。先进行电平偏移(-128),这样像素值的范围就从
0~255变为-128~127,再用离散余弦变换进行频域编码,得到DCT系数。将DCT变换后的临时结果,除以各自量化步长(量化表)并四舍五入后取整,得到量化系数。注:JPEG存在两张量化表,色度量化表的值普遍更大,这意味着色度通道的高频信息会被更激进地丢弃。
亮度量化表(Luminance)色度量化表(Chrominance)1
2
3
4
5
6
7
816 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 991
2
3
4
5
6
7
817 18 24 47 99 99 99 99
18 21 26 66 99 99 99 99
24 26 56 99 99 99 99 99
47 66 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99 - zigzag排列。观察得到的最终矩阵,左上角至右下角连续的0数量上升,从左上角开始,以Z字形来回穿梭,直至经历矩阵中所有数字到达右下角,该排列称为zigzag排列。
- 用熵编码技术对数据进行编码。排列后得到的数据尾段出现大量连续的0(哈夫曼编码中在JPEG有一个EOB字段,表示从字段开始后续全为0),然后再根据哈夫曼编码进行压缩。
- 以上从DCT到哈夫曼编码的过程是对一个8*8像素组压缩编码的过程,将全图像每个8*8像素组依次进行编码即可压缩整个图像。
评论
匿名评论隐私政策
TwikooWaline
✅ 你无需删除空行,直接评论以获取最佳展示效果






