0


世界坐标系、相机坐标系和图像坐标系的转换

相机标定笔记

坐标系转换

之前只是停留在会用的阶段,一直没去读懂计算的原理,今天通读了大佬的文章,写的言简意赅,感谢感谢~~特此记录一下,仅用作个人笔记

贴链接,十分感谢~
https://blog.csdn.net/weixin_44278406/article/details/112986651
https://blog.csdn.net/guyuealian/article/details/104184551

四个不同类型的坐标系

将三维物体转换成照片上的二维坐标,由四个坐标系进行转换。

1. 世界坐标系

世界坐标系是一个特殊坐标系,它建立了描述其他坐标系需要的参考框架。能够用世界坐标系描述其他坐标系的位置,而不能用更大的、外部的坐标系描述世界坐标系。从非技术意义上讲,世界坐标系建立的是我们所关心的最大坐标系,而不必真的是整个世界。

  1. (
  2. X
  3. w
  4. Y
  5. w
  6. Z
  7. w
  8. )
  9. (X_wY_wZ_w)
  10. (Xw​,Yw​,Zw​)来表示,世界坐标系可通过旋转和平移得到相机坐标系。

2. 相机坐标系

以相机透镜的几何中心(光心)为原点,坐标系满足右手法则,用

  1. (
  2. X
  3. c
  4. Y
  5. c
  6. Z
  7. c
  8. )
  9. (X_cY_cZ_c)
  10. (Xc​,Yc​,Zc​)来表示;相机光轴为坐标系的Z轴,X轴水平,Y轴竖直。

3. 图像物理坐标系

以CCD图像的中心为原点,坐标由

  1. (
  2. x
  3. ,
  4. y
  5. )
  6. (x, y)
  7. (x,y) 表示,图像坐标系的单位,一般是毫米,坐标原点为相机光轴与成像平面的交点(一般情况下,这个交点是接近于图像的正中心)

在这里插入图片描述

  1. CCD,英文全称:Charge coupled Device,中文全称:电荷耦合元件,可以称为CCD图像传感器。CCD是一种半导体器件,能够把光学影像转化为数字信号。 CCD上植入的微小光敏物质称作像素(Pixel)。一块CCD上包含的像素数越多,其提供的画面分辨率也就越高。

4. 图像像素坐标系

其实,当我们提及一个图像时,通常指的是图像的像素坐标系。像素坐标系的原点在左上角,并且单位为像素。
在这里插入图片描述

将图像坐标系的原点

  1. O
  2. 1
  3. O_1
  4. O1 ,转化到以
  5. O
  6. 0
  7. O_0
  8. O0 为原点的坐标系中。使用的原因:
  • 如果使用图像坐标系,单位mm,其实不太好衡量具体的图像,如果按照统一的像素标准,比较容易衡量图像的质量
  • 如果使用图像坐标系,然后就有四个象限,这样会有正负数的问题,但是转换成像素坐标系后,都为整数。在后续的操作和运算中,都简化很多。

坐标转换

针孔模型(The basic pinhole model)。这种模型在数学上是三维空间到二维平面(image plane or focal plane)的中心投影,由一个

  1. 3
  2. ×
  3. 4
  4. 3 × 4
  5. 3×4 投影矩阵
  6. P
  7. =
  8. K
  9. [
  10. R
  11. t
  12. ]
  13. P = K [ R | t ]
  14. P=K[Rt]来描述,
  15. K
  16. K
  17. K 为相机内参(internal camera parameters),
  18. [
  19. R
  20. t
  21. ]
  22. [R|t]
  23. [Rt]为外参(external parameters)。

世界坐标 → 相机坐标(刚性变换)

  1. [
  2. X
  3. c
  4. Y
  5. c
  6. Z
  7. c
  8. 1
  9. ]
  10. =
  11. [
  12. R
  13. t
  14. 0
  15. 1
  16. 3
  17. 1
  18. ]
  19. [
  20. X
  21. w
  22. Y
  23. w
  24. Z
  25. w
  26. 1
  27. ]
  28. \begin{bmatrix}X_c \\ Y_c \\ Z_c \\ 1 \end{bmatrix} = \begin{bmatrix}R & t\\\\ 0_{1*3} & 1 \end{bmatrix} \begin{bmatrix}X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix}
  29. ⎣⎡​XcYcZc1​⎦⎤​=⎣⎡​R013​​t1​⎦⎤​⎣⎡​XwYwZw1​⎦⎤​
  30. X
  31. c
  32. Y
  33. c
  34. Z
  35. c
  36. X_cY_cZ_c
  37. Xc​,Yc​,Zc​代表相机坐标;
  38. X
  39. w
  40. Y
  41. w
  42. Z
  43. w
  44. X_wY_wZ_w
  45. Xw​,Yw​,Zw​代表世界坐标;R代表正交单位旋转矩阵,t代表三维平移矢量。

