OpenCV迭代去畸变undistortPoints 与vins的迭代不同 第二章vins前端 第三章imu预积分 第四章vio初始化

news2024/11/15 10:52:36

在这里插入图片描述

在这里插入图片描述

OpenCV去畸变undistortPoints原理解析

在这里插入图片描述

不动点迭代法—单变量非线性方程近似根matlab求解

在这里插入图片描述

淦VINS-MONO源码 03–openCV与VINS中去畸变方法的不同

这里用的方法和openCV不同,假设现在求A点的去畸变坐标,那么我们将A的坐标直接代入畸变模型中,求得再次畸变的坐标,并求得这个坐标和A之间的距离d.因为越靠近中心这个d越小,此时肯定小于真实坐标到A的距离dt。所以我们在朝真实畸变方向(再次畸变的反方向)上加上这个d,得到一个靠近真实值的方向,在以这个点再进行一次畸变求得距离d2,d2肯定大于d小于dt。d2在加到坐标A上 得到更靠近的结果,代码中一共进行了8次迭代。这种方法比openCV中的方法快了不少。

针孔相机投影模型
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

第三章imu预积分

旋转矩阵约束
作者:jh h
链接:https://www.zhihu.com/question/386629150/answer/1752898777
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

(已修改)旋转矩阵的9个参数,存在6个约束条件,所以只有3个自由度:三个向量的模长为1这3个条件、三个向量两两垂直2个条件(XY垂直,XZ垂直这两个)、以及右手系(或左手系)这1个条件(这个条件意味着行列式是1或-1,也暗示了如果XY垂直YZ垂直,则XZ也会垂直)。9 - 3 - 2 - 1 = 3类似的,四维空间的旋转矩阵16个参数,存在10个约束条件,有6个自由度:四个向量模长为1这4个条件、四个向量互相垂直5个条件(XY、XZ、XW、YZ、YW,以及自动得到的ZW)、坐标系手性1个条件(单位矩阵中,有奇数个还是偶数个1变成了-1,只有这两种手性)。 16 - 5 - 4 - 1 = 6nnn 维空间的旋转矩阵 n2n{2}n{2} 个参数的情况:模长为1的条件,约束条件数量为 nnn 向量相互垂直的条件,约束条件数量为 [n(n−1)/2−1][ n(n-1)/2 -1 ][ n(n-1)/2 -1 ] 坐标系手性的条件,约束条件数量为 1自由度 = n2−n−[n(n−1)/2−1]−1=n(n−1)/2n^{2} - n - [ n(n-1)/2 -1 ] - 1= n(n-1)/2n^{2} - n - [ n(n-1)/2 -1 ] - 1= n(n-1)/2 ps: n维空间的(旋转+平动)恰好能够一一映射到(n+1)维空间的纯旋转。一个例子是,闵可夫斯基空间把三维空间的平动部分(洛伦兹收缩)映射到了所谓四维"时空"的X-T、Y-T、Z-T轴的旋转上面,同时三维旋转部分不变。洛伦兹收缩是一个客观现象,但是四维"时空"只是一个人们主观提出的一个数学模型,数学意义和物理意义需要分开。

在这里插入图片描述
左右两边都乘以Rwbk的逆,去掉他的影响。左边就是两帧之间的约束,右边是不含w到bk变化的表达式。卡尔曼滤波预测是第推imu,更新是观测cam

在这里插入图片描述
上面是连续时间,下面是离散时间,对应代码midPointIntegration,alpha,beta都是delta对应的量

在这里插入图片描述

迭代中,delta x一直都是0,因为输出的总是自己认为的最优值,但是deltax的协方差会变大,经过卡尔曼滤波后结合观测deltay的方差,deltax的方差会下降。
在这里插入图片描述
误差卡尔曼优势:1不用过参数化表示,用3维旋转向量,不用考虑协方差矩阵各维之间的约束。2靠近原点,没有万向节问题。3,忽略二阶导数,雅可比容易计算。4更新可以比较慢,因为误差比较小

在这里插入图片描述

在这里插入图片描述
true真值。nominal:名义值,包含噪声。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
上面公式目的,在已知连续误差的变化量deltax,求deltaxk到deltaxk+1的矩阵变化。F就是Xk+1=Xk+J * delXk中的J。Jk+1=F Jk。。公式里协方差矩阵代码,代码与上面公式一样,除了噪声差一个负号,白噪声加减没区别。

零偏也是在更新的,需要用一阶近似求更新。F作用1,更新雅可比,方便状态量对零偏的更新,作用2,更新协方差矩阵,置信度

在这里插入图片描述
在这里插入图片描述

第四章vio初始化

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Leetcode】2. 两数相加

一、题目 1、题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例1: …

知识图谱项目——红色文化之张学良人物知识图谱(Neo4j+vue+flask+mysql实现)

张学良人物简史知识图谱_说明文档 本项目为人工智能专业大三知识图谱课程期末作业。意在完成一个以张学良为背景的红色文化类知识图谱。文末放上本项目的代码地址。 文章目录 张学良人物简史知识图谱_说明文档:rocket:前端:rocket:后端:rocket:中间件:rocket:数据库:rocket:服…

深度学习(22)——YOLO系列(2)

深度学习(22)——YOLO系列(2) 文章目录 深度学习(22)——YOLO系列(2)1. model2. dataset3. utils4. test/detect5. detect全过程 今天先写YOLO v3的代码,后面再出v5&…

