• 相机标定


    1. 预备知识

    1.1 坐标系

    1. 世界坐标系:(X_w), (Y_w), (Z_w)
    2. 摄像机坐标系:(X_c), (Y_c), (Z_c)
    3. 图像坐标系:(x), (y)
    4. 像素坐标系:(u), (v)

    1.2 参数

    1.2.1 相机的内部参数矩阵

    [K= egin{bmatrix} f_x & s & u_0 \ 0 & f_y & v_0 \ 0 & 0 & 1 end{bmatrix} = egin{bmatrix} frac{f}{dx} & s & u_0 \ 0 & frac{f}{dy} & v_0 \ 0 & 0 & 1 end{bmatrix} ]

    其中:
    (f_x, f_y) 分别为摄像机X轴和Y轴上的像素单位焦距,(f) 为摄像机的物理焦距,(dx, dy) 为像元尺寸(即每个像素对应的物理尺寸)
    (u_0, v_0) 为主点偏移,表示图像的像素中心
    (s) 为图像轴不垂直时的倾斜系数,理想情况下是0。(s=f_x analpha)

    像素倾斜的定义如下:

    1.2.2 畸变系数

    (k_1)(k_2)(k_3):径向畸变系数
    (p_1)(p_2):切向畸变系数

    OpenCV 中的畸变系数矩阵:(egin{bmatrix}k_1 & k_2 & p_1 & p_2 & k_3end{bmatrix})

    1.2.3 相机的外部参数矩阵

    [egin{bmatrix} R_{3*3} & t_{3*1} \ 0 & 1 \ end{bmatrix} = egin{bmatrix} I & t_{3*1} \ 0 & 1 \ end{bmatrix} egin{bmatrix} R_{3*3} & 0 \ 0 & 1 \ end{bmatrix} = egin{bmatrix} 1 & 0 & 0 & t_1 \ 0 & 1 & 0 & t_2 \ 0 & 0 & 1 & t_3 \ 0 & 0 & 0 & 1 end{bmatrix} × egin{bmatrix} r_{11} & r_{12} & r_{13} & 0 \ r_{21} & r_{22} & r_{23} & 0 \ r_{31} & r_{32} & r_{33} & 0 \ 0 & 0 & 0 & 1 end{bmatrix} ]

    其中:
    (R_{3*3}):旋转矩阵,描述世界坐标系相对于摄像机坐标系的方向
    (T_{3*1}):平移矩阵,描述了在摄像机坐标系下,空间原点的位置

    2. 变换

    2.1 图像坐标系((x, y))至像素坐标系((u,v))

    两坐标轴正交:

    [left{ egin{aligned} u & = frac{x}{dx} + u_0 \ v & = frac{y}{dy} + v_0 end{aligned} ight. ]

    一般情况:

    [left{ egin{aligned} u & = u_0 + frac{x_d}{dx} - frac{y_d cot{ heta}}{d_x} \ v & = v_0 + frac{y_d}{dy sin{ heta}} end{aligned} ight. ]

    齐次坐标形式:

    [egin{bmatrix} u \ v \ 1 end{bmatrix} = egin{bmatrix} f_u & -f_ucot{ heta} & u_0 \ 0 & f_v/sin{ heta} & v_0 \ 0 & 0 & 1 end{bmatrix} egin{bmatrix} x_d \ y_d \ 1 end{bmatrix} ]

    其中:
    (f_u = frac{1}{d_x}), (f_v=frac{1}{d_y})

    2.2 相机坐标系((X_c, Y_c, Z_c))至图像坐标系((x, y))

    [Z_c egin{bmatrix} x \ y \ 1 end{bmatrix} = egin{bmatrix} f & 0 & 0 & 0 \ 0 & f & 0 & 0 \ 0 & 0 & 1 & 0 end{bmatrix} egin{bmatrix} X_c \ Y_c \ Z_c \ 1 end{bmatrix} ]

    2.3 世界坐标系((X_w, Y_w, Z_w))至相机坐标系((X_c, Y_c, Z_c))

    [egin{bmatrix} X_c \ Y_c \ Z_c \ 1 end{bmatrix} = egin{bmatrix} R_{3*3} & T_{3*1} \ O & 1 end{bmatrix} egin{bmatrix} X_w \ Y_w \ Z_w \ 1 end{bmatrix} ]

    2.4 从世界坐标系至像素坐标系

    [Z_c egin{bmatrix} u \ v \ 1 end{bmatrix} = K egin{bmatrix} R & T \ 0 & 1 \ end{bmatrix} egin{bmatrix} X_w \ Y_w \ Z_w \ 1 end{bmatrix} ]

    3. 畸变系数

    径向畸变(Radial Distortion)

    径向畸变有两种,分别是枕型畸变(Pincushion)和桶型畸变(Barrel)

    径向畸变系数:

    [egin{aligned} x_{distorted} & = x(1+k_1r^2+k_2r^4+k_3r^6) \ y_{distorted} & = y(1+k_1r^2+k_2r^4+k_3r^6) end{aligned} ]

    其中:
    (x, y):在归一化图像坐标系中未失真的坐标点
    (k_1, k_2, k_3):径向畸变系数
    (r^2 = x^2 + y^2)

    切向畸变(Tangential Distortion)

    当镜头和像平面不平行时,会发生切向畸变。

    切向畸变系数:

    [egin{aligned} x_{distorted} & = x[2p_1xy+p_2(r^2+2x^2)] \ y_{distorted} & = y[p_1(r^2+2y^2)+2p_2xy] \ end{aligned} ]

    其中:
    (x, y):在归一化图像坐标系中未失真的坐标点
    (p_1, p_2):切向畸变系数
    (r^2 = x^2 + y^2)

    4. 参考

  • 相关阅读:
    Block & 代理
    堆&栈, 内存分配
    ASI 的 使用
    iOS开发-清理缓存功能的实现
    iOS8是如何跳转系统设置页面
    键盘弹出获取高度
    http://www.jianshu.com/collection/9a22b04a9357
    IOS 字符串中去除特殊符号 stringByTrimmingCharactersInSet
    iOS 判断输入是否全是空格
    iOS AFN 请求封装方法
  • 原文地址:https://www.cnblogs.com/zdfffg/p/13054603.html
Copyright © 2020-2023  润新知