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

news/2025/1/14 17:25:30/

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.ppmy.cn/news/1563084.html

相关文章

全栈面试(一)Basic/微服务

文章目录 项目地址一、Basic InterviewQuestions1. tell me about yourself?2. tell me about a time when you had to solve a complex code problem?3. tell me a situation that you persuade someone at work?4. tell me a about a confict with a teammate and how you…

回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测

回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测 目录 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测。 程序设计 完整代码:回…

32单片机从入门到精通之安全性与可靠性——防护措施(十八)

在人生的道路上,我们会遇到各种困难和挑战。但是,只要我们保持积极的态度和坚定的信念,我们就能够战胜一切困难,实现自己的梦想。不要害怕失败,因为失败是成功的基石。当我们遭遇挫折时,要坚持不懈地努力&a…

嵌入式系统Linux实时化(四)Xenomai应用开发测试

1、Xenomai 原生API 任务管理 Xenomai 本身提供的一系列多任务调度机制,主要有以下一些函数: int rt_task_create (RT_TASK task, const char name, int stksize, int prio, intmode) ; 任务的创建;int rt_task_start(RT_TASK task, void(entry)(void cookie), void cookie…

【Uniapp-Vue3】使用defineExpose暴露子组件的属性及方法

如果我们想要让父组件访问到子组件中的变量和方法,就需要使用defineExpose暴露: defineExpose({ 变量 }) 子组件配置 父组件配置 父组件要通过onMounted获取到子组件的DOM 传递多个属性和方法 子组件 父组件

以太坊(概念与原理)

特点 以太坊是”世界计算机“,开源的、全球分布的计算机基础设施。执行称为智能合约的程序使用区块链来同步和存储系统状态以及名为以太币的加密货币,以计量和约束执行资源成本本质是一个基于交易的状态机以太坊平台使开发人员能够构建具有内置经济功能…

Cesium入门学习6(2025年版本)----- 卫星轨迹

1.完整学习衔接: cesium入门学习一_cesium入门难吗-CSDN博客https://blog.csdn.net/Jinyizhi2233/article/details/144713925 cesium入门学习二-CSDN博客https://blog.csdn.net/Jinyizhi2233/article/details/144723617 cesium入门学习三_cesium 点击事件-CSDN博…

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨 作品简介 身处当今如火箭般迅猛发展的互联网时代,智能聊天助手已然化身成为提升用户体验的关键利器,全方位渗透至人们的数字生活。 紧紧跟随着这股汹涌澎湃的时代浪潮,我毅然投身于极具挑战性…