Vitis Accelerated Libraries 学习笔记--Vision 库介绍

目录

1. 简介

2. 分类介绍

2.1 图像容器

2.2 图像处理基础

2.3 图像滤波和平滑

2.4 图像变换和增强

2.5 图像分析和特征检测

2.6 数学和算术操作

2.7 图像校正和优化

2.8 颜色和阈值处理

2.9 高级图像处理

2.10 光流和运动估计

2.11 图像转换和映射

2.12 其他特殊功能

3. 总结


1. 简介

Vitis Vision 库是一组 90 多个内核,基于 OpenCV 计算机视觉库,针对 FPGA、AI-E 进行了优化。这个库的主要功能包括:

  • 色彩和位深转换:能够进行图像的色彩空间转换和位深度调整。
  • 像素算术运算:执行像素级别的算术操作,如加、减、乘、除等。
  • 几何变换:包括旋转、缩放、仿射变换等。
  • 统计:计算图像的统计数据,如直方图、均值、标准差等。
  • 滤波器:应用各种滤波器进行图像平滑、锐化等处理。
  • 特性检测和分类器:用于图像特征的检测和分类。
  • 3D 重建:从图像数据中重建三维场景。

2. 分类介绍

2.1 图像容器

在 Vitis Vision Library 中,xf::cv::Array2xfMat() 和 xf::cv::xfMat2Array() 这两个函数是为了方便开发者在常规的 C/C++ 指针数组和 Vitis Vision 的 xf::cv::Mat 图像容器类之间转换数据而设计的。

这里的 xf::cv::Mat 是一个特殊的图像容器,用于在硬件加速中处理图像数据。它类似于 OpenCV 中的 cv::Mat,但专门为硬件优化而设计。

下面是一个简化的例子,展示了如何在顶级函数中使用这些适配器函数:

extern "C" {
void func_top (ap_uint *gmem_in, ap_uint *gmem_out, ...) {
    // 定义输入和输出的 xf::cv::Mat 对象
    xf::cv::Mat<...> in_mat(...), out_mat(...);

    // HLS 数据流指令,用于优化数据路径
    #pragma HLS dataflow

    // 将输入数据从指针数组转换为 xf::cv::Mat 格式
    xf::cv::Array2xfMat<...> (gmem_in, in_mat);

    // 执行某个 Vitis Vision 函数,处理图像数据
    xf::cv::Vitis Vision-func<...> (in_mat, out_mat...);

    // 将处理后的数据从 xf::cv::Mat 格式转换回指针数组
    xf::cv::xfMat2Array<...> (gmem_out, out_mat);
}
}

此例中:

  • func_top 是内核的 top 层函数,是硬件执行的入口点。
  • gmem_in 和 gmem_out 是指向全局内存的指针,用于输入和输出数据。
  • #pragma HLS dataflow 是一个编译指示,以优化数据流。
  • Array2xfMat 将输入数据从指针数组转换为 xf::cv::Mat 格式,这样就可以在硬件中高效处理。
  • Vitis Vision-func 是一个占位符,代表任何 Vitis Vision Library 中的函数,用于执行图像处理任务。
  • xfMat2Array 将处理后的图像数据从 xf::cv::Mat 格式转换回指针数组,以便进一步处理或存储。

这样的设计使得开发者可以利用 Vitis Vision Library 中的高性能图像处理函数,同时保持与传统 C/C++ 程序的兼容性。

数据从 OpenCV 的 cv::Mat 格式显式复制到 Vitis Vision 的 xf::cv::Mat 格式。xf::cv::Mat 是专门为硬件加速设计的图像容器,它能够确保数据在 FPGA 的本地内存中连续存储,从而提高性能。处理完成后,xf::cv::Mat 中的输出数据再被复制回 cv::Mat,以便在主机上进行进一步的处理或存储。

2.2 图像处理基础

功能:

  • 基础数据类型和图像容器:定义图像数据结构,实现图像的读取、写入和基本操作。
  • 像素级并行处理:利用并行处理技术加速图像处理任务。

具体函数:

  • Data Types
  • xf::cv::Mat Image Container Class
  • Pixel-Level Parallelism
  • xf::cv::imread
  • xf::cv::imwrite
  • Crop
  • Flip
  • Rotate
  • Delay
  • Duplicate
  • Set
  • Zero

2.3 图像滤波和平滑

功能:

  • 滤波和平滑:减少图像噪声,平滑图像边缘,改善图像质量。

