当前位置:首页 > 娱乐

【郭洺宇】Vivado HLS嵌入式实时图像处理系统的构建与实现

张艳辉1、郭保宇2、何斌1

(1 .)。北京化学大学信息科学与技术学院,北京100029;北京卫星环境工程研究所,北京100094)

传统的基于CPU、GPU和DSP的处理平台难以满足图像实时处理要求,但FPGA在并行图像处理方面具有独特的优势,在性能和成本之间提供了更灵活的选项。通过Xilinx最新的Vivado HLS工具,设计了实现可变参数的拉普拉斯算子图像滤波算法,并在ZYNQ-7000SoC上构建了可视化的实时嵌入式图像处理系统。实验结果表明,系统可以实现多种图像处理算法,很好地满足了图像处理的实时性、高性能、低成本要求,为今后高性能图像处理系统的设计和实现提供了良好的借鉴。

Vivado HLS;图像处理拉普拉斯算子;ZYNQ-7000;嵌入式Linux;Qt

近年来,随着成像技术的不断发展和图像应用领域的扩大,数字图像中包含的数据量不断增加,图像处理算法变得越来越复杂[1]。目前广泛使用的数字信号处理器(DSP)和图形处理器(GPU)技术在图像处理方面具有价格低廉、易于编程的优点,但在性能、功耗方面,许多研究表明,使用FPGA实施图像处理可以获得更高的计算性能。因此,从计算能力、实时性的角度来看,FPGA是嵌入式图像处理应用程序的理想选择[2]。

Xilinx的ZYNQ-7000系列集成了最新的ARM Cortex-A9双核处理器和高性能FPGA。作为下一代可编程片上系统,ZYNQ-7000 SoC非常适合计算密集型、功能丰富的嵌入式应用程序设计。Xilinx的Vivado HLS工具将C语言、C语言和系统C语言引入可编程逻辑设计中,无需使用传统的硬件描述语言编写复杂的程序,从而大大加快IP的生成,并提供处理算法的灵活性[3]。使用Vivado HLS工具设计实现可变参数的拉普拉斯运算符图像过滤算法,将生成的IP添加到ZYNQ-7000的可编程逻辑部分,以处理OV7670相机收集的图像数据。将Ubuntu Linux台式机系统迁移到ZYNQ-7000双核处理器,使用Qt工具编写上位机人机交互控制界面和下位机显示程序,实现嵌入式Linux可视化实时图像处理系统。

如ZYNQ-7000内置数字图像处理系统结构框图1所示,系统主要由OV7670摄像头、ZYNQ-7000 SoC、数据存储设备DDR3、HDMI显示器和上位机组成。ZYNQ-7000 SoC是整个实时处理系统的核心,包括处理系统(PS)和可编程逻辑(PL),PS部分主要包含双armcortex

1.1 PL部分实施功能

可编程逻辑PL部分实现的主要功能如下:

(1)从OV7670相机获取图像数据,并通过视频内存直接访问(VDMA)将其存储在DDR3内存芯片中。

(2) DVDR3中存储的图像数据通过VDMA以可变参数传输的拉普拉斯滤波算法IP模块处理图像,处理的图像数据通过VDMA传输到DDR3重新发送到。

(3)PL的显示模块与VDMA一起构成嵌入式Linux的硬件显示设备。

图像采集使用OV7670摄像头,OV7670图像传感器体积小,工作电压低,具有单片VGA摄像头和图像处理器的所有功能。SCCB总线控件使您能够输出整个帧、子采样、窗口导入等多种分辨率的8位图像数据。旨在使用RGB565、VGA640480作为输出格式,通过SCCB控制模块将相应的寄存器值写入寄存器,并将收集的数据通过AXI4流接口协议写入DDR3。该设计通过硬件描述语言实现了SCCB图像控制和图像接收模块设计。

1.2 PS部分实施的功能

处理系统PS部分实现的主要功能如下:

(1)运行Ubuntu台式机系统,为上层应用程序提供操作系统支持。

(2)编写的VDMA、HDMI图像显示驱动程序调用和PL数据交互、桌面系统显示功能。

(3)实现Qt编写的上层应用程序和网络编程等。

如图1所示,VDMA提供了PL和DDR3存储的高速数据传输机制。VDMA有两个数据端口:MM2S和S2MM。MM2S和S2MM的最大数据位宽度均为64位,缓存深度为512 B[4]。其中S2MM端口将图像数据从PL传输到DDR3存储,MM2S端口将图像数据从DDR3存储传输到PL。ARM处理器可以通过通用接口AXI_GP控制VDMA。

2拉普拉斯算子滤波算法

/p>

2.1 拉普拉斯算子滤波算法

拉普拉斯算子是图像处理技术中常见的一种增强算子,因为具有旋转不变性、实现简单等特点,被广泛地应用于图像锐化和高频增强等算法中。图像信号中,高频分量一般对应于图像的边缘轮廓,采用拉普拉斯算子的图像滤波算法能够实现图像锐化、增强图像轮廓清晰度的效果。拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性。一个二维图像函数的拉普拉斯变换是各向同性的二阶导数,定义为:

该方程的离散形式为:

拉普拉斯算子可以表示成模板的形式,如图2(a)所示,图2(b)表示其扩展模板,图2(c)和图2(d)则分别表示其他两种拉普拉斯的实现模板。

2.2 Vivado HLS实现算法编写

Vivado HLS利用C语言、C++语言以及系统C语言提供的高级结构来提高抽象层次,提供数据原语方便使用基础硬件构建IP模块。与使用RTL相比,Vivado HLS代码更加紧凑,可读性和可维护性更加优良,可以更轻松地实现各种接口协议,从简单的FIFO接口到完整的AXI4 Stream,满足不同模块间的数据通信。

