找回密码
 立即注册
查看: 241|回复: 0

RockChip的RGA硬件图像处理加速器使用小例子

[复制链接]
发表于 2022-8-19 18:02 | 显示全部楼层 |阅读模式
RGA (Raster Graphic Acceleration Unit)是一个独立的2D硬件加速器,可用于加速点/线绘制,执行图像缩放、旋转、bitBlt、alpha混合等常见的2D图形操作。
本文使用RK3566,其规格如下:
硬件版本代码名称输入最小输入最大输出最小输出最大像素/周期性能(频率300M)
RGA2-EnhanceskylarkV22x28192x81922x24096x40962≈600Mpix/s

硬件版本代码名称输入图像数据格式输出图像数据格式
RGA2-EnhanceskylarkV2RGBA/BGRA/ARGB/ABGR8888RGBA/BGRA/ARGB/ABGR4444RGBA/BGRA/ARGB/ABGR5551RGB/BGR888RGB/BGR565YUV420 8位YUV420 10位YUV422 8位YUV422 10位YUYV/YVYU/UYVY/VYUY422BPP8/BPP4/BPP2/BPP1(仅适用于调色板)RGBA/BGRA/ARGB/ABGR8888RGBA/BGRA/ARGB/ABGR4444RGBA/BGRA/ARGB/ABGR5551RGB/BGR888RGB/BGR565YUV420 8位YUV422 8位YUYV/YVYU/UYVY/VYUY422YUYV/YVYU/UYVY/VYUY420YUV400Y4/Y1


本文使用程序见GitHub:
RGA模块支持库为librga.so,通过对图像缓冲区结构体struct rga_info进行配置,实现相应的2D图形操作。为了获得更友好的开发体验,在此基础上进一步封装常用的2D图像操作接口。新的接口主要包含以下特点:

  • 接口定义参考opencv/matlab中常用的2D图形接口定义,以减少二次开发的学习成本。
  • 为消除RGA硬件版本差异带来的兼容问题,加入RGA query查询功能。查询内容主要包括版本信息,输入输出大分辨率及图像格式的支持。
  • 对于2D图像复合操作,增加improcess接口。通过传入一系列预定义的usage执行复合操作。
  • 执行图像操作之前,需要对输入输出图像缓冲区进行处理。调用wrapbuffer_T接口将输入输出图像信息填充到结构体struct rga_buffer_t,结构体中包含分辨率及图像格式等信息。
1、图片输入


  • 使用libpng or libjpeg等开源库实现对用户输入图像的解码。
  • 参考imv 源码,进行图片类型识别。
  • 使用开源软件Opencv自适应打开图片文件。
  • 使用stb-image库,打开文件获取图像。(*)
参考了很多大佬的开源软件,最后选择了使用简单易用的stb库实现对图像文件的解析。
图片输入

解析图片:
p_src->img_data = stbi_load(file_patch, &iw, &ih, &n, 0);解析后的图像数据为img_data,图像的宽:iw;高:ih;颜色通道:n 其中n为:
enum {   
STBI_default = 0, // only used for desired_channels     
STBI_grey       = 1,   //灰度图   
STBI_grey_alpha = 2,    //灰度+透明度   
STBI_rgb        = 3,    //RGB图   
STBI_rgb_alpha  = 4    // RGB+透明度
};图像缩放

图像缩放功能使用rga接口,输入输出参数均为最简图像结构体。
struct image_param{     
int width; //宽     
int heigth; //高     
RgaSURF_FORMAT fmt; // 图像格式     
unsigned char *img_data; //图像数据
};
int rga_resize_test(struct image_param *p_src, struct image_param *p_dst)使用完成后需要使用release_image_file_buf接口释放图像内存!!!
图像剪裁

int rga_crop_test(struct image_param *p_src, struct image_param *p_dst, im_rect src_rect);测试了如下图片格式

输入图片输出图片颜色格式解析颜色格式是否正常输出转化时间ms
8192*81924096*4096RGBA32RGB888217.829
8192*81928192*2048YUV420RGB888不支持长宽超过分辨率的缩放
1920*10801280*720YUV420RGB8888.890
3840*21601280*720RGB32RGBA888827.267

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 05:33 , Processed in 0.140155 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表