Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RK3588s平台 RGA进行图像缩放,会产生概率性像素偏移,导致视频抖动 #85

Open
njustmxn opened this issue Sep 4, 2024 · 4 comments

Comments

@njustmxn
Copy link

njustmxn commented Sep 4, 2024

RK3588s平台,多路视频采集,需要把不同分辨率的视频统一到1080p分辨率,其中还需要进行各自通道的电子变倍。图像缩放使用librga的improcess接口,在进行图像区域放大的场景中,输出视频会产生左上到右下的斜向抖动,抖动概率大约为10%,抖动幅度大约为2~4像素。
比如:640x512的小图像,YUYV格式,使用等比例放大的方式把图像放大成1280x1024填充到1080p的图像中,格式为RGB888,放大因子为2,使用improcess函数,原图像裁剪区域为[0, 0, 640, 512], 输出图像填充区域为[320, 28, 1280, 1024],产生的输出视频会抖动;
在需要进行电子变倍的场景中,从原图像中指定的部分区域图像,使用improcess函数放大到1080p,产生的视频还是会抖动;
其中,原图像和目标图像的内存都是以dmafd的方式导入到rga,满足16字节对齐的要求,裁剪区域与填充区域的坐标和尺寸都进行了偶数化处理。
猜测这个抖动的问题大概率是RGA的问题,请官方大神关注并处理。
我邮箱:[email protected],需要时可以进行沟通

2024-09-04.16_43_34.mp4
2024-09-04.16_48_00.mp4
@njustmxn
Copy link
Author

njustmxn commented Sep 4, 2024

rga_api version 1.10.1_[0],驱动也是配套的最新版

@njustmxn
Copy link
Author

njustmxn commented Sep 7, 2024

进一步说明:只要是从小分辨率图像进行放大操作,都会产生概率性抖动

@njustmxn
Copy link
Author

njustmxn commented Sep 9, 2024

进一步说明:视频采集总共有2路,一路为3840x2160@60Hz,一路为1920x1080@30Hz,此时RGA三个核心(RGA3_0, RGA3_1, RGA2_0)的负载率分别为40%~46%,16%~20%,0%~1%,在此高负载率的情况下,从小分辨率图像或图像区域放大到1080p,会产生斜向的抖动。仅采集3840x2160@60Hz这一路时,将3840x2160的图像缩小到1080p,RGA三个核心的负载率会高达40%,14%,0%。所以,此时从3840x2160图像中扣取一个局部区域并将其放大到1080p,没有观测到抖动现象,因为此时源图像的采样区域减少了,RGA三个核心的负载率会降低到18%,2%,0%左右,负载率降低了,基本不出错了。
综上:是RGA的高负载率导致了电子变倍功能的异常,产生了图像抖动。
但是3840x2160图像降采样成1080p是基本需求,默认是不进行电子变倍的,且另一路也要同时采集,所以目前抖动的现象无法规避,请问官方工程师,有没有啥解决方案?

@njustmxn
Copy link
Author

问题已解决,多线程下采用imconfig的方式,把3840x2160分辨率的采集预处理工作配置到RGA2核心上,把另一路低分辨率的采集预处理工作配置到RGA3_1核心上,使同一路采集的预处理工作不在三个核心上来回跳转,可解决缩放抖动的问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant