OpenVX 高效数据输入输出指南
1. 高效数据输入输出简介
在视觉处理中,效率的关键往往在于数据移动。执行诸如加法或乘法等数学运算所需的时间和功耗,与从外部 DRAM 获取操作数所需的时间和功耗相比,简直微不足道。视觉处理中需要处理的数据集通常非常大,无法全部存储在典型嵌入式设备的片上 SRAM 中,因此必须谨慎管理并尽量减少从外部 DRAM 到内部 SRAM 的数据传输。
这一原则尤其适用于向 OpenVX 输入数据的初始阶段。在实时高分辨率系统中,初始输入可能是高清或更大尺寸的视频流。如果每个大尺寸输入图像都必须从相机输入内存区域复制到 OpenVX 系统内存中,那么在处理开始之前就已经失去了效率优势。幸运的是,OpenVX API 提供了从输入源到 OpenVX 处理引擎的零复制导入图像数据的功能。
此外,OpenVX 对象具有“不透明”的特性,即程序员不知道数据存储的底层内存位置和组织方式,只能通过该对象的 API 来操作数据对象。这使得实现可以进行优化,例如将数据对象存储在专用内存中,或者在不改变图形计算最终结果的情况下,将内存用于不同的目的。然而,在某些情况下,OpenVX 应用程序可能需要直接访问数据对象的部分内容,例如执行 OpenVX API 未提供的特殊计算。这时就需要使用映射(map)和取消映射(unmap)函数。
2. 外部源的高效数据输入输出
2.1 相关函数介绍
在视觉处理中,大部分高容量数据位于输入侧,例如高分辨率视频捕获。而视觉处理的输出数据量通常要小得多,例如分类标签或电机命令。不过,如果应用程序需要的输出是高分辨率带注释的视频,这些函数也可以用于输出侧。这里以相机输入为例进
超级会员免费看
订阅专栏 解锁全文
43

被折叠的 条评论
为什么被折叠?



