位深
表示像素的数据长度
8bit范围【0,255】
10bit范围【0,1023】
灰度图像
每个像素点只有一个分量,表示亮度,8bit=0000 0000是黑色,8bit=0111 1111近白色,8bit=1111 1111是白色(值255)
彩色图像
每个像素点有多个颜色分量,每个颜色分量被称为一个通道(channel).图像中所有像素点的通道数是一致的。
每个分量都是一副图像,只是颜色不同。比如RGB图像,每个通道都是一个灰度图,每个像素点38=24bit.如果是ARGB,A是透明度,则每个像素点48=32bit。
一副RGB图像19201080像素=19201080*24bit=49766400bit,约6.22MB。
颜色空间
RGB和YUV=Y`CrCb
压缩算法
- 无损压缩:基于预测或熵编码的算法,比如PNG,BMP,GIF
- 有损压缩:基于变换和量化编码的算法,比如JPEG
游程编码:将一串连续的,重复的字符用简单的“数目+字符”表示。比如AAAACCBD=4A2C1B1D.
哈夫曼编码:一种特殊的二叉树,根据出现的频率构建,终端节点表示一种字符,右子节点(非终端节点)代表0,左子节点(非终端节点)代表1,从根节点(根节点不算在内)到中端节点的路径代表一种字符,比如110表示C;
字符串:"ABRACADABRA"
频率:C (1), D (1), B (2), R (2), A (5)
[根: 11]
/ \
A (0,5) [节点:6]
/ \
[节点:4] [节点:2]
/ \ / \
B(100,2) R(101,2) C(110,1) D(111,1)
说明:括号内为 编码:频率
JEPG格式压缩编码过程
- 转为YUV420
- 每个分量分成多个8像素*8像素的像素块。
- 每个像素块经过离散余弦变换(DCT)为值频域,并且根据量化表,量化成特定的值。
- 变化系数,直流分量系数通过DPCM编码后输出数据;或者交流分量系统则通过“之”字形扫描转换成一维数据,再通过游程编码后输出数据。
- 熵编码,比如哈夫曼编码等。
- 生成压缩码流输出。