首页 > 其他分享 >相机外参和内参矩阵介绍

相机外参和内参矩阵介绍

时间:2024-06-12 18:33:20浏览次数:18  
标签:外参 end 矩阵 begin 内参 相机 bmatrix phi 坐标系

相机与变换

一、内参与外参概念

在计算机视觉中,特别是在相机标定和立体视觉领域,内参(intrinsic parameters)和外参(extrinsic parameters)是非常重要的概念。它们与相机的几何属性和姿态有关。

  • 内参(Intrinsic Parameters): 内参是描述相机内部属性的参数,包括焦距、主点(光学中心)坐标、畸变系数等。内参通常在相机标定时确定,因为它们通常对于特定相机型号是固定的,不随时间变化。一旦相机内参被确定,它们在相机的使用过程中通常是保持不变的。
  • 外参(Extrinsic Parameters): 外参是描述相机在世界坐标系中的位置和姿态的参数,通常包括旋转矩阵和平移向量。外参在不同的相机位置或拍摄时刻可能会发生变化。例如,在立体视觉中,如果有两个相机,那么它们的相对位置和方向会在每次移动相机时发生变化,从而导致外参的变化。

如果相机不发生位置和方向的变化,比如相机固定在一个固定位置,那么外参在很长一段时间内可能保持不变。然而,如果相机的位置或方向发生变化,例如移动相机或更改拍摄角度,外参会随之变化。

二、四个坐标系

四个坐标系的意义,世界坐标系(参考坐标系)摄像机坐标系图像物理坐标系像素坐标系

  1. 世界坐标系就是物体在真实世界中的坐标,比如黑白棋盘格的世界坐标系原点定在第一个棋盘格的顶点,Xw,Yw,Zw互相垂直,Zw方向就是垂直于棋盘格面板的方向。可见世界坐标系是随着物体的大小和位置变化的,单位是长度单位。只要棋盘格的大小决定了,无论板子怎么动,棋盘格角点坐标一般就不再变动(因为是相对于世界坐标系原点的位置不变),且认为是Zw=0。
  2. 相机坐标系以光心为相机坐标系的原点,以平行于图像的x和y方向为Xc轴和Yc轴,Zc轴和光轴平行,Xc,Yc,Zc互相垂直,单位是长度单位。
  3. 图像物理坐标系以主光轴和图像平面交点为坐标原点,x和y方向如图所示,单位是长度单位。
  4. 图像像素坐标系以图像的顶点为坐标原点,u和v方向平行于x和y方向,单位是以像素计。

image

图片借用link

相机成像过程涉及到四个坐标系的变换,变换关系如下:

(U,V,W)是世界坐标系,经过刚体变换(如:旋转、平移)后变为了相机坐标系,再次经过透视投影转变为了图像坐标系,最后经仿射变换转换为了像素坐标系(u,v)。转换关系如下(Z是尺度因子):

三、相机内参

然后就来到了图中的虚线部分,考虑相机坐标下的\(P(x_c,y_c,z_c)\),焦距为\(f_c\),由相似三角形可以得到:

\[\frac{x_c}x=\frac{y_c}y=\frac{z_c}{f_c} \]

写成矩阵形式为:

\[z_c\begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}f_c&0&0\\0&f_c&0\\0&0&1\end{bmatrix}\begin{bmatrix}x_c\\y_c\\z_c\end{bmatrix} \]

最后得到了投影平面上图像的坐标,但要注意,我们此时仍然在物理坐标系下。即如果现在这些字母都有个单位的话,那么它们应该是米或毫米。距离我们熟悉的图片还有一步:从图像坐标系变换至像素坐标系。为了实现这一点,我们进行了水平和竖直方向的伸缩变换以及平移变换,将坐标系的原点从光心转移到(通常时候)图像的左上角:

\[\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\frac{1}{\mathrm{d}x}&0&u_0\\0&\frac{1}{\mathrm{d}y}&v_0\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix} \]

这里\(u_0\)一般近似为\(W/2\),\(v_0\)一般近似为\(H/2\)。所以整个的这个变换过程可以整理成:

\[\begin{gathered}z_{c}\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\frac1{\mathrm{d}x}&0&u_0\\0&\frac1{\mathrm{d}y}&v_0\\0&0&1\end{bmatrix}\begin{bmatrix}f_c&0&0&0\\0&f_c&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}R&T\\\mathbf{0}&1\end{bmatrix}\begin{bmatrix}x_w\\y_w\\z_w\\1\end{bmatrix}\\=\begin{bmatrix}f_x&0&u_0&0\\0&f_y&v_0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}\mathop{R}\limits_{3 \times 3 }&\mathop{T}\limits_{3\times1}\\\mathbf{0}&1\end{bmatrix}\begin{bmatrix}x_w\\y_w\\z_w\\1\end{bmatrix}\end{gathered} \]

其中,\(f_x=\frac f{\mathrm{d}x},f_y=\frac f{\mathrm{d}y}\)。表示将物理坐标上的焦距映射进像素尺寸\((dx,dy)\)中的缩放,然而其实大多数情况下其实都有\(dx=dy\),即像素是一个正方形。得到的第一个矩阵简记为\(K\),也叫相机内参。获取相机内参和外参的方法即相机标定。

四、相机外参

