【AI数学】相机成像之外参数

这篇具有很好参考价值的文章主要介绍了【AI数学】相机成像之外参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在一个多视点计算机视觉系统里,系统输入除了多个视角的图像外,一般还需要输入对应视角下相机的内外参数。其中,相机内参数决定了图像坐标系和相机三维坐标系的映射关系,而相机外参数则决定了相机三维坐标系和世界坐标系的对应关系。这两组对应关系描述了多视几何的数学基础。

先明确三个概念:1. 图像坐标:像素值的坐标x,y,最多附带一个原点平移(左上角–>图像中心);2. 相机三维坐标系:以图像二维坐标系扩到三维,其中垂直图像外面向外的为z轴,通常以光心作为原点;3. 世界坐标系:每个视点都有自己的独立坐标系,需要投射到同一个坐标系,即世界坐标系。

我们可以通过“小孔成像”原理轻松求解出利用相机内参数求解图像坐标和相机三维坐标系的映射关系,详情可戳《【AI数学】相机成像之内参数》。本文主要讲解相机外参数的作用,即相机坐标系对世界坐标系对映射关系。
【AI数学】相机成像之外参数
图片来自(https://ftp.cs.toronto.edu/pub/psala/VM/camera-parameters.pdf)

现在有两个坐标系 A A A B B B,空间上有一个点 P P P P P P在坐标系 A A A和坐标系 B B B上都有一个坐标。假如 P P P在坐标系 A A A中点的坐标为 P A = ( x A , y A , z A ) \bold{P_A}=(x_A,y_A,z_A) PA=(xA,yA,zA),在坐标系 B B B中的坐标为 P B = ( x B , y B , z B ) \bold{P_B}=(x_B,y_B,z_B) PB=(xB,yB,zB)。那么 P A \bold{P_A} PA P B \bold{P_B} PB满足什么关系呢?

所谓坐标系,无非就是一组正交基。假如坐标系 A A A的单位正交基为 ( a 1 ⃗ , a 2 ⃗ , a 3 ⃗ ) (\vec{a_1}, \vec{a_2}, \vec{a_3}) (a1 ,a2 ,a3 ),坐标系 B B B的单位正交基为 ( b 1 ⃗ , b 2 ⃗ , b 3 ⃗ ) (\vec{b_1}, \vec{b_2}, \vec{b_3}) (b1 ,b2 ,b3 )。这些单位正交基,都可以在同一个坐标系表示出来,只需选定一个确切的坐标系即可,我们无论选坐标系 A A A、坐标系 B B B或者其他坐标系都是可以的,被选定的坐标系我们通常称为“世界坐标系”。由此,我们可以发现,我们选来表示其他坐标系的单位正交基的公用坐标系就是世界坐标系

那么,空间中一点 P P P向量可以表示为:
[ a 1 ⃗ , a 2 ⃗ , a 3 ⃗ ] ⋅ [ x A y A z A ] \begin{bmatrix} \vec{a_1} , \vec{a_2} , \vec{a_3} \end{bmatrix} \cdot {\begin{bmatrix} x_A \\ y_A \\ z_A \end{bmatrix}} [a1 ,a2 ,a3 ] xAyAzA
也可以表示为:
[ b 1 ⃗ , b 2 ⃗ , b 3 ⃗ ] ⋅ [ x B y B z B ] \begin{bmatrix} \vec{b_1} , \vec{b_2} , \vec{b_3} \end{bmatrix} \cdot {\begin{bmatrix} x_B \\ y_B \\ z_B \end{bmatrix}} [b1 ,b2 ,b3 ] xByBzB
二者有相等(假设两个坐标系原点重合)关系。
[ a 1 ⃗ , a 2 ⃗ , a 3 ⃗ ] ⋅ [ x A y A z A ] = [ b 1 ⃗ , b 2 ⃗ , b 3 ⃗ ] ⋅ [ x B y B z B ] (1) \begin{bmatrix} \vec{a_1} , \vec{a_2} , \vec{a_3} \end{bmatrix} \cdot {\begin{bmatrix} x_A \\ y_A \\ z_A \end{bmatrix}}=\begin{bmatrix} \vec{b_1} , \vec{b_2} , \vec{b_3} \end{bmatrix} \cdot {\begin{bmatrix} x_B \\ y_B \\ z_B \end{bmatrix}}\tag{1} [a1 ,a2 ,a3 ] xAyAzA =[b1 ,b2 ,b3 ] xByBzB (1)
对公示(1)两边同时左乘 [ a 1 T ⃗ a 2 T ⃗ a 3 T ⃗ ] \begin{bmatrix} \vec{a^T_1} \\ \vec{a^T_2} \\ \vec{a^T_3} \end{bmatrix} a1T a2T a3T ,则可以将左边的系数化为单位矩阵,变换可得:
[ x A y A z A ] = [ a 1 T ⃗ b 1 ⃗ a 1 T ⃗ b 2 ⃗ a 1 T ⃗ b 3 ⃗ a 2 T ⃗ b 1 ⃗ a 2 T ⃗ b 2 ⃗ a 2 T ⃗ b 3 ⃗ a 3 T ⃗ b 1 ⃗ a 3 T ⃗ b 2 ⃗ a 3 T ⃗ b 3 ⃗ ] [ x B y B z B ] (2) \begin{bmatrix} x_A \\ y_A \\ z_A \end{bmatrix}=\begin{bmatrix} \vec{a^T_1}\vec{b_1} & \vec{a^T_1}\vec{b_2} & \vec{a^T_1}\vec{b_3} \\ \vec{a^T_2}\vec{b_1} & \vec{a^T_2}\vec{b_2} & \vec{a^T_2}\vec{b_3} \\ \vec{a^T_3}\vec{b_1} & \vec{a^T_3}\vec{b_2} & \vec{a^T_3}\vec{b_3} \end{bmatrix} \begin{bmatrix} x_B \\ y_B \\ z_B \end{bmatrix}\tag{2} xAyAzA = a1T b1 a2T b1 a3T b1 a1T b2 a2T b2 a3T b2 a1T b3 a2T b3 a3T b3 xByBzB (2)
我们用字母来代替公式(2),可得:
P A = R P B (3) \bold{P_A}=\bold{R}\bold{P_B}\tag{3} PA=RPB(3)
公式(3)中的 R \bold{R} R被称为旋转矩阵。旋转矩阵 R \bold{R} R是一个行列式为1的正交矩阵,满足 R − 1 = R T \bold{R^{-1}}=\bold{R^T} R1=RT。所以有
P B = R − 1 P A = R T P A (4) \bold{P_B}=\bold{R^{-1}}\bold{P_A}=\bold{R^T}\bold{P_A}\tag{4} PB=R1PA=RTPA(4)
R \bold{R} R只定义了旋转,公式(3)满足两个坐标系原点相同的情况下的坐标换算。假设两个坐标系的原点并不重合,我们则需要对其进行平移。加一个三维的平移矩阵 T \bold{T} T即可:
P B = R T P A + T (5) \bold{P_B}=\bold{R^T}\bold{P_A}+\bold{T}\tag{5} PB=RTPA+T(5)
公式(5)完成的是,两个坐标系( A A A B B B)换算,我们称为相对位姿换算。如果把任意坐标系转换为世界坐标系,我们就称为绝对位姿换算。我们不难推出绝对位姿的换算方法,首先,我们把世界坐标系原点平移到相机坐标系:
P w ^ = P w − C (6) \bold{\hat{P_w}=P_w -C}\tag{6} Pw^=PwC(6)
其中, C \bold{C} C为两个坐标系原点的偏移量。根据公式(3)我们可以得到:
P c a m = R P w ^ = R ( P w − C ) = R P w − R C = R P w + T (7) \bold{P_{cam}} = \bold{R\hat{P_w}}=\bold{R(P_w - C)}=\bold{RP_w}-\bold{RC}=\bold{RP_w}+\bold{T}\tag{7} Pcam=RPw^=R(PwC)=RPwRC=RPw+T(7)
公式(7)就是本文的精髓:从世界坐标系中算出相机坐标系的坐标。其中
T = − R C (8) \bold{T}=-\bold{R}\bold{C}\tag{8} T=RC(8)
C = − R T T (9) \bold{C}=-\bold{R^TT}\tag{9} C=RTT(9)
通过公式(7),我们就可以将相机坐标系中的点换算到世界坐标系了。这里的 R \bold{R} R T \bold{T} T就是我们的相机外参数了。通常表示为一个 3 × 4 3\times4 3×4的矩阵:
E = ( R   T ) (10) \bold{E}=(\bold{R} \ \bold{T})\tag{10} E=(R T)(10)
如果需要从相机坐标系换算出世界坐标系,可依照
P w = R T ( P c a m − T ) (11) \bold{P_w=R^T(P_{cam}-T)}\tag{11} Pw=RT(PcamT)(11)
本文全部公式为皆为手动推理,若有疑问或指教可留言交流~


实验

一个小实验,帮助理解公式(10)中的 T \bold{T} T

取一组外参数,改变平移参数的值,实现效果:
【AI数学】相机成像之外参数
代码如下(横向移动):

for i in trange(0, 30):
        pose = torch.Tensor([[1, 0, 0, 0.0+(i / 100)],
                             [0, .5, -0.86603, -3.4641],
                             [0, 0.86603, .5, 2 ],
                             [0, 0, 0, 1]])

注意看,代码里改变的是哪个数值。

同理,我们可以用下列代码:

for i in trange(0, 30):
        pose = torch.Tensor([[1, 0, 0, 0.0],
                             [0, .5, -0.86603, -3.4641+(i / 100)],
                             [0, 0.86603, .5, 2 ],
                             [0, 0, 0, 1]])

实现:(前后移动)
【AI数学】相机成像之外参数
用下列代码实现上下移动:

for i in trange(0, 30):
        pose = torch.Tensor([[1, 0, 0, 0.0],
                             [0, .5, -0.86603, -3.4641,
                             [0, 0.86603, .5, 2+(i / 100)]],
                             [0, 0, 0, 1]])

效果:
【AI数学】相机成像之外参数文章来源地址https://www.toymoban.com/news/detail-486763.html

到了这里,关于【AI数学】相机成像之外参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 相机成像模型(一)

            如上图所示相机模组由多个元件组成,其中比较重要的元件包括镜头、感光芯片、驱动芯片。镜头的作用是聚集光线,确保良好的成像环境;感光芯片将光信号转换为电信号;驱动芯片则负责信号处理(去噪、白平衡等)与格式转换。         相机的成像过程

    2024年02月08日
    浏览(40)
  • 『红外相机』成像原理

    红外相机成像原理是利用物体辐射的红外能量来获取图像。红外能量是一种不可见的电磁辐射,波长范围通常从0.8微米到1000微米。 探测红外辐射:红外相机使用红外传感器(如红外焦平面阵列)来 探测目标物体发射的或反射的红外辐射 。红外辐射可以是物体自身的热辐射(

    2024年02月16日
    浏览(41)
  • 相机成像原理

    目录 1、相机成像原理说明 2、相机成像过程 2.1、世界坐标系-相机坐标系 2.2、相机坐标系–图像坐标系 2.3、图像坐标系–像素平面坐标系 3、单点无畸变的相机成像模型         近期项目需进行单目测距、及像素坐标与实际物理距离估算,对相机成像相关知识点进行整理

    2024年02月05日
    浏览(46)
  • 相机成像模型

    坐标系变换 针孔相机模型存在四个坐标系:世界坐标系、摄像机坐标系、图像物理坐标系和图像像素坐标系 世界坐标系 :绝对坐标系,物体在真实世界中的坐标系(3D) 摄像机坐标系 :以相机的 光心 为坐标系的原点,以平行于图像的x和y方向为x轴和y轴, z轴和光轴平行,

    2024年02月21日
    浏览(42)
  • 3D线扫相机-沙姆成像原理

    3D线扫相机,又名激光轮廓仪,3D线激光测量仪,基本原理:通过向物体表面投射线激光平面,从而获取该平面与待测物体表面交线处三维点坐标,解算物体深度信息。主要器件:线激光器、镜头、芯片、处理板、接口板。 主要原理:三角测量 其中光学成像原理:沙姆成像 沙

    2024年02月12日
    浏览(52)
  • 相机成像之3A算法的综述

    3A算法是摄像机成像控制技术中的三大自动控制算法。随着计算机视觉的迅速发展,该算法在摄像器材领域具有广泛的应用和前景。 那么3A控制算法又是指什么呢? (1)AE (Auto Exposure)自动曝光控制  (2)AF (Auto Focus)自动聚焦控制  (3)AWB (Auto White Balance)自动白平衡控制 接下来,我们

    2024年02月11日
    浏览(39)
  • 相机小孔成像模型(逐步推导详解)

    先搞清楚为什么可以简化成小孔成像模型 原则:先简单后复杂,先理想后实际 一、明确四个坐标系:这个是推导的前提! 说明: 1、图像坐标系的坐标原点是成像平面的中心,相机坐标系原点设在光心处,空间中任意一点P可以用相机坐标系和世界坐标系表示。 2、相机坐标

    2024年02月06日
    浏览(36)
  • 【工业视觉-CCD相机和CMOS相机成像的本质区别】

      在学习工业视觉的起初,一般都是先去了解光源、镜头、相机等概念,在接触工业相机时看到两个概念,即CCD相机和CMOS相机,在网上搜寻了一些资料查询,但都不能很好的对两个概念作本质和直观的解释,下面我根据搜寻的资料进行整合,来介绍下此两种相机成像的本质

    2024年02月09日
    浏览(49)
  • 机器视觉【1】相机的成像(畸变)模型

    很久没写文章,简单唠一唠。 不知道巧合还是蜀道同归,部门领导设定了些研究课题,用于公司部门员工的超前发展,该课题是“2D to 3D的三维重建”,这一块刚好是我个人看中的一个大方向,所以就有了这一系列的文章。其实我还发现不少同学是没搞清楚 什么是 机器视觉

    2024年02月03日
    浏览(42)
  • 奥比中光Astra SDK相机SDK openni&&相机成像原理

    目录 1.1 成像原理简介 1.1.1 结构光 1.1.2 双目视觉 1.1.3 光飞行时间TOF​ 2.使用手册 参考网址 2.1 产品集成设计 2.2 SDK介绍与使用 2.3 常用API介绍 OPENNI API 2 OpenNI类(OpenNI.h) 1.1.1 结构光 结构光,英文叫做 Structured light,通常采用特定波长的不可见的红外激光作为光源,它发射出

    2024年04月14日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包