当前位置: 首页 > news >正文

【第七讲---视觉里程计1】

视觉里程计就是通过对图像进行特征提取与匹配得到两帧之间的位姿,并进行估计相机运动。
经典SLAM中以相机位姿-路标来描述SLAM过程

特征提取与匹配

  • 路标是三维空间中固定不变的点,可以在特定位姿下观测到
  • 在视觉SLAM中,可利用图像特征点作为SLAM中的路标

特征点

特征点是图像中最具代表性的部分,如轮廓、边缘、最暗或最亮的部分

特征点具有以下性质
在这里插入图片描述
特征点的信息:

  • 关键点:位置、大小、方向、评分等
  • 描述子:特征点周围的图像信息

ORB特征

ORB特征的关键点是:Oriented FAST(一种改进的FAST角点)
描述子:改进BRIEF
FAST关键点:
FAST:主要检测局部像素灰度变化明显的地方,(如果一个像素与邻域的像素差别较大,则更可能是角点),检测过程如下:
在这里插入图片描述

在这里插入图片描述
在FAST12中,提出一个高效的测试,来快速排除一大部分非特征点的点,该测试仅仅检查位置1、5、9、13四个位置的像素,如果不满足至少三个角点亮度大于I+T或小于I-T,那么p不可能是一个角点。
FAST缺点:

  • 原始FAST角点经常出现扎堆的现象。所以在第一遍检测之后,还需要用非极大抑制,在一定区域内仅保留响应极大值的角点,避免角点集中问题。
  • 由于FAST角点不具有方向信息且存在尺度问题,ORB添加了尺度和旋转的描述:尺度不变性通过构建图像金字塔来实现,旋转是由灰度质心法来实现的。
    Oriented FAST:
    👉尺度不变性
    在这里插入图片描述

很好的避免了尺度不变性
👉旋转是由灰度质心实现的
质心是指以图像块灰度值作为权重的中心。
在这里插入图片描述
在这里插入图片描述
描述子:
一种二进制描述子,其描述向量由许多01组成

  • 1:关键点附近两个像素p>q
  • 0: 关键点附近两个像素p<q

在这里插入图片描述
在这里插入图片描述
example:
在这里插入图片描述
在这里插入图片描述
那么怎么旋转的呢?
在这里插入图片描述
BRIEF描述子总结

  • 优点:使用了随机选点的比较,速度标记快,由于使用二进制表达,存储起来十分方便
  • 缺点:原始的BRIEF描述子具有旋转不变性,在图像发生旋转时容易丢失,而ORB在FAST特征提取阶段计算了关键点的方向,计算了旋转之后的BRIEF特征使ORB的描述子具有较好的旋转不变性。
  • BRIEF是一种二进制描述,需要用汉明距离度量(即其中01个数的差异)

特征匹配

特征匹配解决了SLAM中的数据关联问题,即确定当前看到的路标与之前看到的路标之间的对应关系。
通过对图像或者图像与地图之间的描述子进行准确匹配,可以为后续的姿态估计、优化等操作减轻大量负担,然而,由于图像特征的局部特征、误匹配的情况存在。
对于两个时刻的图像:

  • 在图像It中提取到特征点xm(m=1,2…M)在图像It+1时刻提取到特征点xn(n=1,2…N)
  • 暴力匹配:对于每一个特征点xm与所有xn测量描述子的距离,然后排序,取最近的一个作为匹配点
  • 当特征点数量很大时,匹配的运算量会变得很大,选用一些改进算法:快速近似最近邻算法

计算相机运动

2D-2D对极集合

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述)
需要用到相机坐标系->像素坐标系相关知识

👉 对极几何

在这里插入图片描述
本质矩阵仅依赖于外部参数R,t
👉八点法求E
将E看作3*3的矩阵,去掉尺度因子后剩下8个自由度,考虑一对匹配点,其归一化坐标为:在这里插入图片描述
在这里插入图片描述
把上述方程记为
Ae=0

http://www.lryc.cn/news/128605.html

相关文章:

  • Linux: sched: might_sleep; 一个调试函数,演变为真实的睡眠函数,实至名归
  • (三) 搞定SOME/IP通信之CommonAPI库
  • windows bat脚本,使用命令行增加/删除防火墙:入站-出站,规则
  • Stable Diffusion 告别复制关键词,高质量提示词自动生成插件
  • 【学习日记】【FreeRTOS】任务调度时如何考虑任务优先级——任务的自动切换
  • C语言暑假刷题冲刺篇——day3
  • Taro+vue3小程序开启分享他人和分享到朋友圈
  • JAVA-Spring中IOC容器是什么?
  • QT多屏显示程序
  • python使用xlwt时,报ValueError: More than 4094 XFs (styles)
  • GitHub 打不开解决方案
  • Java网络编程(一)网络基础
  • matlab使用教程(17)—多项式的定义和运算
  • 华为认证 | 这门HCIA认证正式发布!
  • 【Docker】Docker安装 MySQL 8.0,简洁版-快速安装使用
  • CSS自己实现一个步骤条
  • Visual Studio 2019 解决scanf函数报错问题
  • 亚马逊无限买家号如何注册?
  • 前端框架学习-ES6新特性(尚硅谷web笔记)
  • 普陀发布新规服务元宇宙企业 和数软件发展元宇宙场景落地
  • Kotlin差异化分析,let,run,with,apply及also
  • (stm32)低功耗模式
  • 【C++学习手札】一文带你认识C++虚函数(内层剖析)
  • Python“牵手”1688商品评论数据采集方法,1688API申请指南
  • “深入解析JVM内部机制:探秘Java虚拟机的奥秘“
  • 【系统工具】开源服务器监控工具WGCLOUD初体验
  • powerBI应用技巧
  • RK3568背光调试分享
  • Numpy入门(2)—随机数
  • ansible的playbook剧本