具体函数:

  • Bilateral Filter
  • Box Filter
  • Gaussian Filter
  • Median Blur Filter
  • Mode filter

2.4 图像变换和增强

功能:

  • 图像变换:包括颜色空间转换、图像旋转、翻转等,用于图像预处理和增强。
  • 图像增强:通过调整图像的对比度、亮度等,改善图像的视觉效果。

具体函数:

  • Bit Depth Conversion
  • Color Conversion
  • CUSTOM BGR2Y8
  • Degamma
  • Gamma Correction
  • Global Tone Mapping
  • Local Tone Mapping
  • Look Up Table
  • RGBIR to Standard Bayer Format

2.5 图像分析和特征检测

功能:

  • 特征检测:识别和提取图像中的关键特征,如边缘、角点、直线等,为图像分析和理解提供基础。

具体函数:

  • Canny Edge Detection
  • FAST Corner Detection
  • Harris Corner Detection
  • Histogram Computation
  • HOG
  • HoughLines
  • Integral Image

2.6 数学和算术操作

功能:

  • 数学运算:实现图像的基本数学和算术操作,如加减乘除、逻辑运算等,用于图像数据的处理和分析。

具体函数:

  • Absolute Difference
  • Accumulate
  • Accumulate Squared
  • Accumulate Weighted
  • AddS
  • Add Weighted
  • Bitwise AND
  • Bitwise NOT
  • Bitwise OR
  • Bitwise XOR
  • Max
  • MaxS
  • Min
  • MinS
  • MinMax Location
  • Pixel-Wise Addition
  • Pixel-Wise Multiplication
  • Pixel-Wise Subtraction
  • SubRS
  • SubS
  • Sum

2.7 图像校正和优化

功能:

  • 校正和优化:纠正图像的畸变和色彩偏差,优化图像质量,提高分析的准确性。

具体函数:

  • Auto Exposure Correction
  • Auto White Balance
  • Bad Pixel Correction
  • Blacklevelcorrection
  • Color correction matrix
  • Demosaicing
  • Gaincontrol
  • Lens Shading Correction
  • Paint Mask
  • 形态学操作
  • Dilate
  • Erode

2.8 颜色和阈值处理

功能:

  • 形态学处理:通过膨胀、腐蚀等操作处理图像结构,用于提取图像形状和结构信息。

具体函数:

  • Clahe
  • Color Thresholding
  • Histogram Equalization
  • InRange
  • Otsu Threshold
  • Thresholding

2.9 高级图像处理

功能:

  • 颜色处理和阈值分割:基于颜色和灰度值进行图像分割和分类,用于图像前景和背景的区分。

具体函数:

  • Brute-force (Bf) Feature Matcher
  • Custom CCA
  • Custom Convolution
  • Distance Transform Feature Matcher
  • Extract Exposure Frames
  • HDR Decompanding
  • HDR Merge
  • Mean Shift Tracking
  • Semi Global Method for Stereo Disparity Estimation
  • Stereo Local Block Matching
  • SVM

2.10 光流和运动估计

功能:

  • 特征匹配和图像合成:进行图像之间的特征匹配,实现高动态范围(HDR)图像合成,提供高级图像分析能力。

具体函数:

  • Dense Pyramidal LK Optical Flow
  • Dense Non-Pyramidal LK Optical Flow
  • TVL1 Optical Flow

2.11 图像转换和映射

功能:

  • 运动估计:通过光流技术估计图像序列中物体或场景的运动,用于视频分析和监控。

具体函数:

  • convertScaleAbs
  • convertTo
  • Remap
  • Resolution Conversion (Resize)
  • Warp Transform

2.12 其他特殊功能

功能:

  • 特殊处理和优化:提供一系列特殊功能,如3D查找表(LUT)、边界框检测、通道合并分离等,用于特定应用需求。

具体函数:

  • 3D LUT
  • BoundingBox
  • Channel Combine
  • Channel Extract
  • Compare
  • CompareS
  • InitUndistortRectifyMapInverse
  • ISP Stats
  • Kalman Filter
  • Laplacian Operator
  • Mean and Standard Deviation
  • Preprocessing for Deep Neural Networks
  • Pyramid Up
  • Pyramid Down
  • Quantization & Dithering
  • Reduce
  • Scharr Filter
  • Sobel Filter
  • Atan2
  • Inverse (Reciprocal)
  • Square Root

3. 总结

