四点DLT (Direct Linear Transformation) 算法
\(\mathrm{x}_{i}\) 表示变化前的齐次坐标
\(\mathbf{x}_{i}^{\prime}\) 表示变化后的齐次坐标
我们需要求到一个 \(3\times3\) 的变换矩阵 \(\mathrm{H}\) , 使得
\]
令 \(\mathbf{h}^{j\top}\) 表示 \(\mathrm{H}\) 的第 \(j\) 行 , 即 \(\mathrm{H}=[~\mathbf{h}^{1\top};~ \mathbf{h}^{2\top}; ~ \mathbf{h}^{3\top}~]\)
则
\mathbf{h}^{1 \top} \mathbf{x}_{i} \\
\mathbf{h}^{2 \top} \mathbf{x}_{i} \\
\mathbf{h}^{3 \top} \mathbf{x}_{i}
\end{array}\right)
\]
对 \(\mathbf{x}_{i}^{\prime}\) 我们写成 \(\mathbf{x}_{i}^{\prime}=\left(x_{i}^{\prime}, y_{i}^{\prime}, w_{i}^{\prime}\right)^{\top}\)
则 \(\mathbf{x}_{i}^{\prime} \times \mathrm{Hx}_{i}\) 可改写成
y_{i}^{\prime} \mathbf{h}^{3 \top} \mathbf{x}_{i}-w_{i}^{\prime} \mathbf{h}^{2 \top} \mathbf{x}_{i} \\
w_{i}^{\prime} \mathbf{h}^{1 \top} \mathbf{x}_{i}-x_{i}^{\prime} \mathbf{h}^{3 \top} \mathbf{x}_{i} \\
x_{i}^{\prime} \mathbf{h}^{2 \top} \mathbf{x}_{i}-y_{i}^{\prime} \mathbf{h}^{1 \top} \mathbf{x}_{i}
\end{array}\right)
\]
由于 \(\mathbf{h}^{j\top}\mathrm{x}_i=\mathrm{x}_{i}^{\top}\mathbf{h}^j\), 我们可以将上式改写成
\mathbf{0}^{\top} & -w_{i}^{\prime} \mathbf{x}_{i}^{\top} & y_{i}^{\prime} \mathbf{x}_{i}^{\top} \\
w_{i}^{\prime} \mathbf{x}_{i}^{\top} & \mathbf{0}^{\top} & -x_{i}^{\prime} \mathbf{x}_{i}^{\top} \\
-y_{i}^{\prime} \mathbf{x}_{i}^{\top} & x_{i}^{\prime} \mathbf{x}_{i}^{\top} & \mathbf{0}^{\top}
\end{array}\right]\left(\begin{array}{c}
\mathbf{h}^{1} \\
\mathbf{h}^{2} \\
\mathbf{h}^{3}
\end{array}\right)=\mathbf{0}
\]
简写成 \(\tilde{A}_i\mathbf{h}=\mathbf{0}\), \(\tilde{A}_i\) 是 \(3\times9\) 矩阵, \(\mathbf{h}\) 是 9 维向量
由于 \(\tilde{A}_i\) 的前两行加到第三行会导致第三行变为零, 所以 \(\tilde{A}_i\) 只有前两行有效
所以化简为
\mathbf{0}^{\top} & -w_{i}^{\prime} \mathbf{x}_{i}^{\top} & y_{i}^{\prime} \mathbf{x}_{i}^{\top} \\
w_{i}^{\prime} \mathbf{x}_{i}^{\top} & \mathbf{0}^{\top} & -x_{i}^{\prime} \mathbf{x}_{i}^{\top}
\end{array}\right]\left(\begin{array}{c}
\mathbf{h}^{1} \\
\mathbf{h}^{2} \\
\mathbf{h}^{3}
\end{array}\right)=\mathbf{0}
\]
记成 \({A}_i\mathbf{h}=\mathbf{0}\)
由于 \(\mathbf{h}\) 有 9 个未知量, 但只有8条方程, 因此 \(\mathbf{h}\) 会有无穷个解, 这时我们只需加入限定条件 \(||\mathbf{h}||=1\) 即可将解固定
引用: Multiple View Geometry in Computer Vision Second Edition
四点DLT (Direct Linear Transformation) 算法的更多相关文章
- 萌新笔记——Cardinality Estimation算法学习(二)(Linear Counting算法、最大似然估计(MLE))
在上篇,我了解了基数的基本概念,现在进入Linear Counting算法的学习. 理解颇浅,还请大神指点! http://blog.codinglabs.org/articles/algorithm ...
- Cardinality Estimation算法学习(二)(Linear Counting算法、最大似然估计(MLE))
在上篇,我了解了基数的基本概念,现在进入Linear Counting算法的学习. 理解颇浅,还请大神指点! http://blog.codinglabs.org/articles/algorithm ...
- 【线性代数】7-2:线性变化的矩阵(The Matrix of a Linear Transformation)
title: [线性代数]7-2:线性变化的矩阵(The Matrix of a Linear Transformation) categories: Mathematic Linear Algebr ...
- 【线性代数】7-1:线性变换思想(The Idea of a Linear Transformation)
title: [线性代数]7-1:线性变换思想(The Idea of a Linear Transformation) categories: Mathematic Linear Algebra k ...
- 数据挖掘入门系列教程(四点五)之Apriori算法
目录 数据挖掘入门系列教程(四点五)之Apriori算法 频繁(项集)数据的评判标准 Apriori 算法流程 结尾 数据挖掘入门系列教程(四点五)之Apriori算法 Apriori(先验)算法关联 ...
- DLT(Direct Linear Transform)算法
1.DLT定义 DLT是一个 用于解决包含尺度问题的最小二乘问题 的算法. DLT解决问题的标准形式为: ...
- linear map (also called a linear mapping, linear transformation or, in some contexts, linear function
Linear map - Wikipedia https://en.wikipedia.org/wiki/Linear_map
- OpenCV 之 透视 n 点问题
透视 n 点问题,源自相机标定,是计算机视觉的经典问题,广泛应用在机器人定位.SLAM.AR/VR.摄影测量等领域 1 PnP 问题 1.1 定义 已知:相机的内参和畸变系数:世界坐标系中,n 个 ...
- [zt]摄像机标定(Camera calibration)笔记
http://www.cnblogs.com/mfryf/archive/2012/03/31/2426324.html 一 作用建立3D到2D的映射关系,一旦标定后,对于一个摄像机内部参数K(光心焦 ...
- ORB_SLAM2 源码阅读 ORB_SLAM2::Initializer
ORB_SLAM2::Initializer 用于单目情况下的初始化. Initializer 的构造函数中传入第一张影像,这张影像被称作 reference frame(rFrame).在获得第二张 ...
随机推荐
- MySQL join语句怎么优化?
在MySQL的实现中,Nested-Loop Join有3种实现的算法: 1. Simple Nested-Loop Join:简单嵌套循环连接 2. Block Nested-Loop Join:缓 ...
- [Untiy]贪吃蛇大作战(四)——游戏主界面
游戏主界面: 由于这个场景比较复杂,需要分几个部分实现: 1.游戏背景 首先我们的游戏场景上包括了一个大的背景图片,之外再包围一个红色的区域.中间的区域才是可活动的区域,周围通过碰撞检测盒来检测是否有 ...
- 腾讯出品小程序自动化测试框架【Minium】系列(三)元素定位详解
写在前面 昨天转发这篇文章时,看到群里有朋友这样说: 这么卷吗?这个框架官方已经不维护了. 姑且不说卷不卷的问题,要是能卷明白,别说还真不错: 不维护又怎样?我想学习,想会,分享给很期待这系列的文章的 ...
- AJAX容易出错地方,错误处理
myajax.js //创建路由器对象 const express=require('express'); //引入连接池模块 const pool=require('../pool.js'); ...
- 视图,触发器,存储过程,流程控制等MySQL小知识点
视图,触发器,存储过程,流程控制等MySQL小知识点 一.SQL注入问题 登录: import pymysql conn = pymysql.connect( host='127.0.0.1', po ...
- Java 进阶P-8.1+P-8.2
捕捉异常 异常的处理方式之一:捕获异常 捕获异常是通过3个关键词来实现的:try-catch-finally.用try来执行一段程序,如果出现异常,系统抛出一个异常,可以通过它的类型来捕捉(catch ...
- elasticsearch中使用bucket script进行聚合
目录 1.背景 2.需求 3.准备数据 3.1 mapping 3.2 插入数据 4.bucket_script聚合的语法 5.聚合 5.1 根据月份分组排序 5.2 统计每个月卖了多少辆车 5.3 ...
- Phi的反函数
P4780 Phi的反函数 Phi(\(\varphi\) )定义 \(\varphi(n)\) 代表从1-n所有与n互质的数的个数 求\(\varphi(n)\) 普通求法: 首先将n唯一分解为 \ ...
- Linux文件常用操作命令
Linux文件常用操作命令 一.Linux文件和目录简单操作 1.1 查看文件 ls 查看当前目录下的文件 如: -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"." ...
- Sentry 后端云原生中间件实践 ClickHouse PaaS ,为 Snuba 事件分析引擎提供动力
目录(脑图) ClickHouse PaaS 云原生多租户平台(Altinity.Cloud) 官网:https://altinity.cloud PaaS 架构概览 设计一个拥有云原生编排能力.支持 ...