1. ISP基础与高通平台概述
各位好,我是老周。做图像质量这行十几年了,从早期的功能机到现在的计算摄影,ISP的变化翻天覆地。今天咱们先打好地基,聊聊ISP是什么、高通平台怎么搭的、以及衡量图像质量的那几个硬指标。
说实话,很多刚入行的工程师容易犯一个毛病——上来就调参数,连ISP pipeline都没搞清楚。我见过有人把AWB和CCM的顺序搞反了,调了三天颜色都不对。嗯,咱们先把根扎稳。
1.1 图像信号处理器(ISP)基本原理
ISP,说白了就是传感器和人类眼睛之间的翻译官。传感器输出的RAW数据是线性、拜耳排列的,人眼可不认这个。ISP的任务就是把RAW变成一张能看的、好看的、真实的图像。
一个典型的ISP pipeline长这样:
Sensor RAW → 黑电平校正(BLC) → 镜头阴影校正(LSC) → 坏点校正(DPC)
→ 去噪(NR) → 去马赛克(Demosaic) → 白平衡(AWB) → 颜色校正(CCM)
→ Gamma校正 → 色调映射(Tone Mapping) → 锐化(Sharpening)
→ 色彩增强 → YUV输出
每个模块都有它的脾气。比如黑电平校正,我遇到过一批模组暗电流不一致,BLC参数没调好,整批货暗部偏紫。后来我养成了习惯——每次换传感器批次,先测BLC。
核心要点:ISP不是简单的滤镜堆叠,每个模块的输入输出都是强耦合的。你动一下去噪强度,锐化就得跟着调,否则会出现塑料感。
1.2 高通骁龙ISP架构简介
高通的ISP叫Spectra,从骁龙835开始一路迭代到现在。我个人最喜欢的是它的架构设计思路——把ISP分成三个独立引擎:
- IFE(Image Front-End):处理传感器原始数据,做BLC、LSC、DPC这些前期活儿。我记得骁龙865的IFE支持了4路并发,做多摄切换时特别爽。
- IPE(Image Processing Engine):核心处理单元,去噪、Demosaic、颜色校正都在这里。IPE的算力直接决定了你能跑多复杂的算法。
- VPU(Video Processing Unit):专门处理视频,支持HDR、EIS、多帧融合。做视频防抖时,VPU的硬件加速比纯CPU省电太多了。
你想想看,这三个引擎是并行工作的。IFE处理完一帧,IPE接着干,VPU同时处理上一帧的视频编码。这种流水线设计让高通的ISP延迟很低,拍照体验很跟手。
避坑指南:我曾经在骁龙平台上调一个三摄方案,发现主摄和广角的颜色对不上。查了两天才发现——两个摄像头的ISP走的是不同的IPE通道,通道间的CCM矩阵默认值不一样。记住:多摄方案一定要统一颜色链路。
高通的ISP架构还有一个特点——它提供了完整的硬件抽象层(HAL)。你可以在用户空间通过CHI(Camera Hardware Interface)来配置ISP参数,不用碰底层驱动。这对算法工程师来说太友好了。
1.3 图像质量(IQ)关键指标
做图像质量诊断,你得先知道什么是"好"。我一般看四个核心指标:SNR、MTF、Shading、Color Accuracy。这四个指标能覆盖90%的常见问题。
1.3.1 SNR(信噪比)
SNR衡量的是信号和噪声的比例。数值越高,画面越干净。但要注意——SNR不是越高越好,过度的去噪会抹掉细节。
| 场景 | 目标SNR(dB) | 常见问题 |
|---|---|---|
| 白天户外 | > 40 | 过锐化导致噪点放大 |
| 室内灯光 | 30 ~ 40 | 亮度噪点与颜色噪点平衡 |
| 暗光(< 10 lux) | > 25 | 多帧降噪的鬼影问题 |
我调SNR有个习惯——先看亮度噪点(Y通道),再看颜色噪点(CbCr通道)。颜色噪点比亮度噪点更刺眼,但很多人只盯着Y通道调。
1.3.2 MTF(调制传递函数)
MTF衡量的是镜头的解析力。简单说,就是你能看清多细的条纹。MTF50是行业标准——当对比度下降到50%时的空间频率。
举个例子:一颗1300万像素的传感器,MTF50如果低于0.3 lp/pixel,那拍出来的文字就是糊的。我遇到过一款镜头,中心MTF很好,边缘直接掉到0.15。后来发现是镜头组装配偏心了。
注意:MTF测试要用专用的SFR(空间频率响应)图表,别拿报纸拍。我见过有人用A4打印的条纹图测MTF,结果打印机的墨点本身就有误差,测出来的数据根本不能用。
1.3.3 Shading(阴影校正)
Shading指的是画面从中心到边缘的亮度衰减。镜头天然有暗角,尤其是大光圈镜头。LSC(镜头阴影校正)就是把这个衰减补回来。
我一般用两种方式评估Shading:
- 亮度Shading:中心到四角的亮度差,目标控制在10%以内
- 颜色Shading:R/G/B通道的衰减不一致导致的偏色,这个更难调
颜色Shading是个坑。我曾经调一款广角镜头,中心颜色正常,边缘偏绿。查了三天,发现是LSC的增益曲线在B通道上过冲了。记住:颜色Shading的容忍度比亮度Shading低得多,人眼对偏色极其敏感。
1.3.4 Color Accuracy(色彩准确度)
色彩准确度用ΔE(色差)来衡量。ΔE越小越好,一般要求ΔE < 3才算合格。但这里有个陷阱——人眼对不同颜色的敏感度不一样。
| 颜色 | 人眼敏感度 | ΔE容忍度 |
|---|---|---|
| 肤色 | 极高 | < 2 |
| 绿色(植物) | 高 | < 3 |
| 蓝色(天空) | 中等 | < 4 |
| 红色(标志) | 中等 | < 4 |
调颜色时,我建议优先保证肤色准确。用户拍人像时,肤色偏一点都会被吐槽。至于天空蓝偏一点,大部分人根本看不出来。
1.4 ISP知识体系总览
下面这张图是我自己整理的ISP知识体系,涵盖了从传感器到最终图像输出的全链路。每次带新人,我都会先让他们看这张图,搞清楚每个模块在干什么。
这张图把ISP分成了三个阶段:预处理、核心处理、后处理。每个阶段对应高通Spectra架构的不同引擎。你调试时遇到问题,先定位是哪个阶段出的问题,再对症下药。
举个例子:如果画面偏色,可能是AWB没调好(核心处理阶段),也可能是LSC的颜色Shading没补回来(预处理阶段)。怎么区分?拍一张均匀灰卡,如果中心和边缘偏色不一样,那就是LSC的问题;如果整体偏色,那就是AWB或CCM的问题。
我的调试习惯:每次拿到新平台,我会先跑一遍全黑帧(盖上镜头盖),检查BLC和暗电流噪声。然后拍一张均匀白板,看LSC效果。最后拍色卡,调AWB和CCM。这个顺序能帮你快速排除底层问题,避免在错误的基础上调参数。
好了,这一章的内容就到这里。ISP基础打牢了,后面咱们才能聊具体的诊断工具和修复方法。记住:图像质量不是调出来的,是设计出来的。理解每个模块的原理和耦合关系,比盲目调参数重要得多。