Vivado HLS实现拉普拉斯算法流程如图3所示。数据处理按照图中箭头依次进行,数据在单个单元中并行运算或在不同单元间并行移动。每个时钟周期AXI4 Stream接口将24 bit的一个像素数据送入算法模块中,先经过灰度处理,然后存入2×640的行缓存中,行缓存和新的数据构成3×3的窗口数据,窗口的9个数据和AXI_GP接口传输进来的拉普拉斯算子参数进行运算得到一个新的8 bit像素数据送回到DDR3中。

编写的算法在XC7Z010器件上的资源占用率如表1所示,可以看出,只用了PL很少的资源便实现了图像滤波算法。

2.3 Qt实现参数控制程序

良好的人机交互功能是嵌入式系统重要的一部分[5]。设计采用Qt Creator开发工具在PC上实现了控制端应用程序,如图4所示。PC通过以太网与下位机进行连接,在控制端输入不同的拉普拉斯算子,系统会产生不同的滤波效果,并将滤波后的图像显示在下位机的HDMI显示器上。

3 设计仿真与系统测试

3.1 Vivado HLS仿真

Vivado HLS除了将高效的编程代码转换为IP以外,还提供了另一项重要功能:C语言仿真和C/RTL协同仿真。C语言仿真中C/C++的编译和执行与常见的C/C++程序相同,具有良好的可读性和高效性。C/RTL协同仿真会根据C/C++测试平台自动生成RTL测试平台,设置并执行RTL仿真,检查实现方案的正确性。C语言仿真测试代码如下:

IplImage* src=cvLoadImage("lena.jpg");//加载测试图片

AXI_STREAM src_axi, dst_axi;//定义流数据类型变量

IplImage2AXIvideo(src, src_axi);

//图片转换为流数据类型

Laplasian_fil(&lap00,&lap01,&lap02,&lap10,&lap11,

&lap12,&lap20,&lap21,&lap22,src_axi, dst_axi);

//滤波算法主函数

AXIvideo2IplImage(dst_axi, dst);

//流数据类型转换为图片

cvSaveImage("lena_re;, dst);//保存图片

测试程序首先将本地用于测试的图片转换为AXI4 Stream接口协议数据,并设置拉普拉斯算子的值,然后将图片数据和拉普拉斯算子以参数的形式送入到图像滤波算法中,滤波后的图片会以jpg的形式存入本地。测试原图片及生成图片如图5所示。

3.2 系统测试

测试系统采用Xilinx公司提供的ZyBo开发板,该开发板搭载了XC7Z010主芯片,扩展外设通过PMOD接口与OV7670摄像头进行连接,PC通过板载以太网接口和串行接口与ZyBo通信,HDMI显示运行的Ubuntu桌面系统。

控制端输入图2中不同的拉普拉斯算子得到的处理结果如图6所示,结果完全满足每秒30帧、RGB640×480格式图像实时滤波的要求。

4 结论

基于ZYNQ-7000异构架构的图像处理系统不但可以实现嵌入式操作系统相关的任务,如图形界面、用户输入、网络、DDR3控制等,还可以提供高性能实时图像处理的功能[6]。采用Xilinx最新的Vivado HLS工具进行FPGA高层次设计对图像算法进行加速,能够有效提高设计效率,并且能够快速生成工业标准的IP核,有利于进一步实现系统集成。设计的实验和验证结果表明了基于ZYNQ-7000异构架构和Vivado HLS工具的实时图像处理系统易于移植,便于针对特定应用定制,为未来的高性能图像处理提供了较高的工程应用与参考价值。

参考文献

[1] 何宾.Xilinx FPGA设计权威指南[M].北京:清华大学出版社,2014.

[2] 陆佳华,江舟.嵌入式系统软硬件协同设计实战指南[M].北京:机械工业出版社,2013.

[3] 陆启帅,陆彦婷,王地.Xilinx Zynq SoC与嵌入式Linux设计实战指南[M].北京:清华大学出版社,2014.

[4] KARRAS K,HRICA J.Vivado HLS推动协议处理系统蓬勃发展[DB/OL].(2014-09-16)[2016-03-01].http:.

[5] 梁柱华,顾新.嵌入式Linux实时性的研究[J].电子科技,2005(11):57-60,64.

[6] 焦再强.基于Zynq-7000的嵌入式数字图像处理系统设计与实现[D].太原:太原理工大学,2015.

AET会员年终大福利!

1.《【郭洺宇】Vivado HLS嵌入式实时图像处理系统的构建与实现》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【郭洺宇】Vivado HLS嵌入式实时图像处理系统的构建与实现》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/2507896.html

上一篇

【风刑软件网】分娩是战斗,身体和血缘是战场

下一篇

【李公公】大家都说他有胡子就正派,没有胡子就恶棍,你们赞成吗?

郭洺宇曝最新大片 眼神霸气彰显硬汉本色

  • 郭洺宇曝最新大片 眼神霸气彰显硬汉本色
  • 郭洺宇曝最新大片 眼神霸气彰显硬汉本色
  • 郭洺宇曝最新大片 眼神霸气彰显硬汉本色

郭洺宇个人资料简介 郭洺宇人物简历

人物基本资料一、郭洺宇个人资料简介郭洺宇个人资料郭洺宇个人简介性别:男生肖:戌狗名字拼音:Guo 洺 Yu星座:双子座繁体:郭洺宇净身高:157.84公分网名:鸽说弟列精乎茫人物体重:115.04公斤民族:汉族最高学历:高专个人血型:AB型爱吃的食物:薯片鸡翅、麻酱...