openvx 2:设计概述(一)

Openvx是一个标准化的计算机视觉框架,旨在提高性能和可移植性,支持跨平台运行和硬件优化。它通过图的形式连接节点来实现视觉功能,其中节点代表内核,数据对象在节点间传递。图中的数据依赖关系定义了节点的执行顺序,虚拟数据对象允许优化,而错误对象用于处理运行时问题。
摘要由CSDN通过智能技术生成

第二章:设计概述

2.1 应用场景

Openvx可以直接用于应用程序,也可以作为高级框架或平台api的加速层。openvx常见使用场景如:​

此图描述得视觉处理常用得调度架构,用户要实现有关视觉得某些功能,首先设计顶层的app,然后调用一些cv得函数/框架,接着通过openvx将各函数部署在不同得硬件平台上运行;

2.2 设计目标

Openvx做为一个标准化的计算机视觉功能框架,能够在各种平台上运行,并允许供应商在其平台上进行加速优化。Openvx可以通过为常用视觉函数以及函数集合提供抽象来提高视觉应用程序的性能和效率,从而尽可能的减少运行时间。

Openvx的目标是尽可能多的覆盖常用的视觉程序。

2.2.1 硬件的优化

本文档中没有介绍在实现中可以使用哪种加速方法或技术,供应商可以选择任意不同的实现方法,比如使用并行方式,或者是采用专门的硬件设备。

本规范也没有对某个性能级别做出声明或要求,因为这可能在不同平台和使用场景之间存在明显的不同。

2.2.2 硬件约束

Openvx专注于在不同硬件设备上都能显著加速视觉函数。本规范的未来版本可能会在实现这些功能的硬件加速时将附加的视觉功能纳入核心标准。

2.3 设想

2.3.1 可移植性

Openvx的设计宗旨是尽可能地提高性能和可移植性,尽量让API函数不同的设备上能够使用。

在一些情况下对可移植性进行了折衷,比如用openvx API构造的图应该能在不同的设备上能运行,且能返回可能接近的结果;

在本规范中定义为“实现定义”(implementation-defined)的情况下,可移植性可能会收到损害。

2.3.2 不透明性

Openvx旨在解决广泛的设备和平台中的兼容性问题,从嵌入式系统到桌面机器及分布式计算架构。

openvx中除了面向用户的数据之外,所有的数据都是不可见的。每个实现都提供了用于访问数据的标准化接口,可以满足特定的硬件、平台的分配需求。

从其他API导入或共享的内存不属于openvx,这些仍需要创建者进行维护和访问。Openvx没有规定对内存分配方法或不透明内存对象布局的任何要求,也没有规定结构体的打包及对齐方式。

2.4 面向对象的行为

Openvx对象在编译时是 安全关键型 应用程序的强类型对象,在运行时是动态应用程序的强类型对象。每个对象在vx_type_e列表中都有其类型定义和关联枚举值。任何对象都可以向下安全的转为vx_reference,可以使用 vxQueryReference 来查询该refernece 的vx_enumvx_type_e

(简单理解,open_vx会把数据类型转为reference在内部进行传递)。

2.5 openvx框架对象

该规范定义了以下openvx框架对象:

  1. Object: Contex:openvx上下文是所有openvx对象的对象域。所有数据对象和所有框架对象都存在于上下文中。Openvx上下文保持所有对象的引用计数,并且会在析构过程中进行垃圾收集来释放使用的reference。虽然多个客户端可以连接到openvx上下文,但所有的数据都是私有的,因为对象的引用只提供给创建方。在不同context中创建的reference不支持在同一个函数中使用,需要用户自己去实现;
  2. Object: Kernel: openvx中的内核是计算机视觉函数的抽象表示,如“Sobel Gradient” 或 “Lucas Kanade Feature Tracking”.
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值