相机标定笔记

  • 坐标系转换
  • 四个不同类型的坐标系
    • 1. 世界坐标系
    • 2. 相机坐标系
    • 3. 图像物理坐标系
    • 4. 图像像素坐标系
  • 坐标转换
    • 世界坐标 → 相机坐标(刚性变换)
      • 绕XXX旋转θ\thetaθ度
      • 绕YYY轴旋转θ\thetaθ度
      • 绕ZZZ轴旋转θ\thetaθ度
    • 相机坐标 → 图像坐标系(中心投影)
    • 图像坐标系 → 像素坐标系(离散化)

坐标系转换

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

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

四个不同类型的坐标系

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

1. 世界坐标系

世界坐标系是一个特殊坐标系,它建立了描述其他坐标系需要的参考框架。能够用世界坐标系描述其他坐标系的位置,而不能用更大的、外部的坐标系描述世界坐标系。从非技术意义上讲,世界坐标系建立的是我们所关心的最大坐标系,而不必真的是整个世界。
用(Xw,Yw,Zw)(X_w,Y_w,Z_w)(Xw​,Yw​,Zw​)来表示,世界坐标系可通过旋转和平移得到相机坐标系。

2. 相机坐标系

以相机透镜的几何中心(光心)为原点,坐标系满足右手法则,用(Xc,Yc,Zc)(X_c,Y_c,Z_c)(Xc​,Yc​,Zc​)来表示;相机光轴为坐标系的Z轴,X轴水平,Y轴竖直。

3. 图像物理坐标系

以CCD图像的中心为原点,坐标由 (x,y)(x, y)(x,y) 表示,图像坐标系的单位,一般是毫米,坐标原点为相机光轴与成像平面的交点(一般情况下,这个交点是接近于图像的正中心)

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

4. 图像像素坐标系

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

将图像坐标系的原点 O1O_1O1​ ,转化到以 O0O_0O0​ 为原点的坐标系中。使用的原因:

  • 如果使用图像坐标系,单位mm,其实不太好衡量具体的图像,如果按照统一的像素标准,比较容易衡量图像的质量
  • 如果使用图像坐标系,然后就有四个象限,这样会有正负数的问题,但是转换成像素坐标系后,都为整数。在后续的操作和运算中,都简化很多。

坐标转换

针孔模型(The basic pinhole model)。这种模型在数学上是三维空间到二维平面(image plane or focal plane)的中心投影,由一个 3×43 × 43×4 投影矩阵P=K[R∣t]P = K [ R | t ]P=K[R∣t]来描述,KKK 为相机内参(internal camera parameters),[R∣t][R|t][R∣t]为外参(external parameters)。

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

[XcYcZc1]=[Rt01∗31][XwYwZw1]\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} ⎣⎡​Xc​Yc​Zc​1​⎦⎤​=⎣⎡​R01∗3​​t1​⎦⎤​⎣⎡​Xw​Yw​Zw​1​⎦⎤​
Xc,Yc,ZcX_c,Y_c,Z_cXc​,Yc​,Zc​代表相机坐标;Xw,Yw,ZwX_w,Y_w,Z_wXw​,Yw​,Zw​代表世界坐标;R代表正交单位旋转矩阵,t代表三维平移矢量。
根据旋转角度可以分别得三个方向上的旋转矩阵,而旋转矩阵即为他们的乘积:R=Rx∗Ry∗RzR = R_x * R_y * R_zR=Rx​∗Ry​∗Rz​
顺便记录一下三个旋转矩阵的公式,经常忘记。

绕XXX旋转θ\thetaθ度

[XcYcZc]=[1000cosθsinθ0−sinθcosθ][XwYwZw]=Rx[XwYwZw]\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} ⎣⎡​Xc​Yc​Zc​​⎦⎤​=⎣⎡​100​0cosθ−sinθ​0sinθcosθ​⎦⎤​⎣⎡​Xw​Yw​Zw​​⎦⎤​=Rx​⎣⎡​Xw​Yw​Zw​​⎦⎤​

