图像是信息传输的重要载体,随着社会科技进步,人们对图像质量要求越来越高,尤其是在航空航天、视频安防等领域,对图像传输与存储[1]的要求更高。因此在提高传输带宽的同时,对图像压缩的相关研究也同步开展,尤其是JPEG系列的发展[2]。2009年,JPEG XR(JPEG eXtended Range)正式发布[3],其采用重叠双正交变换(LBT)算法,复杂度与JPEG的离散余弦变换(DCT)相当,而还原后图像质量却能与采用较为复杂的离散小波变换(DWT)的JPEG 2000相媲美[4],因而得到了广泛研究,具有很好的应用前景。

传统基于的LBT变换都是线性提升结构,没有时序约束,系数变换存在亚稳态,数据码流不受控制,而且线性提升结构存在大量的乘法器、除法器和移位寄存器,对FPGA硬件资源消耗极大。本文充分利用FPGA的时序约束特性,将LBT的变换算子时序化,通过握手信号与前后控制模块通信;为节省FPGA内部空间,设计了一种单RAM,使用通道选择器,根据控制指令,在不同的变换模块工作时,打开其与RAM之间的通道并关闭其他通道,根据变换顺序对RAM进行循环交叉读写,避免变换系数出现混乱;控制模块根据变换顺序,实时计算系数地址进行读写操作,该设计实现了FPGA时序特性的LBT变换。

1 JPEG XR的LBT原理与分析

1.1 LBT变换的组成

JPEG XR编码流程与JPEG和JPEG2000类似,但其可根据图像内容实时调整处理算法,即自适应,包括图像预处理、LBT变换、量化、自适应预测、自适应扫描和自适应熵编码[5],如图1所示。

JPEG XR除具有较强自适应编码能力外,最大不同就在于其采用LBT变换,既解决了JPEG的块效应问题,又避免DWT复杂算法,这是其相较前两者最明显的优势[6]。LBT包括2个子变换,分别为用于消除图像块效应的图像滤波变换(POT)和将图像从空间域变换到频域的图像核心变换(PCT)[7]

1.2 LBT的变换算子及其原理

对于单通道图像,LBT的2个子变换又包含若干个变换算子。其中,POT又分为2类,分别是4点滤波(Tpre4)和4×4滤波(T4mul4),其中T4mul4由5个变换算子构成,分别是:

(1)2×2哈达玛滤波变换[8](Hadamard Transform),算子符号为THEnc

(2)2点前向缩放,算子符号为TS

(3)2点前向旋转,算子符号为TR

(4)2×2前向旋转,算子符号为TOddOdd

(5)2×2哈达玛变换,算子符号为TH

而Tpre4只包含上述的TS和TR,但它本身也有部分运算[9]

PCT只有一种,具有3个变换算子,分别是:

(1)2×2哈达玛变换,算子符号为TH,与T4mul4的TH相同;

(2)一维旋转变换,算子符号为TOdd

(3)二维旋转变换,算子符号为TOddOdd,与T4mul4的TOddOdd不同。

1.3 LBT的变换在图像上的分布

在JPEG XR中,图像若没有被分割成瓦片(Tile)进行处理,LBT操作范围是整个图像;若图像被分割成Tile,那LBT操作范围就是整个Tile,处理完一个Tile再去处理下一个[10]。为方便下文阐述,将图像或Tile统称为处理对象。其中,POT在处理对象边缘进行Tpre4,在其内部进行T4mul4;而PCT的操作范围始终是整个处理对象[11],图2是LBT的POT和PCT在处理对象上的分布示意图。

2 FPGA时序特性的变换算子

2.1 与传统变换的对比分析变换算子的封装

本文参考ITU编码建议书LBT各个子变换伪代码,提出了基于FPGA时序结构的优化与改进。表1是建议书的TH算子伪代码和FPGA时序特性的TH算子对比,Step代表FPGA状态机中的一个状态,其后面的计算是该状态内的数据处理过程,而建议书伪代码一行计算就代表一个步骤,可以发现,FPGA时序特性下的TH算子运算步数少于建议书伪代码,这就减少了LBT变换运算时间。

2.2 变换算子的封装

图3是TH算子模块,控制模块将要进行变换的系数送到输入端口后向TH发送请求,TH收到请求接收数据向控制模块发送应答;TH变换完成将数据送到输出端口,向控制模块发送处理完成请求,控制模块收到请求接收数据并向TH发送接收完成应答。至此,TH变换任务完成,等待下一组变换数据输入请求。

3 FPGA设计与逻辑分析

3.1 FPGA顶层模块设计

系统采用FPGA内部ROM作为模拟图像源,用MATLAB将图4所示的6个64×64像素测试图生成存储初始化文件存放到ROM中。图5是FPGA的顶层模块设计,包括模拟源、变换控制、RAM及通道控制和并转串模块。

3.2 LBT变换模块设计

