FPGA压缩算法 (一)

压缩算法

简介

压缩算法是通过去除冗余信息来达到的,在图像压缩算法中一般是通过去除编码冗余、像素间冗余、心理视觉冗余这三者之间的一个或多个来完成的。

  • 编码冗余:当所用码字大于最佳编码长度的时候出现的冗余
  • 像素间冗余:因为图像数据间是存在相关性的,所以像素间的数据可以通过一定的表达式来进行转换从而达到数据压缩的目的
  • 心理视觉冗余:也就是视觉上不重要的信息,因为人眼对色彩信息的敏感度是有限的

在图像压缩算法中可以采用哈夫曼编码的方式对编码冗余的信息进行压缩,可以采用预测的方式来减少像素间冗余,可以采用量化的方式完成心理视觉冗余信息的去除

图像压缩方法按照压缩后的图像数据能否恢复为原图像可以分为两种压缩算法

  • 有损压缩
  • 无损压缩

有损压缩技术在图像压缩之后会有信息的损失,也就是信息熵的减少,从而导致压缩后的图像不能完整的恢复为原始图像,比如采用DCT、FFT的方式对数据进行处理。 无损压缩技术在图像压缩的过程中不会有信息的丢失,所以压缩后的图像可以完整的被恢复为原始数据。

图像压缩的过程如下图所示

s[输入图像]-->A[映射变换器]-->B[量化器]-->C[编码器]-->D[压缩后的图像]

其中映射变换器是将原始输入图像进行变换从而降低像素间的冗余,通常进行变换后的数据是不可以直接进行显示的。量化器根据预定义的逼真度标准来减少映射变换器输出的精确性,以便试图去除心理视觉的冗余信息,这个过程是不可逆的,也是区分无损压缩和有损压缩的关键步骤,如果在量化的过程中有信息的丢失,那么就是有损压缩,若量化过程中没有信息的丢失那么就是无损压缩,最后的编码器用于减少编码冗余。

常见的压缩算法有: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开源工坊
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值