绕YYY轴旋转θ\thetaθ度

[XcYcZc]=[cosθ0−sinθ010sinθ0cosθ][XwYwZw]=Ry[XwYwZw]\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} ⎣⎡​Xc​Yc​Zc​​⎦⎤​=⎣⎡​cosθ0sinθ​010​−sinθ0cosθ​⎦⎤​⎣⎡​Xw​Yw​Zw​​⎦⎤​=Ry​⎣⎡​Xw​Yw​Zw​​⎦⎤​

绕ZZZ轴旋转θ\thetaθ度

[XcYcZc]=[cosθsinθ0−sinθcosθ0001][XwYwZw]=Rz[XwYwZw]\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} ⎣⎡​Xc​Yc​Zc​​⎦⎤​=⎣⎡​cosθ−sinθ0​sinθcosθ0​001​⎦⎤​⎣⎡​Xw​Yw​Zw​​⎦⎤​=Rz​⎣⎡​Xw​Yw​Zw​​⎦⎤​

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

相机坐标系到图像坐标系是透视关系,利用相似三角形进行计算。

写成齐次坐标形式的矩阵相乘为
Zc[xy1]=[f0000f000010][XcYcZc1]=[K∣0][XcYcZc1]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} Zc⎣⎡​xy1​⎦⎤​=⎣⎡​f00​0f0​001​000​⎦⎤​⎣⎡​Xc​Yc​Zc​1​⎦⎤​=[K∣0​]⎣⎡​Xc​Yc​Zc​1​⎦⎤​
其中f代表焦距,即相机坐标系和图像坐标系在Z轴上的差。此时投影点p的单位还是mm,并不是pixel,不方便进行后续运算。

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

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


Zc[uv1]=[1dx0u001dyv0001][f0000f000010][Rt01∗31][XwYwZw1]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} Zc⎣⎡​uv1​⎦⎤​=⎣⎡​dx​1​00​0dy​1​0​u0​v0​1​⎦⎤​⎣⎡​f00​0f0​001​000​⎦⎤​⎣⎡​R01∗3​​t1​⎦⎤​⎣⎡​Xw​Yw​Zw​1​⎦⎤​
其中[1dx0u001dyv0001][f0000f000010]\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}⎣⎡​dx​1​00​0dy​1​0​u0​v0​1​⎦⎤​⎣⎡​f00​0f0​001​000​⎦⎤​为相机内参矩阵,[Rt01∗31]\begin{bmatrix}R & t\\\\ 0_{1*3} & 1 \end{bmatrix}⎣⎡​R01∗3​​t1​⎦⎤​为外参矩阵。相机标定就是为了求解这两个矩阵的参数。

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

  1. 【自动驾驶】16.计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换

    本篇博客为转载,我对其中的细节添加了一些说明. 原文链接:https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理 ...

  2. 世界坐标系,相机坐标系和图像坐标系的转换(Python)

    世界坐标系,相机坐标系和图像坐标系的转换(Python) 相机内参外参说明:相机内参外参_pan_jinquan的博客-CSDN博客_相机内参 计算机视觉:相机成像原理:世界坐标系.相机坐标系.图像坐 ...

  3. 计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理了& ...

  4. 三维视觉基础之世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系

    三维视觉基础之世界坐标系.相机坐标系.图像坐标系和像素坐标系之间的转换关系 一.各坐标系介绍 二.世界坐标系和相机坐标系之间的转换 三.相机坐标系和图像坐标系之间的转换 四.图像坐标系和像素坐标系之间 ...

  5. 相机成像---世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系

    新学期第一天开始写的这篇文章,看看我啥时候能把他发出去.假期当然是啥也没干了,之前还信誓旦旦说回家一定能学习,学个毛线.开始学习啦,去年年末把环境配置好了之后,实验发现他不准,用的D435i摄像头是红 ...

  6. 世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换

    世界坐标系.相机坐标系.图像坐标系.像素坐标系之间的转换 图像处理.立体视觉等方向常常涉及到四个坐标系:世界坐标系.相机坐标系.图像坐标系.像素坐标系.例如下图: 构建世界坐标系只是为了更好的描述相机 ...

  7. 相机标定----世界坐标系,相机坐标系,图像坐标系,像素坐标系的转换

    1.坐标系介绍 相机模型中,三维世界中的某一点  和  其对应的像素点是通过坐标系的转换得到的.这个过程中会涉及到四个坐标系,即世界坐标系.相机坐标系.图像坐标系.像素坐标系.下面将详细介绍四个坐标系 ...

  8. 世界坐标系,相机坐标系,图像坐标系,像素坐标系转换

    参考博客1 参考博客2 世界 --> 相机 (外参:R,T ) [Xc,Yc,Zc]T表示相机坐标,[Xw,Yw,Zw,1]T表示归物体所在的世界坐标.R表示旋转矩阵,T表示平移矩阵. 相机 - ...

  9. 相机标定总结(像素坐标系、图像坐标系、相机坐标系和世界坐标系之间的转换关系说明)

    近期做了一些机器手臂和摄像头之间手眼标定的内容,在这里对相机的标定做一下总结,手眼标定内容后续更新. 关于三维重建基础知识可以关注更新:MVS学习(一):综述论文阅读记录 1. 相机成像原理说明 数码 ...

  10. 单目视觉标定:世界坐标系、相机坐标系、图像坐标系、像素坐标系——简单粗暴,粗暴

    转:https://blog.csdn.net/chentravelling/article/details/53558096 1.正文 图像处理.立体视觉等等方向常常涉及到四个坐标系:世界坐标系.相 ...

