matlab双目相机标定校正_基于双目视觉的无人机避障算法(一)

2023-05-16

讲述在10月到12月所做的所有工作

对于一个无人机自主避障来说,存在着以下流程:

  1. 感知:障碍物检测、行人检测、目标检测

  2. SLAM:为无人机提供位置估计,构建稀疏环境地图

  3. 路径规划:规划一条从当前位置到目标位置的移动轨迹

  4. 控制:控制无人机速度,加速度,追随规划出来的轨迹

我先做出了障碍物检测部分:

Opencv/MATLAB做双目测距(相机标定+立体匹配+测距)

双目测距实际操作分4个步骤:相机标定——双目校正——双目匹配——计算深度信息。

01

相机标定+双目校正

首先是对摄像头做标定


Q1:为什么要做相机标定?

标定的目的是为了消除畸变以及得到内外参数矩阵,内参数矩阵可以理解为焦距相关,它是一个从平面到像素的转换,焦距不变它就不变,所以确定以后就可以重复使用,而外参数矩阵反映的是摄像机坐标系与世界坐标系的转换,至于畸变参数,一般也包含在内参数矩阵中。从作用上来看,内参数矩阵是为了得到镜头的信息,并消除畸变,使得到的图像更为准确,外参数矩阵是为了得到相机相对于世界坐标的联系,是为了最终的测距。

无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。

https://blog.csdn.net/baidu_38172402/article/details/81949447

CSDN

https://www.zhihu.com/question/29448299/answer/102658379

知乎 陈明猷 ​

先完成单目标定,再完成双目标定。选择标定方法的时候,选用张正友标定法,因为MATLAB用的也是张正友标定法做的,误差最小。

双目标定,必须是拿自己打印的棋盘格摆拍的,且记下棋盘距离自己的距离,以衡量你标定和匹配的误差是否在合适的范围之内。

先固定好左右相机,拿棋盘标定图摆拍并保存,左右相机各15张(我做的时候在30张图中选用15张图进行opencv标定的时候误差最小,但是在MATLAB中就不用考虑这个问题)

------相机标定的代码网上很多,一步一步来即可---------

简单来说就是:OpenCV使用黑白棋盘格来标定摄像机,调用findChessboardCorners()获得棋盘格角点的像素坐标,再调用cornerSubpix获得棋盘格角点的亚像素坐标。调用drawChessboardCorners()函数绘制出检测到的棋盘角点,然后使用stereoCalibrate()函数完成双目标定。

标定之后进行校正:在OpenCV中可通过stereoRectify()函数完成校正功能,摄像机矩阵,畸变向量,左右旋转矩阵R和平移向量T。输出参数为左右投影矩阵P,以及重投影矩阵Q。可调用函数InitUndistortRectifyMap()生成图像校正所需的映射矩阵。

标定结束后最终得到的yml文件,就是双目标定的参数矩阵,之后使用它就可以得到校正后的图像啦。MATLAB里面有双目标定工具箱很方便,且误差很小。


Q2:你得到的参数和误差有什么合格判据吗?误差在哪个区间内能用?你怎么确定你得到的参数能用?你有跟别人做的对比过吗?

单目标定的误差 看平均重投影误差,越小越好。

双目标定看对极线误差,越小越好,这个关系着后面立体匹配的效果。

在工业生产中,对于双目相机标定, 需要一个稳定可靠的方法确定标定的质量,以帮助判断标定结果,确定是否需要重新标定。现有双目标定的精确度评价研究较少,而且具有明显的局限性,无法应用于工业环境。现有一种方法可以确定标定质量的方法,可在最新资源中查看。


02

双目匹配

原理:

通过对两幅图像视差的计算,直接对前方景物(图像所拍摄到的范围)进行距离测量,而无需判断前方出现的是什么类型的障碍物。所以对于任何类型的障碍物,都能根据距离信息的变化,进行必要的预警或制动。双目摄像头的原理与人眼相似。人眼能够感知物体的远近,是由于两只眼睛对同一个物体呈现的图像存在差异,也称“视差”。物体距离越远,视差越小;反之,视差越大。视差的大小对应着物体与眼睛之间距离的远近,这也是3D电影能够使人有立体层次感知的原因。

229f4e13408b8bbff6baedc68a7efa53.png

双目匹配被普遍认为是立体视觉中最困难也是最关键的问题。得到视差数据,通过上述原理中的公式就可以很容易的计算出深度信息

OpenCV中提供了两种立体匹配算法SGBM算法和BM快匹配算法,其中SGBM算法准确性较高,但是运算速度慢。BM算法准确性稍差但运算速度快,可满足实时应用需求。BM算法在OpenCV中通过函数StereoBM()实现。

接下来就是用基于深度学习的立体匹配算法,让精度更高,潜力更高的GA-Net

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab双目相机标定校正_基于双目视觉的无人机避障算法(一) 的相关文章

