036、高动态范围传感器技术:Dual Conversion Gain、多曝光与分像素HDR

036、高动态范围传感器技术:Dual Conversion Gain、多曝光与分像素HDR
036、高动态范围传感器技术Dual Conversion Gain、多曝光与分像素HDR去年夏天我在调试某旗舰手机的主摄模组时遇到一个诡异现象——夜景模式下路灯周围总是出现一圈紫红色的光晕像极了老式胶片相机上的“鬼影”。但这不是镜头镀膜的问题因为切换到普通模式就消失了。我盯着RAW图看了三小时发现罪魁祸首是HDR合成时长曝光帧的像素已经饱和而短曝光帧的增益又太低导致路灯边缘的过渡区出现了非线性响应。这让我重新审视了高动态范围传感器的底层逻辑——不是所有HDR都叫真HDR有些只是把动态范围“摊平”了并没有真正“撑大”。从像素阱容说起为什么我们需要HDR传统CMOS传感器的动态范围受限于两个物理瓶颈满阱容量Full Well Capacity和读出噪声。满阱容量决定了像素能装多少电子读出噪声决定了你能分辨的最小信号。假设一个像素的满阱容量是10000e⁻读出噪声是5e⁻那么理论动态范围就是20*log10(10000/5) ≈ 66dB。但现实场景中从阴影到高光的亮度跨度可能超过120dB——比如逆光人像人脸在阴影里只有几十个电子而背景天空的亮度可能让像素瞬间饱和。早期方案是“多帧合成”也就是连续拍三张不同曝光的照片再对齐融合。但这种方法有两个致命缺陷一是运动物体容易产生鬼影二是帧间延迟导致手持拍摄时边缘模糊。我见过某安防厂商的IPC在抓拍高速车辆时HDR合成后的车牌直接变成了“抽象画”。所以传感器厂商开始从硬件层面解决这个问题——让单个像素或单帧图像本身就具备高动态范围。Dual Conversion Gain像素的“双面人生”Dual Conversion GainDCG是目前最成熟的片上HDR技术原理简单粗暴同一个像素在读出时切换两个不同的转换增益。低增益LCG对应高满阱容量用于捕捉高光细节高增益HCG对应低噪声用于提取暗部信息。两个增益下的信号在ADC之前就已经被分离然后通过片上逻辑合成一帧HDR图像。我调试过索尼IMX689上的DCG模式发现一个关键参数转换增益切换点。这个点不是固定的而是根据场景亮度动态调整的。比如在白天户外切换点设在ISO 400左右在暗光下切换点会降到ISO 100。如果切换点设置得太高高光区域会提前进入LCG导致信噪比下降设置得太低暗部区域又会被HCG的噪声淹没。有一次我在调试车载前视摄像头时把切换点固定在了ISO 200结果在隧道出口场景下高光区域的天空出现了明显的“阶梯状”噪声——因为LCG的读出噪声比HCG高了近3倍而切换点又没来得及调整。这里踩过坑DCG的切换不是瞬间完成的需要预留至少一行像素的“死区时间”。如果帧率要求高比如60fps这个死区时间会吃掉一部分有效曝光时间。我见过某方案为了追求帧率把死区时间压缩到极限结果导致切换行附近的像素出现了增益不一致的“条纹”。解决方案是让传感器在垂直消隐期间完成切换但这样会引入额外的延迟需要ISP端做帧同步补偿。多曝光HDR从“分时”到“分空间”多曝光HDR的经典做法是“时间域多曝光”即在一帧时间内对不同行或不同像素采用不同的曝光时间。比如索尼的“DOL-HDR”Digital Overlap HDR把一帧分成两段前1/3时间曝光短帧后2/3时间曝光长帧然后读出两帧数据合成。这种方案的优点是实现简单但缺点也很明显——运动物体在长短帧之间会产生位移导致合成后的图像边缘出现“伪影”。我参与过某车载平台的DOL-HDR调优发现运动伪影的严重程度与帧间隔时间成正比。在60fps模式下长短帧的间隔只有8.3ms对于时速120km/h的车辆这个时间差足以让车头移动超过2.7米。最终我们采用了一种“运动补偿权重融合”的算法在合成时先检测运动区域对运动物体只使用短帧数据对静止区域使用长帧数据。但这样会引入新的问题——运动区域的信噪比会突然下降导致画面出现“斑块感”。别这样写不要试图用全局的权重映射来解决运动伪影那会让整个画面看起来像“塑料质感”。正确的做法是分块处理每个8x8块独立计算运动向量和权重然后做边缘平滑过渡。分像素HDR像素级的“分时复用”分像素HDRSplit Pixel HDR是近年来最激进的技术路线代表方案是三星的“ISOCELL HP3”和索尼的“Quad Bayer HDR”。原理是在一个像素内部分成两个子像素一个子像素用大阱容长曝光另一个用小阱容短曝光然后通过片上微透镜把光线引导到两个子像素上。这样单帧图像就同时包含了长短曝光信息完全消除了帧间延迟。我在调试某款采用分像素HDR的传感器时发现了一个意想不到的问题微透镜的串扰。由于两个子像素共享一个微透镜当入射光角度较大时比如广角镜头的边缘光线会从长曝光子像素“漏”到短曝光子像素导致短曝光帧的亮度偏高合成后的图像边缘出现“光晕”。解决方案是在微透镜阵列上增加“挡光墙”但这样会降低量子效率得不偿失。另一个坑是“子像素匹配”。长曝光子像素和短曝光子像素的灵敏度不可能完全一致需要做增益校准。校准系数通常存储在传感器的OTPOne-Time Programmable中但不同芯片的OTP精度差异很大。我遇到过一批传感器校准系数偏差超过5%导致合成后的图像出现“棋盘格”噪声。最终我们不得不在产线上增加一道“动态校准”工序——在均匀光源下拍摄多帧实时计算每个像素对的增益差异然后写入ISP的LUT。实战中的权衡动态范围 vs 信噪比 vs 帧率在实际项目中HDR技术选择本质上是一个三维权衡动态范围、信噪比、帧率。DCG的优点是信噪比高但动态范围提升有限通常只有12-15dB多曝光HDR的动态范围可以做到120dB以上但运动伪影和帧率损失是硬伤分像素HDR在动态范围和帧率上都有优势但像素尺寸受限子像素越小满阱容量越低且串扰问题难以根治。我最近在调试一个车载环视系统要求同时满足120dB动态范围和30fps帧率。最终我们采用了“DCG多曝光”的混合方案在低光照下使用DCG模式保证暗部信噪比在高光照下切换到多曝光模式撑大动态范围。切换逻辑由ISP的AE算法实时判断切换阈值留了3dB的滞回区间避免频繁切换导致画面闪烁。个人经验不要迷信单一技术的“理论最大值”。在产线调试中我见过太多工程师把传感器手册上的动态范围参数直接当成实际性能结果在暗光场景下被噪声打脸。真正的动态范围取决于整个链路的噪声底——包括传感器读出噪声、ADC量化噪声、ISP处理噪声甚至电源纹波。建议在项目初期就搭建一个“噪声预算表”把每个环节的噪声贡献量化出来然后再决定采用哪种HDR方案。最后如果你在调试HDR时遇到“鬼影”或“光晕”先别急着调算法参数——检查一下传感器的增益切换时序或者微透镜的校准系数。很多时候问题出在硬件层面而不是软件层面。毕竟影像系统的天花板永远是物理定律。