HLS:OpenCV和RTL代码转换关系
OpenCV 图像处理是基于存储器帧缓存而构建的, 它总是假设视频帧数据存放在外部 DDR 存储器中。 由于处理器的小容量高速缓存性能的限制, 因此, OpenCV 访问局部图像性能较差。 并且, 从性能的角度来说, 基于 OpenCV 设计的架构比较复杂, 功耗更高。 在对分辨率或帧速率要求低, 或者在更大的图像中对需要的特征或区域进行处理时, OpenCV 似乎足以满足很多应用的要求; 但是, 对于高分辨率和高帧率实时处理的应用中, OpenCV 很难满足高性能和低功耗的需求。
基于视频流的架构能提供高性能和低功耗, 链条化的图像处理函数减少了外部存储器访问。Vivado HLS 对 OpenCV 的支持, 不是指可以将 OpenCV 的函数库直接综合成 RTL 代码, 而是需要将代码转换为可综合的代码。 这些可综合的视频库称为 Vivado HLS 视频库, 它们由 Vivado HLS 工具提供。
由于 OpenCV 函数一般都包含动态的内存分配、 浮点以及假设图像在外部存储器中存放或者修改, 所以不能直接通过 Vivado HLS 对 OpenCV 函数进行综合。Vivado HLS 视频库用于替换很多基本的 OpenCV 函数, 它与 OpenCV 具有相似的接口和算法,它主要针对在 FPGA 架构中实现的图像处理函数, 其中包含了专门面向 FPGA 的优化, 比如定点运算而非浮点运算(不必精确到比特位) , 片上的行缓存(line buffer) 和窗口缓存(window buffer)。
一些优秀的 C 算法, 我们也可以使用 HLS 将其装换为硬件描述语言, 而且其质量也要比人工设计的更好。(有待验证!)
HLS:OpenCV和RTL代码转换关系的更多相关文章
- OpenCV 与 OpenGL 的关系是什么?
OpenCV是 Open Source Computer Vision LibraryOpenGL是 Open Graphics LibraryOpenCV主要是提供图像处理和视频处理的基础算法库,还 ...
- opencv和openGL的关系
OpenCV是 Open Source Computer Vision Library OpenGL是 Open Graphics Library OpenCV主要是提供图像处理和视频处理的基础算法库 ...
- 19、opencv和v4l2的关系
分析如下: v4L2是针对uvc免驱usb设备的编程框架,而opencv是一种跨平台计算机视觉库,opencv不仅支持v4l2框架,还支持windows.os等操作系统上的摄像头框架 cvCreate ...
- IplImage, CvMat, Mat 的关系和相互转换(转)
(看到的一篇非常好的文章,讲opencv内部类之间的关系的.) opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重 ...
- OpenCV开发环境配置-Windows/MinGW/Clion/CMake
临时更换成了TDM-GCC,和mingw类似,这里只是声明一下. 由于opencv下载下来的.exe安装包实际上是没有mingw(gcc)匹配的/动静态库,因此这些东西需要我们自己使用mingw编译. ...
- Qt Opencv 在Linux下摄像头简单示例(转)
下面写的文章也许网上也有类似的,但是大多数都没有给出思路及背景,让初学者每次都只能学到一点皮毛,不少知识需要大量搜索零碎地拼凑起来.题外话,虽然现在是碎片化信息时代,但正是这样信息整合能力也显得非常重 ...
- Zynq开发之HLS
Zynq开发之HLS 由 FPGA菜鸟 于 星期三, 06/28/2017 - 11:53 发表 HLS简介 HLS(High Level Synthesis)即高层次综合,不同于以往的FPGA逻辑开 ...
- QT与openCV,与PCL结合!
(1):详解QT多媒体框架:给予视频播放器 原文链接:http://mobile.51cto.com/symbian-271123.htm 对于使用主框架的QT程序,实现Qimage的转换可借鉴下面程 ...
- 视频人脸检测——Dlib版(六)
往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测--Dlib版(四) 视频人脸检测--OpenCV版(三) 图片人脸检测--OpenCV版(二) OpenCV环境搭 ...
随机推荐
- TCP端口状态说明ESTABLISHED、TIME_WAIT
TCP状态转移要点 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放.网络服务器程序要同时管理 ...
- 检测Linux系统是否支持某系统调用
随内核版本的变化,会增加一些新的系统调用,但如果glibc没有跟上,则不能直接调用,这个时候可以自己包装一下.如果想知道内核是否支持某系统调用,先得知道它的系统调用ID号,下面代码即是用来检查是否支持 ...
- 看图说说Sun HotSpot虚拟机对象
- 利用JS判断浏览器版本
function checkBrowser() { var browserName = navigator.userAgent.toLowerCase(); //var ua = navigator. ...
- kali下firefox的安装
在kali的系统中自带了一个firefox分支下的浏览器Iceweasel(Iceweasel是Mozilla Firefox浏览器的Debian再发布版),但是怎么说也配不上kali的强悍气势.还是 ...
- Anti-Anti dylib(反 反-dylib钩子(Anti-tweak))
版主提供了 anti dylib 的文章,http://bbs.chinapyg.com/thread-76158-1-1.html原理很简单,看下面源代码即可~ 在Build Settings中找 ...
- Android-FileIOUtils工具类
文件读写相关工具类 public final class FileIOUtils { private FileIOUtils() { throw new UnsupportedOperationExc ...
- Rsyslog远程传输的几种方式
基本介绍 Rsyslog是一个syslogd的多线程增强版,rsyslog vs. syslog-ng 链接是rsyslog官方和syslog特性和性能上的一些对比,目前大部分Linux发行版本默认也 ...
- 常用脚本--生成Agent Job的创建脚本
USE [master] GO /****** Object: StoredProcedure [dbo].[DumpJobsql] Script Date: 02/07/2014 11:38:46 ...
- C博客第01次作业---顺序,分支结构
1.本章学习总结 1.1 思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 经过了这一周的学习,从一开始对C语言一无所知,到现在能够写出基本的代码,感到非常开心. 学习C语言也并非想象 ...