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

RK3588 RGA 测试

RK3588 RGA 测试

    • 一、数据分析总结【由LLM生成】
    • 二、考链接
    • 三、测试数据
    • 四、测试过程
      • 4.1 编译librga SDK
      • 4.2 运行自带的测试
      • 4.3 生成`Resize`测试程序
      • 4.4 运行`Resize`测试
      • 4.5 遇到的错误

一、数据分析总结【由LLM生成】

本次测试针对不同的源图像尺寸、目标图像尺寸和缩放算法,比较了OpenCV、RGA和OpenCL三种方法的性能表现,包括耗时、CPU占用率,以及对于RGA算法的MSE(均方误差)和PSNR(峰值信噪比)评估。以下是详细分析:


1. 缩放算法对性能的影响

  • INTER_NEAREST(最近邻插值)

    • OpenCV:耗时最低,耗时范围为0.124ms至0.761ms,CPU占用率在0.009%至0.177%之间。
    • RGA:耗时略高于OpenCV,范围为2.105ms至5.380ms,但CPU占用率较低,介于0.027%至0.078%之间。
    • OpenCL:耗时在0.907ms至6.423ms之间,CPU占用率在0.142%至0.452%之间。
  • INTER_LINEAR(线性插值)

    • OpenCV:耗时有所增加,范围为0.507ms至5.348ms,CPU占用率在0.020%至0.166%之间。
    • RGA:耗时稳定在2.114ms至5.812ms,CPU占用率介于0.025%至0.077%之间。
    • OpenCL:耗时波动较大,范围为0.576ms至12.423ms,CPU占用率在0.092%至0.466%之间。
  • INTER_CUBIC(三次样条插值)

    • OpenCV:耗时显著增加,范围为2.279ms至8.115ms,CPU占用率较高,在0.074%至1.594%之间。
    • RGA:耗时略有增加,范围为2.003ms至5.977ms,CPU占用率在0.024%至0.080%之间。
    • OpenCL:耗时最高,范围为0.565ms至13.871ms,CPU占用率在0.079%至1.790%之间。

2. 图像尺寸对性能的影响

  • 源图像较大,目标图像较小(下采样)

    • 当从高分辨率缩小到低分辨率时,OpenCV的耗时相对较低。
    • RGA的耗时变化不大,表现出稳定性。
    • OpenCL的耗时在部分情况下高于OpenCV和RGA。
  • 源图像较小,目标图像较大(上采样)

    • OpenCV的耗时显著增加,特别是在使用INTER_CUBIC算法时。
    • RGA仍然保持较为稳定的耗时。
    • OpenCL在某些情况下耗时较低,但整体波动较大。

3. 不同方法的性能比较

  • 耗时

    • OpenCV:在简单的插值算法和下采样情况下耗时最低,但在上采样和复杂算法下耗时增加明显。
    • RGA:耗时稳定,受算法和尺寸变化影响较小。
    • OpenCL:耗时波动较大,受算法和尺寸影响显著。
  • CPU占用率

    • OpenCV:CPU占用率随着算法复杂度和图像尺寸的增加而提升。
    • RGA:CPU占用率始终较低,资源占用少。
    • OpenCL:CPU占用率介于OpenCV和RGA之间,部分情况下接近OpenCV的占用水平。

4. 图像质量分析

  • RGA的MSE和PSNR

    • MSE范围:1413.257至2294.696,数值较高,表示图像与原图有较大差异。
    • PSNR范围:24.433至25.950dB,数值偏低,表示图像质量下降。
    • 说明:RGA在追求速度的同时,可能牺牲了部分图像质量。
  • OpenCL的MSE和PSNR

    • 数据显示为0,表示跟OpenCV的结果没有差异

5. 综合结论

  • 性能方面

    • 对于简单的缩放任务,OpenCV具有较低的耗时和适中的CPU占用率。
    • RGA在耗时和CPU占用率上表现出色,特别适合对实时性要求高、CPU资源有限的应用场景。
    • OpenCL的性能不够稳定,耗时和CPU占用率波动较大,需要根据具体情况评估。
  • 图像质量方面

    • RGA的图像质量相对较差,需权衡速度和质量的需求。

6. 建议

  • 选择合适的缩放算法

    • 根据对图像质量和处理速度的要求选择合适的算法。INTER_NEAREST速度快但质量一般,INTER_LINEAR和INTER_CUBIC质量更好但耗时更长。
  • 方法选择

    • 如果追求速度且对图像质量要求不高,RGA是一个优选方案。
    • 如果对图像质量要求较高,建议使用OpenCV的高级插值算法。
    • 使用OpenCL时,需要进一步测试其图像质量,并优化性能以确保稳定性。
  • 进一步工作

    • 建议对OpenCL方法进行完整的MSE和PSNR测试,以评估其图像质量。
    • 针对不同的应用场景,平衡性能和质量,选择最适合的缩放方案。

本次测试全面比较了三种缩放方法在不同情况下的性能和质量表现。结果显示,没有一种方法在所有方面都占优势,需根据实际需求进行取舍。在实际应用中,应考虑到图像尺寸、缩放比例、质量要求以及硬件资源等因素,选择最适合的缩放策略。此外RGA还有一定的约束,具体请参考手记手册

二、考链接

  • Rockchip_Developer_Guide_RGA_CN

三、测试数据