根据旋转角度可以分别得三个方向上的旋转矩阵,而旋转矩阵即为他们的乘积:

  1. R
  2. =
  3. R
  4. x
  5. R
  6. y
  7. R
  8. z
  9. R = R_x * R_y * R_z
  10. R=Rx​∗Ry​∗Rz

顺便记录一下三个旋转矩阵的公式,经常忘记。

  1. X
  2. X
  3. X旋转
  4. θ
  5. \theta
  6. θ度
  7. [
  8. X
  9. c
  10. Y
  11. c
  12. Z
  13. c
  14. ]
  15. =
  16. [
  17. 1
  18. 0
  19. 0
  20. 0
  21. c
  22. o
  23. s
  24. θ
  25. s
  26. i
  27. n
  28. θ
  29. 0
  30. s
  31. i
  32. n
  33. θ
  34. c
  35. o
  36. s
  37. θ
  38. ]
  39. [
  40. X
  41. w
  42. Y
  43. w
  44. Z
  45. w
  46. ]
  47. =
  48. R
  49. x
  50. [
  51. X
  52. w
  53. Y
  54. w
  55. Z
  56. w
  57. ]
  58. \begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix} = \begin{bmatrix}1&0&0\\0&cos\theta&sin\theta\\0&-sin\theta&cos\theta\end{bmatrix} \begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}=R_x\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}
  59. ⎣⎡​XcYcZc​​⎦⎤​=⎣⎡​1000cosθ−sinθ​0sinθcosθ​⎦⎤​⎣⎡​XwYwZw​​⎦⎤​=Rx​⎣⎡​XwYwZw​​⎦⎤​

  1. Y
  2. Y
  3. Y轴旋转
  4. θ
  5. \theta
  6. θ度
  7. [
  8. X
  9. c
  10. Y
  11. c
  12. Z
  13. c
  14. ]
  15. =
  16. [
  17. c
  18. o
  19. s
  20. θ
  21. 0
  22. s
  23. i
  24. n
  25. θ
  26. 0
  27. 1
  28. 0
  29. s
  30. i
  31. n
  32. θ
  33. 0
  34. c
  35. o
  36. s
  37. θ
  38. ]
  39. [
  40. X
  41. w
  42. Y
  43. w
  44. Z
  45. w
  46. ]
  47. =
  48. R
  49. y
  50. [
  51. X
  52. w
  53. Y
  54. w
  55. Z
  56. w
  57. ]
  58. \begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix} = \begin{bmatrix}cos\theta&0&-sin\theta\\0&1&0\\sin\theta&0&cos\theta\end{bmatrix} \begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}=R_y\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}
  59. ⎣⎡​XcYcZc​​⎦⎤​=⎣⎡​cosθ0sinθ​010​−sinθ0cosθ​⎦⎤​⎣⎡​XwYwZw​​⎦⎤​=Ry​⎣⎡​XwYwZw​​⎦⎤​

  1. Z
  2. Z
  3. Z轴旋转
  4. θ
  5. \theta
  6. θ度
  7. [
  8. X
  9. c
  10. Y
  11. c
  12. Z
  13. c
  14. ]
  15. =
  16. [
  17. c
  18. o
  19. s
  20. θ
  21. s
  22. i
  23. n
  24. θ
  25. 0
  26. s
  27. i
  28. n
  29. θ
  30. c
  31. o
  32. s
  33. θ
  34. 0
  35. 0
  36. 0
  37. 1
  38. ]
  39. [
  40. X
  41. w
  42. Y
  43. w
  44. Z
  45. w
  46. ]
  47. =
  48. R
  49. z
  50. [
  51. X
  52. w
  53. Y
  54. w
  55. Z
  56. w
  57. ]
  58. \begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix} = \begin{bmatrix}cos\theta&sin\theta&0\\-sin\theta&cos\theta&0\\0&0&1\end{bmatrix} \begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}=R_z\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}
  59. ⎣⎡​XcYcZc​​⎦⎤​=⎣⎡​cosθ−sinθ0sinθcosθ0001​⎦⎤​⎣⎡​XwYwZw​​⎦⎤​=Rz​⎣⎡​XwYwZw​​⎦⎤​

相机坐标 → 图像坐标系(中心投影)

