Xilinx_FPGA_Zynq设计中使用HLS实现OpenCV的开发流程.docx_第1页
Xilinx_FPGA_Zynq设计中使用HLS实现OpenCV的开发流程.docx_第2页
Xilinx_FPGA_Zynq设计中使用HLS实现OpenCV的开发流程.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

73305830Industry Control责任编辑:王莹XilinxFPGA/Zynq设计中使用HLS实现OpenCV的开发流程OpenCV Application with Xilinx FPGA/Zynq Using HLSDesign Flow郭丰收Xilinx公司处理器上实现视频处理性能低功耗高的限制,Zynq高性能可编程逻辑和嵌 入式ARM内核,是一款性能功耗优化 的图像处理集成式解决方案。1 Open CV中图像Ipl Image,CvMat, Mat 类型的关系和 VivadoHLS中图像hls:Mat类型O pen C V中常见的与图像操作 有关的数据容器有Mat, Cv Mat和 IplImage,这三种类型都可以代表和 显示图像,但是,Mat类型侧重于计 算,数学性较高。而CvMat和IplImage 类型更侧重于“图像”,OpenCV对 其中的图像操作( 缩放、 单通道提 取、图像阈值操作等)进行了优化。1.1 OpenCV中的Mat矩阵类型郭丰收:Xilinx DSP专家,主要从事在Xilinx器件上实现数字信号处理的系统方案、架构和算法应用。开源计算机视觉 (OpenCV) 被广泛用于开发计算机视觉应用,它包含 2500多个优化的视频函数的函数库并 且专门针对台式机处理器和GPU进行 优化。Xilinx VivadoHLS高层次综合 工具能够使用C/C+ 编写的代码直 接创建RTL硬件,显著提高设计生产 力,同时,Xilinx Zynq全可编程SoC 系列器件嵌入双核ARM Cortex-A9处 理器将软件可编程能力与FPGA的硬 件可编程能力实现完美结合,以低功 耗和低成本等系统优势实现单芯片 高的系统性能、灵活性、可扩展性, 加速图形处理产品设计上市时间。 OpenCV拥有成千上万的用户,而且 OpenCV的设计无需修改即可在Zynq 器件的ARM处理器上运行,但是利 用OpenCV实现的高清处理经常受外 部存储器的限制,尤其是存储带宽会成为性能瓶颈,存储访问也限制了功耗效率。使用Xilinx公司的VivadoHLS高级语言综合工具, 可以轻松实现 OpenCV C+视频处理设计到RTL代码 的转换,输出Zynq的硬件加速器或者 直接在FPGA上实现实时硬件视频处 理功能。同时,Xilinx公司的Zynq All- programmable SoC是实现嵌入式计算机视觉应用的好方法,解决了在单一图1 Zynq All-programmable SoC系统架构50www .ee 2014.2-3合刊摘要:首先介绍OpenCV中图像类型和函数处理方法,之后通过设计实 例描述在VivadoHLS中调用OpenCV库函数实现图像处理的几个基本步 骤,阐述从OpenCV设计到RTL转换综合的开发流程。本文网络版地址: /article/233872.htm 关键词:可编程;处理器;VivadoHLS;OpenCV;Zynq AP SOCDOI: 10.3969/j.issn.1005-5517.2014.2.01174工业控制责任编辑:王莹在OpenCV中,Mat是一个多维的密集数据数组。可以用来处理向量和 矩阵、图像、直方图等等常见的多维 数据。Mat类型较CvMat与IplImage类型来 说,有更强的矩阵运算能力,支持常 见的矩阵运算。在计算密集型的应用 当中,将CvMat与IplImage类型转化为 Mat类型将大大减少计算时间花费。1 .2 Ope n CV 中的CvMa t与 IplImage类型在openCV中,CvMat和IplImage类 型更侧重于“图像”,尤其是对其中 的图像操作进行一定程度的优化。 OpenCV没有向量(vector)的数据结 构,但当我们要表示向量时,需要用 矩阵数据表示。但是,CvMat更抽象, 它的元素数据类型并不仅限于基础数 据类型,而且可以是任意的预定义数 据类型,比如RGB或者别的多通道数 据。在OpenCV类型关系上,我们可 以说IplImage类型继承自CvMat类型, 当然还包括其他的变量将之解析成图 像数据。IplImage类型较之CvMat多了 很多参数,比如depth和nChannels。 IplImage对图像的另一种优化是变量 origin原点,为了弥补这一点,OpenCV 允许用户定义自己的原点设置。1.3 VivadoHLS中图像数据类型 hls:MatVivado HLS视频处理函数库使 用hls: Mat 数据类型, 这种类型 用于模型化视频像素流处理, 实质 等同于hls: s team 流的类型, 而 不是OpenCV中在外部memory中存 储的matri x矩阵类型。 因此, 在用VivadoHLS实现OpenCV的设计中,需要将输入和输出HLS可综合的视频设计接口,修改为Video stream接口, 也就是采用HLS提供的video接口可 综合函数,实现AXI4 video stream到VivadoHLS中hls:Mat类型的转换。VivadoHLS在FPGA部件中采用数据流优化来实现。VivadoHLS对OpenCV的支持,不 是指可以将OpenCV的函数库直接综合 成RTL代码,而是需要将代码转换为 可综合的代码,这些可综合的视频库 称为HLS视频库,由VivadoHLS提供。OpenCV函数不能直接通过HLS 进行综合,因为OpenCV函数一般都 包含动态的内存分配、浮点以及假设 图像在外部存储器中存放或者修改。VivadoHLS视频库用于替换很多2使用VivadoHLS实现 OpenCV到RTL代码转换的流程2.1 OpenCV设计中的权衡O pen C V图像处理是基于存储器帧缓存而构建的, 它总是假设视 频frame数据存放在外部DDR 存储器图2.1 Zynq视频处理系统结构中,因此,OpenCV对于访问局部图 像性能较差,因为处理器的小容量高 速缓存性能不足以完成这个任务。而 且出于性能考虑,基于OpenCV设计 的架构比较复杂,功耗更高。在对分 辨率或帧速率要求低,或者在更大的 图像中对需要的特征或区域进行处理 时,OpenCV似乎足以满足很多应用 的要求,但对于高分辨率高帧率实时 处理的场景下,OpenCV很难满足高 性能和低功耗的需求。基于视频流的架构能提供高性 能和低功耗,链条化的图像处理函数 减少了外部存储器访问, 针对视频 优化的行缓存和窗口缓存比处理器高速缓存更简单高效, 更易于使用基本的OpenCV函数,它与OpenCV具有相似的接口和算法,主要针对在 FPGA架构中实现的图像处理函数, 包含了专门面向FPG A的优化, 比 如定点运算而非浮点运算( 不必精 确到比特位),片上的行缓存(line buffer)和窗口缓存(window buffer)。 图2.1展示了在Xilinx Zynq AP SoC器件 上实现视频处理的系统结构。2 . 2 在FPGA/Zynq开发中使用 VivadoHLS实现OpenCV的设计流程 设计开发流程主要有如图2.2三个步骤。1 . 在计算机上开发Open CV应 用, 由于是开源的设计, 采用C+的 编 译 器 对 其 进 行 编 译 、 仿 真 和512014.2-3合刊 www .ee 75305830Industry Control责任编辑:王莹debug,最后产生可执行文件。这些设计无需修改即可在 ARM内核上运 行OpenCV应用。2.使用I/O函数抽取FPGA实现的部分,并且使用可综合的VivadoHLS2.3 用HLS实现OpenCV应用的实例(快速角点滤波器image_filter)我们通过快速角点的例子, 说 明通常用VivadoHLS实现OpenCV的流 程。首先,开发基于OpenCV的快速角 点 算 法 设 计,并使用基 于OpenCV的 测试激励仿真 验 证 这 个 算 法。接着,建 立 基 于 视 频 数 据 流 链 的OpenCV处理硬件加速器实现。当然,这些可综合代码也可在处理器或ARM上运行。3 VHLS实现OpenCV设计流程总结O pen C V函数可实现计算机视 觉 算 法 的 快 速 原 型 设 计 , 并 使 用 VivadoHLS工具转换为RTL代码,在 FPGA可编程逻辑上或者ZynqSoC逻辑 上作为硬件加速器,实现高分辨率高 帧率的实时视频处理。计算机视觉应 用与生俱来的异构特性,使其需要软 硬件相结合的实现方案,采用Vivado HLS视频库能加快Open C V函数向 FPGA或Zynq SOC全可编程架构的映射。图2.2 在FPGA/Zynq设计中使用OpenCV的开发流程Video库函数代码代替OpenCV函数的算 法 , 改 写前面OpenCV的通常设计, 这样的改写是为了与HLS视频库处理机制相同,方便后面 步骤的函数替换。 最后, 将改写的 OpenCV设计中的函数,替换为HLS 提供的相应功能的视频函数,并使用 VivadoHLS综合,在Xilinx开发环境下在FPGA可编程逻辑或作为Zynq SoC调用。3 . 运 行 H L S 生 成 RT L 代 码 , 在 VivadoHLS工程中启动co-sim,HLS 工具自动重用OpenCV的测试激励验 证产生的RTL代码。在Xilinx的ISE或 者Vivado开发环境中做RTL的集成和SoC/FPGA实现。参考文献:1 V iva do De sig n Suite Use r Guide :Hig h- LevelSynthesis(UG902)2Accelerating OpenCV applications with Zynq using VivadoHLS video libraries(XAPP1167)3Bradski G,Kaebler A.Learning OpenCV.ISBN 978-7-302- 20993-54Implementing memory structure for video processing in the VivadoHLS tool(XAPP793)5Gonzalez R C.Wood R E.Digital Image Processing,3rd ed.ISBN 978-7-121-11008-5流 采 样 电 阻 。 电 流 反馈信号通过L M 358 、 二极管D6和光电耦合器PC817反馈至 OB2269的2脚FB端,再通过OB2269芯 片控制输出电压,实现输出电流稳定在3A。到240V的宽输入电压范围内,输出电流均保持在3A左右,达到恒流输出的 效果。电源在不同负载条件下工作时所 测得的数据如表2所示。数据表明, 电源效率及功率因数随负载增加而上 升。在满负载的情况下,驱动电源样 机的功率因数达到96.9%,效率能达 到86.75%,基本符合大功率LED照明系统对驱动电源的要求。出一款有源功率因素校正的单端反激变换大功率LED驱动电源,通过测试 驱动电源的功率因数和效率,给出实 验结果并进行分析,验证本文所述理上接42论的正确性。参考文献:1 周志敏, 周纪海, 纪爱华. LED驱动电路设计与应用M. 北京: 人 民邮电出版社, 2006.2 公文礼. 大功率LED灯具电源驱动的分析与研究J. 灯与照明, 2009, 33(4): 29-33.3 刘祖明. LED照明驱动器设计案例精解M. 北京: 化学工业出版 社, 2011.4 平立. LED驱动电源在设计应用中容易忽视的技术问题及检验方法J. 民营科技, 2010, 5: 44.5 刘彬. LED恒流驱动电源的研究与设计D. 北京: 北京交通大学, 2009.6 梁健锋.大功率LED照明系统及其驱动电源设计D. 广州: 华南 理工大学, 2011.7 辛伊波, 陈守雄. 滞环电流变换器及其在PFC中的应用J. 微电 子技

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论