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

news2024/10/6 10:43:06

目录

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++ 程序兼容的同时,使用高性能的图像处理函数。这个库的多样性和灵活性使其成为在现代图像处理和机器视觉领域中不可或缺的工具,特别是在需要处理大量数据和实时性要求高的应用场景中。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【服务器05】之【登录/注册账号成功转至游戏场景】

Unity登录注册数据库 打开【服务器01】的文章项目 导入新UI系统 点击2D 双击输入栏位置 修改输入框尺寸及位置 放大字体 修改默认输入文字 发现中文字变成了口口口口 原因是新UI系统不支持中文&#xff0c;解决这个问题需要更换字体 并且修改输入时字体大小 我们取电脑中找Fon…

【ARMv8/v9 GIC 系列 4.3 -- GIC 中断控制系统寄存器 ICC_SRE_ELn 使用介绍】

文章目录 GIC 中断控制系统寄存器 ICC_SRE_ELn寄存器位域介绍Interrupt BypassBypass IRQBypass FIQBypass 配置GIC 中断控制系统寄存器 ICC_SRE_ELn ICC_SRE_EL3是中断控制器系统寄存器(Interrupt Controller System Register),用于控制在异常级别3(EL3)下,对GIC CPU接口…

Hive基础教程

文章目录 Apache Hive 教程1. Hive-简介1.1 学习Hive的前置知识1.2 什么是Hive&#xff1f;1.3 Hive的架构1.4 Hive的工作流程 Apache Hive 教程 资料来源&#xff1a;Hive Tutorial (tutorialspoint.com) Hive是Hadoop中用于处理结构化数据的数据仓库基础设施工具。它驻留在H…

pywinauto入门指南:轻松掌握Windows GUI自动化

pywinauto库概述: pywinauto是一个Python库,主要用于自动化Windows应用程序的GUI测试和操作.它提供了一组简单而强大的API,可以模拟用户与Windows应用程序的交互,包括点击按钮、输入文本、选择菜单等操作. 安装 ##pywinauto可以通过pip进行安装,打开命令行运行: pip install…

AI落地不容乐观-从神话到现实

开篇 在这儿我不是给大家泼冷水&#xff0c;而是我们一起来看一下从2022年11月左右GPT3.0掀起了一股“AI狂潮”后到现在&#xff0c;AI在商用、工业、军用下到底有没有得到了大规模应用呢&#xff1f; 这个答案每一个参与者其实心里有数那就是&#xff1a;没有。 但是呢它的…

STM32学习和实践笔记(36):DAC数模转换实验

1.STM32F1 DAC简介 DAC&#xff08;Digital to analog converter&#xff09;即数字模拟转换器&#xff0c;它可以将数字信号转换为模拟信号。它的功能与ADC相反。在常见的数字信号系统中&#xff0c;大部分传感器信号被转化成电压信号&#xff0c;而 ADC 把电压模拟信号转换成…

算法设计与分析:分治法求最近点对问题

一、实验目的 1. 掌握分治法思想&#xff1b; 2. 学会最近点对问题求解方法。 二、实验内容 1. 对于平面上给定的N个点&#xff0c;给出所有点对的最短距离&#xff0c;即&#xff0c;输入是平面上的N个点&#xff0c;输出是N点中具有最短距离的两点。 2. 要求随机生成N个…

项目训练营第三天

项目训练营第三天 注册登录测试 前面我们编写了用户注册、登录的逻辑代码&#xff0c;每编写完一个功能模块之后&#xff0c;我们都要对该模块进行单元测试&#xff0c;来确保该功能模块的正确性。一般情况下使用快捷键Ctrl Shift Insert&#xff0c;鼠标左击类名可以自动生…

灵活的招聘管理系统有五种方法帮助成功招聘

还记得以前的时代吗&#xff1f;这取决于你的年龄&#xff0c;直到智能手机、流媒体电视和电子邮件出现。今天&#xff0c;任何活着的成年人都经历了技术上的巨大变化&#xff0c;这创造了一种新的行为方式。人才获取也是如此。 一个值得推荐的招聘管理系统 招聘团队被困在满足…

机器人系统工具箱的 Gazebo 模拟