在变换模块中,又分为单RAM循环结构的LBT变换控制器和RAM通道选择器,后者根据变换控制器的通道控制指令对各个子变换与RAM之间的通信进行交叉控制。变换控制器根据LBT的4个子变换(第一阶段的POT和PCT、第二阶段的POT和PCT)分为4个部分,每个部分都有一个指令来控制通道选择器。因为RAM读写是不能同时进行的,所以要考虑RAM控制器对通道控制指令的交错,即交叉对RAM进行操作,因此不能同时打开RAM通道,图6是RAM读写模块对通道控制的时序分析,为了避免两个控制模块同时打开RAM通道,在写模块关闭通道后,读模块空等一个周期(状态)再打开RAM通道。

3.3 FPGA控制模块工作流程

图7是POT读模块流程图,按照先处理图2中最上侧Tpre4;再按每4行中先处理左边2次Tpre4、中间的T4mul4、右边2次Tpre4;最后再处理最下侧Tpre4的先后顺序从ROM中读取图像数据。POT读模块处理完4个Tpre4或16个T4mul4就会向POT写模块发送最后一个变换系数地址,后者接收到POT变换后的系数,再按该地址逆序将结果保存到RAM中。PCT读模块收到POT结束指令后,开始从RAM中按光栅扫描顺序读取4×4个系数进行PCT变换,如图8所示。PCT读模块处理完成后就会向PCT变换写模块发送第一个变换系数的地址,后者接收到PCT变换后的系数后,再按光栅扫描顺序将变换结果保存到RAM,如图9所示。

4 FPGA仿真与结果分析

4.1 FPGA在线仿真

本文采用Signal Tap进行FPGA设计验证,图10是模拟源模块部分数据地址仿真,A中是第1到第4个系数,这也是第一次Tpre4的变换系数;B中是第一次T4mul4的16个变换系数。

以TR算子为例,图11是POT的TR算子变换仿真图,A中是控制模块发来的输入请求和TR算子的应答,B中是TR算子变换完成发出的请求和控制模块返回的应答。

图12是RAM控制模块工作仿真,A中是T4mul4模块向RAM写控制模块发送的写请求后,模块打开RAM通道控制器,在B中将POT变换结果写入RAM,在C中将通道关闭。通过Signal Tap进行仿真验证,表明FPGA时序约束下的LBT变换受控。

4.2 LBT变换结果对比分析

第二次PCT变换完成,整个LBT变换结束,此时RAM中存放最终的变换结果,并转串模块从RAM中读取且以9 600 b/s的速度通过CP2102发送到上位机串口调试助手;将数据保存为txt文件,使用MATLAB对数据进行重构。图13各分图中,左图是测试图MATLAB的LBT仿真结果,右图是FPGA的LBT处理结果。测试结果表明,FPGA的LBT变换结果与MATLAB仿真结果相似, FPGA时序结构的LBT变换基本实现。

5 结论

本文提出了一种基于FPGA时序特性的单RAM循环存储结构的LBT变换算法。相较于传统的线性提升结构,该算法能对变换过程进行实时控制,利用混合状态机按时序进行,避免出现码流混乱,最终得到了LBT变换结果。但由于该设计的系数精度不够,而且仅支持单通道图像变换,通过提高变换系数的精度和实现多通道图像(彩色图像)变换以提高LBT变换质量与速度将是下一步的研究方向。

参考文献

[1] 祁志恒,姜喆,张为.基于ADV212的雷达图像压缩传输系统[J].电子技术应用,2015,41(11):78-80,84.

[2] 张慧慧.基于FPGA的JPEG压缩编码器的设计与实现[D].太原:中北大学,2017.

[3] 刘致远,陈耀武.基于主观质量的JPEG XR量化参数选择[J].计算机工程,2014,40(1):239-245.

[4] HORVATH K,STOGNER H,UHL A.Effects of JPEG XR compression settings on iris recognition systems[C].Computer Analysis of Images and Patterns,International Conference,Caip 2011,Seville,Spain,August 29-31,2011,Proceedings.DBLP,2011:73-80.

[5] PAN C,CHIEN C,CHAO W,et al.Architecture design of full HD JPEG XR encoder for digital photography applications[J].IEEE Transactions on Consumer Electronics,2008,54(3):963-971.

[6] 邬春明,焦龙龙,张金强.基于图像纹理特征的JPEG-XR帧内预测技术[J].东北师大学报(自然科学),2016(1):54-59.

[7] IIDA K,KOBAYASHI H,KIYA H.Secure identification based on fuzzy commitment scheme for JPEG XR images[C].Signal Processing Conference.IEEE,2016:968-972.

[8] ZHONG G,CHENG L,CHEN H.Integer lapped biorthogonal transform[C].International Conference on Image Processing.IEEE,2001:471-474.

[9] MALVAR H S.Lapped biorthogonal transforms for transform coding with reduced blocking and ringing artifacts[C].IEEE International Conference on Acoustics,Speech,and Signal Processing.IEEE,1997:2421-2424.

[10] YU L.Evaluating and implementing JPEG XR optimized for video surveillance[D].Sweden:Linkopings University,2010.

[11] SUZUKI T,YOSHIDA T.Lower complexity lifting structures for hierarchical lapped transforms highly compatible with JPEG XR standard[J].IEEE Transactions on Circuits & Systems for Video Technology,2017,27(12):2652-2660.

