灌篮少年 发表于 2025-12-12 16:44:21

盘算机视觉——相机标定(Camera Calibration)

在举行呆板人视觉相干项目的过程中,起首要举行相机标定,此博客纪录相机标定的相干原概念及实行方法。
1. 简介

在图像丈量过程以及呆板视觉应用中,为确定空间物体外貌某点的三维多少位置与其在图像中对应点之间的相互关系,必须创建相机成像的多少模子,这些多少模子参数就是相机参数。在大多数条件下这些参数必须通过实行与盘算才华得到,这个求解参数的过程就称之为相机标定。相机标定黑白常关键的环节。


[*]举行摄像机标定的目的:求出相机的内、外参数,以及畸变参数。
[*]标定相机后通常是想做两件事:一个是由于每个镜头的畸变水平各不类似,通过相机标定可以校正这种镜头畸变改正畸变,天生改正后的图像;另一个是根据得到的图像重构三维场景。
2. 原理

相机标定的根本原理是通过已知的三维天下坐标系中的点和对应的二维图像坐标系中的点,创建一个数学模子,将三维天下坐标系中的点投影到二维图像坐标系中。这个数学模子通常包罗以下几个部分:

[*]相机内参矩阵(Intrinsic Matrix):形貌相机的内部多少特性,包罗焦距、主点坐标等。
[*]畸变系数(Distortion Coefficients):形貌图像畸变,包罗径向畸变和切向畸变。
[*]旋转矩阵平静移向量(Rotation Matrix and Translation Vector):形貌相机在天下坐标系中的姿态,也可以叫做外参数。
常用标定步调:

[*]预备标定板:使用一个已知尺寸的标定板(如棋盘格),并拍摄多张差别角度和位置的图像。
[*]检测角点:在每张图像中检测标定板的角点,并纪录其二维图像坐标。
[*]天生天下坐标:根据标定板的尺寸,天生标定板角点的三维天下坐标。
[*]盘算内参和畸变系数:使用检测到的角点和天生的天下坐标,盘算相机的内参矩阵和畸变系数。
[*]盘算旋转矩阵平静移向量:盘算每张图像的旋转矩阵平静移向量。
[*]盘算重投影偏差:将天下坐标系中的点投影到图像坐标系中,并与实际检测到的图像坐标举行比力,盘算重投影偏差。
常用术语
内参矩阵: Intrinsic Matrix
焦距: Focal Length
主点: Principal Point
角点: Corner Point
径向畸变: Radial Distortion
切向畸变: Tangential Distortion
旋转矩阵: Rotation Matrices
平移向量: Translation Vectors
匀称重投影偏差: Mean Reprojection Error
重投影偏差: Reprojection Errors
重投影点: Reprojected Points
3. 相机模子

3.1 四大坐标系

https://i-blog.csdnimg.cn/img_convert/32451c810964baaf7b1e42997df526f4.png#pic_center天下坐标系是一个全局坐标系,用于形貌物体在真实天下中的位置。天下坐标系用 (X_w, Y_w, Z_w) 表现,独立于相机,可以恣意选择原点和坐标轴的方向。
**相机坐标系 (Camera Coordinate System)**以相机的光学中心为原点,                              Z                        Z               Z轴指向相机的正火线,                              X                        X               X轴和                              Y                        Y               Y轴分别指向相机的右侧和下方,用于形貌物体在相机视角下的位置。通常,相机坐标系用                               (                               X                         c                              ,                               Y                         c                              ,                               Z                         c                              )                        (X_c, Y_c, Z_c)               (Xc​,Yc​,Zc​) 表现。
**图像坐标系 (Image Coordinate System)**是二维坐标系,用于形貌物体在相机成像平面上的投影位置。通常,图像坐标系用                               (                      x                      ,                      y                      )                        (x, y)               (x,y)表现,图像坐标系的原点通常位于成像平面的中心,                              x                        x               x轴和                              y                        y               y轴分别指向图像的右侧和下方。
**像素坐标系 (Pixel Coordinate System)**是二维坐标系,用于形貌物体在数字图像中的像素位置。通常,像素坐标系用                               (                      u                      ,                      v                      )                        (u, v)               (u,v) 表现,即列数和行数。像素坐标系的原点通常位于图像的左上角,                              u                        u               u轴和                              v                        v               v轴分别指向图像的右侧和下方。
3.2 坐标系间的转换关系

3.2.1 天下坐标系到相机坐标系

天下坐标系到相机坐标系的转换通常通过一个刚体变更(旋转平静移)来实现。这个变更可以用一个4x4的变更矩阵                                        T                                 w                            c                                           T_{wc}               Twc​ 表现,包罗旋转矩阵                              R                        R               R平静移向量                              t                        t               t
                                              [                                                                                             X                                           c                                                                                                                                       Y                                           c                                                                                                                                       Z                                           c                                                                                                                        1                                                                        ]                                  =                                 T                                       w                               c                                                      [                                                                                             X                                           w                                                                                                                                       Y                                           w                                                                                                                                       Z                                           w                                                                                                                        1                                                                        ]                                  =                                 [                                                                              R                                                                                    t                                                                                                          0                                                                                    1                                                                        ]                                          [                                                                                             X                                           w                                                                                                                                       Y                                           w                                                                                                                                       Z                                           w                                                                                                                        1                                                                        ]                                       \begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix}=T_{wc}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}=\begin{bmatrix}R&t\\0&1\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}                              ​Xc​Yc​Zc​1​            ​=Twc​            ​Xw​Yw​Zw​1​            ​=            ​Xw​Yw​Zw​1​            ​