随机推荐

  • 数据恢复软件如何换机使用?

    作为好用的数据恢复软件 xff0c EasyRecovery易恢复可以用来恢复文件 文件夹 照片 视频等丢失的文件 xff0c 而且支持换机使用 xff0c 如果要换电脑的话 xff0c 记得一定要按以下步骤操作哦 xff01 EasyRe
  • SQL server修改字段名,属性

    修改字段名 exec sp rename 表名 列名 新列名 修改字段属性 alter table 表名 alter column 列名 nvarchar 100 null 修改默认值 alter table 表名 add constrai
  • 手把手教你启用Win10的Linux子系统(超详细)

    原文 手把手教你启用Win10的Linux子系统 xff08 超详细 xff09 版权声明 xff1a 转载请保留出处 xff0c 谢谢 xff01 https blog csdn net zhangdongren article deta
  • 不要再被骗了------QQ盗号原理大揭秘

    前言 相信大家在懵懂无知的时候都有被盗号的经历吧 xff0c QQ胡乱的加好友 xff0c 突然有个好友传了个文件给你 xff0c 打开以后发现QQ竟然显示强制下线 xff0c 然后再也上不去了QAQ xff0c 很明显 xff0c QQ号
  • 移动端唤起键盘时取消position:fixed定位

    当在移动端按钮position fixed 底部bottom 0 固定定位后 xff0c 当唤起键盘输入数据时就会出现很头疼的问题 xff1a 固定在底部的按钮会被系统自带的键盘挤上去 xff0c 占用输入框位置 xff1b 如图 xff1
  • nginx根据访问的url参数或者是请求 头部做判断转发

    在http请求后端时 xff0c token是一种非常常见的使用方式 xff0c 但是如果url请求参数不带token xff0c 或者请求头部不带token这样的请求应当直接返回401 xff0c 而不要代理给后端服务器做处理了 可以有效
  • java 获取HttpRequest Header 的几种方法 & 请求request的所有参数实现方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在开发应用程序的过程中 xff0c 如果有多个应用 xff0c 通常会通过一个portal 门户来集成 xff0c 这个portal 是所有应用程序的入口 xff0c 用户
  • CISCO路由器license激活图解教程

    此次也是一台CISCO 3945E K9路由器 xff0c 新设备启动后执行show version命令查看版本信息 xff1a 以下为show version中license信息 License Info License UDI Devi
  • 动态创建HTML内容

    document write xff08 xff09 方法 document write方法可以方便快捷的把字符串插入到文档里 它最大的缺点是违背了 分离javascript 原则 即使把document write语句挪到外部函数里 xf
  • Linux练习(write写入)

    include lt unistd h gt include lt stdlib h gt int main if write 1 34 here is some data n 34 18 61 18 write 2 34 write er
  • matlab练习程序(随机游走图像)

    随机游走类似布朗运动 xff0c 就是随机的向各个方向走吧 虽然代码没什么技术含量 xff0c 不过产生的图像实在太漂亮了 xff0c 所以还是贴上来吧 产生的图像 xff1a matlab代码如下 xff1a clear all clos
  • [翻译完成] 树莓派搭建Google TV

    为什么80 的码农都做不了架构师 xff1f gt gt gt Google TV是啥玩意 Google TV是支持自选图像 宽带网络 传统电视信号的综合平台 xff0c 更附带电视节目搜索功能 谷歌公布了其新版电视的两个版本 第一个叫做B
  • jdk17.0.1安装教程

    1 解压到某文件夹 2 在此电脑 gt 属性 gt 高级系统设置 gt 环境变量 gt 系统变量 加一条JAVA HOME 3 在系统变量Path里 xff0c 加一条 JAVA HOME bin xff08 不能放在第一条 xff09 4
  • 推荐几本GIS专业书籍

    对于开设GIS专业的高校 xff0c 基本上都会有自己的专业教材 xff0c 用的比较多的像邬伦的 地理信息系统 xff1a 原理 方法和应用 和中科院陈述彭院士的 地理信息系统导论 在当初考研的时候 xff0c 自己也买了不少教材 xff
  • Linux 通过命令发送udp 数据

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 如果往本地UDP端口發送數據 xff0c 那麼可以使用以下命令 xff1a echo hello gt dev udp 192 168 1 81 5060 意思是往本地19
  • Qt学习之路(17): Qt标准对话框之QMessageBox

    好久没有更新博客 xff0c 主要是公司里面还在验收一些东西 xff0c 所以没有及时更新 而且也在写一个基于Qt的画图程序 xff0c 基本上类似于PS的东西 xff0c 主要用到的是Qt Graphics View Framework
  • 2019年开发者必读!20位阿里技术大牛们帮你列了一份经典书单! ...

    导读 xff1a 寒冬中 xff0c 最值得投资的是学习 xff0c 是增厚的知识储备 下面就是20位阿里技术大牛们为我们推荐的经典书籍 书籍类型涉及技术 管理 哲学等方面 xff0c 希望这些书籍陪伴你度过这个漫长的寒冬 书单之外 xff
  • 发表一篇顶会论文的经验分享

    背景 xff1a 最近半个月 xff0c 对之前发表的一篇顶会论文进行了修改 xff0c 并重新提交了 这篇论文是一篇计算机领域的A会文章 本篇文章主要对计算机领域论文写作及发表过程中的相关经验做一个总结 希望可以对研究生小白们有点用 刚刚
  • jQuery的md5加密插件及其它js md5加密代码

    jQuery MD5 hash algorithm function lt code gt Calculate the md5 hash of a String String md5 String str lt code gt Calcul
  • matlab双目相机标定校正_基于双目视觉的无人机避障算法(一)

    讲述在10月到12月所做的所有工作 对于一个无人机自主避障来说 xff0c 存在着以下流程 xff1a 感知 xff1a 障碍物检测 行人检测 目标检测SLAM xff1a 为无人机提供位置估计 xff0c 构建稀疏环境地图路径规划 xff