197、运动相机水下拍摄的色彩补偿——基于深度估计的R通道衰减校正与白平衡联动算法 197、运动相机水下拍摄的色彩补偿——基于深度估计的R通道衰减校正与白平衡联动算法去年夏天在海南做的那批运动相机水下固件,至今想起来还觉得牙根发痒。客户反馈说潜水到五米以下,拍出来的视频红彤彤一片,像蒙了一层夕阳滤镜。我们第一反应是白平衡没调好,把AWB的色温范围从2500K拉到10000K,又加了场景识别,结果回放测试视频,问题依旧——水面下两米还行,再深一点,红色就像泼了油漆一样糊在画面上。后来拆开样机看RAW数据,才发现根本不是白平衡的锅,是R通道的物理衰减在作祟。水对红光的吸收系数大约是0.5/m,对蓝绿光只有0.05/m左右,这个差距在五米深度上就是两个数量级的能量差。白平衡算法再怎么聪明,它只能做全局增益,没法区分“场景里本来就有红色物体”和“红色被水吃掉后残留的伪色”。你强行拉高R通道增益,结果就是浅水区拍珊瑚礁,红色直接过曝成一片死白。那段时间我们试过几种土办法。第一种是查表法,根据水深传感器读数查预设的衰减补偿曲线,但运动相机哪来的水深传感器?靠气压计估算,误差半米起步,而且水流扰动会让读数跳来跳去,补偿曲线跟着抖,画面像呼吸灯一样忽明忽暗。第二种是手动调参,让用户自己拨轮盘选“3米”“5米”“10米”档位,这倒是能解决问题,但用户体验差到爆——谁潜水时还有空去拨那个小轮盘?而且不同水域的浑浊度、悬浮物浓度完全不一样,同一深度在马尔代夫和在三亚,衰减系数能差三倍。我们意识到,必须从图像本身去估计深度信息,而不是依赖外部传感器。那段时间我翻了不少论文,看到有人用暗通道先验做水下图像复原,思路是统计局部区域的最小通道值来估计透射率。但运动相机的镜头视场角大,边缘畸变严重,暗通道先验在均匀光照下容易失效,而且水下悬浮物散射会破坏暗通道的统计假设。后来我换了个角度