ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

108、视觉SLAM基础:ORB-SLAM特征点法的原理与实现

108、视觉SLAM基础:ORB-SLAM特征点法的原理与实现 108、视觉SLAM基础:ORB-SLAM特征点法的原理与实现上周在实验室调试一台差速底盘上的单目相机,跑ORB-SLAM3的时候发现一个特别诡异的现象:机器人原地转了一圈,地图点直接飞了,轨迹画出来像一团被猫挠过的毛线。查了半天,最后发现是图像分辨率从640×480改到1280×720之后,ORB特征提取的尺度因子没跟着调,金字塔层数倒是自动加了,但每层的尺度因子还是1.2,导致大尺度下的特征点匹配全部错乱。这种问题教科书上不会写,但实际工程里能卡你三天。今天就把ORB-SLAM特征点法从原理到实现掰开揉碎讲清楚,顺便把那些年踩过的坑都标出来。先明确一个概念:ORB-SLAM里的“特征点法”不是单纯指ORB特征提取,而是整套基于特征点的视觉里程计前端。它做的事情可以拆成四步:提取关键点、计算描述子、特征匹配、位姿估计。每一步都有坑,每一步都值得单独写一篇,但今天咱们串起来讲。特征提取这一步,ORB用的是FAST角点加BRIEF描述子的组合。FAST角点的核心思想特别朴素——如果一个像素和它周围一圈像素的灰度差超过阈值,那它就是个角点。但FAST有个致命弱点:它不产生尺度信息,也不带方向。ORB的解决办法是构建图像金字塔,每层降采样,然后在每层上单独跑FAST。这样做的直接后果是,一个特征点在不同层上的像素坐标和尺度都不一样,匹配的时候必须把尺度信息带进去。这里有个工程细节:金字塔层数不是越多越好,ORB-SLAM默认是8层,但如果你用的是鱼眼镜头或者大畸变镜头,建议降到4层,否则边缘区域的特征点会被严重拉伸,匹配率直线下降。再说方向计算。ORB用灰度质心法给每个特征点算一个主方向,具体做法是在特征点周围取一个圆形区域,计算灰度质心,然
返回列表