自适应算术编码的FPGA实现
[11-20 16:15:11] 来源:http://www.88dzw.com FPGA 阅读:8956次
文章摘要:编码器在实现编码的整个过程中按照耦合弱、聚合强的原则分为四个模块:修改码表、计算确定区间、并行编码、串行输出。四个模块相对独立,通过输入、输出信号使其构成一个整体。系统的顶层结构如图2所示。 3.2 码表的设计及修改 自适应算术编码器可以在许多场合中得到应用。本文实现的自适应算术编码器应用在采用6符号对小波变换系数进行零树编码的小波域视频编码中[3],因此设计的码表中含有六个符号。这样根据自适应算术编码的基本原理,将区间分成六个子区间,整个区间含水量有七个分割点。所以码表可以用七个8位寄存器表示。初始时设定等概率,这时七个寄存器可以顺序地存储0到6这七个数,即每个子区间的数值为1。随着符号不断
自适应算术编码的FPGA实现,标签:fpga是什么,fpga教程,http://www.88dzw.com编码器在实现编码的整个过程中按照耦合弱、聚合强的原则分为四个模块:修改码表、计算确定区间、并行编码、串行输出。四个模块相对独立,通过输入、输出信号使其构成一个整体。系统的顶层结构如图2所示。
3.2 码表的设计及修改
自适应算术编码器可以在许多场合中得到应用。本文实现的自适应算术编码器应用在采用6符号对小波变换系数进行零树编码的小波域视频编码中[3],因此设计的码表中含有六个符号。这样根据自适应算术编码的基本原理,将区间分成六个子区间,整个区间含水量有七个分割点。所以码表可以用七个8位寄存器表示。初始时设定等概率,这时七个寄存器可以顺序地存储0到6这七个数,即每个子区间的数值为1。随着符号不断地输入,自适应地修改码表,并且在修改码表的过程中时刻要保持寄存器中的数值是递增的。
修改码表时,首先判断输入符号,确定其所在区间,同时为后续模块输出该子区间的两个端点值l_count和h_count以及码表的最后一个端点值scale,然后进行码表的修改:将当前符号所在区间之后的所有端点值都加1,即当前区间及后面所有子我间的h_count=h_count+1,这样即完成了码表的修改。在数值不断累加过程中,寄存器中的数值为255时,需要对每一个寄存器中的值都取半,并同时对相邻的两个寄存器中的值进行比较,时刻保持数值是递值的。这样,处理前后的概率十分接近,对压缩比影响不大。
修改码表模块在输出h_count、l_count和scale之后,后面的计算子区间的模块即可进行计算;而修改码表模块在输出h_count、l_count和scale之后,亦可进行码表的修改。因此,这两个操作可以采用并行处理的方法实现,极大地节省了所用的时钟周期,相应地提高了速度,达到了优化的目的。表3给出了输入符号为3(对应于寄存器2与寄存器3之间的区间)时码表的修改过程。
表3 码表修改前后对照表
寄存器 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
修改前 | 0 | 4 | 34 | 56 | 77 | 112 | 233 |
修改后 | 0 | 4 | 34 | 57 | 78 | 113 | 234 |
修改前 | 0 | 23 | 54 | 56 | 57 | 234 | 255 |
修改后 | 0 | 11 | 27 | 28 | 29 | 117 | 127 |
《自适应算术编码的FPGA实现》相关文章
- › 自适应算术编码的FPGA实现
- 在百度中搜索相关文章:自适应算术编码的FPGA实现
- 在谷歌中搜索相关文章:自适应算术编码的FPGA实现
- 在soso中搜索相关文章:自适应算术编码的FPGA实现
- 在搜狗中搜索相关文章:自适应算术编码的FPGA实现