图片的压缩编码处理

此文作为我对于图像压缩编码处理的学习记录,包含一个较全面的视角以及一些技术细节的解读。
文章脉络:本文首先科普图片“颜色空间”的基本概念,然后阐述了无失真信源编码的极限和信息压缩的基本原理,接着详细介绍了图像压缩的编码模型,最后列举了图像缩放算法的对比分析

颜色空间

在图像处理中,颜色空间用来描述和表示颜色的数学模型。不同的颜色空间有不同的特性和用途,选择合适的颜色空间可以让我们更好地理解和操作图像。

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个像素点复杂计算 效果最好 速度最慢
posted on 2024-07-09 01:41  shui00cc  阅读(101)  评论(0)    收藏  举报