Gazebo 联合仿真模块 机器人系统工具箱> Gazebo联合仿真模块库包含与仿真环境相关的 Simulink 模块。要查看该库&#xff0c;在 MATLAB 命令提示符下输入robotgazebolib。

AIGC-CVPR2024best paper-Rich Human Feedback for Text-to-Image Generation-论文精读

Rich Human Feedback for Text-to-Image Generation斩获CVPR2024最佳论文&#xff01;受大模型中的RLHF技术启发&#xff0c;团队用人类反馈来改进Stable Diffusion等文生图模型。这项研究来自UCSD、谷歌等。 在本文中&#xff0c;作者通过标记不可信或与文本不对齐的图像区域&…

机器学习(V)--无监督学习(六)流形学习

title: 机器学习(V)–无监督学习(二)流形学习 date: katex: true categories: Artificial IntelligenceMachine Learning tags:机器学习 cover: /img/ML-unsupervised-learning.png top_img: /img/artificial-intelligence.jpg abbrlink: 26cd5aa6 description: 流形学习 【降…

String(C++)

文章目录 前言文档介绍经典题目讲解HJ1 字符串最后一个单词的长度 模拟实现框架构造函数析构函数迭代器c_str()赋值size()capacity()reserveempty()[ ]访问front/backpush_backappendoperatorinsert一个字符insert一个字符串eraseswapfind一个字符find一个字符串substr()clear(…

集群开发学习(三)修改用户模块(git 使用,局域网设代理)

git 使用 参考&#xff1a;https://blog.csdn.net/weixin_60033897/article/details/136016074 在服务器端创建公钥私钥 git config --global user.email "1686660735qq.com" git config --global user.name qinliangql git config --global -l # 查看信息# 这样可…

基于组件的架构:现代软件开发的基石

目录 前言1. 基于组件的架构概述1.1 什么是组件&#xff1f;1.2 组件的分类 2. 基于组件的架构的优势2.1 提高代码的可重用性2.2 增强系统的灵活性2.3 简化维护和升级2.4 促进团队协作 3. 实现基于组件的架构3.1 识别和定义组件3.2 设计组件接口3.3 组件的开发和测试3.4 组件的…

摊牌了,我不装了~各种Amazon Bedrock小样儿、试用装,今天免费!

探索世界顶级的大模型、智能体、文生图、对话机器人……新手&#xff1f;还是专家&#xff1f;加入我们&#xff0c;解锁精彩内容&#xff1a; l 初体验&#xff1a;在 Amazon Bedrock Playground 直接调用强大的大模型&#xff0c;点亮生成式AI技能树。 l 文生图&#xff1a…

代码随想录训练营Day 65|卡码网99岛屿数量 深搜、99.岛屿数量 广搜 、100.岛屿的最大面积

1.岛屿数量 深搜 99. 岛屿数量 | 代码随想录 代码&#xff1a;&#xff08;在符合递归条件时进行递归处理&#xff09; #include <iostream> #include <vector> using namespace std; int dir[4][2] {1,0,0,1,-1,0,0,-1}; // 表示4个方向 上下左右 void dfs(cons…

每日练题(py,c,cpp).6_19,6_20

检验素数 from math import sqrt a int(input("请输入一个数&#xff1a;")) for i in range(2,int(sqrt(a))):if a%i 0:print("该数不是素数")breakelse: print("该数是素数")# # 1既不是素数也不是合数 # #可以用flag做标志位 # b int(…

向“黑公关”开战,比亚迪悬赏500万征集恶意诋毁线索

近日&#xff0c;比亚迪品牌及公关处总经理李云飞在微博发文&#xff0c;面向社会公开征集黑公关证据。 微博中&#xff0c;李云飞写道&#xff1a;“近期&#xff0c;我们收到多方提醒&#xff1a;某车企在使用黑公关手段&#xff0c;对我司品牌及产品进行贬低、拉踩和恶意诋…

c++里对 new 、delete 运算符的重载

&#xff08;1&#xff09;c 里 我们可以用默认的 new 和 delete 来分配对象和回收对象。 new 可以先申请内存&#xff0c;再调用对象的构造函数&#xff1b; delete 则先调用对象的析构函数&#xff0c;再回收内存。当然&#xff0c;当我们为类定义了 operator new () 和 oper…