RK3588 RGA 测试

发布于:2025-05-23 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、数据分析总结【由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还有一定的约束,具体请参考手记手册

二、考链接

三、测试数据

源宽度 源高度 目标宽度 目标高度 缩放算法 OpenCV耗时 OpenCV CPU占用 RGA耗时 RGA CPU占用 RGA MSE RGA PSNR OpenCL 耗时 OpenCL CPU占用 OpenCL MSE OpenCL PSNR OpenCL 拷入 OpenCL resize 第一次 OpenCL resize 第三次 OpenCL 拷出
1920 1080 1280 720 INTER_NEAREST 0.539 0.106 5.245 0.078 1413.257 24.499 6.423 0.452 0.000 0.000 1.473 2594.655 0.734 0.159
1920 1080 240 240 INTER_NEAREST 0.153 0.011 3.908 0.052 1409.321 24.440 5.631 0.169 0.000 0.000 1.529 2531.695 0.273 0.044
1280 720 1920 1080 INTER_NEAREST 0.761 0.177 5.380 0.072 2212.022 24.461 5.080 0.439 0.000 0.000 0.579 2513.664 1.408 0.797
1280 720 240 240 INTER_NEAREST 0.124 0.009 2.105 0.027 1444.164 24.433 4.800 0.142 0.000 0.000 0.520 2573.901 0.368 0.107
240 240 1920 1080 INTER_NEAREST 0.733 0.137 4.409 0.054 2286.651 24.447 0.907 0.148 0.000 0.000 0.091 2549.562 1.314 0.329
240 240 1280 720 INTER_NEAREST 0.331 0.061 2.253 0.027 2294.696 24.444 1.158 0.184 0.000 0.000 0.063 2683.013 0.664 0.164
1920 1080 1280 720 INTER_LINEAR 3.564 0.114 5.465 0.077 149.644 25.950 12.423 0.342 0.000 0.000 1.438 2583.295 2.184 0.466
1920 1080 240 240 INTER_LINEAR 0.701 0.026 3.920 0.051 431.655 24.987 7.903 0.226 0.000 0.000 1.452 2522.416 0.486 0.097
1280 720 1920 1080 INTER_LINEAR 5.348 0.166 5.812 0.076 1487.377 24.550 7.987 0.243 0.000 0.000 0.822 2528.097 4.643 0.785
1280 720 240 240 INTER_LINEAR 0.507 0.020 2.114 0.027 874.505 24.628 5.267 0.164 0.000 0.000 0.576 2677.007 0.364 0.056
240 240 1920 1080 INTER_LINEAR 4.030 0.121 4.267 0.051 1504.197 24.539 5.481 0.167 0.000 0.000 0.092 2660.626 4.549 0.854
240 240 1280 720 INTER_LINEAR 1.953 0.059 2.182 0.026 1552.623 24.536 3.541 0.111 0.000 0.000 0.064 2692.640 2.182 0.402
1920 1080 1280 720 INTER_CUBIC 6.395 1.265 5.157 0.075 386.747 24.987 13.871 1.586 0.000 0.000 1.445 9.945 9.504 0.242
1920 1080 240 240 INTER_CUBIC 2.935 0.095 3.977 0.051 830.401 24.710 7.712 0.224 0.000 0.000 1.647 6.612 5.606 0.031
1280 720 1920 1080 INTER_CUBIC 8.115 1.594 5.759 0.080 1925.616 24.494 11.195 1.790 0.000 0.000 0.565 9.938 10.433 0.191
1280 720 240 240 INTER_CUBIC 2.279 0.074 2.018 0.025 1146.489 24.547 5.639 0.166 0.000 0.000 0.582 4.180 4.023 0.076
240 240 1920 1080 INTER_CUBIC 5.911 1.112 4.410 0.055 1909.478 24.486 5.309 1.094 0.000 0.000 0.087 6.906 5.307 0.161
240 240 1280 720 INTER_CUBIC 3.331 0.630 2.003 0.024 1916.178 24.487 3.555 0.682 0.000 0.000 0.079 4.420 3.538 0.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

网站公告

今日签到

点亮在社区的每一天
去签到