4. 畸变(Distortion)评价

聊到畸变,我得先跟你讲个故事。刚入行那会儿,我设计了一款广角镜头,实验室测MTF数据漂亮得很,结果一拍建筑照片,楼全歪了。嗯,从那以后,我再也不敢小看畸变这个指标。

说白了,畸变就是镜头让直线变弯的本事。它不影响清晰度,但严重影响几何真实性。你想想看,做测绘、做视觉定位,畸变没控好,后面全白搭。

核心概念:畸变是主光线像差,只改变像点位置,不改变像点清晰度。它由镜头光阑前后部分的光焦度不对称引起。

4.1 畸变的定义与分类

畸变的本质是什么?我给你一个公式就明白了:

畸变 = (实际像高 - 理想像高) / 理想像高 × 100%

正值为枕形畸变,负值为桶形畸变。我习惯把畸变分为两大类:

类型 特征 常见场景 典型值
桶形畸变 像点向内收缩,直线向外弯曲 广角镜头、手机摄像头 -1% ~ -5%
枕形畸变 像点向外扩张,直线向内弯曲 长焦镜头、变焦镜头长焦端 +1% ~ +3%
复合畸变 桶形+枕形混合,呈波浪形 大变倍比变焦镜头 视场角变化

为什么会这样?我简单解释一下。桶形畸变通常发生在光阑前有负光焦度组时,枕形畸变则相反。我记得有一次调试一款监控镜头,怎么调都是桶形,后来发现是光阑位置放错了——往前移了2mm,畸变直接翻倍。

我的经验:判断畸变类型有个土办法——拍一张方格纸,看边缘方格是变小了(桶形)还是变大了(枕形)。肉眼一看就知道。

4.2 畸变率计算

畸变率计算,我建议你掌握两种方法:

4.2.1 光学畸变

这是最常用的定义:

D = (y' - y₀) / y₀ × 100%

其中 y' 是实际像高,y₀ 是理想像高(由视场角和焦距决定)。

4.2.2 TV畸变

这个更贴近实际成像效果:

TV畸变 = (H₁ - H₂) / H₁ × 100%

H₁ 是画面中心高度,H₂ 是画面边缘高度。我一般在做手机摄像头时特别关注这个指标,因为用户看照片最直观的感受就是画面边缘有没有变形。

注意:光学畸变和TV畸变不是一回事。光学畸变反映的是单点位置偏差,TV畸变反映的是整体画面变形。我曾经见过一个镜头光学畸变只有0.5%,但TV畸变到了2%——因为畸变曲线不是单调的。

4.3 畸变测试方法

畸变测试,我常用的方法有三种:

  1. 网格板法——最经典的方法。用精密加工的网格板作为目标,拍摄后测量网格交点位置。
  2. 直线法——拍摄多条平行直线,测量直线弯曲程度。我习惯用ISO 12233标准中的畸变测试卡。
  3. 激光点阵法——用激光点阵投影到探测器上,直接测量点阵位置偏差。精度高,但设备贵。

具体操作流程,我一般这么走:

1. 固定相机与测试卡,保证光轴垂直
2. 拍摄测试卡图像
3. 提取特征点坐标(角点或圆心)
4. 与理想坐标对比
5. 计算每个视场的畸变值
6. 绘制畸变曲线

嗯,这里要注意——测试卡必须足够大,覆盖整个视场。我踩过这个坑,用了一张小卡,边缘畸变没测到,结果量产时发现边缘变形严重。

避坑指南:我曾经用自动角点检测算法提取网格点,结果反光导致误检。后来我改用圆形标记点,配合质心定位,精度从0.3像素提升到0.05像素。

4.4 畸变校正原理

畸变校正,说白了就是找到畸变模型,然后反向映射回去。我常用的模型是Brown-Conrady模型:

x' = x(1 + k₁r² + k₂r⁴ + k₃r⁶) + [p₁(r² + 2x²) + 2p₂xy]
y' = y(1 + k₁r² + k₂r⁴ + k₃r⁶) + [p₂(r² + 2y²) + 2p₁xy]

其中 k₁、k₂、k₃ 是径向畸变系数,p₁、p₂ 是切向畸变系数。r 是像点到光轴的距离。

校正流程我总结为三步:

  1. 标定——拍摄多张不同角度的棋盘格,解算畸变系数
  2. 映射——建立畸变图像到校正图像的像素映射表
  3. 插值——用双线性或双三次插值填充校正后的像素值

我个人习惯用OpenCV的cv::calibrateCamera和cv::undistort,但要注意——标定板一定要平整。我曾经用了一张贴歪的棋盘格,标定出来的畸变系数全是错的,校正后图像反而更扭曲。

重要提醒:畸变校正会损失边缘视场。校正后图像的有效视场角会缩小5%~15%。做系统设计时,一定要预留这个余量。

下面这张图是我整理的本章知识体系,你看一眼就能理清脉络:

畸变评价知识体系 畸变评价知识体系 畸变评价 定义与分类 桶形畸变 / 枕形畸变 / 复合畸变 畸变率计算 光学畸变 / TV畸变 测试方法 网格板法 / 直线法 / 激光点阵法 校正原理 Brown-Conrady模型 → 标定 → 映射 → 插值 畸变评价 = 定义 + 计算 + 测试 + 校正,四者缺一不可

最后说一句,畸变评价不是孤立存在的。它和畸变校正算法、图像传感器尺寸、镜头设计都有关系。做项目时,我建议你先把畸变测准了,再谈校正。测不准,校了也是白校。