3.2.2 相机坐标系到图像坐标系

https://i-blog.csdnimg.cn/img_convert/80456617be9a1d8889392847f8b35b61.png
相机坐标系到图像坐标系的转换是通过透视投影实现的。假设相机焦距为                              f                        f               f,则成像面是与                                       X                         c                              O                               Y                         c                                  X_cOY_c               Xc​OYc​平面平行且隔断为                              f                        f               f的平面,在相机坐标系中,                              p                      (                               x                         c                              ,                               y                         c                              ,                               z                         c                              )                        p(x_c,y_c,z_c)               p(xc​,yc​,zc​),在图像坐标系中的成像点是                                       p                         ′                              (                      x                      ,                      y                      )                        p'(x,y)               p′(x,y)
https://i-blog.csdnimg.cn/img_convert/d1183b85a80f263c8bcc49b9aac5cc2d.png
使用相似三角形求得:                                       x                                 x                            c                                       =                               y                                 y                            c                                       =                               f                                 z                            c                                           \frac{x}{x_c}=\frac{y}{y_c}=\frac{f}{z_c}               xc​x​=yc​y​=zc​f​
即                              x                      =                               f                                 z                            c                                       ⋅                               x                         c                                  x=\frac{f}{z_c}\cdot x_c               x=zc​f​⋅xc​,                               y                      =                               f                                 z                            c                                       ⋅                               y                         c                                  y=\frac{f}{z_c}\cdot y_c               y=zc​f​⋅yc​,写为矩阵情势:
                                              [                                                                              x                                                                                                          y                                                                                                          1                                                                        ]                                  =                                 [                                                                                             f                                                         z                                              c                                                                                                                   0                                                                                    0                                                                                    0                                                                                                          0                                                                                                   f                                                         z                                              c                                                                                                                   0                                                                                    0                                                                                                          0                                                                                    0                                                                                                   1                                                         z                                              c                                                                                                                   0                                                                        ]                                  ⋅                                 [                                                                                             x                                           c                                                                                                                                       y                                           c                                                                                                                                       z                                           c                                                                                                                        1                                                                        ]                                        \begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}\frac{f}{z_c}&0&0&0\\0&\frac{f}{z_c}&0&0\\0&0&\frac{1}{z_c}&0\end{bmatrix} \cdot \begin{bmatrix}x_c\\y_c\\z_c\\1\end{bmatrix}                                 ​xy1​            ​=            ​zc​f​00​0zc​f​0​00zc​1​​000​            ​⋅            ​xc​yc​zc​1​            ​
也可以写作:
                                              z                            c                                  ⋅                                 [                                                                              x                                                                                                          y                                                                                                          1                                                                        ]                                  =                                 [                                                                              f                                                                                    0                                                                                    0                                                                                    0                                                                                                          0                                                                                    f                                                                                    0                                                                                    0                                                                                                          0                                                                                    0                                                                                    1                                                                                    0                                                                        ]                                  ⋅                                 [                                                                                             x                                           c                                                                                                                                       y                                           c                                                                                                                                       z                                           c                                                                                                                        1                                                                        ]                                        z_c \cdot \begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{bmatrix} \cdot \begin{bmatrix}x_c\\y_c\\z_c\\1\end{bmatrix}                   zc​⋅            ​xy1​            ​=            ​f00​0f0​001​000​            ​⋅            ​xc​yc​zc​1​            ​
3.2.3 像素坐标系转换为图像坐标系

https://i-blog.csdnimg.cn/img_convert/2da30c91da7c5956f275661d6a7e65c5.png#pic_center像素坐标系uov是一个二维直角坐标系,反映了相机CCD/CMOS芯片中像素的分列环境。原点o位于图像的左上角,u轴、v轴分别于像面的双方平行。像素坐标系中坐标轴的单元是像素(整数)。
像素坐标系倒霉于坐标变更,因此必要创建图像坐标系XOY,其坐标轴的单元通常为毫米(mm),原点是相机光轴与相面的交点(称为主点),即图像的中心点,X轴、Y轴分别与u轴、v轴平行。故两个坐标系实际是平移关系,即可以通过平移就可得到。
https://i-blog.csdnimg.cn/img_convert/2618ca0efb32ba6cb2fcfbdf57721997.png#pic_center此中,                              d                      x                        dx               dx、                              d                      y                        dy               dy分别为像素在                              x                        x               x、                              y                        y               y轴方向上的物理尺寸,                                       u                         0                                  u_0               u0​,                                       v                         0                                  v_0               v0​为主点(图像坐标系原点)坐标。
3.2.4 天下坐标转换为像素坐标

