当前位置: 首页 > news >正文

Linux上位机开发实践(OpenCV算法硬件加速)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        图像处理里面,opencv基本是一个标准模块。但是由于图像处理的特点,如果所有的算法都是cpu来做的话,效率会很低。那么,为了提高效率,就会使用好一点的cpu。在嵌入式设备上,用好一点的soc,自然而然对应的成本就会上升。所以,这里面就需要有一个平衡,即提高算法的性能,也要降低硬件的成本。

1、opencv常用的加速方法

        目前来说,opencv加速主要有这么几个方向。第一,汇编优化。这种方法,就是把常用的算法,用汇编指令重新实现一下,一般难度较大。第二,用cuda代替。cuda是nvidia公司的gpu开发平台。所以如果使用cuda,要么安装nvidia的显卡,要么使用nvidia的嵌入式soc,两者都不便宜。第三,使用带有硬加速平台的soc,比如某思的ive模块。

2、哪些算法可以做成硬加速

        图像处理中,有一些固定模式的算法,可以做成硬件加速的形式。这里面包括文件格式的转换、增强、滤波、二值化、膨胀、腐蚀等等。工业图像上面,一般对物体的提取也就是这几个步骤。只有最后一步轮廓提提取的时候,才会用cpu去算。

3、硬件加速原理

        和cpu一个、一个去处理元素不同,硬件处理图像的时候一般是数据读取、处理、保存同时进行的。在过程当中,很多计算是同时进行的,假设有一个3x3的矩阵,硬件来处理的话,就会这么来做,

        第一步,同时计算矩阵的9个数据,每个计算就是mac处理,即3乘1加;

        第二步,将9个计算好的数据做一次加法运算;

        第三步,计算结果写入buffer,等待写入内存。

4、怎么使用加速模块

        使用方法基本和opencv是一样,直接调用soc厂家提供的api即可。一般来说,对于一个应用而言,前半部分,都是使用加速模块完成的;后面的部分还是由cpu完成的。后面的这一段算法,没有办法用硬件加速完成,类似于轮廓查找、阈值剔除、业务逻辑处理等等。

        很多加速api其实一眼就知道对应的功能是什么,比如ss_mpi_ive_dilate、ss_mpi_ive_erode、ss_mpi_ive_threshold等等。如果想更简单一点,可以把mode设置为阻塞的模式,这样硬件执行完毕了,才能进行后续的动作。不过为了提高效率,最好是把所有的command都提交上去,等待所有的command的结果一起下来就好了。

        当然,使用加速模块的前提,首先是保证对应的算法驱动加载好。这些驱动要么位于kernel中,要么位于ko文件中。

5、怎么调试

        调试的方法一般有两种,一种是直接看api的返回值,即通过打印的方法来进行调试;另外一种就是通过查看cat /pro/unmap/ive的办法来进行调试。这些都是通用的步骤。

6、其他加速模块

        除了常用的图像加速之外,另外一块就是AI加速。很多soc现在都配备了npu,所以现在需要做的就是把pc训练好的model,通过厂家的工具翻译成soc可以识别的model,通过npu来加载、运行,获得最终的结果。不同的厂家可能有不同的名字来做这一件事情,比如某思就叫nnie,但是实质是一个道理。

        本质上,不管是isp,还是编解码、ive、nnie、crc、aes、mpp,本质上都是把常用的、费时间的、逻辑固定的算法硬件化,这样就不需要很好的cpu,也能实现一样的图像处理性能。

相关文章:

  • 探索R语言:在线学习资源汇总
  • UE5蓝图之间的通信------接口
  • 安装VS Code 服务器运行版本
  • 第二十四:查看当前 端口号是否被占用
  • 开源 2D 横版跳跃游戏 SuperTux
  • 【PyQt】俄罗斯方块的小程序开发
  • Django 使用 Celery 完成异步任务或定时任务
  • 【Linux】进程创建、进程终止、进程等待
  • Lua 中的 table 类型详解
  • 深入解析 HTML 中 `<script>` 标签的 async 和 defer 属性
  • 高并发短信系统设计:基于SharingJDBC的分库分表、大数据同步与实时计算方案
  • autogenstudio设置
  • Redisson的红锁,分段锁,公平锁,联锁。。。。。。
  • 信息安全管理与评估2021年国赛正式卷答案截图以及十套国赛卷
  • 高负载WEB服务器--Tomcat
  • 深入理解 v-show 指令及其使用方法
  • 【本地图床搭建】宝塔+Docker+MinIO+PicGo+cpolar:打造本地化“黑科技”图床方案
  • github进阶使用教程
  • .net执行脚本:通过字符串的形式来执行按钮的点击操作
  • 【Python实时数据处理】流式计算与异步编程实战
  • 东亚社会的“苦难诗学”:从《苦尽柑来遇见你》说起
  • 鸿蒙电脑正式亮相,五年布局积累超2700项核心专利
  • 国家矿山安全监察局发布《煤矿瓦斯防治能力评估办法》
  • 国铁集团:铁路五一假期运输收官,多项运输指标创历史新高
  • 动物只有在被认为对人类有用时,它们的建筑才会被特别设计
  • 国新办将于5月8日10时就《民营经济促进法》有关情况举行新闻发布会