OpenVX参数与功能模块

设计目标
OpenVX被设计为标准化计算机视觉功能的框架,能够在各种平台上运行,并可能通过供应商在该平台上的实施来加速。OpenVX可以通过提供常用视觉函数的抽象和函数聚合的抽象图,提高视觉应用程序的性能和效率,从而为实现者提供最小化运行时开销的机会。
OpenVX中的功能旨在涵盖许多视觉应用程序所需的通用功能。
1. 硬件优化
OpenVX在其实现中,没有说明可以使用哪种加速方法或技术。供应商可以选择任意数量的实现方法,例如并行和/或专用硬件卸载技术。OpenVX也没有对性能级别做出任何声明或要求,因为可能因平台和用例而异。
2.硬件限制
OpenVX专注于视觉功能,这些功能可以通过不同的硬件显著加速。当这些功能的硬件加速变得实用时,OpenVX的未来版本可能会将额外的视觉功能纳入核心标准。
2.2.3假设
1.便携性
OpenVX的设计旨在尽可能最大限度地提高功能和性能的可移植性,同时认识到API旨在用于具有特定限制和特性的各种设备。可对可移植性进行权衡。例如,使用此API构建的可移植图形,应适用于任何OpenVX实现,并在OpenVX一致性测试定义的精度范围内返回类似的结果。
在OpenVX中被确定为实现定义时,可移植性可能会受到损害。
2.不透明性
OpenVX旨在解决非常广泛的设备和平台,从深度嵌入式系统到台式机和分布式计算架构。OpenVX API通过对大多数程序数据使用不透明对象,解决了这一范围的可能实现,而不会将硬件特定需求强加给任何特定的实现。
除了面向客户端的结构之外,所有数据都是不透明的,并且隐藏在引用后面,该引用可能与实现所需的一样薄或一样厚。每个实现都提供了访问数据的标准化接口,这些接口考虑了专门的硬件、平台或分配要求。从其他API导入或共享的内存不包含在OpenVX中,并且仍然由创建者维护和访问。
OpenVX没有规定对内存分配方法或不透明内存对象布局的任何要求,也没有规定体系结构上结构的字节封装或对齐。
2.2.4.面向对象的行为
对于安全关键应用程序,OpenVX对象在编译时是强类型的,对于动态应用程序,在运行时也是强类型的。在vx_type_e列表中,每个对象都有其typedefd类型及其相关的枚举值。任何对象都可以安全地向下转换为vx_reference,以便在需要的函数中使用,特别是vxQueryReference,可以用于使用vx_enum获取vx_type_e值。
2.2.5. OpenVX 框架对象
OpenVX定义了以下OpenVX框架对象。
1)Object: Context:上下文-OpenVX上下文是所有OpenVX对象的对象域。所有数据对象以及所有框架对象,都存在于上下文中。OpenVX上下文保留所有对象的引用计数,并且必须在解析构建过程中进行垃圾收集,以释放丢失的引用。虽然多个客户端可以连接到OpenVX上下文,但所有数据都是私有的,因为数据对象的引用,只提供给创建方。在不同上下文中创建的数据对象上,调用OpenVX函数的结果是实现定义的。
2)Object: Kernel:内核-OpenVX中的内核是计算机视觉函数的抽象表示,如Sobel梯度或Lucas Kanade特征跟踪。视觉功能可以实现许多与其他功能相似或相同的功能,但只要它由相同的字符串和枚举命名,并且符合OpenVX指定的结果,它仍然被视为一个唯一的内核,内核类似于函数签名。
3)Object: Parameter:参数-传递给计算机视觉函数的抽象输入或输出数据对象。该对象包含内核描述参数用法的签名。这些信息包括:
(1)签名索引:签名中参数的编号索引。
(2)目标类型:例如VX_Type_IMAGE、VX_Type_ARRAY或VX_Type_e中的其他目标类型。
(3)使用模型:例如VX_INPUT或VX_OUTPUT。
(4)当前状态:例如VX_PARAMETER_State_REQUIRED或
VX_PARAMETER_State_OPTIONAL。
4)Object: Node:节点-节点是内核的一个实例,它将与一组特定的引用(参数)配对。节点仅从单个图形创建并与之关联。从节点提取vx_parameter时,可以访问其他属性。
引用-从节点创建功能(例如vxSobel3x3Node)分配给该参数索引的vx_Reference。
5)Object: Graph:图-以有向(仅单向)非循环(不循环)方式连接的一组节点。一个Graph可能具有未连接到同一Graph中其他的节点集。
OpenVX 数据对象
数据对象是由节点中的图处理的对象。
1)Object: Array
不透明的数组对象,可以是基元数据类型或结构的数组。
2)Object: Convolution
包含vx_int16值的M×N矩阵的不透明对象。还包含用于规范化的缩放因子。专门
用于vxuConvolve和vxConvolveNode。
3)Object: Delay
一个不透明的对象,包含手动控制的、临时延迟的对象列表。
4)Object: Distribution
包含频率分布(例如直方图)的不透明对象。
5)Object: Image
一个不透明的图像对象,可能是vx_df_image_e中的某种格式。
6)Object: LUT
与vxTableLookupNode和vxuTableLookup一起使用的不透明查找表对象。
7)Object: Matrix
一个不透明的对象,包含一些标量值的M×N矩阵。
8)Object: Pyramid
一个不透明的对象,包含多个级别的缩放vx_image对象。
9)Object: Remap
一个不透明对象,包含用于变换图像的源点到目标点的映射。
10)Object: Scalar
包含单个基元数据类型的不透明对象。
11)Object: Threshold
包含阈值设置的不透明对象。
12)Object: ObjectArray
一个不透明的数组对象,可以是OpenVX的任何数据对象(非数据类型)的数组,
Delay和ObjectArray对象除外。
13)Object: Tensor
不透明的多维数据对象。用于vxHOGFeaturesNode、vxHOGCellsNode和神经网络
扩展等功能。
错误对象
错误对象是可能从其他对象返回的专用对象,当发生严重的平台问题(即内存不足或无法控制)。可能从其他对象创建者函数返回的专用对象。这些可以在创建这些对象时进行检查,但检查也可能延迟到其他API中使用或验证,实现必须返回适当的错误,以指示使用了无效的对象类型。
vx_<object> obj = vxCreate<Object>(context, ...);
vx_status status = vxGetStatus((vx_reference)obj);
if (status == VX_SUCCESS) {
// 目标是好的
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》4本书,非常感谢

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

OpenVX基本原理与历史

OpenVX基本原理 2.1 引言 2.1.1 摘要 OpenVX 是一个低级编程框架域,用于支持软件开发人员,可高效访问计算机视觉硬件加速功能和性能的可移植性。OpenVX 旨在支持现代硬件架构,例如,移动和嵌入式 SoC 以及桌面系统。其中许多系统是并行和异构的:多个处理器类型包括多核 CPU…

L4D2自制角色Mod - HUI篇

如何以相对简易的思路自制求生之路2求生者头像Mod本文是笔者尝试制作 求生之路2 角色 Mod 的过程中编写的笔记,笔者的背景是有基础的计算机知识和图像处理软件的使用经验,相信大多数读者朋友都有同样的水平。本文面向希望能快速简单地自定义游戏内角色图像/模型,但对更深层次…

使用Netty与前端请求进行交互实现实时通讯

引言因为不满足与一般的SpringBoot CRUD开发(太无聊了)所以去学一下网络编程,第一站就是通过B站老罗的EasyChat项目了解到了Netty这个网络框架,在学习这个项目之前也是去学习了一下Netty框架的使用以及相关的原理知识所以是有一定了解的,但是只是一味的学习不去实践总感觉是空中…

如何使用 Filebeat 8 连接 Easysearch

在日志场景,还是有很多小伙伴在使用 Filebeat 采集日志的。今天我来实战下使用 Filebeat 8 连接 Easysearch 。本次使用 Easysearch-1.9.0 版本和 Filebeat-8.17.0 版本做演示,也适用 Filebeat-oss-8.17.0 版本。 Easysearch 不开启兼容参数的情况 Easysearch 默认情况下未开…

25.2.7小记

异常捕捉 try{} catch{} import java.util.Scanner;public class ArrayIndex {public static void main(String[] args) {int [] a =new int[10];int idx;Scanner in = new Scanner(System.in);idx = in.nextInt();try{a[idx] = 10;System.out.println("hello");}cat…

《笨办法学Python3》PDF、EPUB免费下载

本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。本书是基于Python 3.6版本编…

RocketMQ实战—5.消息重复+乱序+延迟的处理

大纲 1.根据RocketMQ原理分析为什么会重复发优惠券 2.引入幂等性机制来保证数据不会重复 3.如何用死信队列处理优惠券系统数据库宕机 4.基于RocketMQ的订单库同步为什么会消息乱序 5.如何解决RocketMQ的消息乱序问题 6.RocketMQ的顺序消息机制的代码实现 7.基于RocketMQ的数据过…

VSCODE接入DeepSeek R1实现AI完成自动化脚本实战开发

大家好,我是六哥,今天还是我们喜爱的DeepSeek的玩法,今天来个实战案例,和大家分享一下如何将DeepSeek接入VS Code,结合AI Toolkit插件完成自动化脚本的实战开发。 一、准备 微软官方为我们提供了一个针对AI辅助的插件——AI Toolkit for Visual Studio Code。这个插件功能…

L0G2-Python 前置基础

L0G2-Python 前置基础 1. 任务一 Leetcode 383 通过的截图通过的代码 class Solution(object):def canConstruct(self, ransomNote, magazine):""":type ransomNote: str:type magazine: str:rtype: bool"""# 只使用 defaultdict(int) 避免 if 语…

L0G3-Git 基础知识

L0G3-Git 基础知识 1. 任务一 破冰活动之自我介绍 1.1 配置 git 直接采用全局设置的方式 git config --global user.name "sakuralggm" git config --global user.email "myemail@qq.com"查看全局配置 git config --global --list1.2 fork 项目1.3 克隆项目…