当前位置: 首页 > article >正文

相机小孔成像模型与透视变换

0 背景

本文用于记录小孔相机成像的数学模型推导,并讨论特定条件下两个相机之间看到图像的变换关系。

1 小孔成像模型

在这里插入图片描述

小孔成像模型如上图所示。物理世界发光点P,经过小孔O投影到物理成像平面,形成像点I’
简易起见,构造虚拟成像平面,虚拟成像平面与物理成像平面关于O原点对称。
像点I’在虚拟成像平面对应的点为I。
为虚拟像平面建立坐标系u-v
相机坐标系z轴垂直指向虚拟相平面,x轴与u轴同向,y轴与v轴同向。

PI之间满足关系 O I ⃗ = λ ⋅ O P ⃗ \vec{OI} = \lambda \cdot \vec{OP} OI =λOP 。再设I的x,y坐标与u,v坐标满足关系:
[ I x I y I z ] = [ s u 0 δ u 0 s v δ v 0 0 I z ] ⋅ [ I u I v 1 ] \begin{bmatrix} I_{x} \\ I_{y} \\ I_{z} \end{bmatrix} = \begin{bmatrix} s_{u} & 0 & \delta u \\ 0 & s_{v} & \delta v \\ 0 & 0 & I_{z} \end{bmatrix} \cdot \begin{bmatrix} I_{u} \\ I_{v} \\ 1 \end{bmatrix} IxIyIz = su000sv0δuδvIz IuIv1
I点像坐标表示 O I ⃗ \vec{OI} OI ,带入 O I ⃗ = λ ⋅ O P ⃗ \vec{OI} = \lambda \cdot \vec{OP} OI =λOP ,基于第三维求得 λ \lambda λ,等式两边同时除以常量 I z I_{z} Iz,得到小孔成像模型的数学表达。
[ f u 0 b u 0 f v b v 0 0 1 ] ⋅ [ I u I v 1 ] = 1 I z ⋅ [ I x I y I z ] = 1 P z ⋅ [ P x P y P z ] \begin{bmatrix} f_{u} & 0 & b_{u} \\ 0 & f_{v} & b_{v} \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} I_{u} \\ I_{v} \\ 1 \end{bmatrix} = \frac{1}{I_{z}} \cdot \begin{bmatrix} I_{x} \\ I_{y} \\ I_{z} \end{bmatrix} = \frac{1}{P_{z}} \cdot \begin{bmatrix} P_{x} \\ P_{y} \\ P_{z} \end{bmatrix} fu000fv0bubv1 IuIv1 =Iz1 IxIyIz =Pz1 PxPyPz
简记为下式。其中 M M M 为包含 f u , b u , f v , b v f_{u}, b_{u}, f_{v}, b_{v} fu,bu,fv,bv 3 × 3 3 \times 3 3×3 矩阵。 I ⃗ \vec{I} I 为点 I I I 在虚拟成像平面上的齐次坐标向量。
M ⋅ I ⃗ = P ⃗ / P z M \cdot \vec{I} = \vec{P} / P_{z} MI =P /Pz
再引入世界坐标系与相机坐标系的相对关系,设相机坐标系在世界坐标系下的旋转矩阵与平移向量为 R R R, T T T,则小孔成像模型变形为
M ⋅ I ⃗ = ( R ⋅ P ⃗ + T ) / P z c M \cdot \vec{I} = (R \cdot \vec{P} + T) / P^{c}_{z} MI =(RP +T)/Pzc
其中, P z c P^{c}_{z} Pzc 仍为 P P P点在相机坐标系下在z轴分量。
相应的,当已知像点坐标,对应物点坐标满足方程
P ⃗ = P z c ⋅ R T M I ⃗ − R T T , P z c > 0 \vec{P} = P^{c}_{z} \cdot R^{T} M \vec{I} - R^{T}T, P^{c}_{z} > 0 P =PzcRTMI RTT,Pzc>0
可见,已知像点坐标,可行物点坐标构成了以相机坐标系原点为起始点,与 O I ⃗ \vec{OI} OI 同向的射线。

2 物点在已知平面条件下的像点物点关系讨论