Vitis Vision 库为基于 FPGA 和 AI 引擎的计算机视觉应用提供了强大的支持。它通过一系列优化的内核,覆盖从基本的图像处理操作到高级的图像分析和特征检测。开发者可以利用这些内核来执行色彩转换、像素运算、几何变换等任务,同时享受硬件加速带来的性能优势。Vitis Vision 的设计允许开发者在保持与传统 C/C++ 程序兼容的同时,使用高性能的图像处理函数。这个库的多样性和灵活性使其成为在现代图像处理和机器视觉领域中不可或缺的工具,特别是在需要处理大量数据和实时性要求高的应用场景中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/730443.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker容器基础知识,即linux日常运维命令

Docker 是一个流行的用 Go 语言开发的开源项目&#xff0c;基于Linux内核的cgroup、namespace及 AUFS 等技术&#xff0c;对进程进行封装隔离&#xff0c;由 Dotcloud 公司开发。Docker已成为容器行业的事实标准。 小陈发现一个有趣的事情&#xff0c;容器的英文是Container&am…

Python 修炼|人人编程手册|001 计算思维

在微信中阅读,关注公众号:CodeFit。 > 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 1. 计算思维 在我们正式开启 Python 修炼之旅前,先来了解一个关键的概念 —— 计算思维。 计算思维,其核心本质在于 抽象 …

【MATLAB源码-第229期】基于matlab的有源功率因数校正仿真,采用PI调节改善功率因数;改善后达到99%.

操作环境&#xff1a; MATLAB 2022a 1、算法描述 一、整体结构概述 有源功率因数校正&#xff08;APFC&#xff09;是一种用于提高电力系统功率因数的技术&#xff0c;通过控制电流的波形&#xff0c;使其与电压的波形保持一致&#xff0c;从而减少无功功率的产生&#xff…

