072、局部色调映射:直方图均衡、CLAHE 与 Retinex 在移动端的工程对比一、从一次夜景人像翻车说起去年Q3,某款中端机型的夜景人像模式在内部评测中被吐槽“人脸像刷了层白漆,背景却黑成一团”。我拿到log一看,ISP pipeline里全局直方图均衡把暗部提得过猛,导致人脸高光区直接溢出,而背景的暗部细节反而被压缩得更惨。更致命的是,这个算法在骁龙778G上跑一次要12ms,加上前后处理,整个HDR链路直接超了帧预算。这个案例让我意识到:局部色调映射不是“选个算法调调参数”那么简单,它涉及亮度感知、边缘保持、实时性三者的博弈。今天这篇笔记,我就把直方图均衡、CLAHE和Retinex在移动端工程落地的坑,一个一个掰开讲。二、直方图均衡:简单但粗暴直方图均衡(HE)的原理不复杂——把像素分布拉成均匀分布,让暗部更亮、亮部更暗。但移动端直接上全局HE,你会遇到三个典型问题:问题1:噪声放大暗部区域的像素值原本集中在0-30之间,HE一拉伸,原本的量化噪声和传感器读出噪声被同步放大。我在某款IMX766机型上实测,全局HE后暗部SNR从32dB掉到24dB,肉眼可见的颗粒感。问题2:过曝区域细节丢失高光区原本有200-255的渐变,HE为了“均衡”会把它们压缩到更窄的范围。比如天空云彩的纹理,在HE后直接变成一片死白。问题3:实时性