三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

024、HDR sensor三种实现路径——DOL/Staggered/Split-Pixel的时序/带宽/算力代价对比与选型

024、HDR sensor三种实现路径——DOL/Staggered/Split-Pixel的时序/带宽/算力代价对比与选型

024、HDR sensor三种实现路径——DOL/Staggered/Split-Pixel的时序/带宽/算力代价对比与选型

去年夏天,某款旗舰机型在户外逆光场景下被用户投诉“人脸死黑、天空过曝”,我们拉了一整晚log,最后发现问题不在3A,也不在tuning,而是sensor出图模式选错了——那颗sensor默认跑在DOL两帧模式,长帧曝光32ms,短帧只有2ms,动态范围倒是够,但运动物体边缘全是鬼影,人脸稍微一晃就糊成一片。当时团队里有人提议切到Split-Pixel,结果ISP的HDR合成模块不支持,硬切之后整条pipeline直接崩了。这个case让我意识到,HDR sensor的选型从来不是看单帧动态范围数字,而是要看你的ISP、带宽、算力和场景需求能不能咬合上。

先捋清楚三条路径的本质区别。DOL(Digital Overlap)是时间域上的多帧曝光,长帧和短帧在时间上错开,靠sensor内部的缓存把两帧对齐后输出。Staggered是DOL的变种,但帧与帧之间的曝光起始点有重叠,不是完全串行,这样能缩短两帧之间的时间间隔,鬼影比DOL轻一些。Split-Pixel则是空间域方案,每个像素内部拆成大小两个光电二极管,大管吃长曝光,小管吃短曝光,同一时刻读出,不存在时间错位,所以运动伪影几乎为零。

时序代价上,DOL最吃亏。长帧曝光32ms,短帧曝光2ms,如果两帧串行,总时间就是34ms,帧率直接掉到29fps左右。Staggered把短帧的曝光窗口塞进长帧的曝光过程中,总时间可以压到长帧曝光时间加一个极短的读出间隙,比如33ms,帧率能保住30fps。Split-Pixel最理想,单次曝光时间由长曝光决定,短曝光是同时发生的,总时间就是长帧曝光时间,32ms,帧率31fps左右。但注意,Split-Pixel的短管感光面积小,信噪比天然吃亏,暗光下短帧噪声会明显放大,这个代价是物理层面的,算法救不回来。

带宽这块,DOL和Staggered都是输出两帧数据,带宽翻倍。假设sensor是12bit RAW,1080p分辨率,单帧数据量约3MB,两帧就是6MB,如果帧率30fps,带宽需求就是180MB/s。Split-Pixel输出的是单帧,但每个像素包含两个值,数据量跟两帧一样大,也是6MB,带宽上并没有优势。真正拉开差距的是ISP侧的处理方式——DOL和Staggered需要做运动补偿和去鬼影,Split-Pixel只需要做像素级融合,ISP的DMA带宽和DDR访问模式完全不同。我们实测过,Split-Pixel的ISP带宽占用比DOL低15%左右,因为不需要额外的运动估计模块去读参考帧。

算力代价是选型时最容易忽略的坑。DOL和Staggered的合成算法必须包含运动检测和去鬼影,这玩意儿在移动平台上跑起来,GPU或NPU的占用率能到20%以上,而且算法调参极其痛苦——鬼影阈值调高了,运动物体边缘发虚;调低了,鬼影又压不干净。Split-Pixel的合成算法简单得多,本质上是一个查表映射加局部增益调整,算力消耗不到DOL的一半。但Split-Pixel的坑在标定,大小管的响应一致性需要逐颗sensor校准,产线标定时间比DOL多出30%,这个成本在量产阶段会让人抓狂。

从实战角度说,选型逻辑应该是这样的:如果你的产品主打运动场景,比如运动相机、无人机航拍,Split-Pixel是唯一解,DOL和Staggered的鬼影问题在快速运动下根本没法看。如果是安防监控,场景固定,运动物体少,DOL完全够用,而且DOL的暗光表现比Split-Pixel好,因为长帧曝光时间可以拉得更长。车载领域比较特殊,前视ADAS对运动伪影极其敏感,但Split-Pixel的暗光信噪比又不够,所以很多方案用Staggered加运动补偿,算力上多花点钱换画质。手机影像的话,旗舰机现在基本都走Split-Pixel加多帧融合的路线,中低端机还在用DOL,因为成本敏感。

这里踩过坑,Staggered的时序设计有个隐藏问题——长帧和短帧的曝光重叠区如果没算准,会导致亮度跳变。我们之前在某款车载sensor上遇到过,车辆从隧道出来瞬间,画面亮度突然闪一下,查了三天发现是Staggered的短帧曝光起始点比长帧晚了2ms,导致两帧的亮度基准不一致。后来在sensor驱动里加了曝光同步校准,问题才解决。别这样写,别以为Staggered只是DOL的优化版,它的时序控制复杂度比DOL高一个量级,sensor寄存器配置稍有不慎就会出怪问题。

带宽优化上有个小技巧,DOL和Staggered可以开sensor的ROI裁剪,只输出运动区域的两帧,静态区域用长帧单帧就行。我们在一款安防摄像头上这么干过,带宽直接从180MB/s降到120MB/s,ISP负载也降了。但Split-Pixel没法这么玩,因为大小管的数据是绑定的,裁剪ROI会破坏像素结构。

最后说选型建议,个人经验,别迷信动态范围数字。DOL标称120dB,Split-Pixel标称100dB,但实际场景里Split-Pixel的观感往往更好,因为运动伪影对视觉的破坏远大于动态范围那20dB的差距。如果你的ISP是老平台,不支持Split-Pixel合成,老老实实用DOL,别硬切。如果新项目,优先评估Split-Pixel,但一定要提前确认产线标定能力。车载和安防,Staggered是折中方案,但要做好时序调试的心理准备。手机端,Split-Pixel加多帧融合是趋势,但暗光下的噪声控制要靠算法补,别指望sensor自己搞定。

做影像系统选型,本质上是做取舍,没有完美的sensor,只有适合你场景的sensor。把时序、带宽、算力、标定成本这四笔账算清楚,比看任何datasheet都管用。

← 返回列表