源宽度源高度目标宽度目标高度缩放算法OpenCV耗时OpenCV CPU占用RGA耗时RGA CPU占用RGA MSERGA PSNROpenCL 耗时OpenCL CPU占用OpenCL MSEOpenCL PSNROpenCL 拷入OpenCL resize 第一次OpenCL resize 第三次OpenCL 拷出
192010801280720INTER_NEAREST0.5390.1065.2450.0781413.25724.4996.4230.4520.0000.0001.4732594.6550.7340.159
19201080240240INTER_NEAREST0.1530.0113.9080.0521409.32124.4405.6310.1690.0000.0001.5292531.6950.2730.044
128072019201080INTER_NEAREST0.7610.1775.3800.0722212.02224.4615.0800.4390.0000.0000.5792513.6641.4080.797
1280720240240INTER_NEAREST0.1240.0092.1050.0271444.16424.4334.8000.1420.0000.0000.5202573.9010.3680.107
24024019201080INTER_NEAREST0.7330.1374.4090.0542286.65124.4470.9070.1480.0000.0000.0912549.5621.3140.329
2402401280720INTER_NEAREST0.3310.0612.2530.0272294.69624.4441.1580.1840.0000.0000.0632683.0130.6640.164
192010801280720INTER_LINEAR3.5640.1145.4650.077149.64425.95012.4230.3420.0000.0001.4382583.2952.1840.466
19201080240240INTER_LINEAR0.7010.0263.9200.051431.65524.9877.9030.2260.0000.0001.4522522.4160.4860.097
128072019201080INTER_LINEAR5.3480.1665.8120.0761487.37724.5507.9870.2430.0000.0000.8222528.0974.6430.785
1280720240240INTER_LINEAR0.5070.0202.1140.027874.50524.6285.2670.1640.0000.0000.5762677.0070.3640.056
24024019201080INTER_LINEAR4.0300.1214.2670.0511504.19724.5395.4810.1670.0000.0000.0922660.6264.5490.854
2402401280720INTER_LINEAR1.9530.0592.1820.0261552.62324.5363.5410.1110.0000.0000.0642692.6402.1820.402
192010801280720INTER_CUBIC6.3951.2655.1570.075386.74724.98713.8711.5860.0000.0001.4459.9459.5040.242
19201080240240INTER_CUBIC2.9350.0953.9770.051830.40124.7107.7120.2240.0000.0001.6476.6125.6060.031
128072019201080INTER_CUBIC8.1151.5945.7590.0801925.61624.49411.1951.7900.0000.0000.5659.93810.4330.191
1280720240240INTER_CUBIC2.2790.0742.0180.0251146.48924.5475.6390.1660.0000.0000.5824.1804.0230.076
24024019201080INTER_CUBIC5.9111.1124.4100.0551909.47824.4865.3091.0940.0000.0000.0876.9065.3070.161
2402401280720INTER_CUBIC3.3310.6302.0030.0241916.17824.4873.5550.6820.0000.0000.0794.4203.5380.085

四、测试过程

4.1 编译librga SDK

git clone --recursive https://github.com/nyanmisaka/rk-mirrors.git
cd rk-mirrors/rm -rf build && mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TARGET=buildroot \-DRGA_SOURCE_CODE_TYPE=cpp -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
make -j4
make install
cd ..export LD_LIBRARY_PATH=$PWD/build/install/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$PWD/samples/utils/3rdparty/libdrm/lib/arm64/:$LD_LIBRARY_PATH
export PATH=$PWD/build/install/bin:$PATH

4.2 运行自带的测试

cp samples/sample_file/in* /data
rgaImDemo --querystrin# Copy the image by RGA.The default is 720p to 720p.
rgaImDemo --copy# Scaling up 720p(1280x720) -> 1080p(1920x1080).         
rgaImDemo --resize    up     # Scaling down 720p(1280x720) -> 480p(720x480).
rgaImDemo --resize    down    # Crop the image by RGA. a picture of 300*300 size is cropped from (100,100).
rgaImDemo --crop# Rotate the image by RGA 90 degrees.
rgaImDemo --rotate  90# Rotate the image by RGA 180 degrees.
rgaImDemo --rotate  180# Rotate the image by RGA 270 degrees.
rgaImDemo --rotate  270# Flip the image by RGA  Horizontal mirror.
rgaImDemo --flip H# Flip the image by RGA  Vertical mirror.
rgaImDemo --flip V# 调用RGA实现快速图像平移操作 RGA.Default translation (300,300).
rgaImDemo --translate   # Blend the image by RGA Porter-Duff SRC mode.
rga

相关文章:

  • 解决leetcode第3548题.等和矩阵分割II
  • 推测解码算法在 MTT GPU 的应用实践
  • C++23 容器推导指引中对于分配器的非推导语境(P1518R2)
  • MCP协议:AI时代的“万能插座”,如何重塑互联网技术生态?
  • 【1004. 最大连续1的个数 III】
  • Redis进阶之高可用
  • 操作系统学习笔记第1章 操作系统概述(灰灰题库
  • SAR ADC 的常见架构
  • Spring Task
  • 结课作业自选01. 内核空间 MPU6050 体感鼠标驱动程序(二)(完整实现流程)
  • 服务器硬盘分类
  • 服务器磁盘按阵列划分为哪几类
  • 【Vue】将响应式对象转为非响应式对象
  • (37)服务器增加ipv6配置方法
  • 浪潮Inspur服务器产品线概述
  • van-picker实现日期时间选择器
  • fatal error: uuid/uuid.h: No such file or directory 编译问题修复。
  • linux杀死进程自身
  • 准备好,开始构建:由 Elasticsearch 向量数据库驱动的 Red Hat OpenShift AI 应用程序
  • linux二进制安装mysql:
  • 做牙的网站叫什么/北京网站优化专家
  • 做ppt的网站叫什么/seo网站诊断价格
  • 什么网站可以做长图攻略/百度快照搜索
  • 阿里云域名注册云盾/专业seo培训学校
  • 临沧市住房和城乡建设局门户网站/百度网站收录提交入口
  • 哪里可以免费建网站/近三天重大新闻摘抄