PatchMatchStereo可能会需要的Rectification
在稠密三维重建中,rectification可以简化patch match的过程。在双目特征匹配等场景中其实也用得到,看了一下一篇论文叫< A Compact Algorithm for Rectification of Stereo Pairs>,笔记如下。
A Compact Algorithm for Rectification of Stereo Pairs - Paper Reading
Abstract
- 一个线性rectification algorithm
- 用了两个perspective projection matrices
- 对于三维重建可忽略的精度影响
Introduction and motivations
优点: 把stereo correspondences变得简单。因为只需要在平行的轴上搜索就行了。
相机模型和对极几何
给一个世界坐标系下的3D点\(\mathbf{w}=[x y z]^{\top}\)和一个图片上的像素坐标\(\mathbf{m}=\left[ \begin{array}{ll}{u} & {v}\end{array}\right]^{\top}\)。这个从3D到2D的投影叫做perspective projection,是由一个homogeneous coordinates下的线性变换表示的。
Let \(\tilde{\mathbf{m}}=[u v 1]^{\top}\) and \(\tilde{\mathbf{w}}=[x y z 1]^{\top}\), 那么这个变换是: \(\lambda \tilde{\mathbf{m}}=\tilde{\mathbf{P}} \tilde{\mathbf{w}}\)。
这里的矩阵P是可以被分解的,如果用QR分解的话得到:
\[
\tilde{\mathbf{P}}=\mathbf{A}[\mathbf{R} | \mathbf{t}]
\]
这里的 矩阵\(A\)是跟相机内参有关:
\[
\mathbf{A}=\left[ \begin{array}{ccc}{\alpha_{u}} & {\gamma} & {u_{0}} \\ {0} & {\alpha_{v}} & {v_{0}} \\ {0} & {0} & {1}\end{array}\right]
\]
把PPM写成如下形式:
\[
\tilde{\mathbf{P}}=\left[ \begin{array}{c}{\mathbf{q}_{1}^{\top} | q_{14}} \\ {\mathbf{q}_2^{\top}|q_{24}} \\ {\mathbf{q}_{3}^{\top} | q_{34}}\end{array}\right]=[\mathbf{Q} | \tilde{\mathbf{q}}]
\]
在迪尔卡坐标系中,这个投影过程如下:
\[
\left\{\begin{array}{l}{u=\frac{\mathbf{q}_{1}^{\top} \mathbf{w}+q_{14}}{\mathbf{q}_{3}^{\top} \mathbf{w}+q_{34}}} \\ {v=\frac{\mathbf{q}_{2}^{\top} \mathbf{w}+q_{24}}{\mathbf{q}_{3}^{\top} \mathbf{w}+q_{34}}}\end{array}\right.
\]
焦平面(\(focal \ plane\))和视网膜平面(retinal plane)平行,并且包含光心(C)。光心的坐标是:\(\mathbf{c}=-\mathbf{Q}^{-1} \tilde{\mathbf{q}}\)
这样的话\(\tilde{\mathbf{P}}\)可以被重写为:\(\tilde{\mathbf{P}}=[\mathbf{Q} |-\mathbf{Q} \mathbf{c}]\)。
Rectification of Camera matrices
假设一个stereo rig已经被标定了(大概就是两个相机的内外参都知道的意思),那么两个PPM(perspective projection matrices)都已经知道。、
rectification的idea: Define two new PPMs by rotating the old ones around their optical centers until focal planes becomes coplanar, thereby containing the baseline.这种方式可以保证核点在无穷远,所以对极线是平行的。为了得到平行的对极线,基线必须是和两个相机的新的x轴平行。
- [ ] 另外,为了得到一个合理的rectification, conjugate points必须要有一样的垂直坐标系。这个要求新相机要有一样的内参。
总结来说:
- 新的PPM的光心和旧的一样,但是旋转不一样了。
- 两个相机的内参一样
- 所以结果的PPMs只会有光心上的不同,可以被认为一个相机沿着x轴移动了。
两个新的PPMs如下:
\[
\tilde{\mathbf{P}}_{n 1}=\mathbf{A}\left[\mathbf{R} |-\mathbf{R} \mathbf{c}_{1}\right], \quad \tilde{\mathbf{P}}_{n 2}=\mathbf{A}\left[\mathbf{R} |-\mathbf{R} \mathbf{c}_{2}\right]
\]
内参\(A\)是不变的,两个光心\(c_1\)和\(c_2\)和旧的光心一致。
把旋转矩阵由行向量表示:
\[
\mathbf{R}=\left[ \begin{array}{c}{\mathbf{r}_{1}^{\top}} \\ {\mathbf{r}_{2}^{\top}} \\ {\mathbf{r}_{3}^{\top}}\end{array}\right]
\]
分别表示的是\(X, Y and Z\)坐标轴。
- 新的X轴和基线平行: \(r1 = (c1-c2)/||c1-c2||\)
- 新的Y轴和X轴垂直: \(\mathbf{r}_{2}=\mathbf{k} \wedge \mathbf{r}_{1}\) : 这儿的\(k\)是一个随机的向量,我们使它。。。
- 新的Z轴和XY垂直: \(\mathbf{r_3}=\mathbf{r}_{1} \wedge \mathbf{r}_{2}\)
The Rectifying Transformation
- sought: 被寻求的,seek的过去式和过去分词
Conclusion
我们的测试显示不会引入可见的误差。
PatchMatchStereo可能会需要的Rectification的更多相关文章
- 论文阅读(XiangBai——【PAMI2018】ASTER_An Attentional Scene Text Recognizer with Flexible Rectification )
目录 XiangBai--[PAMI2018]ASTER_An Attentional Scene Text Recognizer with Flexible Rectification 作者和论文 ...
- ASTER:An Attentional Scene Text Recognizer with Flexible Rectification
代码链接:https://github.com/bgshih/aster 方法概述 本文方法主要解决不规则排列文字的文字识别问题,论文为之前一篇CVPR206的paper(Robust Scene T ...
- python logging模块可能会令人困惑的地方
python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...
- Cordova webapp实战开发:(3)后面可能会学到的东西
在<Cordova webapp实战开发:(2)认识一下Cordova>中我们了解了Cordova和Phonegap的关系,并简要介绍了一下它的架构,以及多平台性,并给大家留了一些作业.我 ...
- mysql查询优化器为什么可能会选择错误的执行计划
有可能导致mysql优化器选择错误的执行计划的原因如下: A:统计信息不准确,mysql依赖存储引擎为其提供的统计信息来评估成本,然而有的存储引擎提供的信息是准确的,有的引擎提供的可能就偏差很大,如: ...
- iOS5可能会删除本地文件储存 - Caches 也不安全
转自:http://blog.163.com/ray_jun/blog/static/1670536422011101225132544/ 出处:http://superman474.blog.163 ...
- C#开发中可能会用到的一些小贴士(转)
转至http://www.cnblogs.com/Ebony-Ivory/p/4380106.html C#篇: 1.目标平台的选择 64位操作系统在编译VS里的程序时,根据需要设置项目属性的“目标平 ...
- Google可能会用苹果的Swift 为什么?
Google可能会用苹果的Swift 为什么? 2014 年夏天,苹果在 WWDC 大会上宣布了全新的程序语言 Swift,主要用来开发 iOS 与 OSX 应用. 去年年底,苹果将 Swift 开源 ...
- freemarker 直接使用List来遍历set集合,可能会报错
转摘:http://www.javaweb1024.com/java/JavaWebzhongji/2015/04/08/528.html freemarker 直接使用List来遍历set集合,可 ...
随机推荐
- input file 保存图片
Request.File["控件名称"].FileName 文件名称(没有路径) Request.File["控件名称"].SaveAs("路径名称& ...
- Javascript屏蔽Backspace回退页面
允许对输入框密码框等控件删除字符,但是不允许页面进行回退 <html lang="en" xmlns="http://www.w3.org/1999/xhtml&q ...
- MAC电脑卸载Jenkins
终端输入下面命令 '/Library/Application Support/Jenkins/Uninstall.command' zudeMoPro:~ zhu$ '/Library/Applica ...
- 藏红花StigmaCroci西红花StigmaCroci番红花
伊朗藏红花(StigmaCroci)是一种耐旱植物,适于生长在冬季最低气温不低于零下20度,夏季最高气温不高于零上35度且气候干燥的地区. 因其水土和气候条件的限制,除了伊朗能大量种植外,希腊.印度. ...
- Js中replace替换所有*
var t = '***感**谢**有**你***'; var r = t.replace(/\*/g,''); //\为转义字符 g表示全局 console.log(r) //感谢有你
- jmeter+jenkins配置过程
目录 前置条件 脚本规划 讲解非GUI方式运行脚本 在jenkins里面新建项目 在Jmeter的jtl结果文件转换成html页面 邮件.配置 前置条件 1.jmeter安装好并已配置好环境变量,可正 ...
- MySQL 上亿大表优化实践
目录 背景 分析 select xxx_record语句 delete xxx_record语句 测试 实施 索引优化后 delete大表优化为小批量删除 总结 背景 XX实例(一主一从)xxx告警中 ...
- 【若泽大数据】玩转大数据之Spark零基础到实战
https://www.bilibili.com/video/av29407581?p=1 若泽大数据官网 http://www.ruozedata.com/ tidb 系列三:有了sparkjdbc ...
- HDU6583:Typewriter(dp+后缀自动机)
传送门 题意: 给出\(p,q\),现在要你生成一个字符串\(s\). 你可以进行两种操作:一种是花费\(p\)的代价随意在后面添加一个字符,另一种是花费\(q\)的代价可以随意赋值前面的一个子串. ...
- 02-linux-换源-ui方式
换软件源 使用清华的软件源. Ubuntu 的 ui 界面操作^换源 System setting -> Software & update -> Download from -& ...