相机坐标系到图像坐标系是透视关系,利用相似三角形进行计算。
在这里插入图片描述
写成齐次坐标形式的矩阵相乘为

  1. Z
  2. c
  3. [
  4. x
  5. y
  6. 1
  7. ]
  8. =
  9. [
  10. f
  11. 0
  12. 0
  13. 0
  14. 0
  15. f
  16. 0
  17. 0
  18. 0
  19. 0
  20. 1
  21. 0
  22. ]
  23. [
  24. X
  25. c
  26. Y
  27. c
  28. Z
  29. c
  30. 1
  31. ]
  32. =
  33. [
  34. K
  35. 0
  36. ]
  37. [
  38. X
  39. c
  40. Y
  41. c
  42. Z
  43. c
  44. 1
  45. ]
  46. Zc \begin{bmatrix}x\\y\\1\end{bmatrix} = \begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0 \end{bmatrix} \begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix} = \begin{bmatrix}K|0\end{bmatrix} \begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix}
  47. Zc⎣⎡​xy1​⎦⎤​=⎣⎡​f000f0001000​⎦⎤​⎣⎡​XcYcZc1​⎦⎤​=[K0​]⎣⎡​XcYcZc1​⎦⎤​

其中f代表焦距,即相机坐标系和图像坐标系在Z轴上的差。此时投影点p的单位还是mm,并不是pixel,不方便进行后续运算。

图像坐标系 → 像素坐标系(离散化)

像素坐标系的原点在左上角,并且单位为像素。像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm

在这里插入图片描述

  1. Z
  2. c
  3. [
  4. u
  5. v
  6. 1
  7. ]
  8. =
  9. [
  10. 1
  11. d
  12. x
  13. 0
  14. u
  15. 0
  16. 0
  17. 1
  18. d
  19. y
  20. v
  21. 0
  22. 0
  23. 0
  24. 1
  25. ]
  26. [
  27. f
  28. 0
  29. 0
  30. 0
  31. 0
  32. f
  33. 0
  34. 0
  35. 0
  36. 0
  37. 1
  38. 0
  39. ]
  40. [
  41. R
  42. t
  43. 0
  44. 1
  45. 3
  46. 1
  47. ]
  48. [
  49. X
  50. w
  51. Y
  52. w
  53. Z
  54. w
  55. 1
  56. ]
  57. Zc \begin{bmatrix}u\\v\\1\end{bmatrix} = \begin{bmatrix}\frac{1}{d_x}&0&u_0\\0&\frac{1}{d_y}&v_0\\0&0&1 \end{bmatrix} \begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0 \end{bmatrix} \begin{bmatrix}R & t\\\\ 0_{1*3} & 1 \end{bmatrix} \begin{bmatrix}X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix}
  58. Zc⎣⎡​uv1​⎦⎤​=⎣⎡​dx1000dy10u0v01​⎦⎤​⎣⎡​f000f0001000​⎦⎤​⎣⎡​R013​​t1​⎦⎤​⎣⎡​XwYwZw1​⎦⎤​

其中

  1. [
  2. 1
  3. d
  4. x
  5. 0
  6. u
  7. 0
  8. 0
  9. 1
  10. d
  11. y
  12. v
  13. 0
  14. 0
  15. 0
  16. 1
  17. ]
  18. [
  19. f
  20. 0
  21. 0
  22. 0
  23. 0
  24. f
  25. 0
  26. 0
  27. 0
  28. 0
  29. 1
  30. 0
  31. ]
  32. \begin{bmatrix}\frac{1}{d_x}&0&u_0\\0&\frac{1}{d_y}&v_0\\0&0&1 \end{bmatrix} \begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0 \end{bmatrix}
  33. ⎣⎡​dx1000dy10u0v01​⎦⎤​⎣⎡​f000f0001000​⎦⎤​为相机内参矩阵,
  34. [
  35. R
  36. t
  37. 0
  38. 1
  39. 3
  40. 1
  41. ]
  42. \begin{bmatrix}R & t\\\\ 0_{1*3} & 1 \end{bmatrix}
  43. ⎣⎡​R013​​t1​⎦⎤​为外参矩阵。相机标定就是为了求解这两个矩阵的参数。

在这里插入图片描述

标签: cv 人工智能

本文转载自: https://blog.csdn.net/weixin_38842821/article/details/125933604
版权归原作者 滴滴滴'cv 所有, 如有侵权,请联系我们删除。

“世界坐标系、相机坐标系和图像坐标系的转换”的评论:

还没有评论