OpenVX设计概述

OpenVX设计概述
软件环境
OpenVX旨在直接由应用程序使用,或作为更高级别视觉框架、引擎或平台API的加速层,如图 2-1所示。
 
图 2-1. 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没有规定对内存分配方法或不透明内存对象布局的任何要求,也没有规定体系结构上结构的字节封装或对齐。
面向对象的行为
对于安全关键应用程序,OpenVX对象在编译时是强类型的,对于动态应用程序,在运行时也是强类型的。在vx_type_e列表中,每个对象都有其typedefd类型及其相关的枚举值。任何对象都可以安全地向下转换为vx_reference,以便在需要的函数中使用,特别是vxQueryReference,可以用于使用vx_enum获取vx_type_e值。
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中其他的节点集。
posted @   吴建明wujianming  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2024-01-07 汽车域控制器参考设计
2023-01-07 LLVM IR与C++ MUL函数代码
2022-01-07 CPU Cache原理与示例
点击右上角即可分享
微信分享提示