压缩算法
简介
压缩算法是通过去除冗余信息来达到的,在图像压缩算法中一般是通过去除编码冗余、像素间冗余、心理视觉冗余这三者之间的一个或多个来完成的。
编码冗余:当所用码字大于最佳编码长度的时候出现的冗余
像素间冗余:因为图像数据间是存在相关性的,所以像素间的数据可以通过一定的表达式来进行转换从而达到数据压缩的目的
心理视觉冗余:也就是视觉上不重要的信息,因为人眼对色彩信息的敏感度是有限的
在图像压缩算法中可以采用哈夫曼编码的方式对编码冗余的信息进行压缩,可以采用预测的方式来减少像素间冗余,可以采用量化的方式完成心理视觉冗余信息的去除
图像压缩方法按照压缩后的图像数据能否恢复为原图像可以分为两种压缩算法
有损压缩
无损压缩
有损压缩技术在图像压缩之后会有信息的损失,也就是信息熵的减少,从而导致压缩后的图像不能完整的恢复为原始图像,比如采用DCT、FFT的方式对数据进行处理。无损压缩技术在图像压缩的过程中不会有信息的丢失,所以压缩后的图像可以完整的被恢复为原始数据。
图像压缩的过程如下图所示
其中映射变换器是将原始输入图像进行变换从而降低像素间的冗余,通常进行变换后的数据是不可以直接进行显示的。量化器根据预定义的逼真度标准来减少映射变换器输出的精确性,以便试图去除心理视觉的冗余信息,这个过程是不可逆的,也是区分无损压缩和有损压缩的关键步骤,如果在量化的过程中有信息的丢失,那么就是有损压缩,若量化过程中没有信息的丢失那么就是无损压缩,最后的编码器用于减少编码冗余。
常见的压缩算法有:DEFLATE、LZW、JPEG、JPEG 2000、JPEG LS等。
图像编码方法
常见的图像编码方法有三种
预测编码
统计编码
变换编码
预测编码
图像相邻的元素之间有很高的相关性,预测编码就是利用图像相邻元素之间时间和空间上的相关性进行编码。通过待编码数据的相邻数据来推断当前待编码数据的预测值,然后计算预测值和实际值之间的差值,最后对差值进行编码。JPEG LS就使用了这种方式来提高编码效率。
统计编码
统计编码是通过对数据进行统计之后,将出现概率大的数据用较少的位宽来表示,出现概率小的数据用较大的位宽来表示,从而使得平均码字长度尽可能的短来达到数据压缩的目的。在不同的压缩算法中使用的统计编码方式不太相同,比如在JPEG算法中在哈夫曼编码的方式降低平均码字长度,在JPEG LS算法中则采用的是Golomb-Rice编码和游程编码的方式。
变换编码
变换编码是指将空间域描述的数据变换到频域从而减少图像像素间的相关性,常用的方法有离散余弦变换(Discrete Cosine Transform, DCT),离散傅里叶变换(Discrete Fourier Transform, DFT),小波变换(Wavelet Transform)等。在JPEG 2000中采用了DWT的方式来进行变换编码。
审核编辑:黄飞
-
FPGA
+关注
关注
1625文章
21663浏览量
601666 -
变换器
+关注
关注
17文章
2087浏览量
109118 -
图像压缩
+关注
关注
1文章
60浏览量
22370 -
压缩算法
+关注
关注
1文章
21浏览量
10488
原文标题:FPGA压缩算法(一) -- 简介
文章出处:【微信号:FPGA开源工坊,微信公众号:FPGA开源工坊】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论