作者信息:

顾泽凌,杨明远,丁红晖,衡 燕

(上海无线电设备研究所,上海200090)

6的变换_FPGA时序结构的LBT变换控制器设计相关推荐

  1. c++ hough变换代码_FPGA时序结构的LBT变换控制器设计

    图像是信息传输的重要载体,随着社会科技进步,人们对图像质量要求越来越高,尤其是在航空航天.视频安防等领域,对图像传输与存储[1]的要求更高.因此在提高传输带宽的同时,对图像压缩的相关研究也同步开展,尤 ...

  2. 从动态的角度分析DDR的时序结构

    从整体上了解了DDR的特性和静态图,包括原理.管脚图等.那么本章就要从动态的角度来分析时序结构,包括read/write的整个过程到数据返回发生了什么. 一,DRAM基本组成 对于DRAM,其主要由行 ...

  3. 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换

    从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅里叶变换到伽柏变换再到小波变换的 ...

  4. OpenCV中的霍夫线变换、概率霍夫线变换

    OpenCV中的霍夫线变换.概率霍夫线变换 1. 效果图 2. 原理 2.1 什么是霍夫变换? 2.2 什么是概率霍夫变换? 3. 源码 3.1 霍夫变换 3.2 概率霍夫变换 参考 这篇博客将介绍P ...

  5. python 视频 灰度 伽玛_Python 图像处理实战 | 图像的灰度非线性变换之对数变换、伽马变换...

    作者 | 杨秀璋 来源 | CSDN博客 责编 | 夕颜 头图 | 付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 本篇文章主要讲解非线性变换,使用自定义方法对图像进行灰度化处理,包 ...

  6. 【数字信号处理】线性时不变系统 LTI ( 判断某个系统是否是 “ 非时变 “ 系统 | 案例一 | 先变换后移位 | 先移位后变换 )

    文章目录 一.判断系统是否 " 非时变 " 1.案例一 ① 时不变系统 ② 先变换后移位 ③ 先移位后变换 ④ 结论 一.判断系统是否 " 非时变 " 1.案例 ...

  7. DataScience:深入探讨与分析机器学习中的数据处理之非线性变换—log对数变换、sigmoid/softmax变换

    DataScience:深入探讨与分析机器学习中的数据处理之非线性变换-log对数变换.sigmoid/softmax变换 目录 深入探讨与分析机器学习中的数据处理之非线性变换 log对数变换 sig ...

  8. Go大型项目实战:项目结构、配置管理、API设计

    著名编程语言排名指数TIOBE近期发布了2021年各大主流编程语言最终排名,与2020年相比,2021年Go从第14名上升到第13名,继续保持稳健的发展节奏.并且TIOBE配文中认为,除了Go和Swi ...

  9. 离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习

    离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习 说在前边 最近复习\(DSP\)的时候,发现了一个号称专门针对离散实序列的变换,经分析总运算量为普通\(FFT\)的几乎一半,而且完全没有复数. ...

最新文章

  1. PagingAndSortingRepository接口与 JpaRepository接口
  2. sort--排序函数
  3. 8G+256G固态笔记本,结合这款IDEA插件,写代码飞起!
  4. python 惰性序列_讨论 - 廖雪峰的官方网站
  5. python opencv屏幕找图_使用Python+OpenCV进行图像模板匹配(Match Template)实例-找到百度首页按钮并点击...
  6. 02-再探MySQL数据库
  7. 什么是 IP 地址?
  8. springboot注释详解
  9. 各路技术牛人都推荐的书
  10. 高等代数期末考试题库及答案_高等代数3学时试题题目及答案,课程2021最新期末考试题库,章节测验答案...
  11. 利用matlab来进行路径规划,matlab路径规划系列
  12. 思科路由器 密码设置和恢复
  13. 世界名车各种图标及文字说明
  14. 凯酷键盘KC-84 大写和ctrl 功能调换问题
  15. pscs6安装序列号
  16. 机器学习中的数学基础--特征函数与中心极限定理,统计学基本概念,极大似然估计,最大后验估计
  17. 【计算机图形学】小白谈计算机图形学(五)
  18. 21世纪最实用的智能营销软件是哪个
  19. 大数据Hadoop、Hive、Kafka、Hbase、Spark等框架面经
  20. 观战朝鲜vs巴西后,给中国足球的两点建议

热门文章

  1. 为什么Java要把字符串设计成不可变的
  2. OpenWRT的ROM固件内置软件包修改与定制
  3. 关于Installshield里一些常见问题的解答—艾泽拉斯之海洋女神出品
  4. jquery投色子动画
  5. [九度][何海涛] 数组中出现次数超过一半的数字
  6. ARP病毒查找与防范
  7. 双花证明已实现,BCH安全的0确认交易还远吗?
  8. 我需要运行自己的节点吗?
  9. tomcat与iis公用80端口(已经发布.net项目现在开发Java项目时tomcat在eclipse中localhost:8080打不开问题)...
  10. 一步步教你轻松学朴素贝叶斯模型算法理论篇1