[【机器学习】深度概率模型(DPM)原理和文本分类实践

1.引言 1.1.DPM模型简介 深度概率模型&#xff08;Deep Probabilistic Models&#xff09; 是结合了深度学习和概率论的一类模型。这类模型通过使用深度学习架构&#xff08;如神经网络&#xff09;来构建复杂的概率分布&#xff0c;从而能够处理不确定性并进行预测。深度概率…

【C++进阶学习】第三弹——菱形继承和虚拟继承——菱形继承的二义性和数据冗余问题

继承&#xff08;上&#xff09;&#xff1a;【C进阶学习】第一弹——继承&#xff08;上&#xff09;——探索代码复用的乐趣-CSDN博客 继承&#xff08;下&#xff09;&#xff1a;【C进阶学习】第二弹——继承&#xff08;下&#xff09;——挖掘继承深处的奥秘-CSDN博客 …

大数据经典sql

一、连续登录问题 问题&#xff1a;1&#xff09;、每个用户连续登录最大天数 2&#xff09;、连续登录大于三天的用户数 分析&#xff1a;本质都是计算用户连续登录天数 方案一&#xff1a;利用排序窗口 select a.user_id,a.date_rslt,count(1) as cnt from (select t.…

艺术创作加速器:三款AI绘画软件,让你的工作效率倍增!

在数字化浪潮的推动下&#xff0c;艺术创作正迎来革命性的变化。AI绘画软件的出现&#xff0c;不仅为艺术家提供了全新的创作工具&#xff0c;也为艺术爱好者开辟了一片创意的新天地。这些软件利用人工智能技术&#xff0c;根据用户的简单描述或草图&#xff0c;快速生成独特的…

旋转式滚珠花键在自动装载机中的作用!

自动装载机是一种广泛用于公路、铁路、建筑、水电、港口、矿山等建设工程的土石方施工机械&#xff0c;是工程建设中土石方施工的主要机种之一。而旋转式滚珠花键作为自动装载机中重要的传动元件&#xff0c;在自动装载机的运用起着重要的作用。 自动装载机主要用于铲装土壤、砂…

常见的结构型设计模式

设计模式&#xff08;二&#xff09; 常见的结构型模式 1.代理模式: 提供一种代理方法 &#xff0c;来控制对其他对象的访问。在有些情况下&#xff0c;一个对象不能或者不适合直接访问另一个对象&#xff0c;而代理对象可以在这两个类之间起一个中介的作用。 举例&#xf…

Solana链,什么是sol跟单机器人、pump跟单机器人、sol狙击机器人、sol夹子机器人、sol聪明钱筛选

Solana Sol跟单机器人&#x1f916; SOL跟单机器人&#xff08;Copy Trading Bot&#xff09;是一种自动化交易工具&#xff0c;允许用户复制其他成功交易者的交易行为。这种机器人通常用于加密货币市场、外汇市场等金融市场。以下是SOL跟单机器人的一些关键特性和功能&#xf…

yolov10--C#接口

一、前言 本章主要讲解yolov10的C#接口&#xff0c;主要是使用微软开发的openvinocsharp工具加载yolov10模型&#xff0c;并做推理。 二、yolov10模型转换 这里为了演示&#xff0c;使用官方yolov10m模型&#xff08;其他大小的模型同理&#xff09;做演示&#xff0c;可从下方…

iptables(5)常用扩展模块

简介 之前我们已经介绍过扩展模块的简单使用,比如使用-m tcp/udp ,-m multiport参数通过--dports,--sports可以设置连续和非连续的端口范围。那么我们如何匹配其他的一些参数呢,比如源地址范围,目的地址范围,时间范围等,这就是我们这篇文章介绍的内容。 iprange扩展模块…

Ubuntu系统下修改网卡IP地址

Ubuntu系统下修改网卡IP地址 一、Ubuntu系统介绍1.1 Ubuntu简介1.2 Ubuntu网络配置方式 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、配置网卡IP地址4.1 备份网卡配置文件4.2 查看当前IP地址4.3 修改…

0.15元1.5Mhz-1.3A同步整流BUCK降压DCDC芯片MT3410(MT3410LB)

前言 国产同步整流DCDC&#xff0c;参考价格约0.15元。 特征 高效率&#xff1a;高达 96% 1.5MHz恒定频率操作 1.3A 输出电流 无需肖特基二极管 2.3V至7V输入电压范围 输出电压低至 0.6V PFM 模式可在轻负载下实现高效率 压差操作中的100%占空比 低静态电流&#xff1a;35μ…

刘亦菲新剧玫瑰的故事

刘亦菲新剧《玫瑰的故事》&#xff1a;开放结局&#xff0c;无限遐想 当刘亦菲再次踏入荧屏&#xff0c;与导演汪俊携手打造的《玫瑰的故事》便引发了无数观众的期待与关注。这部剧不仅汇聚了众多实力派演员&#xff0c;更以其独特的剧情和精致的制作成为了近期热门的话题。《…

(项目实战)RocketMQ5.0延迟消息在聚合支付系统中的应用

1 基于业务场景掌握RocketMQ5.0 本篇文章主要结合聚合支付系统中的业务场景来落地RocketMQ中间件的应用&#xff0c;聚合支付系统主要在支付系统超时订单和商户支付结果异步通知场景中会使用到RocketMQ消息中间件。本文使用到了RocketMQ中的延迟消息知识点&#xff0c;RocketM…

JavaScript知识点大总结来了-------这一篇就足够啦!!!

JavaScript基础知识 一、对象的使用 1、创建对象 这里创建对象的方法我们采用最常用的一种&#xff1a; //第一种 <script>var Person {name: "zhangsan",age: "19",weight: "140",hight: "170",print:function(){console.…

【Android】我的手机在...自己下载...那个(浅析Intent基础运用)

【Android】我的手机在…自己下载…那个&#xff08;浅析Intent基础运用&#xff09; 在Android开发中&#xff0c;Intent&#xff08;意图&#xff09;是一个非常重要的概念。它不仅仅是用于在应用程序的各个组件之间进行通信的工具&#xff0c;也是启动新的Activity、Servic…

恭喜行云绽放,24年再度荣获国家鼓励的企业软件证书

在刚刚过去的五月份&#xff0c;行云绽放再次传来一个好消息&#xff0c;那就是2024年行云绽放再度荣获国家鼓励的企业软件证书。 什么是国家鼓励的企业软件证书&#xff1f; 国家鼓励的企业软件证书被称为“国家鼓励的软件企业证书”&#xff0c;这一证书由中国软件行业协会…

预制直埋聚氨酯保温管:卓越管道,引领未来

在管道领域中&#xff0c;预制直埋聚氨酯保温管宛如一颗璀璨明珠&#xff0c;散发着独特的光芒。 它具备卓越的保温性能&#xff0c;犹如给流体输送穿上了一层温暖的保护衣&#xff0c;有效减少热量损耗&#xff0c;实现高效的能源利用。其坚固的结构能够轻松应对各种复杂环境…