3. 径向畸变数学模型:Brown-Conrady模型与除法模型

聊到畸变校正,绕不开的就是数学模型。说白了,我们得用数学语言把镜头怎么「弯」的描述清楚。我个人在实际项目中用过两种主流模型:Brown-Conrady模型和除法模型。它们各有各的脾气,选对了事半功倍。

3.1 Brown-Conrady模型

这是工业视觉里最常用的模型,没有之一。它把畸变分解成径向和切向两部分。今天我们先聚焦径向部分。

Brown-Conrady模型的径向畸变公式长这样:

x_distorted = x * (1 + k1*r² + k2*r⁴ + k3*r⁶)
y_distorted = y * (1 + k1*r² + k2*r⁴ + k3*r⁶)

其中:

  • (x, y) —— 理想无畸变的归一化坐标
  • (x_distorted, y_distorted) —— 实际成像的畸变坐标
  • r² = x² + y² —— 像素点到光心的距离平方
  • k1, k2, k3 —— 径向畸变系数

你想想看,这个公式其实就是在说:离图像中心越远,畸变越严重。而且畸变量是r的偶次多项式叠加。为什么是偶次?因为畸变是对称的,奇次项会破坏对称性。

核心理解:Brown-Conrady模型本质是用泰勒级数展开来逼近真实的畸变曲线。k1是主项,k2和k3是修正项。高阶项越多,拟合精度越高,但计算量也越大。

3.2 除法模型

除法模型是另一种思路。它用分式形式来描述畸变:

x_distorted = x / (1 + k1*r² + k2*r⁴)
y_distorted = y / (1 + k1*r² + k2*r⁴)

这个模型的好处是——逆变换特别简单。你想从畸变图像反算无畸变图像时,除法模型只需要解一个一元二次方程。而Brown-Conrady模型得用迭代法。

我记得在做一个高速检测项目时,每帧图像都要实时校正。用Brown-Conrady模型迭代收敛慢,换成除法模型后,速度直接翻了一倍。嗯,选模型有时候就是选效率。

对比项 Brown-Conrady模型 除法模型
数学形式 多项式加法 分式除法
逆变换 需要迭代求解 解析解,速度快
适用场景 高精度标定、学术研究 实时校正、嵌入式系统
畸变程度 可拟合强畸变(如鱼眼) 适合中等以下畸变

3.3 畸变系数k1/k2/k3的物理含义

很多初学者把k1、k2、k3当成纯数学参数,其实它们有明确的物理意义。

  • k1 —— 主导径向畸变。k1 > 0 是枕形畸变,k1 < 0 是桶形畸变。值越大,畸变越严重。
  • k2 —— 高阶修正项。当k1拟合后还有残余误差时,k2上场。它主要影响图像边缘区域。
  • k3 —— 更高阶修正。通常用于鱼眼镜头或大视场镜头。普通镜头用k1+k2就够了。

我在项目中遇到过这样的情况:用k1+k2标定一个工业镜头,重投影误差0.15像素。加上k3后,误差降到0.08像素。但代价是标定过程更容易过拟合。你想想看,参数越多,对噪声越敏感。

我的建议:普通镜头用k1+k2即可。鱼眼或超广角镜头再加k3。不要盲目追求高阶项,稳定比精度更重要。

3.4 高阶项对校正精度的影响

高阶项是把双刃剑。用好了提升精度,用不好引入噪声。

我们来看一组实验数据:

畸变模型 重投影误差(像素) 标定板角点数 计算耗时(ms)
仅k1 0.32 48 12
k1 + k2 0.11 48 15
k1 + k2 + k3 0.08 48 19
k1 + k2 + k3(噪声数据) 0.23 48 19

看到没?在理想数据下,k3确实能再降一点误差。但一旦数据有噪声,高阶项反而把噪声也拟合进去了,误差反而变大。

避坑指南:我曾经在一个项目中,为了追求极致精度,加了k4和k5。结果标定结果在不同光照下反复横跳。后来老老实实只用k1+k2,稳定性好得多。记住:精度够用就行,别贪心。

3.5 两种模型的适用场景选择

怎么选?我一般按这个原则:

  • 离线高精度标定 —— 用Brown-Conrady模型,k1+k2起步,必要时加k3
  • 实时在线校正 —— 用除法模型,速度快,逆变换简单
  • 鱼眼镜头 —— Brown-Conrady模型必须加k3甚至k4
  • 手机镜头/监控摄像头 —— 除法模型足够,计算资源有限

你想想看,选模型就像选工具。螺丝刀和扳手都能拧螺丝,但效率不一样。搞清楚你的场景,再下手。

径向畸变数学模型选择决策流程 径向畸变建模 实时性要求高? 是 除法模型 否 鱼眼/超广角? 是 Brown-Conrady + k3 否 Brown-Conrady + k1+k2 关键判断依据 • 计算资源是否充足 • 畸变程度是否严重 • 是否需要逆变换