1. 光照校正概述
光照校正,说白了就是让图像恢复它「本来该有的样子」。我做了这么多年图像处理,遇到最多的坑反而不是算法多复杂,而是——输入图像的光照压根就不正常。
你想想看,一个均匀光照下拍出来的文档,OCR识别率能到98%。换到角落阴影里拍一张,直接掉到60%。这不是算法不行,是光照在捣鬼。
1.1 什么是光照不均
光照不均,就是图像里不同区域的亮度差异太大。正常图像应该亮度分布平滑,但光照不均的图像,有的地方亮得发白,有的地方暗得看不清细节。
我习惯把光照不均分成两类:
| 类型 | 特点 | 典型表现 |
|---|---|---|
| 全局不均 | 整体偏暗或偏亮 | 逆光人脸、欠曝文档 |
| 局部不均 | 部分区域异常 | 角落阴影、中心过曝 |
| 渐变不均 | 亮度从一端到另一端渐变 | 扫描仪边缘衰减、球面光照 |
| 纹理不均 | 光照在纹理上产生明暗条纹 | 褶皱文档、曲面物体 |
核心认知:光照不均不是噪声,它是图像采集时物理光照环境带来的系统性偏差。用滤波去噪的方法处理它,基本没用。
1.2 常见场景
我接触过的项目里,光照校正需求最集中的就三个方向。每个方向我都踩过坑,一个一个说。
文档扫描
这是最典型的场景。你拿手机拍一张合同,办公室顶灯在左上角,右下角就是阴影。或者扫描仪老化,中间亮两边暗。
我记得有一次做银行票据识别项目,客户说「你们的OCR怎么老识别错金额」。我一看原始图像——票据中间被手指压出一个弧形,光照在弯曲处形成了一条暗带。校正前识别率72%,校正后直接跳到94%。
文档光照校正的难点在于:
- 文字和背景的对比度不能丢失
- 不能把纸张本身的纹理当成阴影去掉
- 校正后不能出现伪影(比如边缘发黑)
人脸识别
人脸识别对光照极其敏感。同一个人的脸,正面光下识别通过,侧光下直接拒识。我参与过一个安防项目,闸机装在走廊尽头,头顶只有一盏日光灯。人脸一半亮一半暗,识别率惨不忍睹。
为什么会这样?因为人脸是三维曲面,光照方向不同,鼻子、眼窝、颧骨产生的阴影完全不同。这些阴影在特征空间里被当成了「不同的人」。
我的经验:人脸光照校正不能做全局均衡。你强行把暗部提亮,会把眼窝阴影抹掉,反而丢失了关键特征。我一般建议用局部自适应方法,只校正光照趋势,保留细节纹理。
医学影像
医学影像的光照不均更隐蔽。X光片、CT、MRI,这些图像本身就不是「自然光照」拍的,但采集设备的不均匀性依然存在。
举个例子,MRI线圈的灵敏度从中心到边缘是衰减的。同一张片子,中心区域亮,边缘暗。如果不做校正,医生看边缘区域可能会漏掉病灶。
医学影像的特殊要求:
- 校正不能改变像素值的医学意义
- 不能引入伪影(伪影可能被误诊为病灶)
- 必须保持组织间的相对对比关系
1.3 校正的难点
说了这么多场景,其实核心难点就三个。我一个个拆开讲。
- 光照和纹理分不开
光照不均和物体本身的纹理在频域上经常重叠。你没法用一个简单的滤波器把它们完美分离。我试过高通滤波、同态滤波、小波分解,每种方法都有取舍。 - 校正过度比不校正更糟
我曾经犯过一个错误:对一张暗部细节丰富的图像做全局直方图均衡,结果暗部噪声被放大了十倍,图像变得没法看。校正不是越强越好,要适可而止。 - 实时性要求
很多场景需要实时处理,比如视频通话的美颜、闸机的人脸识别。复杂的校正算法跑不动,简单的算法效果又不够。这是个工程取舍问题。
注意:不要迷信「万能算法」。光照校正没有银弹。文档、人脸、医学影像,它们的物理模型完全不同。我建议你针对具体场景选方法,而不是拿一个算法硬套所有数据。
1.4 校正的意义
做光照校正到底图什么?我总结了三层价值:
| 层面 | 具体收益 | 我见过的案例 |
|---|---|---|
| 提升识别率 | OCR、人脸识别、目标检测的准确率提升10%~30% | 票据识别项目,校正后从72%到94% |
| 减少数据依赖 | 不需要采集各种光照条件下的训练数据 | 安防项目,一套模型适配全天光照变化 |
| 改善视觉体验 | 图像更自然、细节更清晰 | 手机拍照的自动增强功能 |
说白了,光照校正是图像预处理里性价比最高的操作之一。你花10%的算力做校正,可能换来20%的识别率提升。这笔账,怎么算都划算。
1.5 本章知识体系
下面这张图是我自己梳理的光照校正知识框架。你可以把它当成整个课程的地图。
这张图把光照校正拆成了四个模块:问题来源、常见场景、校正方法、核心难点。后面的章节会沿着这个框架展开。你先把这张图记在脑子里,后面学起来会顺很多。
学习建议:第一章是概念铺垫,不用急着记细节。你只需要搞清楚「光照不均是什么」「为什么需要校正」「难点在哪里」这三个问题就够了。具体怎么做,后面有的是实战。