图像畸变——张正友标定算法

  • 图像畸变
  • 畸变数学模型
  • 张正友标定算法



图像畸变

在图像采集的过程中,不可避免的会出现图像畸变的情况,图像上的畸变会给后续的质量检测分析带来阻碍,甚至会出现误检的情况,因此在进行图像分析之前需要对采集到的图像进行畸变校正。

根据透镜的光学原理,透镜的任意位置上的折射率应该相等,但由于透镜制造精度以及组装工艺的偏差,造成透镜不同位置上的折射率不完全相等,光线在经过透镜的不同区域会产生不同程度的折射,导致成像上出现扭曲变形。这种几何失真就是图像的畸变,其中畸变的程度从图像中心至边缘依次递增,在边缘处反映得尤为明显。

图像的非线性畸变分为径向畸变和切向畸变两种,径向畸变是指矢量端点沿长度方向发生变化产生的畸变,主要有桶形畸变和枕形畸变两种;切向畸变是由于透镜与成像平面不平行产生的矢量端点沿切向方向产生的变化,多由于安装偏差引起的。

opencv 标定出来的畸变系数单位 图像畸变测量_opencv 标定出来的畸变系数单位

畸变数学模型

畸变的数学模型可以用主点周围的泰勒级数的前几项进行描述。假设(x ,y)是畸变点在图像上的坐标, 对径向畸变进行校正:

opencv 标定出来的畸变系数单位 图像畸变测量_算法_02

其中k1、k2、k3 为径向畸变系数,r为图像中心到像素点的径向距离,同理,切向畸变校正如下:

opencv 标定出来的畸变系数单位 图像畸变测量_算法_03

张正友标定算法

通过矩阵分解运算,得到相机内参公式如下:

opencv 标定出来的畸变系数单位 图像畸变测量_真实世界_04

同样的可以得到外参数公式如下:

opencv 标定出来的畸变系数单位 图像畸变测量_真实世界_05

Step1:选择标定板,选择12×9方格的氧化铝标定板,如下图所示,其中小方格大小为5mm×5mm,精度为 0.02mm。

opencv 标定出来的畸变系数单位 图像畸变测量_opencv 标定出来的畸变系数单位_06

Step2:通过调整标定板的位置,采集标定板在不同位置时的图像,总共采集10 张。
Step3:选用matlab作为编译环境,找到真实世界和图像上相互对应的角点坐标,实现摄像机参数和畸变系数估计,通过标定后可得到如下参数。

摄像机矩阵参数:

opencv 标定出来的畸变系数单位 图像畸变测量_opencv 标定出来的畸变系数单位_07

畸变系数:[-0.388 1.674 -0.00078 0.00676 0.0796]