四点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).在获得第二张 ...
随机推荐
- VMware安装linux系统CentOs7.4 mini版过程
创建虚拟机 新建虚拟机 选择虚拟机的操作系统,本文中安装的CentOS属于linux 设置虚拟机的名称和虚拟机所使用的文件再物理机中的路径, 设置虚拟机的cup数量和核心数量,如果设置的不合适可以再创 ...
- flask_apscheduler
网上很多文章包括官网给出来的,更多的是执行的函数和初始话app在同一文件 按照app 路由 模型类 视图 往下延申,项目已经成型,所以上述的方法不适用. (不用操心模型类与app互相导入的错误)下面分 ...
- js获取天气插件
SDK介绍 根据指定入参,传入三个 select 的 id值 及 回调函数,每次选项变更都会拿到对应地区最新天气数据. 必须是三个 Select 标签 有记住选项功能,避免重复相关逻辑. 1.依赖源码 ...
- 把KMP算法嚼碎了喂给你吃!(C++)
相信不少人在学数据结构的时候都被KMP算法搞的迷迷糊糊的,原理看的似懂非懂,代码写不出来,或者写出来了也不知道为什么就可以这么写.本文力求尽可能通俗详细的讲解KMP算法,让你不再受到KMP算法的困扰. ...
- 从0开始学习VUE3--01-Vue2与Vue3的不同点
升级带来的性能提升总结 1.模板编译优化:节点达到一定个数,会自动优化 每次重新渲染,会调用createVnode创建虚拟节点,VUE3会做静态提升,静态节点进行提取,进行优化 2.事件 缓存事件,防 ...
- 【学习笔记】珂朵莉树(ODT)
珂朵莉树 \(\tt 0x00\) 起源 起源于 CodeForces 的一题 CF896C,当时出题人提供了这种做法,在随机数据下均摊复杂度比较优秀. 正统名字好像叫颜色段均摊,由于题目也得名于 \ ...
- Properties集合中的方法load-缓冲流的原理
Properties集合中的方法load 参数:InputStream instream:字节输入流,不能读取含有中文的键值对Reader reader:字符输入流,能读取含有中文的键值对使用步骤:1 ...
- 字节输出流的续写和换行-字节输入流_inputS Stream类
字节输出流的续写和换行 package demo02.OutputStream; import java.io.FileOutputStream; import java.io.IOException ...
- Grafana 系列文章(八):Grafana Explore 中的 Inspector
️URL: https://grafana.com/docs/grafana/latest/explore/explore-inspector/ Description: Explore 中的检查器 ...
- 随便封装下log
#!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = logging工具类 __Time__ = 2 ...