1. 相机成像模型基础
在计算机视觉领域,理解相机成像原理是进行图像处理和三维重建的基础。最常用的相机模型是针孔相机模型,它模拟了光线通过一个小孔投射到成像平面的过程。
1.1 理想针孔相机模型
理想针孔相机模型可以用简单的几何关系来描述三维空间点到二维图像平面的投影过程。假设有一个三维点P(Xc,Yc,Zc)在相机坐标系中,它通过针孔投影到图像平面上的点p(u,v)可以表示为:
code复制u = fx * (Xc/Zc) + cx
v = fy * (Yc/Zc) + cy
其中,fx和fy是焦距(以像素为单位),cx和cy是主点坐标(图像中心)。这四个参数构成了相机的内参矩阵。
注意:在实际应用中,Zc必须大于零,即物体必须位于相机前方才能成像。
1.2 实际镜头的畸变问题
现实中的相机镜头并非完美的针孔,由于光学镜片的物理特性,成像会出现各种畸变。最常见的畸变类型包括:
- 径向畸变:由镜头曲率引起,表现为图像中心向外或向内弯曲
- 切向畸变:由镜头与成像平面不平行引起,表现为图像扭曲
- 薄棱镜畸变:由镜头制造缺陷引起,相对较少见
这些畸变会导致直线在图像中显示为曲线,影响计算机视觉算法的准确性。因此,在精密应用中必须进行畸变校正。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. OpenCV中的畸变模型详解
OpenCV提供了完整的相机标定和畸变校正功能,其采用的畸变模型综合了多种畸变类型。
2.1 畸变系数分类
OpenCV中的畸变系数主要分为三类:
- 径向畸变系数(k1,k2,k3,k4,k5,k6)
- 切向畸变系数(p1,p2)
- 薄棱镜畸变系数(s1,s2,s3,s4)
在实际应用中,OpenCV通常使用两种简化模型:
- 5参数模型:k1,k2,p1,p2,k3
- 8参数模型:k1,k2,p1,p2,k3,k4,k5,k6
2.2 畸变数学模型
完整的畸变校正公式如下:
code复制x'' = x' * (1 + k1*r² + k2*r⁴ + k3*r⁶)/(1 + k4*r² + k5*r⁴ + k6*r⁶)
+ 2*p1*x'*y' + p2*(r² + 2*x'²)
+ s1*r² + s2*r⁴
y'' = y' * (1 + k1*r² +
