基于opencv实现双目立体匹配点云距离

news2024/9/21 4:25:19

双目相机或两个单目相机。

一、相机标定

MATLAB软件,打开双目标定app。
请添加图片描述

点击add images,弹出加载图像的窗口,分别导入左图和右图,设置黑白格长度(标定板的长度一般为20)。

请添加图片描述

点击确定,弹出加载好的图像。

请添加图片描述

在菜单栏勾选2 Coefficients(鱼眼相机勾选3 Coefficients)、Tangential Distinction,点击Calibrate,显示误差。需要标定误差小于0.1,这样距离才能更准。若误差较大,删除导致误差较大的图片,重新计算,保证图片数量在30张左右。

请添加图片描述

最后导出标定数据。

请添加图片描述
左相机内参矩阵:
stereoParams.CameraParameters1.IntrinsicMatrix的转置
左相机畸变矩阵:
[stereoParams.CameraParameters1.RadialDistortion, stereoParams.CameraParameters1.TangentialDistortion, 0]
右相机内参矩阵:
stereoParams.CameraParameters2.IntrinsicMatrix的转置
右相机畸变矩阵:
[stereoParams.CameraParameters2.RadialDistortion, stereoParams.CameraParameters2.TangentialDistortion, 0]
两个相机间的旋转矩阵:
RotationOfCamera的转置
两个相机间的平移矩阵:
TranslationOfCamera

二、安装opencv_contrib(用在WLS滤波)

2.1 C++平台

opencv和opencv_contrib版本需一致!

opencv下载地址:https://opencv.org/releases/
opencv_contrib下载地址:https://github.com/opencv/opencv_contrib/releases
cmake下载地址:https://cmake.org/download/

打开cmake,添加文件路径。
请添加图片描述
点击Configure。配置编译器,选择对应其的编译器版本和编译平台版本,再点击finish,cmake将会自动编译文件。

找到“BUILD_opencv_world”和“OPENCV_ENABLE_NONFREE”这两个变量,在变量后面的方框内打上“√”。找到“OPENCV_EXTRA_MODULES_PATH”变量,选择opencv_contrib安装包里的modules文件夹。

打开C:\Windows\System32\drivers\etc\hosts (需要使用管理员权限打开),
追加199.232.68.133 raw.githubusercontent.com如下:
请添加图片描述
重新Configure、Generate,一路白色!

2.2 python平台

pip install opencv-contrib-python

三、效果

请添加图片描述

Fig1. 左图
请添加图片描述

Fig2. 右图
请添加图片描述

Fig3. 视差图
请添加图片描述

Fig4. 深度图

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

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

相关文章

ArrayList,LinkedList

ArrayList集合 底层原理 1.利用空参创建的集合,在底层创建一个默认长度为0的数组 2.添加第一个元素时,底层会创建一个新的长度为10的数组 3.存满时,会扩容1.5倍 4.如果一次添加多个元素,1.5倍还放不下,则新创建数…

【C++】list的使用与简单模拟实现

目录 1、list的介绍和使用: 1、结构: 2、接口函数: 迭代器遍历: 增删查改: 翻转与排序: 2、list的模拟实现: 1、节点的封装: 2、迭代器的封装: 3、list的模拟实…

Flutter中自定义气泡框效果的实现

在用户界面的设计中,气泡框(Bubble)是一种非常有效的视觉工具,它可以用来突出显示信息或提示用户。气泡框广泛应用于聊天应用、通知提示等场景。在 Flutter 中,虽然有很多现成的气泡框组件,但如果你想要更多…

关于 ubuntu系统install的cmake版本较低无法编译项目升级其版本 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141933927 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

django摄影竞赛小程序论文源码调试讲解

2系统关键技术及工具简介 系统开发过程中设计的关键技术是系统的核心,而开发工具则会影响的项目开发的进程和效率。第二部分便描述了系统的设计与实现等相关开发工具。 2.1 Python简介 Python 属于一个高层次的脚本语言,以解释性,编译性&am…

Android Studio调试Flutter项目

run运行项目中途,点击Flutter Attach 等一会就可以调试! 或者,直接Debug允行项目。

C++相关概念和易错语法(32)(单例模式、类型转换)