首先,体素所在的( 整个场)有一个默认坐标系,称为世界坐标系\(O-x_{w}y_{w}z_{w}\)。不同的相机可能会从不同的角度进行拍摄。即不同的\(\phi,\theta,\) 以及此时小孔位置的三维坐标。即我们可以通过绕\(z_{w}\)轴和绕\(x_{z}\)轴旋转坐标系、然后再对坐标系进行平移,来将世界坐标系上的一个点转移到相机坐标系下的表示。假设此时相机的位置是\((x,y,z)\),那么可以先绕\(x_{w}\)轴旋转\(\phi\),再绕\(z_{w}\)轴旋转\(\theta\):

\[\begin{gathered} R_\theta=\begin{bmatrix}\cos\theta&-\sin\theta&0\\\sin\theta&\cos\theta&0\\0&0&1\end{bmatrix} , \qquad R_{\phi}=\begin{bmatrix}1&0&0\\0&\cos\phi&-\sin\phi\\0&\sin\phi&\cos\phi\end{bmatrix} \\ R=R_\theta R_\phi=\begin{bmatrix}\cos\theta&-\sin\theta\cos\phi&\sin\theta\sin\phi\\\sin\theta&\cos\theta\cos\phi&-\cos\theta\sin\phi\\0&\sin\phi&\cos\phi\end{bmatrix} \end{gathered} \]

同时,平移向量可以表示为\(T=[x,y,z]\),那么我们可以通过齐次坐标构造一个位姿矩阵C:

\[C=\begin{bmatrix}\mathop{R}\limits_{3 \times 3 }&\mathop{T}\limits_{3\times1}\\\mathbf{0}&1\end{bmatrix} \]

矩阵C又叫相机外参。这样就能通过左乘将世界坐标转换成相机坐标(w2c):

\[\begin{bmatrix}x_c\\y_c\\z_c\\1\end{bmatrix}=\begin{bmatrix}\mathop{R}\limits_{3 \times 3 }&\mathop{T}\limits_{3\times1}\\\mathbf{0}&1\end{bmatrix}\begin{bmatrix}x_w\\y_w\\z_w\\1\end{bmatrix} \]

标签:外参,end,矩阵,begin,内参,相机,bmatrix,phi,坐标系
From: https://www.cnblogs.com/ymzcch12/p/18244362

相关文章

  • 36、matlab矩阵特征值、特征向量和奇异值
    1、名词说明1)特征值特征值(Eigenvalues)是矩阵的一个重要概念,在线性代数中起着非常重要的作用。给定一个n×n的方阵A,如果存在一个非零向量v,使得矩阵A作用于向量v后,得到的结果与向量v成比例(即Av=λv,其中λ为标量),那么λ就是矩阵A的特征值,v就是对应于特征值λ的特征向量。特征值......
  • 复数的矩阵表示
    复数复数\(z\)定义:\(a+bi\)其中\(a,b∈R\),\(i^2=-1\),\(i\)又称为圆复数(虚数)单位,\(a\)为实部\(Re(z)=a\),\(b\)为虚部\(Im(z)=b\),复数域记作\(C\)0.复数三角形式和指数形式\(z=a+bi=r(cos\theta+isin\theta)=re^{i\theta}\)1.复数域是实数域的代数(加法和乘法)闭包,定义复......
  • 矩阵乘法与矩阵快速幂
    1矩阵乘法1.定义若矩阵A的大小为\(n\timesm\),矩阵B的大小为\(m\timesp\),则两个矩阵可以做乘法,得到的矩阵C的大小为\(n\timesp\)。\[A=\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{bmatrix}\]\[B=\begin{bmatrix}b_{11}&b_......
  • 云微客:AI剪辑与视频矩阵的结合,让短视频获客更高效
    近些年来短视频风靡无二,占据了大部分客户群体,用户也逐渐习惯了短视频的存在,搜索问题也逐渐从百度向短视频方向转移,因此短视频平台就成为了吸引大量用户关注和消费的重要渠道。而众多商家也希望通过短视频平台来提升曝光、增加流量,促进实体门店进一步引流获客,谋求发展。因此云......
  • 标量、向量、矩阵、张量是什么?
    参考视频:标量、向量、矩阵、张量-机器学习-李文哲AI人工智能培训_哔哩哔哩_bilibili参考资料:深度学习基础:标量、向量、矩阵、张量_深度学习本质是矩阵-CSDN博客标量是一个独立存在的数,比如线性代数中的一个实数5就可以被看作一个标量,所以标量的运算相对简单,与平常做的算数运......
  • 牛客热题:矩阵的最小路径和
    ......
  • Mamba v2诞生:2 那些烧脑的矩阵们
    大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身......
  • 数据结构和矩阵细节用法:double、cell和complex #matlab
    建立矩阵用[];矩阵的同一行内的元素用逗号或者空格隔开矩阵的不同行的元素用分号隔开eg.       矩阵     A=123456789在matlab中矩阵A表示为:clc;clear;A=[1,2,3;4,5,6;7,8,9]; %或者A=[123;456;789];小矩阵构建大矩阵假设:A=[......
  • Q15 LeetCode54 螺旋矩阵
    1.和上一题主体部分一模一样,加了判断语句2. intm=matrix.length,n=matrix[0].length;二维数组的长度3.List得实例化  1classSolution{2publicList<Integer>spiralOrder(int[][]matrix){34List<Integer>ans=newArrayList<>(......
  • Q14 LeetCode59 螺旋矩阵
    1.二维数组声明  int[][]ans=newint[n][n];2. left<=right&&top<=bottom 跳出循环条件 1classSolution{2publicint[][]generateMatrix(intn){3int[][]ans=newint[n][n];4intnum=1;5inttop=0,bottom=n-1,left......