当已知物点在特定平面下,不是一般性地,假设物点在世界坐标系XOY平面中,即物点Z分量为0。此时,特化的小孔成像模型写为
M ⋅ I ⃗ = 1 P z c ⋅ [ r 1 r 2 T ] ⋅ [ X Y 1 ] = 1 P z c ⋅ G ⋅ [ X Y 1 ] M \cdot \vec{I} = \frac{1}{P^{c}_{z}} \cdot \begin{bmatrix} r_{1} & r_{2} & T \end{bmatrix} \cdot \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} = \frac{1}{P^{c}_{z}} \cdot G \cdot \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} MI =Pzc1[r1r2T] XY1 =Pzc1G XY1
其中, r 1 r_{1} r1 r 2 r_{2} r2分别为矩阵 R R R的第1,2列。此时根据像点坐标求解物点坐标方法为
[ X Y 1 ] = P z c ⋅ G − 1 M I ⃗ \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} = P^{c}_{z} \cdot G^{-1} M \vec{I} XY1 =PzcG1MI
这种特殊条件下,如果考虑两个相机模型,对同一物点P,两个像点坐标之间存在关系
[ I u 2 I v 2 1 ] = P z c 1 P z c 2 ⋅ M 2 − 1 G 2 G 1 − 1 M 1 ⋅ [ I u 1 I v 1 1 ] \begin{bmatrix} I^{2}_{u} \\ I^{2}_{v} \\ 1 \end{bmatrix} = \frac{P^{c1}_{z}}{P^{c2}_{z}} \cdot M^{-1}_{2} G_{2} G^{-1}_{1} M_{1} \cdot \begin{bmatrix} I^{1}_{u} \\ I^{1}_{v} \\ 1 \end{bmatrix} Iu2Iv21 =Pzc2Pzc1M21G2G11M1 Iu1Iv11
简记为
[ I u 2 I v 2 1 ] = P z c 1 P z c 2 ⋅ H ⋅ [ I u 1 I v 1 1 ] \begin{bmatrix} I^{2}_{u} \\ I^{2}_{v} \\ 1 \end{bmatrix} = \frac{P^{c1}_{z}}{P^{c2}_{z}} \cdot H \cdot \begin{bmatrix} I^{1}_{u} \\ I^{1}_{v} \\ 1 \end{bmatrix} Iu2Iv21 =Pzc2Pzc1H Iu1Iv11
考虑第三维分量,可以求得系数项 P z c 1 / P z c 2 P^{c1}_{z}/P^{c2}_{z} Pzc1/Pzc2,整理为以下公式
[ t 1 t 2 t 3 ] = H ⋅ [ I u 1 I v 1 1 ] [ I u 2 I v 2 1 ] = 1 t 3 ⋅ [ t 1 t 2 t 3 ] \begin{bmatrix} t_{1} \\ t_{2} \\ t_{3} \end{bmatrix} = H \cdot \begin{bmatrix} I^{1}_{u} \\ I^{1}_{v} \\ 1 \end{bmatrix} \\ \begin{bmatrix} I^{2}_{u} \\ I^{2}_{v} \\ 1 \end{bmatrix} = \frac{1}{t_{3}} \cdot \begin{bmatrix} t_{1} \\ t_{2} \\ t_{3} \end{bmatrix} t1t2t3 =H Iu1Iv11 Iu2Iv21 =t31 t1t2t3
综上所述,当已知物点P在世界坐标系XOY平面上时,两个相机下物点P的像点坐标之间满足透视变换关系,这个关系由透视变换矩阵 H H H唯一确定。

3 H H H矩阵的标定

