均值滤波

功能介绍

实现均值滤波功能,加速方式为NEON加速,暂时只支持int16,uint16格式。

代码仓库:https://c-gitlab.horizon.ai/HHP/box/hobot_cv

支持平台

平台 运行方式 示例功能
旭日X3派 Ubuntu 20.04 读取ToF图片,进行均值滤波

准备工作

旭日X3派

  1. 旭日X3派已烧录好地平线提供的Ubuntu 20.04系统镜像。

  2. 旭日X3派已成功安装TogetheROS.Bot。

使用介绍

当前版本支持的参数范围如下:

  • 滤波类型:均值滤波

  • 支持的数据类型:int16,uint16

  • 滤波核:3x3,5x5

package中提供了简单测试程序,输入为本地的ToF图片,调用hobot_cv中接口实现均值滤波功能。具体接口说明可参考hobot_cv pakcage中的README.md进一步了解。

旭日X3派

# 配置TogetheROS环境
source /opt/tros/setup.bash

# 从TogetheROS的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/lib/hobot_cv/config/ .

# 启动测试程序pkg
ros2 launch hobot_cv hobot_cv_neon_blur.launch.py

结果分析

输出结果:
[neon_example-1] ===================
[neon_example-1] image name :config/tof_images/frame1_4.png
[neon_example-1] hobotcv mean cost time:674
[neon_example-1] opencv mean cost time:1025
[neon_example-1] hobotcv mean save rate:0.342439
[neon_example-1]
[neon_example-1] analyse_result start
[neon_example-1] ---------Mean_Blur
[neon_example-1] error sum:8.43744e+06,max:1,mean_error:0.430833
[neon_example-1]
[neon_example-1] -------------------------

其中:

hobotcv mean cost time:674 //hobot_cv 均值滤波neon加速接口耗时674微秒。 opencv mean cost time:1025 //表示opencv的均值滤波耗时1025微秒。 hobotcv mean save rate = (opencv cost time - hobotcv cost time)/ opencv cost time = 0.342439 从以上比较结果,经过hobotcv加速后均值滤波性能提升34%

error sum:8.43744e+06,max:1,mean_error:0.430833 //均值滤波单张图片总误差是:8.43744e+06,单个像素最大误差是:1,平均误差:0.430833 均值滤波平均误差 = sum / (width x height) = 8.43744e+06 / (320 x 240)

hobot_cv与opencv处理性能对比

接口类型 滤波核大小 耗时(ms) 单核CPU占比(%)
Hobotcv mean Size(3,3) 0.466397 31.8
Opencv mean Size(3,3) 0.676677 40.2
Hobotcv mean Size(5,5) 0.737171 47.7
Opencv mean Size(5,5) 0.798177 52.9