转 视觉里程计:学习笔记

2024-03-09 20:50
文章标签 学习 笔记 视觉 里程计

本文主要是介绍转 视觉里程计:学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博文

视觉里程计:学习笔记

已有 2027 次阅读 2011-10-13 10:17|系统分类:科研笔记|关键词:视觉 学习 separate normal style

 

视觉里程计 就是利用一个图像序列或者一个视频流,计算摄像机的方向和位置的过程。

10月11日 ----------------------------------------------------------------------

视觉里程计算法(基本知识):

大多数现有的视觉里程计算法都是基于以下几个步骤:

1、图像获取:单目照相机、双目照相机或者全向照相机;

2、图像校正:使用一些图像处理技术来去除透镜畸变;

3、特征检测:确定感兴趣的描述符,在帧与帧之间匹配特征并构建光流场;

(1)、使用相关性来度量两幅图像间的一致性,并不进行长时间的特征跟踪;

(2)、特征提取、匹配(Lucas–Kanade method);

(3)、构建光流场;

4、检查光流场向量是否存在潜在的跟踪误差,移除外点;

5、由光流场估计照相机的运动;

(1)、可选方法1:使用卡尔曼滤波进行状态估计;

(2)、可选方法2:查找特征的几何与3D属性,以最小化基于相邻两帧之间的重投影误差的罚函数值。这可以通过数学上的最小化方法或随机采样方法来完成;

6、周期性的重定位跟踪点;

10月13日-----------------------------------------------------------------------------------------------

我选择的视觉里程计算法是:“ sift特征匹配点——基本矩阵——R和T”。

第一步:由特征点计算基本矩阵F。

一般而言,sift点是存在误匹配的情况,因此,采用ransac鲁棒方法计算基本矩阵F。这个过程已经实现,但是还有一个小问题:同样的一组sift点,进行两次基本矩阵计算,得到的基本矩阵差异很大,因此,我在ransac方法的基础上,根据得到的inliers点,采用常规的8点基本矩阵计算方法,这样得到的基本矩阵能保持不变

第二步:由基本矩阵计算R和T

方法1:奇异值分解

E = KK'*F*KK;    %%这是真实的本质矩阵E

[U,S,V] = svd(E);  %奇异值分解。
T_nonscale = U(:,3); %%  不含有刻度因子的平移向量
D= [0 1 0 ;-1 0 0; 0 0 1];
Ra = U*D*V';或者Rb = U*D'*V';   

方法2:非线性优化解迭代求解。我尝试了三种不同的目标函数形式:

% RT_from_E_ydf.m;   物理意义不明显!精度和速度都不如后面的好。
% RT_point_constraints_ydf.m  速度折中,精度较高
% RT_point_constraints_ydf02.m  速度最快,精度不够高   

发现的问题:特征点的误匹配问题。

误匹配对位姿解算结果影响分析:我们将手动选取的匹配点加上一个噪声后(1-2个像素的噪声),位姿误差很大,也就是说,要得到精确的位姿解算结果,噪声不能大于1个像素,即需要考虑亚像素级别的特征点匹配!!实验表明,用sift特征是一种比较合理的方法,但是,sift特征容易出现误匹配点的情况,将其进行剔除是很有意义的一件事情。

目前我采用的是手动选择匹配好的区域,从而选择比较好的匹配点,见hand_choose_sift_ydf.m。结果如下:

Image0053 & Image0056 (sift特征点误匹配率较)

备注

剔除前(°)

172.1492

178.2707

-133.4679

×

剔除后(°)

-0.0774

10.2036

0.0192

真实值(°)

0

10

0

 

Image0053 & Image0054 (sift特征点误匹配率较)

 

剔除前(°)

0.0780

-10.9056

-0.0013

剔除后(°)

-0.0133

-10.7892

0.2188

真实值(°)

0

-10

0

 

 

下一步研究sift特征点的自动选择算法。

一般而言,针对匹配点的鲁棒算法有M-estimators等,我这里选择的是最小中值法(least-median-squares)。程序见RT_from_siftpoint_ydf03.m,该方法运算量非常大,需要进行163(以保证能得到一组正确的样本,假设sift误匹配率为40%的情况下)组优化求解计算Very time consuming

疑问,为什么横向选取特征点的时候,结算结果会出现很大的误差呢?

【横向选取Sift特征点和纵向选取sift特征点,会有不同。能不能进行分析,得到如下结论:如果关心的是航向角,则sift特征点集合呈竖状比较好,即sift点集合和旋转轴平行。

1×8选取特征点

表不同方向手动选取特征点

Image0053 & Image0054

备注

1× 8

 -96.0655

14.8033

-11.8376

×

-168.9075

35.7764

-17.7804

×

   0.4452

-19.4641

-1.7153

×

8× 1

   0.0554

-10.8175

-0.0209

   0.0904

-10.8215

-0.0115

   0.5212

-10.8057

0.2690

真实值(°)

0

10

0

 

 

 

 

这篇关于转 视觉里程计:学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791915

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件