本节讨论2描述的特殊条件下, H H H矩阵的求解问题。将 H H H写作
H = [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ] H = \begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix} H= h11h21h31h12h22h32h13h23h33
给定一组 { ( I u 1 , I v 1 ) , ( I u 2 , I v 2 ) } \{(I^{1}_{u}, I^{1}_{v}),(I^{2}_{u},I^{2}_{v})\} {(Iu1,Iv1),(Iu2,Iv2)}坐标对,则对任一对坐标对,求解的 H H H应满足约束
[ I u 2 I v 2 1 ] = 1 h 31 I u 1 + h 32 I v 1 + h 33 ⋅ H ⋅ [ I u 1 I v 1 1 ] \begin{bmatrix} I^{2}_{u} \\ I^{2}_{v} \\ 1 \end{bmatrix} = \frac{1}{h_{31}I^{1}_{u}+h_{32}I^{1}_{v}+h_{33}} \cdot H \cdot \begin{bmatrix} I^{1}_{u} \\ I^{1}_{v} \\ 1 \end{bmatrix} Iu2Iv21 =h31Iu1+h32Iv1+h331H Iu1Iv11
H 0 H_{0} H0满足上述约束,容易验证,任意 H = s ⋅ H 0 , s ≠ 0 H = s \cdot H_{0}, s \neq 0 H=sH0,s=0均满足上述约束。
即满足约束的 H H H有无穷多个,它们之间只差一个缩放系数。而我们只需要求解一个即可。
简单起见,取 h 33 = 1 h_{33}=1 h33=1。则对于一个点对,我们有方程
[ I u 1 I v 1 1 0 0 0 − I u 2 I u 1 − I u 2 I v 1 − I u 2 0 0 0 I u 1 I v 1 1 − I v 2 I u 1 − I v 2 I v 1 − I u v ] ⋅ [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 1 ] = 0 ⃗ \begin{bmatrix} I^{1}_{u} & I^{1}_{v} & 1 & 0 & 0 & 0 & -I^{2}_{u}I^{1}_{u} & -I^{2}_{u}I^{1}_{v} & -I^{2}_{u} \\ 0 & 0 & 0 & I^{1}_{u} & I^{1}_{v} & 1 & -I^{2}_{v}I^{1}_{u} & -I^{2}_{v}I^{1}_{v} & -I^{v}_{u} \end{bmatrix} \cdot \begin{bmatrix} h_{11} \\ h_{12} \\ h_{13} \\ h_{21} \\ h_{22} \\ h_{23} \\ h_{31} \\ h_{32} \\ 1 \\ \end{bmatrix} = \vec{0} [Iu10Iv10100Iu10Iv101Iu2Iu1Iv2Iu1Iu2Iv1Iv2Iv1Iu2Iuv] h11h12h13h21h22h23h31h321 =0
可见一个点对提供了关于 H H H元素的两个线性方程。
最少4个点对,即可求解得到 H H H


http://www.kler.cn/a/503481.html

相关文章:

  • 数据仓库基础常见面试题
  • E12.【C语言】练习:求两个数的最大公约数
  • Vue2+OpenLayers调用WMTS服务初始化天地图示例(提供Gitee源码)
  • js:根据后端返回数据的最大值进行计算然后设置这个最大值为百分之百,其他的值除这个最大值
  • 前端:前端开发任务分解
  • 数据结构(Java版)第八期:LinkedList与链表(三)
  • Vue 学习之旅:核心技术学习总结与实战案例分享(vue指令下+计算属性+侦听器)
  • 一键掌握多平台短视频矩阵营销/源码部署
  • ChordCraft荣获重要认可:推动全球音乐教育的数字化革新
  • stack和queue专题
  • 使用 versions-maven-plugin 和 flatten-maven-plugin 插件惯例 maven 项目版本
  • JUC Java并发编程 高级 学习大纲 动员
  • 保姆级图文详解:Linux和Docker常用终端命令
  • Mac玩Steam游戏秘籍!
  • Knife4j生成和展示API文档工具
  • Python自学 - “包”的创建与使用(从头晕到了然)
  • 电子邮件安全及核心概念
  • 探索AI与鸿蒙开发新领域:从《星火AI使用指南》到《鸿蒙应用开发宝典》
  • 远程连接不上怎么回事?
  • HTML5 滚动动画详解
  • 常见的php框架有哪几个?
  • 利用Java爬虫按图搜索1688商品(拍立淘)的实践指南
  • npm install 报错常见的解决方法
  • 论文阅读:SplatMAP: Online Dense Monocular SLAM with 3D Gaussian Splatting
  • 解决VMWare虚拟机“无法获取vmci驱动程序版本”的问题
  • 如何应对突然忘记 MySQL 登录密码的情况?