最新文章

  1. 02CSS基础选择器
  2. 企业网络推广浅析网站首页什么样的布局有利于优化?
  3. 安卓蓝牙键盘按键映射_多设备无缝切换 雷柏XK100无线蓝牙轻薄键盘评测
  4. java单例模式_在Java中实现单例模式
  5. Struts向JSP中传值
  6. Linux的环境变量.bash_profile .bashrc profile文件
  7. IIS安装前已经安装了.NET Framework,安装后如何启用.NETFramework
  8. eclipse查看源码
  9. 《MySQL必知必会》学习笔记——第九章(正则表达式)
  10. 斐讯盒子N1/T1_通用超精简刷机固件分享及教程
  11. 自动驾驶-MPC控制器
  12. 机器人操作系统、自动驾驶等研发工具整理
  13. 收货地址列表html,收货地址.html
  14. Bugku Misc (1—28)
  15. java throw 和catch_Java catch与throw同时使用的操作
  16. mongodb获取具体某一天的查询语句
  17. MATLAB——textscan
  18. 阿里、百度、华为都用什么编程语言?做程序员前,这些别说不知道!
  19. 与活体检测技术结合的人脸识别技术
  20. wps的计算机在哪里设置密码,怎么在电脑版WPS中修改密码?

热门文章

  1. DTC Sprint总结——管理经验篇
  2. 生活感悟-1 小胜凭智,大胜靠德
  3. matlab批量裁剪图像并保存,matlab批量裁剪tif图片
  4. DHT11温湿度模块
  5. python画一个心形照片墙怎么摆_这个七夕节,用Python为女友绘制一张爱心照片墙吧!...
  6. python爬公众号图片,Python爬虫实例:爬取微信公众号图片(表情包)
  7. 小米最新系统android 10,国内最快推送安卓10稳定版系统!小米新旗舰出厂标配稳了...
  8. yuemiao-开发(一)
  9. 深度学习:GCN图分类案例
  10. 解决虚拟机启动失败或进入应急模式的问题