图像压缩

1、数字图像的压缩是实现图像存储和传输的基础,数字图像压缩目的: 节省图像存储容量;减少传输信道容量;缩短图像加工处理时间。

2、基本概念:

2.1 信息相关

在绝大多数图像的像素之间, 各像素行和帧之间存在着较强的相关性。从统计观点出发,就是每个像素的灰度值(或颜色值)总是和其周围的其它像素的灰度值 (或颜色值)存在某种关系,应用某种编码方法减少这些相关性就可实现图像压缩。

示例:在二值化图像中

 

2.2 信息冗余:从信息论的角度来看, 压缩就是去掉信息中的冗余

图像数据存在的冗余可分为三类:

2.2.1 编码冗余

由于大多数图像的直方图不是均匀(水平)的,所以图像中某个(或某些)灰度级会比其它灰度级具有更大的出现概率,如果对出现概率大和出现概率小的灰度级都分配相同的比特数,必定会产生编码冗余。

2.2.2 像素间的冗余

所谓“像素间的冗余”,是指单个像素携带的信息相对较少,单一像素对于一幅图像的多数视觉贡献是多余的, 它的值可以通过与其相邻的像素的值来推断。

2.2.3 心里视觉冗余

心里视觉冗余是指在正常的视觉处理过程中那些不十分重要的信息

 

3、保真度准则

3.1  客观保真度准则:当所损失的信息量可表示成原图像与该图像先被压缩 而后又被解压缩而获得的图像的函数时,就称该函数是基于客观保真度准则的

 

3.2 主观保真度准则:就是人来评价

 

4、变长编码

4.1 费诺码

看文字没看懂,其实看图挺好理解:

就是按1/ 2,来划分,一直划分到2个,上1下0

 

4.2 霍夫曼编码

就是哈夫曼树的编码,同数据结构

 

5、算术编码

看上面描述有点懵逼,不过来个例子还是可以理解的

low初始是0, range初始为1,a 从1到5 是一个循环迭代的过程

最终在low和high之间取一实数输出,但是我没搞懂这个编码是要干什么,经过wikipedia查看:

算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n < 1.0)的小数n。

所以在得到最终的一个实数后,可以进行解码,如上我们得到(0.07978 + 0.0816)/ 2 = 0.08069,已知a1到a4在0到1的范围,0.08069在a1的[0, 0.2)之间,所以解码的第一个是a1;

在[0, 0.2)之间又按概率分布,查看0.08069在a几的范围中再输出,那如何结束编码呢?可以在数据流中写入内部结束内容和其他途径(我也不知道还有啥途径,如果知道信息长度也可以)

 

6、变换编码

6.1 原理

6.2 实现

子图像的尺寸选择是有条件的:

变换系数:

系数选择:

可以用一个函数来选择

保留的系数越多,压缩率就越低

重建的图像公式为:

利用这个函数的截断功能就可以消除对求和贡献最少的系数;

那有哪几种变换呢?DCT用的最多

6.3 变换系数的量化和编码

1)区域编码

典型的区域编码模板

如何量化?

下面给出这2种量化表,用系数矩阵对应的值除以这表里的值

 

posted @ 2022-10-07 22:45  acwarming  阅读(324)  评论(0编辑  收藏  举报