尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

019、瑞芯微RK3588/RK3568 ISP架构:Rockchip ISP的3A框架与调试实战

019、瑞芯微RK3588/RK3568 ISP架构:Rockchip ISP的3A框架与调试实战 019、瑞芯微RK3588/RK3568 ISP架构Rockchip ISP的3A框架与调试实战上周在产线上盯一个RK3588的项目客户反馈夜间行车记录仪画面偏色红色车灯直接过曝成白色而且暗部噪点像下雪。我第一反应是AE和AWB的联动出了问题但拿到log一看3A统计值全在正常范围这就邪门了。后来翻到ISP的tunning参数发现是Crosstalk矩阵在低照度下被强制拉高把红色通道的串扰放大再加上NR的强度没跟上噪点全被当成细节保留下来。这种问题你不看芯片内部的数据流光靠调3A参数是永远调不出来的。瑞芯微的ISP架构跟高通、联发科最大的区别在于它的模块化程度。RK3588用的是双ISP pipeline每个pipeline可以独立跑一组3A也可以做binning合成。RK3568则是单ISP但支持多路复用。这个差异直接决定了你的软件架构怎么设计——如果你在RK3588上做双摄两个sensor各占一个pipeline那3A的同步就得靠硬件trigger不能像RK3568那样用软件轮询。我见过有团队在RK3588上把两个sensor挂到同一个pipeline结果帧率直接砍半因为ISP的带宽被分掉了。Rockchip的3A框架核心是RkAiqRockchip AIQ。它不像高通的CamX那样有完整的plugin机制也不像海思的ISP那样有独立的3A server。RkAiq是一个库直接链接到你的camera hal进程里。这意味着你的3A线程和ISP配置线程是共享同一个进程空间的一旦某个模块崩溃整个camera服务就挂了。所以调试的时候我习惯先把RkAiq的log级别开到最大用rk_aiq_set_log_level这个接口别嫌log多它能把每个模块的中间统计值都打出来比你在应用层瞎猜强一百倍。3A的启动顺序是个大坑。Rockchip的文档里写的是AE先跑然后AWB最后AF。但实际量产中如果你在sensor出流的第一帧就启动AE你会发现曝光值会震荡好几帧才收敛。原因在于RK3588的ISP里AE统计模块默认是关闭的你得先配置好统计窗口和权重再让ISP跑起来。我一般是在sensor stream on之前就把AE的统计窗口设成全画面权重用中心偏重然后等第二帧的统计值出来再启动AE算法。这样能省掉至少三帧的收敛时间。AWB的调试Rockchip的框架里有个叫rk_aiq_awb_stat_cfg的结构体里面有个zone的配置。默认是5x5的网格但如果你做的是车载项目前挡风玻璃的偏色会影响AWB这时候你得把玻璃区域对应的zone权重降下来。别用全局的AWB增益去补偿那样会把整个画面的色温都带偏。我做过一个项目客户要求车内和车外同时拍AWB死活调不好后来我把统计区域分成上下两块上面用日光色温的预设下面用白炽灯色温的预设然后根据AE的亮度值做线性插值效果立竿见影。AF这块RK3588的对比度AF算法在低对比度场景下容易拉风箱。我建议直接用PDAFRockchip的ISP支持sensor的相位对焦数据融合。但注意PDAF的校准数据是存在sensor的OTP里的如果你的模组厂没烧录那AF就会乱跳。调试的时候先用rk_aiq_af_get_calib_info看看校准数据读出来没有没有的话赶紧找模组厂要别自己瞎调搜索步长。调试工具方面Rockchip的IQ工具是RkISP10Tool但说实话这个工具在RK3568上能用在RK3588上经常连不上。我后来都是直接用adb推/etc/iqfiles/下的xml文件改完重启camera服务。这里有个坑RK3588的IQ文件是加密的你得用瑞芯微提供的rk_aiq_tool解密后才能改。别用十六进制编辑器硬改改完ISP直接不工作报iq load failed。NR和Sharpen的调试我建议先关掉一切看raw图。用rk_aiq_capture_raw抓raw然后在PC上用工具分析噪点水平。RK3588的NR模块有四个等级从NR_LEVEL_LOW到NR_LEVEL_HIGH但实际效果跟sensor的增益是强相关的。ISO 800以下用LOWISO 1600以上必须用HIGH否则暗部细节全没了。Sharpen的强度要跟NR联动NR开高了Sharpen就得降下来不然会出现白边。最后说一个量产踩过的坑。RK3568的ISP支持HDR但HDR的合成是在sensor端做的ISP只做tone mapping。如果你的sensor不支持HDR千万别在ISP里开hdr_mode否则画面会发灰因为ISP的tone mapping曲线是按HDR输入设计的。我见过有工程师为了省成本用普通sensor硬开HDR结果客户验收时直接退货。经验之谈瑞芯微的ISP调试核心是理解它的统计模块。AE、AWB、AF的统计都是独立的但它们的配置是互相影响的。你调AE的时候AWB的统计窗口也会跟着变因为AE改变了曝光时间画面的亮度分布就变了。所以调试顺序一定是先固定AWB和AF只调AE等AE收敛了再调AWB最后调AF。别想着一步到位那是不可能的。还有一点RK3588的ISP有两个pipeline如果你只用一个另一个会进入低功耗模式。这时候如果你去读它的寄存器读出来的是全零。别慌这不是bug是芯片的电源管理策略。你需要在dts里把另一个pipeline的电源一直开着或者用rk_aiq_set_pipeline_mode把它设成standby而不是off。调试ISP最忌讳的就是只看效果不看数据。瑞芯微的ISP架构虽然模块化但每个模块的输入输出都是可追踪的。你只要把rk_aiq_set_log_level开到RK_AIQ_LOG_LEVEL_DEBUG然后抓一帧raw再抓一帧yuv对比一下就知道是哪个模块出了问题。别凭感觉调参数那是在浪费产线的时间。
返回列表