https://i-blog.csdnimg.cn/img_convert/7970c90cf09aa35fc1d3045c9de1a492.png#pic_center
3.3 畸变

3.3.1 畸变范例

https://i-blog.csdnimg.cn/direct/b768436c72874b85a3cb372236da9b34.png
3.3.1.1 径向畸变(Radial Distortion)

径向畸变是由于镜头的形状引起的,通常表现为图像中心地区的放大或缩小。径向畸变可以进一步分为两种范例:


[*]桶形畸变(Barrel Distortion):图像向外凸起,类似于桶的形状。
[*]枕形畸变(Pincushion Distortion):图像向内凹陷,类似于枕头的形状。
                                              x                            corrected                                  =                         x                         (                         1                         +                                 k                            1                                          r                            2                                  +                                 k                            2                                          r                            4                                  +                                 k                            3                                          r                            6                                  )                                           y                            corrected                                  =                         y                         (                         1                         +                                 k                            1                                          r                            2                                  +                                 k                            2                                          r                            4                                  +                                 k                            3                                          r                            6                                  )                               x_{\text{corrected}} = x(1 + k_1 r^2 + k_2 r^4 + k_3 r^6)\\ y_{\text{corrected}} = y(1 + k_1 r^2 + k_2 r^4 + k_3 r^6)                   xcorrected​=x(1+k1​r2+k2​r4+k3​r6)ycorrected​=y(1+k1​r2+k2​r4+k3​r6)
此中:


[*]                                 (                         x                         ,                         y                         )                              (x, y)                  (x,y) 是畸变前的像素坐标。
[*]                                 (                                 x                            corrected                                  ,                                 y                            corrected                                  )                              (x_{\text{corrected}}, y_{\text{corrected}})                  (xcorrected​,ycorrected​) 是畸变校正后的像素坐标。
[*]                                             r                            2                                  =                                 x                            2                                  +                                 y                            2                                       r^2 = x^2 + y^2                  r2=x2+y2 是像素点到图像中心的隔断的平方。
[*]                                             k                            1                                  ,                                 k                            2                                  ,                                 k                            3                                       k_1, k_2, k_3                  k1​,k2​,k3​ 是径向畸变系数。
3.3.1.2 切向畸变(Tangential Distortion)

切向畸变是由于镜头和成像平面不完全平行引起的。这种畸变会导致图像中的某些地区相对于其他地区发生偏移。切向畸变可以用以下公式形貌:
                                              x                            corrected                                  =                         x                         +                         [                         2                                 p                            1                                  x                         y                         +                                 p                            2                                  (                                 r                            2                                  +                         2                                 x                            2                                  )                         ]                                           y                            corrected                                  =                         y                         +                         [                                 p                            1                                  (                                 r                            2                                  +                         2                                 y                            2                                  )                         +                         2                                 p                            2                                  x                         y                         ]                               x_{\text{corrected}} = x + \\ y_{\text{corrected}} = y +                    xcorrected​=x+ycorrected​=y+
此中,                                        p                         1                              ,                               p                         2                                  p_1, p_2               p1​,p2​ 是切向畸变系数。
3.3.2 畸变模子

综合径向畸变和切向畸变,完备的畸变模子可以表现为:
                                              x                            corrected                                  =                         x                         (                         1                         +                                 k                            1                                          r                            2                                  +                                 k                            2                                          r                            4                                  +                                 k                            3                                          r                            6                                  )                         +                         [                         2                                 p                            1                                  x                         y                         +                                 p                            2                                  (                                 r                            2                                  +                         2                                 x                            2                                  )                         ]                                           y                            corrected                                  =                         y                         (                         1                         +                                 k                            1                                          r                            2                                  +                                 k                            2                                          r                            4                                  +                                 k                            3                                          r                            6                                  )                         +                         [                                 p                            1                                  (                                 r                            2                                  +                         2                                 y                            2                                  )                         +                         2                                 p                            2                                  x                         y                         ]                               x_{\text{corrected}} = x(1 + k_1 r^2 + k_2 r^4 + k_3 r^6) + \\ y_{\text{corrected}} = y(1 + k_1 r^2 + k_2 r^4 + k_3 r^6) +                    xcorrected​=x(1+k1​r2+k2​r4+k3​r6)+ycorrected​=y(1+k1​r2+k2​r4+k3​r6)+
在相机标定过程中,通过拍摄已知多少形状的标定板(如棋盘格),可以盘算出畸变系数                                        k                         1                              ,                               k                         2                              ,                               k                         3                              ,                               p                         1                              ,                               p                         2                                  k_1, k_2, k_3, p_1, p_2               k1​,k2​,k3​,p1​,p2​。然后,使用这些系数对图像举行畸变校正,规复图像的多少形状。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
页: [1]
查看完整版本: 盘算机视觉——相机标定(Camera Calibration)