基于FPGA的无损图像压缩系统设计
编者按: 摘要:本文简要介绍了图像压缩的重要性和常用的无损图像压缩算法,分析了快速高效无损图像压缩算法(FELICS)的优势,随后详细分析了该算法的编码步骤和硬件实现方案,最后公布了基于该方案的FPGA性能指标。和其他压缩算法相比该方案可极大地减小无损图像压缩系统所需的存储空间和压缩时间。 引言 随着信息技术的巨大革新,数据存储和传输开始在人类生活中变得越来越重要,数据压缩技术因而应运而生,它不仅能减少数据存储所需的空间还可以缓解传输带宽的压力。数据压缩可以分为有损压缩和无损压缩两种,其中有损压缩技
依照当前像素点P位于区间[L,H]的位置信息,分为三种情况采用不同的编码方式:
If (L≤P≤H) 选用修正的二元编码,并用1比特’0’来表示P落于[L,H]内,残余值R=P-L;
If (P≤L) 选用GOLOMB-RICE编码,并用2比特’10’表示P落于小于下界L的区间内,残余值R=L-P-1;
If (H≤P) 同样选用GOLOMB-RICE编码,并用2比特’11’表示P落于大于上界H的区间内,残余值R=P-H-1。
1.2 修正的二元编码
在修正二元编码的编码区间[L,H]内,中间部分和两边部分相比,有像素点出现的概率要略高一些,所以对二进制编码进行修正,对中间部分像素点的残余值R赋予较短的编码,对两边部分像素点的残余值R赋予较长的编码。例如当△为5时,P值的可能值为0、1、2、3、4、5。在编码时,将处在区间中央的2、3分别编码为00和11,而将0、1、4、5分别编码为110、111、100和101。
1.3 GOLOMB-RICE熵编码
GOLOMB-RICE熵编码是GOLOMB编码的一种特殊情况,属于指数编码的一种。FELICS算法中像素点概率分布模型在小于下界L和大于上界H的部分是以指数形式分布的,符合GOLOMB-RICE编码的适用范围,因此选用这种编码方法。编码步骤如下:
(1)选定参数K
在整幅图像编码开始之前,建立一个U×V×T比特大小的累加表,其中U,V和T分别代表背景值Δ的个数、备选K值的个数和每一个K值下累计编码的长度。在每一次进行GOLOMB-RICE编码之前,按照Δ的数值定位到累加表的相应行,选出累计编码长度最短的K值作为当前像素残余值GOLOMB-RICE编码的K值。
(2)分别确定一进制和二进制编码
一进制编码:unary=R/2K的整数部分;
二进制编码:binary=R/2K的余数部分;
最终的GOLOMB-RICE编码由三部分组成:unary个’1’,binary的二进制形式和1比特’0’,其中’0’置于一进制编码和二进制编码之间,作为解码时的标志位。
(3)更新累加表
编码完成之后要依次用备选的K值对残余值R进行GOLOMB-RICE编码,计算出编码的长度并累加到累加表中K值相应的位置处,以用于后续像素点进行GOLOMB-RICE编码时K值的选取。
2 压缩系统硬件设计
设计采用 4 级流水线结构,系统只有一个主时钟CLK作为工作时钟。硬件实现包括控制单元、上下文模型选取单元、预测单元、熵编码单元和并串转换单元,硬件结构框图如图 4。

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码