此文作为我对于图像压缩编码处理的学习记录,包含一个较全面的视角以及一些技术细节的解读。文章脉络:本文首先科普图片“颜色空间”的基本概念,然后阐述了无失真信源编码的极限和信息压缩的基本原理,接着详细介绍了图像压缩的编码模型,最后列举了图像缩放算法的对比分析
颜色空间
在图像处理中,颜色空间用来描述和表示颜色的数学模型。不同的颜色空间有不同的特性和用途,选择合适的颜色空间可以让我们更好地理解和操作图像。
RGB
8bit位深时,每个值占一个字节,每个像素的颜色由3个0~255的值决定
CMYK
CMYK红黄蓝,区别于光的三原色红绿蓝
用于颜色、打印相关
YUV/YCbCr
亮度信息Y与色彩信息U、V
用于视频编码,可以兼容黑白图像
压缩的极限
信息熵:经常出现的符号使用短的编码,出现频率低的使用更长的编码。如果做到每个符号的代码长度等于它出现概率的对数,则编码总长度就是信息熵
香农第一定理指出:
一段信息的信息量是固定的,这称为这段信息的信息熵
无论怎么压缩,信息熵是无失真信源编码的极限值
若编码的平均码长小于信息熵值,必然发生差错(也就是有损)
编码模型
映射
分割子块 -> 转YUV颜色空间 -> 去中心/预测 -> DCT
利用“人眼对亮度更为敏感”,将图像从RGB模型转为YCbCr模型,然后再分别对亮度矩阵、色度矩阵进行映射,保留尽量多的亮度信息
去中心/预测:
jpeg:去中心化(所有像素值减去128)
webp:通过帧内预测或者帧间预测去除空间冗余和时间冗余,从而得到一个像素值相比编码块小很多的残差块
映射器:常见如 DCT (离散余弦变换)
映射后产生优势:
高低频信息分离,低频信息在左上角,高频信息数量多且人眼不敏感
利于后续通过量化将大部分高频信息置为0
量化
让变换块的系数都同时除以一个值(QStep量化步长,对应QP量化参数)
QP值越大,清晰度损失越大
熵编码
去除信息熵冗余。在出现连续多个0像素的时候压缩率会更高
方法:Z排列、哈夫曼编码
缩放算法
插值算法
做法
优点
缺点
最近邻插值
将目标像素映射到原图像位置,取周围4个像素离得最近的像素值
速度快
效果差,锯齿
双线性插值
与原像素点距离作为权重,水平和竖直分别计算得到像素值
效果好
速度慢
双三次插值
16个像素点复杂计算
效果最好
速度最慢