当前位置:网站首页>世界坐标系、相机坐标系和图像坐标系的转换
世界坐标系、相机坐标系和图像坐标系的转换
2022-07-24 05:20:00 【滴滴滴'cv】
相机标定笔记
坐标系转换
之前只是停留在会用的阶段,一直没去读懂计算的原理,今天通读了大佬的文章,写的言简意赅,感谢感谢~~特此记录一下,仅用作个人笔记
贴链接,十分感谢~
https://blog.csdn.net/weixin_44278406/article/details/112986651
https://blog.csdn.net/guyuealian/article/details/104184551
四个不同类型的坐标系
将三维物体转换成照片上的二维坐标,由四个坐标系进行转换。
1. 世界坐标系
世界坐标系是一个特殊坐标系,它建立了描述其他坐标系需要的参考框架。能够用世界坐标系描述其他坐标系的位置,而不能用更大的、外部的坐标系描述世界坐标系。从非技术意义上讲,世界坐标系建立的是我们所关心的最大坐标系,而不必真的是整个世界。
用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw,Yw,Zw)来表示,世界坐标系可通过旋转和平移得到相机坐标系。
2. 相机坐标系
以相机透镜的几何中心(光心)为原点,坐标系满足右手法则,用 ( X c , Y c , Z c ) (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. 图像像素坐标系
其实,当我们提及一个图像时,通常指的是图像的像素坐标系。像素坐标系的原点在左上角,并且单位为像素。
将图像坐标系的原点 O 1 O_1 O1 ,转化到以 O 0 O_0 O0 为原点的坐标系中。使用的原因:
- 如果使用图像坐标系,单位mm,其实不太好衡量具体的图像,如果按照统一的像素标准,比较容易衡量图像的质量
- 如果使用图像坐标系,然后就有四个象限,这样会有正负数的问题,但是转换成像素坐标系后,都为整数。在后续的操作和运算中,都简化很多。
坐标转换
针孔模型(The basic pinhole model)。这种模型在数学上是三维空间到二维平面(image plane or focal plane)的中心投影,由一个 3 × 4 3 × 4 3×4 投影矩阵 P = K [ R ∣ t ] P = K [ R | t ] P=K[R∣t]来描述, K K K 为相机内参(internal camera parameters), [ R ∣ t ] [R|t] [R∣t]为外参(external parameters)。
世界坐标 → 相机坐标(刚性变换)
[ X c Y c Z c 1 ] = [ R t 0 1 ∗ 3 1 ] [ X w Y w Z w 1 ] \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} ⎣⎡XcYcZc1⎦⎤=⎣⎡R01∗3t1⎦⎤⎣⎡XwYwZw1⎦⎤
X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc代表相机坐标; X w , Y w , Z w X_w,Y_w,Z_w Xw,Yw,Zw代表世界坐标;R代表正交单位旋转矩阵,t代表三维平移矢量。
根据旋转角度可以分别得三个方向上的旋转矩阵,而旋转矩阵即为他们的乘积: R = R x ∗ R y ∗ R z R = R_x * R_y * R_z R=Rx∗Ry∗Rz
顺便记录一下三个旋转矩阵的公式,经常忘记。
绕 X X X旋转 θ \theta θ度
[ X c Y c Z c ] = [ 1 0 0 0 c o s θ s i n θ 0 − s i n θ c o s θ ] [ X w Y w Z w ] = R x [ X w Y w Z w ] \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} ⎣⎡XcYcZc⎦⎤=⎣⎡1000cosθ−sinθ0sinθcosθ⎦⎤⎣⎡XwYwZw⎦⎤=Rx⎣⎡XwYwZw⎦⎤
绕 Y Y Y轴旋转 θ \theta θ度
[ X c Y c Z c ] = [ c o s θ 0 − s i n θ 0 1 0 s i n θ 0 c o s θ ] [ X w Y w Z w ] = R y [ X w Y w Z w ] \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} ⎣⎡XcYcZc⎦⎤=⎣⎡cosθ0sinθ010−sinθ0cosθ⎦⎤⎣⎡XwYwZw⎦⎤=Ry⎣⎡XwYwZw⎦⎤
绕 Z Z Z轴旋转 θ \theta θ度
[ X c Y c Z c ] = [ c o s θ s i n θ 0 − s i n θ c o s θ 0 0 0 1 ] [ X w Y w Z w ] = R z [ X w Y w Z w ] \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} ⎣⎡XcYcZc⎦⎤=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤⎣⎡XwYwZw⎦⎤=Rz⎣⎡XwYwZw⎦⎤
相机坐标 → 图像坐标系(中心投影)
相机坐标系到图像坐标系是透视关系,利用相似三角形进行计算。
写成齐次坐标形式的矩阵相乘为
Z c [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X c Y c Z c 1 ] = [ K ∣ 0 ] [ X c Y c Z c 1 ] 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⎦⎤=⎣⎡f000f0001000⎦⎤⎣⎡XcYcZc1⎦⎤=[K∣0]⎣⎡XcYcZc1⎦⎤
其中f代表焦距,即相机坐标系和图像坐标系在Z轴上的差。此时投影点p的单位还是mm,并不是pixel,不方便进行后续运算。
图像坐标系 → 像素坐标系(离散化)
像素坐标系的原点在左上角,并且单位为像素。像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm

