PNP的学习-EPNP
EPNP主要是利用已知的3d点,通过PCA选择4个控制点,建立新的局部坐标系,从而将3d坐标用新的控制点表示出来。
然后,利用相机投影模型和2d点,转换到相机坐标系中,再在相机坐标系中建立和世界坐标系同样关系(每个点在相机坐标系和世界坐标系下控制点处的坐标一致)的4个控制点,求解出相机坐标系下的四个控制点的坐标,进而利用ICP求解pose。
一、根据3d点,找到质点,同时利用PCA,找出三个主轴方向后,求出每个3d点在四个控制点上对应αij的值。

二、利用针孔相机投影模型,将相机坐标系下的3d坐标投影到2d坐标,然后将相机坐标系下的3d坐标转换成在相机坐标系下四个控制点下的坐标值。

注:为了求取2d点到相机坐标系内的坐标,假设相机坐标系内的坐标在相机坐标系下的四个控制点的坐标等于在世界坐标系下的四个控制点的坐标,即αij一致,这样相当于求取四个控制点的旋转和平移。所以,上图的未知数就是在相机坐标系下的四个控制点的坐标值,已知的是相机内参、αij。所以是一个2n*12 *12*1的方程组。
三、对M进行SVD分解,求出相机坐标系下的四个控制点的坐标值

这里出现了一个欠约束的问题,如果匹配点是大于等于6对,则之间取V的最后一列向量,如果小于6对时,需要取V的倒数4列向量的组合作为四个控制点的坐标值。
四、针对相机坐标系下四个控制点的取值向量不同,求取βk

N=1-3的情况比较简单,是线性方程组求解的范畴,N=4是一个欠定方程,需要利用重线性化和子集近似的思想 :

五、将求取出来的相机坐标系控制点坐标和世界坐标系控制点坐标进行高斯牛顿最小化

六、求出了相机坐标系的控制点后,利用ICP求解R,t

七、cue流程

PNP的学习-EPNP的更多相关文章
- PNP的学习-P3P
PNP方法是为了解决在当前两帧图像中,已知前一帧图像上的3dLandmark点和当前帧的2d特征点,求取当前帧的pose. PNP主要有P3P.EPNP.UPNP.DLT.MRE(LS Iterati ...
- 驱动开发学习笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇
驱动开发读书笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentatio ...
- JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB
JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...
- Android开发学习总结(六)—— APK反编译
学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...
- IRP IO_STACK_LOCATION 《寒江独钓》内核学习笔记(1)
在学习内核过滤驱动的过程中,遇到了大量的涉及IRP操作的代码,这里有必要对IRP的数据结构和与之相关的API函数做一下笔记. 1. 相关阅读资料 <深入解析 windows 操作系统(第4版,中 ...
- LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上)【转】
转自:http://www.cnblogs.com/lalacindy/p/5276874.html 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://moo ...
- (转载)OC学习篇之---@class关键字的作用以及#include和#import的区别
前一篇文章说到了OC中类的三大特性,今天我们来看一下在学习OC的过程中遇到的一些问题,该如何去解决,首先来看一下我们之前遗留的一个问题: 一.#import和#include的区别 当我们在代码中使用 ...
- Linux菜鸟学习笔记--Linux系统结构
什么是Linux? Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.严格来讲,Linux这个词本身只表示Linux内核,但实际上人 ...
- C8051F学习笔记:单片机的驱动能力
学习51单片机的时候我们就知道51单片机的I/O口的特点:P0口没有弱上拉,所以做地址线时不用上拉,但输出“1”时就要加上拉电阻,不然输出电平到不了高电平,P1~P3则不存在这个问题,每个输出管脚都有 ...
随机推荐
- if、else、else if后的条件执行体
if.else.else if后的条件执行体有两种情况:一种是用大括号“{ }”括起来的代码块,这个代码块被称作条件执行体:另一种是以分号“:”作为结束符的单行语句或空语句(仅有一个分号),这个单行语 ...
- pytorch安装 caffe2 安装:git 慢 caffe2 cannot find -lopencv_dep_cudart ,undefined reference to 'pthread_create'
最开始的问题: caffe2目前已经不维护了.怎么编译都报错,并且有third_party的代码链接已经飞了.下载不全代码了.建议 不要再折腾了,直接安装Pytorch. 首先,基本环境是ubuntu ...
- Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty 报错
项目中遇到的获取https的数据接口数据时,Unexpected error: java.security.InvalidAlgorithmParameterException: the trustA ...
- Abaqus用Dload子程序实现移动载荷
- 剑指offer——栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个栈是否为该栈的弹出顺序.假设压入栈的所有数字都不相等.例如序列1,2,3,4,5是某个栈的压入顺序,序列4,5,3,2,1是该栈序列的一 ...
- vuecli3.0安装搭建项目
1. npm install -g @vue/cli 2. vue create wechat Linter / Formatter 可以不选 检查空格的 //选择less //标准eslint // ...
- Python·——进程1
1.进程背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序(的一个抽象). 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统 ...
- Vue中的~(静态资源处理)
Webpacked 资源 首先要理解webpack是怎样处理静态资源的. 在*.vue组件中,所有的templates和css都会被vue-html-loader 和 css-loader解析,寻找资 ...
- Spring BeanDefinitionRegistryPostProcessor BeanPostProcessor作用
写博客,写博客,把自己知道的小知识点全部记录,
- commandjs、AMD、CMD之间的故事
commandjs:同步加载,只运行一次,后面使用第一次加载时运行的结果(存于缓存中),用于服务器 AMD:define(id ?,dependencies ?,factory) 异步加载,用于浏览器 ...