1.单例模式 (1)设计模式是什么? 简单来说,被反复使用,多数人知晓、经过分类的代码设计经验的总结就叫设计模式,它建立在特殊类的设计之上,实现特殊的功能,运用的知识也十分综合。如…

协议集合(学习笔记)

按照数据的传送方式,通信协议可分为以下2种。 串行通信:串行(Serial)指的是逐个传输数据位,一次只传输一个位。 并行通信:并行(Parallel)指的是同时传输多个数据位,一次…

VMware 中 kali Linux的安装与使用

文章目录 前言 一、安装虚拟机 二、使用步骤 总结 前言 随着信息技术的飞速发展,虚拟化技术已经成为现代企业和个人用户不可或缺的一部分。通过虚拟化技术,我们可以在一台物理计算机上运行多个独立的操作系统和应用程序,从而实现资源的高效利…

基于WiFi的智能照明控制系统的设计与实现(论文+源码)

1系统方案设计 本设计智能照明控制系统,结合STM32F103单片机、光照检测模块、显示模块、按键模块、太阳能板、LED灯模块、WIFI模块等器件构成整个系统,在功能上可以实现光照强度检测,并且在自动模式下可以自动调节照明亮度,在手动…

【spring】例子2:mvc web开发

领域类 开发时编译时用lombok提供支持 最终生成的包里不包含lombok

【Android】程序开发组件—探究Jetpack

引言 Jetpack是一个开发组件工具集,它的主要目的是帮助我们编写出更加简洁的代码,并简化我们的开发过程,在这么多的组件当中,最需要我们关注的其实还是架构组件,接下来就对Jetpack的主要架构组件进行学习!…

数据结构-----栈、队列

一、栈 1、栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称L…

OpenAI gym: Trouble installing Atari dependency (Mac OS X)

题意: 使用OpenAI Gym库时,安装Atari环境可能会遇到一些依赖问题,尤其是在Mac OS X系统上 问题背景: Im new to OpenAI gym. Ive successfully installed OpenAI gym on my Mac OS X (High Sierra 10.13.3) laptop and made a D…

C语言程序设计(算法的概念及其表示)

一、算法的概念 一个程序应包括两个方面的内容: 对数据的描述:数据结构 对操作的描述:算法 著名计算机科学家沃思提出一个公式: 数据结构 +算法 =程序 完整的程序设计应该是: 数据结构+算法+程序设计方法+语言工具 广义地说,为解决一个问题而采取的方法和步骤…

学不会虚拟列表?10分钟带你实现高度固定的Vue虚拟列表方案及原理

前言 本文主要介绍长列表的一种优化方案:虚拟列表。本文主要是对传统的虚拟列表方案进行更加详尽的刨析,以便我们能够更加深入理解虚拟列表的原理。 虚拟列表目录 1、为什么需要使用虚拟列表2、什么是虚拟列表与懒加载的区别(重要) 3、实现思路4、通过节…

企业选ETL还是ELT架构?

作为数据处理的重要工具,ETL工具被广泛使用,同时ETL也是数据仓库中的重要环节。本文将从解释ETL工具是怎么处理数据,同时介绍ELT和ETL工具在企业搭建数据仓库的重要优势。 一、什么是ETL? ETL是Extract-Transform-Load的缩写,将…

【深度学习】多层感知机的从零开始实现与简洁实现

可以说,到现在我们才真正接触到深度网络。最简单的深度网络称为多层感知机。 多层感知机由多层神经元组成,每一层与它的上一层相连,从中接收输入;同时每一层也与它的下一层相连,影响当前层的神经元。 和以前相同&…

【深入解析】AI工作流中的HTTP组件:客户端与服务端执行的区别

在当今快速发展的技术环境中,AI工作流的设计和实现变得愈发重要。尤其是在处理HTTP组件时,前端执行与后端执行之间的区别,往往会对系统的安全性和数据的准确性产生深远的影响。今天,我们就来深入探讨这一话题,揭示前端…

音频基础学习四——声音的能量与分贝

文章目录 前言一、能量与分贝1.音频能量2.分贝3.两者的区别4. 应用场景 二、分贝的计算方式1.具体数学公式2.具体算法示例3.对于算法的释义大小端为什么通过计算得到的是负值范围实际结果 总结 前言 很多博客中经常会把声音的能量和分贝说成是一个东西,这种说法是错…