Homography拓展(含与平面法向量相关的情况)
2022-10-10 更新
个人感想
homography 适用的第一种情况,H 矩阵的组成有R,t,K等信息,很有感觉。
但是适用的第三种情况,H 矩阵直接就用矩阵的 9 个元素来表示,没什么感觉。
更新前的原文推导的公式是第一种情况的公式
homography 的相关说明
Projective Transformations aka Homographies aka Planar Perspective Maps
就是 这三个词是同义词。
图10-10-1. projectivity 定义。图片来自Multiple View Geometry in Computer Vision P33
图10-10-2. projective transformation 定义。图片来自Multiple View Geometry in Computer Vision P33
注意,可以通过一个 homography 变换将一个二维平面变换到另外一个二维平面,就是两个平面局部坐标系的坐标存在一个变换。
图10-10-3. homography作用于两图像间的例子,来自网课计算机视觉,谭平老师
图10-10-4. 。图片来自Multiple View Geometry in Computer Vision P33
图10-10-5. 。homography 的一个应用,图片来自Multiple View Geometry in Computer Vision P35 # 原文
在下面3种情况中,两个相机的像素点之间可以用一个 homography 矩阵进行转换:
- 两个相机看到的 3d 点在一个平面上。
- 两个相机没有平移只有旋转。
- 作者感觉就是 central projection 的例子,如2022-10-10更新的图10-10-4所示。
图0. homography 变换的三种适用情况。图片来自Multiple View Geometry in Computer Vision P36
注意,homography矩阵刻画的是一种坐标之间的对应关系。
本文推导关于两个 像素坐标系下的 以及 在两个 相机坐标系下的 归一化 成像平面的对应点之间的 homography 矩阵。
图1. 两个相机视角 CCC,C′C^{'}C′ 同时看 3d 空间中 共面 3d点。来自 Visual Odometry on Mobile
Devices for Virtual Walkthroughs page25
首先在,3d场景下,有一个在 平面上的 3d 点 QQQ, 它在相机坐标系 CCC, C′C^{'}C′ 下的 3d 坐标分别是 Q1Q_1Q1, Q2Q_{2}Q2。已知,两个相机坐标系的关系如下:
Q2=RQ1+t(1)Q_{2}= RQ_{1}+t \tag{1}Q2=RQ1+t(1)
其中 RRR, ttt 分别为 从相机坐标系 CCC 转换到 C′C'C′ 的 3×33\times33×3, 3×13\times13×1 的旋转矩阵和平移向量。
又由 图1 所示, 3×13\times13×1 向量 nnn 是平面的一个单位法向量,而且它指向相机 C 光心的那侧(因为一个平面的法向量有两个方向,本文故指定其方向)。故
d=−nTQ1(2)d=-n^{T}Q_{1}\tag{2}d=−nTQ1(2)
其中 ddd 是三维场景中相机 C 的光心到平面 的距离。
Q1Q_{1}Q1 代表由相机 C 的光心指向 三维点Q1Q_{1}Q1的向量。
对式(2)等式两边同除以 ddd,得
1=−nTQ1d(3)1 = -\frac{n^{T}Q_{1}}{d} \tag{3}1=−dnTQ1(3)
根据 式(1)、(2),得
Q2=RQ1−tnTQ1dQ_{2} = RQ_{1}-t\frac{n^{T}Q_{1}}{d} Q2=RQ1−tdnTQ1
可化为
Q2=(R−tnTd)Q1(4)Q_{2} = (R-t\frac{n^{T}}{d})Q_{1}\tag{4} Q2=(R−tdnT)Q1(4)
注意,提取公共矩阵 QQQ 在原来项中都处于右侧,故提出去后必须放在括号右边,矩阵乘法无交换律。
另一方面,根据相机坐标系的点投影到像素平面,有
s1q1=K1Q1(5)s_{1}q_{1}=K_{1}Q_{1} \tag{5}s1q1=K1Q1(5)s2q2=K2Q2(6)s_{2}q_{2}=K_{2}Q_{2} \tag{6}s2q2=K2Q2(6)
其中,q1q_{1}q1, q2q_{2}q2 分别是 Q1Q_{1}Q1, Q2Q_{2}Q2 在各自像素平面上的像素点,K1K_{1}K1, K2K_{2}K2 分别为各自的 3×33\times33×3 相机内参矩阵。
进而,将式(4)带入(6),得
s2q2=K2(R−tnTd)Q1(7)s_{2}q_{2}=K_{2}(R-t\frac{n^{T}}{d})Q_{1} \tag{7}s2q2=K2(R−tdnT)Q1(7)
根据 式(5)(7),得
s2q2=s1K2(R−tnTd)K1−1q1s_{2}q_{2}= s_{1}K_{2}(R-t\frac{n^{T}}{d})K_{1}^{-1}q_{1} s2q2=s1K2(R−tdnT)K1−1q1
可化为
q2=sK2(R−tnTd)K1−1q1(8)q_{2}= sK_{2}(R-t\frac{n^{T}}{d})K_{1}^{-1}q_{1} \tag{8}q2=sK2(R−tdnT)K1−1q1(8)
其中
s=s1s2s = \frac{s_{1}}{s_{2}}s=s2s1
故从一个像素平面到另一个像素平面的 homography 矩阵
H=K2(R−tnTd)K1−1(9)H = K_{2}(R-t\frac{n^{T}}{d})K_{1}^{-1} \tag{9}H=K2(R−tdnT)K1−1(9)
又 Q1ˉ=K1−1q1(10)\bar{Q_{1}} = K_{1}^{-1}q_{1} \tag{10}Q1ˉ=K1−1q1(10) Qˉ2=K2−1q2(11)\bar{Q}_{2} = K_{2}^{-1}q_{2}\tag{11}Qˉ2=K2−1q2(11)
其中 Q1ˉ\bar{Q_{1}}Q1ˉ, Qˉ2\bar{Q}_{2}Qˉ2 分别为各自相机坐标系下 normalized相机平面上的 3d 点。
故由式(8)(10)(11),得 各自相机坐标系下 归一化平面上的 homography 矩阵
Hˉ=R−tnTd\bar{H} = R-t\frac{n^{T}}{d}Hˉ=R−tdnT
应用
- 得到一张图像在另外的视角下面的图像。比如想得到道路的俯视图,但是没有俯视图,可以从其他视角的图像通过homography矩阵得到。
- 求得 H,K,解算R,t。
参考资料
Pinhole Camera: Homography
Visual Odometry on Mobile Devices for Virtual Walkthroughs
wiki:homography
Homography拓展(含与平面法向量相关的情况)相关推荐
- 平面法向量,点云法向量估计及可视化
目录 单通道深度图像,转三通道法向图像 opencv 平面法向量_任意两平面求夹角 点云3种法向量估计方法及可视化 单通道深度图像,转三通道法向图像 import cv2 import numpy a ...
- 【OpenGL】平面法向量、顶点法向量的计算方法
平面法向量计算 平面法向量知识介绍: 对于平面法向量计算实质就是:平面内两非平行向量的叉积(又称"外积.向量积.叉乘")为该平面的法向量. 根据两向量相乘的前后顺序计算得到两个方向 ...
- 大学知识下放高中:平面法向量的求法
大学知识下放高中:平面法向量的求法9条评论 分享到: 腾讯微博 QQ空间 新浪微博 人人网 开心网 豆瓣 Facebook Twitter 2013-03-26 分类:中学数学教学 ...
- 求空间点沿平面法向量与平面交点的坐标
假定平面方程为: a x + b y − z + d = 0 ax+by-z+d=0 ax+by−z+d=0,空间点坐标为 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0 ...
- Eigen 由三点求平面方程及平面法向量
Eigen 由三点求平面方程及平面法向量 一.原理 二.Eigen实现 一.原理 已知三点 P 1 ( x 1 , y 1 , z 1 ) P1(x_1,y_1,z_1) P1(x1,y1,z ...
- 空间平面法向量求法(转)
一.法向量定义 定义:如果,那么向量叫做平面的法向量.平面的法向量共有两大类(从方向上分),无数条. 二.平面法向量的求法 1.内积法 在给定的空间直角坐标系中,设平面 的法向量=(x,y,1)[或= ...
- 求三个点构成平面的平面法向量
1.三角面法向量 空间已知三点的位置: p1(x1,y1,z1), p2(x2,y2,z2), p3(x3,y3,z3), 令它们逆时针在空间摆放.这样就可以得到平面的两个向量: p1p2 = (x2 ...
- 已知三点求平面法向量
空间已知三点的位置p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),令它们逆时针在空间摆放.这样就可以得到平面的两个向量p1p2(x2-x1,y2-y1,z2-z1),p1 ...
- 三维点云处理:3平面法向量估计
三维点云处理:平面法向量估计 平面的法向量:垂直于平面的直线所表示的向量为该平面的法向量.找一堆点最小特征值对应的特征向量 应用: 1.寻找地面:法向量朝上的 2.分割.聚类算法 一.求法向量的方法: ...
- pcl求平面法向量_线性代数6——平面方程与矩阵
线性方程的几何意义 二元线性方程 该方程是一个二元线性方程组,包含两个方程,每个方程是一条直线,两条直线的交点就是该方程有唯一解,这就是二元线性方程的几何意义. 平面方程 空间内不在同一直线上的三点构 ...
最新文章
- SQL SERVER 取所有表及注释 和 字段属性
- matlab交流电源并联,交流电路串联谐振和并联谐振的仿真分析
- LeetCode LCP 06. 拿硬币
- Java学习日报 — 问题记录 — 2021/12/14
- L2-022 重排链表-PAT团体程序设计天梯赛GPLT
- 杭州一般纳税人和小规模纳税人的区别
- AOP如何实现及实现原理
- npz文件转为npy_numpy 文件存取 npy、npz
- java-assured,如何使用Rest-Assured java中的证书进行HTTPS GET调用
- P/O矩阵、R/D矩阵、IPO图、C/U矩阵知识点
- Android文件解压
- 一个免费全格式MP3音乐播放器的工具
- axios封装request配置
- 跨境独立站MaTaCart教你怎么查谷歌排名
- iOS 下一维码与二维码识别相关资料
- Beats 使用详解
- HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据方案
- https证书产品价格为什么高低不一
- java 正则 js_JavaScript RegExp 对象
- 2019,不过是另一个开始
热门文章
- 如何快速记忆小鹤双拼键位图?
- html 刷新页面,javascript刷新页面的几种方法
- 教育部双一流计算机科学与技术,双一流大学及学科详情.pdf
- Python程序设计题库
- C#: 生辰八字五行计算算法
- svn和git下载安装
- 抖音协议、火山小视频通信协议加密算法研究分析
- android pc投屏,如何解决乐播投屏中投屏失败的问题【乐播投屏】
- 本页设置mac地址过滤来控制计算机对本无线网络的访问,D-Link无线路由器MAC地址过滤怎么设置...
- Java垃圾回收的工作原理和最佳做法