Z c [ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ R t 0 1 ∗ 3 1 ] [ X w Y w Z w 1 ] 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⎦⎤=⎣⎡dx1000dy10u0v01⎦⎤⎣⎡f000f0001000⎦⎤⎣⎡R01∗3t1⎦⎤⎣⎡XwYwZw1⎦⎤
其中 [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] \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} ⎣⎡dx1000dy10u0v01⎦⎤⎣⎡f000f0001000⎦⎤为相机内参矩阵, [ R t 0 1 ∗ 3 1 ] \begin{bmatrix}R & t\\\\ 0_{1*3} & 1 \end{bmatrix} ⎣⎡R01∗3t1⎦⎤为外参矩阵。相机标定就是为了求解这两个矩阵的参数。

边栏推荐
- My little idea -- using MATLAB to realize reading similar to ring buffer
- Similarities and differences of ODS, data mart and data warehouse
- 《统计学习方法(第2版)》李航 第17章 潜在语义分析 LSA LSI 思维导图笔记 及 课后习题答案(步骤详细)第十七章
- 多商户商城系统功能拆解11讲-平台端商品栏目
- Zotero Quick Start Guide
- How to quickly recover data after MySQL misoperation
- ++cnt1[s1.charAt(i) - ‘a‘];
- likeshop单商户商城系统搭建,代码开源无加密
- 统计信号处理小作业——瑞利分布噪声中确定性直流信号的检测
- 关于卷积神经网络中的“输入通道”和“输出通道”的概念
猜你喜欢
![Brief introduction of [data mining] cluster analysis](/img/9b/3484cf1353686d38dcf32e845b1903.jpg)
Brief introduction of [data mining] cluster analysis

Loss after cosine annealing decay of learning rate

Likeshop100%开源无加密-B2B2C多商户商城系统

《机器学习》(周志华) 第5章 神经网络 学习心得 笔记
![[activiti] Introduction to activiti](/img/99/e973279d661960853b3af69a7e8ef2.png)
[activiti] Introduction to activiti

Chapter IV decision tree summary

《统计学习方法(第2版)》李航 第15章 奇异值分解 SVD 思维导图笔记 及 课后习题答案(步骤详细)SVD 矩阵奇异值 十五章

《机器学习》(周志华) 第4章 决策树 学习心得 笔记

【activiti】组任务

Multi merchant mall system function disassembly lecture 13 - platform side member management
随机推荐
Syntax differences between MySQL and Oracle
读取csv文件的满足条件的行并写入另一个csv中
SSM项目配置中问题,各种依赖等(个人使用)
【activiti】网关
++cnt1[s1.charAt(i) - ‘a‘];
ERP+RPA 打通企业信息孤岛,企业效益加倍提升
Multi merchant mall system function disassembly lecture 07 - platform side commodity management
[activiti] activiti system table description
在网络中添加spp模块中的注意点
Could not load library cudnn_ cnn_ infer64_ 8.dll. Error code 126Please make sure cudnn_ cnn_ infer64_ eight
likeshop单商户SAAS商城系统无限多开
快速打开管理工具的命令
【activiti】activiti环境配置
Official account development custom menu and server configuration are enabled at the same time
Chapter IV decision tree summary
jupyter notebook一直自动重启(The kernel appears to have died. It will restart automatically.)
《机器学习》(周志华) 第5章 神经网络 学习心得 笔记
【mycat】mycat搭建读写分离
《机器学习》(周志华) 第4章 决策树 学习心得 笔记
Erp+rpa opens up the enterprise information island, and the enterprise benefits are doubled