代码托管/版本控制工具:Git的安装和使用

目录 一、Git的下载和安装二、Git基本配置三、代码上传到远程仓库四、代码下载到本地 一、Git的下载和安装 1.登录GitHub官网https://github.com/注册账户密码 2.登录https://git-scm.com/download/win (根据自己电脑的位数和系统下载git) 3.双击Gi…

02-IDEA 集成Maven

一. 下载IDEA编辑器 下载地址:Download IntelliJ IDEA – The Leading Java and Kotlin IDE 选中免费开源的社区版本 创建桌面图标和添加安装路径到系统变量,其他的默认安装即可。 二. 配置Maven环境 分为局部配置和全局配置 1. 局部配置maven环境 …

004依赖

传递 一个坐标引入多个jar 传递 子工程 引入了父pom 也是一种传递 继承 继承是为了消除重复,如果将 dao、service、web 分开创建独立的工程则每个工程的 pom.xml 文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等&#xff…

和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】

和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】 文章目录 和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】一、前言二、数据读取和初步探索三、数据探索及可视化1、获取拥有最多充电站的 10 个国家2、一年中各月新开业数量…

I.MX RT1170之FlexSPI详解:FlexSPI基础知识和特性

最近我也在做RT1170的相关项目,由于项目需要,研究了Flash下载算法、NOR Flash空间的擦除/烧写(OTFAD XIP更新固件时要更新OTFAD Key Blob字段)、HyperRAM初始化等功能,这些都是开发过程中可能会遇到的一些问题,而这些都与FlexSPI接…

第2章 信息技术发展

文章目录 2.1.2计算机网络1.网络标准协议2.软件定义网络3.第五代移动通信技术 2.1.3存储和数据库1.存储技术2.数据结构模型3.常用数据库类型4.数据仓库 2.1.4信息安全2.1.5信息技术的发展2.2.1物联网2.2.2云计算2.2.3大数据2.2.4区块链2.2.5人工智能2.2.6虚拟现实 信息技术是在…

前端vue入门(纯代码)09

【09.vue中组件的自定义事件】 自定义组件链接 在vue中用的click【点击】、keyup【按键】……等事件,这些属于内置事件,也就是js自带的事件。 问题一:什么是组件自定义事件呢? 【内置事件】:是给html元素用的,比如s…

UG\NX二次开发 加密锁(加密狗)

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 加密锁简介 加密狗是一种用于保护软件版权的技术手段,它可以限制未经授权的用户在未经许可的情况下使用某些软件。软件加密锁可以保护软件开发商的知识产权,防止盗版和非法复制等行为,同时也可以…

React 对比class与Effect Hook优化响应式数据更新监听,感受useEffect真正的强大

还是之前写过的一个组件 import React from "react"export default class index extends React.Component{constructor(props){super(props);this.state {name: "小猫猫"}}componentDidMount ()>{document.title this.state.name;}componentDidUpda…

msvcr110.dll,丢失修复,msvcr110.dll,丢失修复详细解决办法

我们在运行软件程序或者游戏的时候,如果程序提示“无法启动此程序,因为计算机中丢失msvcr110.dll。尝试重新安装该程序以解决此问题”,如果说明您电脑系统中缺少或者未注册msvcr110.dll这个运行库文件,那么我们要如何解决这个问题…

Node内存管理+垃圾回收机制

最近看到《深入浅出node》这本书,里面正好有内存控制, 加上最近看到一篇文章,也是讲了内存管理和垃圾回收机制。 由于自己曾经做过一个ssl接口,导致node服务经常重启,我潜意识就怀疑是内存管理出现了问题,…

H264 NALU分析

标题 1.H264介绍2.H264编解码解析2.1. H264编码原理2.2 H264的I帧,P帧,B帧2.3 H264编码结构解析2.4 NALU2.4.1 NALU结构2.4.2 解析NALU2.4.3 annexb模式 1.H264介绍 H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.…

Ansible Playbook

Ansible 的脚本 --- playbook 剧本 playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3&…

Postman接口测试之:添加Cookie伪造请求

1,获取cookie值 登录某网站,通过开发者工具(或者fiddler抓包工具),获取登录成功后的请求头中的cookie值。 大家肯定奇怪,明明访问首页的时候就已经生成了cookie值,为什么还登录呢?…

Linux中磁盘管理之格式化、分区、挂载-详解

今天给大家介绍一下Linux中磁盘管理中格式化、分区、挂载等操作步骤,希望这篇文章对大家有所帮助。 一、磁盘知识 1.磁盘含义 磁盘(Disk)是一种用于存储和读取数据的物理设备,它由一个或多个旋转的磁性盘片组成。这些盘片通常由…

递归算法学习

递归算法介绍 递归指的是函数或算法在执行过程中调用自身。在递归的过程中,程序会不断地将自身的执行过程压入调用栈中,直到满足某个条件结束递归调用并开始返回。递归算法常用于解决一些具有递归结构的问题,比如树、图、排序等。递归算法可以…

5.controller部署nova服务

nova 服务是 OpenStack service 计算服务,负责维护和管理云环境的计算资源; 例如: 接收客户端请求需要的计算资源; 确定实例在哪个物理机上创建; 通过虚机化的方式将实例启动运行等工作。 controller节点 在安装和配…