<var id="dfzpb"></var>
<cite id="dfzpb"></cite>

电子发烧友网>可编程逻辑> > 正文

Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程

2021年04月23日 11:32 ? 次阅读
作者:Harvest Guo来源:Xilinx DSP Specilist

  本文通过对OpenCV中图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS中调用OpenCV库函数实现图像处理的几个基本步骤,完成从OpenCV设计到RTL转换综合的开发流程。

  开源计算机视觉 (OpenC++V) 被广泛用于开发计算机视觉应用,它包含2500多个优化的视频函数的函数库并且专门针对台式机处理器和GPU进行优化。OpenCV的用户成千上万,OpenCV的设计无需修改即可在 Zynq器件的ARM处理器上运行。但是利用OpenCV实现的高清处理经常受外部存储器的限制,尤其是存储带宽会成为性能瓶颈,存储访问也会限制功耗效率。使用VivadoHLS高级语言综合工具,可以轻松实现OpenCV C++视频处理设计到RTL代码的转换,输出硬件加速器或者直接在FPGA上实现实时视频处理功能。同时,Zynq All-programmable SOC是实现嵌入式计算机视觉应用的极好方法,很好解决了在单一处理器上实现视频处理性能低功耗高的限制,Zynq高性能可编程逻辑和嵌入式ARM内核,是一款功耗优化的集成式解决方案。

  1 OpenCV中图像IplImage, CvMat, Mat 类型的关系和VivadoHLS中图像hls::Mat类型介绍

  OpenCv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。在opencv2.0之前,opencv是完全用C实现的,但是,IplImage类型与CvMat类型的关系类似于面向对象中的继承关系。实际上,CvMat之上还有一个更抽象的基类----CvArr,这在源代码中会常见。

  1.1 OpenCV中Mat类型:矩阵类型(Matrix)。

  在openCV中,Mat是一个多维的密集数据数组。可以用来处理向量和矩阵、图像、直方图等等常见的多维数据。

  Mat有3个重要的方法:

  1、Mat mat = imread(const String* filename); 读取图像

  2、imshow(const string frameName, InputArray mat); 显示图像

  3、imwrite (const string& filename, InputArray img); 储存图像

  Mat类型较CvMat与IplImage类型来说,有更强的矩阵运算能力,支持常见的矩阵运算。在计算密集型的应用当中,将CvMat与IplImage类型转化为Mat类型将大大减少计算时间花费。

  1.2 OpenCV中CvMat类型与IplImage类型:“图像”类型

  在openCV中,Mat类型与CvMat和IplImage类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,openCV对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。

  补充:IplImage由CvMat派生,而CvMat由CvArr派生即CvArr -》 CvMat -》 IplImage

  CvArr用作函数的参数,无论传入的是CvMat或IplImage,内部都是按CvMat处理。

  在openCV中,没有向量(vector)的数据结构。任何时候,但我们要表示向量时,用矩阵数据表示即可。

  但是,CvMat类型与我们在线性代数课程上学的向量概念相比,更抽象,比如CvMat的元素数据类型并不仅限于基础数据类型,比如,下面创建一个二维数据矩阵:

  CvMat* cvCreatMat(int rows ,int cols , int type);

  这里的type可以是任意的预定义数据类型,比如RGB或者别的多通道数据。这样我们便可以在一个CvMat矩阵上表示丰富多彩的图像了。

  1.3 OpenCV中IplImage类型

  在OpenCV类型关系上,我们可以说IplImage类型继承自CvMat类型,当然还包括其他的变量将之解析成图像数据。

  IplImage类型较之CvMat多了很多参数,比如depth和nChannels。在普通的矩阵类型当中,通常深度和通道数被同时表示,如用32位表示RGB+Alpha.但是,在图像处理中,我们往往将深度与通道数分开处理,这样做是OpenCV对图像表示的一种优化方案。

  IplImage的对图像的另一种优化是变量origin----原点。在计算机视觉处理上,一个重要的不便是对原点的定义不清楚,图像来源,编码格式,甚至操作系统都会对原地的选取产生影响。为了弥补这一点,openCV允许用户定义自己的原点设置。取值0表示原点位于图片左上角,1表示左下角。

  1.4 VivadoHLS中图像数据类型hls::Mat《》

  VivadoHLS视频处理函数库使用hls::Mat《》数据类型,这种类型用于模型化视频像素流处理,实质等同于hls::steam《》流的类型,而不是OpenCV中在外部memory中存储的matrix矩阵类型。因此,在HLS实现OpenCV的设计中,需要将输入和输出HLS可综合的视频设计接口,修改为Video stream接口,也就是采用HLS提供的video接口可综合函数,实现AXI4 video stream到VivadoHLS中hls::Mat《》类型的转换。

  2 使用VivadoHLS实现OpenCV到RTL代码转换的流程

  2.1 OpenCV设计中的权衡

  OpenCV图像处理是基于存储器帧缓存而构建的,它总是假设视频frame数据存放在外部DDR 存储器中,因此,OpenCV对于访问局部图像性能较差,因为处理器的小容量高速缓存性能不足以完成这个任务。而且出于性能考虑,基于OpenCV设计的架构比较复杂,功耗更高。在对分辨率或帧速率要求低,或者在更大的图像中对需要的特征或区域进行处理是,OpenCV似乎足以满足很多应用的要求,但对于高分辨率高帧率实时处理的场景下,OpenCV很难满足高性能和低功耗的需求。

  基于视频流的架构能提供高性能和低功耗,链条化的图像处理函数能减少外部存储器访问,针对视频优化的行缓存和窗口缓存比处理器高速缓存更简单,更易于用FPGA部件,使用VivadoHLS中的数据流优化来实现。

  VivadoHLS对OpenCV的支持,不是指可以将OpenCV的函数库直接综合成RTL代码,而是需要将代码转换为可综合的代码,这些可综合的视频库称为HLS视频库,由VivadoHLS提供。

  OpenCV函数不能直接通过HLS进行综合,因为OpenCV函数一般都包含动态的内存分配、浮点以及假设图像在外部存储器中存放或者修改。

  VivadoHLS视频库用于替换很多基本的 OpenCV函数,它与OpenCV具有相似的接口和算法,主要针对在FPGA架构中实现的图像处理函数,包含了专门面向FPGA的优化,比如定点运算而非浮点运算(不必精确到比特位),片上的行缓存(line buffer)和窗口缓存(window buffer)。

  2.2 VivadoHLS实现OpenCV设计流程介绍

  使用VivadoHLS实现OpenCV的开发,主要的三个步骤如下:

  在计算机上开发OpenCV应用,由于是开源的设计,采用C++的编译器对其进行编译,仿真和debug,最后产生可执行文件。这些设计无需修改即可在 ARM内核上运行OpenCV应用。

  运行HLS生成RTL代码,在vivadoHLS工程中启动co-sim,重用openCV的测试激励验证产生的RTL代码。在ISE或者Vivado开发环境中做RTL的集成和SOC/FPGA实现。

  2.2.1 VivadoHLS视频库函数

  HLS视频库是包含在hls命名空间内的C++代码。#include “hls_video.h”

  与OpenCV等具有相似的接口和等效的行为,例如:

  OpenCV库:cvScale(src, dst, scale, shift);

  HLS视频库:hls:cale《。。。》(src, dst, scale, shift);

  一些构造函数具有类似的或替代性的模板参数,例如:

  OpenCV库:cv::Mat mat(rows, cols, CV_8UC3);

  HLS视频库:hls::Mat mat(rows, cols);

  ROWS和COLS指定处理的最大图像尺寸

  表2.2.1 VivadoHLS视频处理函数库

  2.2.2 VivadHLS实现OpenCV设计的局限性

  首先,必须用HLS视频库函数代替OpenCV调用。

  其次,不支持OpenCV通过指针访问帧缓存,可以在HLS中使用VDMA和 AXI Stream adpater函数代替。

  再者,不支持OpenCV的随机访问。HLS对于读取超过一次的数据必须进行复制,更多的例子可以参见见hls:uplicate()函数。

  最后,不支持OpenCVS的In-place更新,比如 cvRectangle (img, point1, point2)。

  下面表格2.2.2列举了OpenCV中随机访问一帧图像处理对应HLS视频库的实现方法。

  OpenCVHLS视频库

  读操作pix = cv_mat.at(i,j)

  pix = cvGet2D(cv_img,i,j)hls_img 》》 pix

  写操作cv_mat.at(i,j) = pix

  cvSet2D(cv_img,i,j,pix)hls_img 《《 pix

  表 2.2.2 OpenCV和HLS中对一帧图像像素访问对应方法

  2.3 用HLS实现OpenCV应用的实例(快速角点滤波器image_filter)

  我们通过快速角点的例子,说明通常用VivadoHLS实现OpenCV的流程。首先,开发基于OpenCV的快速角点算法设计,并使用基于OpenCV的测试激励仿真验证这个算法。接着,建立基于视频数据流链的OpenCV处理算法,改写前面直觉的OpenCV的通常设计,这样的改写是为了与HLS视频库处理机制相同,方便后面步骤的函数替换。最后,将改写的OpenCV设计中的函数,替换为HLS提供的相应功能的视频函数,并用VivadoHLS综合,最后在Xilinx开发环境下实现。当然,这些可综合代码也可在处理器或ARM上运行。

  2.3.1 设计基于OpenCV的视频滤波器设计和测试激励

  在这个例子中,首先设计开发完全调用OpenCV库函数的快速角点滤波器设计opencv_image_filter.cpp和这个滤波器的测试激励opencv_image_filter_tb.cpp,测试激励用于仿真验证opencv_image_filter算法功能。算法和测试激励设计代码如下:

  void opencv_image_filter(IplImage* src, IplImage* dst)

  {

  IplImage* gray = cvCreateImage( cvGetSize(src), 8, 1 );

  std::vector keypoints;

  cv::Mat gray_mat(gray,0);

  cvCvtColor( src, gray, CV_BGR2GRAY );

  cv::FAST( gray_mat, keypoints, 20, true);

  cvCopy( src,dst);

  for (int i=0;i

  {

  cvRectangle(dst, cvPoint(keypoints[i].pt.x-1,keypoints[i].pt.y-1),

  cvPoint(keypoints[i].pt.x+1,keypoints[i].pt.y+1), cvScalar(255,0,0),CV_FILLED);

  }

  cvReleaseImage( &gray );

  }

  例子2.3.1.1 通常的OpenCV视频处理代码opencv_image_filter.cpp

  int main (int argc, char** argv) {

  IplImage* src=cvLoadImage(INPUT_IMAGE);

  IplImage* dst = cvCreateImage(cvGetSize(src), src-》depth, src-》nChannels);

  opencv_image_filter(src, dst);

  cvSaveImage(OUTPUT_IMAGE_GOLDEN, dst);

  cvReleaseImage(&src);

  cvReleaseImage(&dst);

  return 0;

  }

  例子2.3.1.2 OpenCV视频处理测试激励代码opencv_image_filter_tb.cpp

  上面的例子是直接调用OpenCV在处理器上软件应用实现的例子,可以看到在算法设计中直接调用opencV库函数,测试激励读入图像,经过滤波器处理输出的图像保存分析。可以看到,算法的处理基于IPIimage类型,输入和输出图像都使用此类型。

  2.3.2 使用IO函数和Vivado HLS视频库替换OpenCV函数库

  需要特别说明的是,xilinx通常使用的视频处理模块都是基于axi4 streaming协议进行不同模式见像素数据的交互,也就是我们所说的AXI4 video接口协议格式。为了和xilinx视频库接口协议统一,VivadoHLS提供了视频接口函数库,用于从OpenCV程序中抽取需要进行RTL综合转换的顶层函数,并把这些可综合的代码和OpenCV不可综合转换的代码进行隔离。然后,对需要综合转换为RTL代码的OpenCV函数,用xilinx VivadoHLS提供相应功能的可综合video函数进行替换。最后在C/C++编译环境下仿真验证OpenCV代码和替换video函数后功能的一致,并在VivadoHLS开发环境中做代码综合和产生RTL代码的co-sim混合仿真验证。

  VivadoHLS可综合的视频接口函数:

  Hls::AXIvideo2Mat 转换AXI4 video stream到hls::Mat表示格式

  Hls::Mat2AXIvideo 转换hls::Mat数据格式到AXI4 video stream

  首先,我们对2.3.1中OpenCV的设计进行改写,改写的代码还是完全基于OpenCV的函数,目的是为了对视频的处理机制基于视频流的方式,与VivadoHLS视频库提供函数的处理机制一致。下面是OpenCV设计的另一种写法:

  void opencv_image_filter(IplImage* src, IplImage* dst)

  {

  IplImage* gray = cvCreateImage( cvGetSize(src), 8, 1 );

  IplImage* mask = cvCreateImage( cvGetSize(src), 8, 1 );

  IplImage* dmask = cvCreateImage( cvGetSize(src), 8, 1 );

  std::vector keypoints;

  cv::Mat gray_mat(gray,0);

  cvCvtColor(src, gray, CV_BGR2GRAY );

  cv::FAST(gray_mat, keypoints, 20, true);

  GenMask(mask, keypoints);

  cvDilate(mask,dmask);

  cvCopy(src,dst);

  PrintMask(dst,dmask,cvScalar(255,0,0));

  cvReleaseImage( &mask );

  cvReleaseImage( &dmask );

  cvReleaseImage( &gray );

  }

  例子2.3.2.1另一种OpenCV设计应用opencv_image_filter.cpp

  其次,使用Vivado HLS视频库替代标准OpenCV函数,并使用可综合的视频接口函数,采用video stream的方式交互视频数据。用于FPGA的硬件可综合模块由VivadoHLS视频库函数与接口组成,我们用hls命名空间中的相似函数代替OpenCV函数,增加接口函数构建AXI4 stream类型的接口。

  void image_filter(AXI_STREAM& input, AXI_STREAM& output, int rows, int cols)

  {

  //Create AXI streaming interfaces for the core

  #pragma HLS RESOURCE variable=input core=AXIS metadata=“-bus_bundle INPUT_STREAM”

  #pragma HLS RESOURCE variable=output core=AXIS metadata=“-bus_bundle OUTPUT_STREAM”

  #pragma HLS RESOURCE core=AXI_SLAVE variable=rows metadata=“-bus_bundle CONTROL_BUS”

  #pragma HLS RESOURCE core=AXI_SLAVE variable=cols metadata=“-bus_bundle CONTROL_BUS”

  #pragma HLS RESOURCE core=AXI_SLAVE variable=return metadata=“-bus_bundle CONTROL_BUS”

  #pragma HLS interface ap_stable port=rows

  #pragma HLS interface ap_stable port=cols

  hls::Mat _src(rows,cols);

  hls::Mat _dst(rows,cols);

  #pragma HLS dataflow

  hls::AXIvideo2Mat(input, _src);

  hls::Mat src0(rows,cols);

  hls::Mat src1(rows,cols);

  #pragma HLS stream depth=20000 variable=src1.data_stream

  hls::Mat mask(rows,cols);

  hls::Mat dmask(rows,cols);

  hls:calar《3,unsigned char》 color(255,0,0);

  hls:uplicate(_src,src0,src1);

  hls::Mat gray(rows,cols);

  hls::CvtColor(src0,gray);

  hls::FASTX(gray,mask,20,true);

  hls:ilate(mask,dmask);

  hls:aintMask(src1,dmask,_dst,color);

  hls::Mat2AXIvideo(_dst, output);

  }

  例子2.3.2.2 采用VivadoHLS视频库替换后可综合的设计opencv_image_filter.cpp

  最后,在vivadoHLS开发环境下综合例子2.3.2.2的设计,产生RTL代码并重用OpenCV的测试激励验证RTL代码功能。

  3 VHLS实现OpenCV设计流程总结

  通过上面章节介绍以及在vivadoHLS工具中实现opencV设计的例子可以看出,OpenCV函数可实现计算机视觉算法的快速原型设计,并使用VivadoHLS工具转换为RTL代码在FPGA或者Zynq SOC上实现高分辨率高帧率的实时视频处理。计算机视觉应用与生俱来的异构特性,使其需要软硬件相结合的实现方案。Vivado HLS视频库能加快OpenCV函数向FPGA可编程架构的映射。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

写好状态机--从2019年全国FPGA竞赛谈Verilog编码技巧

理解Verilog编码技巧掌握FPGA中状态机的写法掌握非重叠序列检测代器Verilog代码编写
发烧友学院发表于 2020-04-21 00:00? 28583次阅读
写好状态机--从2019年全国FPGA竞赛谈Verilog编码技巧

全套中文FPGA入门及提高教程 (1)

发表于 2021-04-25 14:50? 0次阅读
全套中文FPGA入门及提高教程 (1)

利用高速FPGA设计PCB的要点及相关指导原则有哪些?

利用高速FPGA设计PCB的要点及相关指导原则有哪些?...
发表于 2021-04-25 08:17? 0次阅读
利用高速FPGA设计PCB的要点及相关指导原则有哪些?

求一种准循环LDPC码的快速编码方法

LDPC码的通用编码方法有哪些? 准循环LDPC码的快速编码方法是什么? ...
发表于 2021-04-25 07:16? 0次阅读
求一种准循环LDPC码的快速编码方法

LabVIEW接收USB数据失败

背景:       意图使用FPGA板载的usb芯片FT232H传输数据至LabVIEW接收。 当前状态...
发表于 2021-04-24 21:03? 0次阅读
LabVIEW接收USB数据失败

利用FPGA实现GPS失步下精确守时

发表于 2021-04-24 14:42? 101次阅读
利用FPGA实现GPS失步下精确守时

基于FPGA芯片实现数据时钟同步设计方案

对于一个设计项目来说,全局时钟(或同步时钟)是最简单和最可预测的时钟。只要可能就应尽量在设计项目中采....
发表于 2021-04-24 09:39? 175次阅读
基于FPGA芯片实现数据时钟同步设计方案

利用IP流量发生器实现IPTV测试仪的设计方案

以IPTV测试仪的网络层测试功能为研究背景,介绍了IPTV的整体设计框架、网络层测试指标的算法设计,....
发表于 2021-04-24 09:28? 179次阅读
利用IP流量发生器实现IPTV测试仪的设计方案

基于DSP+FPGA+ARM的架构实现高速多路数...

随着集成电路技术的发展,FPGA和DSP以及ARM以其体积小、速度快、功耗低、设计灵活、利于系统集成....
发表于 2021-04-24 09:04? 200次阅读
基于DSP+FPGA+ARM的架构实现高速多路数...

剖析FPGA的自由立体显示系统光学引擎设计

实现了一种用于自由立体显示系统的光学引擎。该系统采用FPGA作为控制处理器,通过RS232串口与DS....
发表于 2021-04-23 14:54? 77次阅读
剖析FPGA的自由立体显示系统光学引擎设计

浅谈基于FPGA的电子计算器系统设计(附代码)

导读 本篇介绍了一个简单计算器的设计,基于 FPGA 硬件描述语言 Verilog HDL,系统设计....
发表于 2021-04-23 11:44? 200次阅读
浅谈基于FPGA的电子计算器系统设计(附代码)

剖析可编程器件的通信检测系统接口如何设计

为提高对通信检测设备的灵活性和升级性,本文借鉴虚拟仪器结构,设计某型基层级检测系统,用于对通信设备进....
发表于 2021-04-23 10:57? 193次阅读
剖析可编程器件的通信检测系统接口如何设计

常用信号中阶梯波和锯齿波的模拟波形设计

本文设计的基于FPGA的模拟波形电路能产生清晰的阶梯波和锯齿波.实现简单,便于修改和优化,可作为数据采集系统的...
发表于 2021-04-23 07:00? 0次阅读
常用信号中阶梯波和锯齿波的模拟波形设计

请问怎样去设计一种∑-△D/A转换器?

∑-Δ变换原理 ∑-Δ DAC的结构 ∑-Δ DAC的FPGA实现 ...
发表于 2021-04-23 06:00? 0次阅读
请问怎样去设计一种∑-△D/A转换器?

【Combat FPGA开发板】配套视频教程——MIPI设计基础

        本视频是Combat FPGA开发板的配套视频课程,本章节课程主要介绍MiPi协...
发表于 2021-04-22 19:36? 0次阅读
【Combat FPGA开发板】配套视频教程——MIPI设计基础

【Combat FPGA开发板】开发板简介+原理图+使用手册

1、概述         Combat开发套件是以高云半导体 GW2A 系列 FPGA 产品为核心,...
发表于 2021-04-22 18:03? 101次阅读
【Combat FPGA开发板】开发板简介+原理图+使用手册

【MiniStar FPGA开发板】配套视频教程——Gowin与Modelsim联合仿真

        本视频是MiniStar FPGA开发板的配套视频课程,本章节课程通过实例讲解G...
发表于 2021-04-22 17:38? 101次阅读
【MiniStar FPGA开发板】配套视频教程——Gowin与Modelsim联合仿真

关于FPGA的误码测试仪研究与设计

误码率是反映数据传输设备及其信道工作质量的一个重要指标。作为通信系统的可靠性测量工具,误码测试仪广泛....
发表于 2021-04-22 15:01? 106次阅读
关于FPGA的误码测试仪研究与设计

剖析深度学习与传统计算机视觉之间的关系

某种程度上,深度学习最大的优势就是自动创建没有人会想到的特性能力。 如今,深度学习在众多领域都有一席....
发表于 2021-04-22 10:45? 139次阅读
剖析深度学习与传统计算机视觉之间的关系

龙芯平台异构计算技术交流会成功举办

2021年4月14日,由江苏航天龙梦信息技术有限公司和南京航空航天大学联合主办的“龙芯平台异构计算技....
发表于 2021-04-22 10:32? 135次阅读
龙芯平台异构计算技术交流会成功举办

基于EAPR的局部动态自重构系统的实现详细解析

在早期获取部分可重构EAPR(Early Access Partial Reconfiguratio....
发表于 2021-04-21 14:32? 83次阅读
基于EAPR的局部动态自重构系统的实现详细解析

利用Anadigm FPGA实现EMG信号采集系...

在生物信号采集的过程中,信号的幅度因被测对象、不同种类的生物电势的频谱、不同的肌肉群以及皮肤电极耦合....
发表于 2021-04-20 09:37? 750次阅读
利用Anadigm FPGA实现EMG信号采集系...

请问怎样去设计串口收发模块仿真模型?

本实验不仅注重可综合的代码编写,同时更注重代码的仿真验证。通过仿真,我们能够寻找设计中可能存在的问题....
发表于 2021-04-19 11:43? 201次阅读
请问怎样去设计串口收发模块仿真模型?

如何用OpenCL实现FPGA上的大型卷积网络加...

Xilinx zynq系列FPGA实现神经网络评估 本篇目录 1. 内存占用 1.1 FPGA程序中....
发表于 2021-04-19 11:12? 204次阅读
如何用OpenCL实现FPGA上的大型卷积网络加...

关于SDRAM控制器的基础知识详解

在FPGA视频图像处理系统中,经常需要使用到SDRAM作为视频图像缓存。SDRAM控制器可以分为上电....
发表于 2021-04-19 09:46? 157次阅读
关于SDRAM控制器的基础知识详解

德州仪器TI会不会收购一家FPGA公司来完善其处...

最近很多人讨论下一家收购FPGA企业的大佬是谁,Nvidia?Broadcom?说法不一,有人问德州....
发表于 2021-04-18 11:36? 556次阅读
德州仪器TI会不会收购一家FPGA公司来完善其处...

深度学习在各种计算机视觉任务上都取得了重大的突破

这里举个例子,CV中有一个很具有挑战性的任务是3D from Monocular Vision,即从....
发表于 2021-04-18 10:34? 191次阅读
深度学习在各种计算机视觉任务上都取得了重大的突破

如何在OpenCV中使用基于深度学习的边缘检测

边缘检测是计算机视觉中一个非常古老的问题,它涉及到检测图像中的边缘来确定目标的边界,从而分离感兴趣的....
发表于 2021-04-18 10:25? 135次阅读
如何在OpenCV中使用基于深度学习的边缘检测

一片欣欣向荣背后,深度学习在计算机视觉领域的瓶颈...

深度学习能够实现的前提是大量经过标注的数据,这使得计算机视觉领域的研究人员倾向于在数据资源丰富的领域....
发表于 2021-04-18 10:11? 200次阅读
一片欣欣向荣背后,深度学习在计算机视觉领域的瓶颈...

基于FPGA+SRAM实现超声视频图像采集系统的...

医学超声诊断成像技术大多数采用超声脉冲回波法,即利用探头产生超声波进入人体,由人体组织反射产生的回波....
发表于 2021-04-18 09:08? 178次阅读
基于FPGA+SRAM实现超声视频图像采集系统的...

从半导体行业十大趋势看未来

2020年注定是被历史镌刻的一年,新冠疫情席卷全球,众多行业在停滞重启之后按下了加速键,新技术、新应....
发表于 2021-04-16 15:39? 375次阅读
从半导体行业十大趋势看未来

基于赛灵思提供的实时计算平台的超低时延视频流解决...

本期案例将介绍 BroadBand 与 Skreens 的合作,双方基于赛灵思提供的实时计算平台打造....
发表于 2021-04-16 10:56? 234次阅读
基于赛灵思提供的实时计算平台的超低时延视频流解决...

聊一聊FPGA中的彩色转灰度的算法

大家好,又到了每日学习的时间了,今天我们来聊一聊FPGA学习中可以遇到的一些算法,今天就聊一聊彩色转....
发表于 2021-04-15 15:47? 208次阅读
聊一聊FPGA中的彩色转灰度的算法

Signal tap逻辑分析仪应该如何使用?

在之前的设计开发时,利用modelsim得出中间某单元的数据,并且输入也是设计者在testbench....
发表于 2021-04-15 15:29? 203次阅读
Signal tap逻辑分析仪应该如何使用?

在Vivado中使用SRIO高速串行协议的IP演...

在FPGA开发过程中不可避免的要使用到一些IP,有些IP是很复杂的,且指导手册一般是很长的英文,仅靠....
发表于 2021-04-15 15:19? 208次阅读
在Vivado中使用SRIO高速串行协议的IP演...

计算机视觉方向简介

其中VO(visual odometry)指仅视觉的里程计,T表示位置和姿态。松耦合中视觉运动估计和....
发表于 2021-04-15 15:14? 186次阅读
计算机视觉方向简介

基于SANXIN -B01 FPGA开发板的SD...

本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把....
发表于 2021-04-15 15:14? 218次阅读
基于SANXIN -B01 FPGA开发板的SD...

计算机视觉可以学习美式手语,进而帮助听力障碍群体...

对普通人而言轻轻松松的事情对于听障群体可能是很困难的,他们甚至还会因此遭到歧视。在很多场景下,他们无....
发表于 2021-04-15 15:09? 183次阅读
计算机视觉可以学习美式手语,进而帮助听力障碍群体...
28杠官网