VSLAM实践(二):基于python+opencv的双目相机标定及深度图获取

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

VSLAM实践(二):基于python+opencv的双目相机标定及深度图获取

本篇文章主要分享两部分的代码,第一部分为双目相机的标定,第二部分是双目相机三维坐标的获取;

关于双目相机标定,不同于单目相机标定只求相机内参及畸变系数,双目标定主要多了左右相机相对位置关系的标定,本例中所用双目左右相机横向距离为40mm,此参数将作为相机标定效果的一个衡量指标;双目标定的基本思路为:先采用棋盘分别针对左右相机进行标定,然后再用双目标定函数对上述结果进行进一步修正,从而得到更加合理准确的内参,双目标定函数中注意设置flags=cv2.CALIB_USE_INTRINSIC_GUESS。最后需要强掉的一点是,在拍摄棋盘图片时,尽量保证棋盘平整,可从多方位多角度拍10-20张图片,图片数目过少也会影响标定精度。

另一部分,关于双目深度图获取思路为:首先根据左右相机的内参,畸变系数及相对位置关系(R,t)求得立体矫正参数,包括旋转矩阵R1,R2,投影矩阵P1,P2,以及像素到世界坐标系的映射矩阵Q(4*4),然后对输入图像根据上述参数进行立体校正去畸变后,求解左右图片的视差图,最后用映射矩阵与视差图中的时差信息求得三维坐标,此三维坐标的坐标系为左侧相机的相机坐标系;

深度图需要注意的几点有:1)StereoBM_create函数中的numDisparities及blockSize对于结果影响很大,本例中相片像素为320*240,numDisparities取0,blockSize=5,取0以后怎么操作的,其实我也不清楚…;2)注意disparity的数据类型是CV_16S,还是CV_32f

-- coding:utf-8 --

import cv2
import numpy as np
import glob

设置寻找亚像素角点的参数,采用的停止准则是最大循环次数30和最大误差容限0.001

criteria = (cv2.TERM_CRITERIA_MAX_ITER | cv2.TERM_CRITERIA_

ROS/RealSenseD435i:已知维图像中一点获取深度图像中的三维坐标(python实现) 一、思路 深度相机会发布一个将深度图像与彩色图像对齐的topic:/camera/aligned_depth_to_color/image_raw(深度流向彩色流对齐),利用该topic可以获取对应的三维坐标,该坐标还需要经过深度相机的内参矩阵变换。 、变换原理 三、程度实现 3.1获取相机的内参矩阵 import pyrealsense2 as rs import numpy as np import cv2 import json pipeline = rs.pipeline() # 定义流程p 阅读详情

相关推荐

opencv双目视觉 ——实现详细教程(matlabR2015b+opencv-python

双目视觉立体标定(matlab+opencv-python) https://www.cnblogs.com/zhiyishou/p/5767592.html

weixin_42755384的博客 9838

基于python双目立体视觉及三维重建源码+项目说明+代码注释.zip

<项目介绍> 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 双目测距理论及其python运用 一、双目测距基本流程 Stereo Vision, 也叫双目立体视觉,它的研究可以帮助我们更好的理解人类的双眼是如何进行深度感知的。双目视觉在许多领域得到了应用,例如城市三维重建、3D模型构建(如kinect fusion)、视角合成、3D跟踪、机器人导航(自动驾驶)、人类运动捕捉(Microsoft Kinect)等等。双目测距也属于双目立体视觉的一个应用领域,双目测距的基本原理主要是三角测量原理,即通过视差来判定物体的远近。 那么总结起来,双目测距的大致流程就是: **双目标定 --> 立体校正(含消除畸变) --> 立体匹配 --> 视差计算 --> 深度计算(3D坐标)计算** linux下安装opencv-python: ```python pip install opencv-python ``` 、相机畸变 光线经过相机的光学系统往往不能按照理想的情况投射到传感器上,也就是会产生所谓的畸变。畸变有两种情况:一种是由透镜形状引起的畸变称之为径向畸变。在针孔模型中,一条直线投影到像素平面上还是一条直线。可是,在实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。它们主要分为两大类,桶形畸变 和 枕形畸变(摘自《SLAM十四讲》)如图所示: <div align=center><img src="https://img-blog.csdnimg.cn/20190907184815326.PNG" width="324" height="100" /></div> 桶形畸变是由于图像放大率随着离光轴的距离增加而减小,而枕形畸变却恰好相反。 在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。

手把手教你用Python处理TartanAir的.npy文件:从数据加载到可视化完整流程

本文详细介绍了如何使用Python处理TartanAir数据集中的.npy文件,涵盖从数据加载到可视化的完整流程。通过NumPy、OpenCV和Matplotlib等工具,实现深度图、语义分割和光流数据的可视化,为VSLAM研究提供实用指导。文章还包含数据增强、性能优化等高级技巧,帮助开发者高效利用这一多模态数据集。

weixin_30607125的博客 539

Reproject-Image-To-3D:OpenCV 的 reprojectImageTo3D 与我自己的进行比较

重新投影图像到 3D 比较 OpenCV 的和我自己的 // Reproject image to 3D void customReproject(const cv::Mat& disparity, const cv::Mat& Q, cv::Mat& out3D) { CV_Assert(disparity.type() == CV_32F && !disparity.empty()); CV_Assert(Q.type() == CV_32F && Q.cols == 4 && Q.rows == 4); // 3-channel matrix for containing the reprojected 3D world coordinates out3D = cv::Mat::zeros(disparity.size(), CV_32FC3); // Getting

python双目视觉图片提取深度信息

双目视觉图片,左右双摄得到的图像,来获取图片的深度信息。从而用于构建3d图片。

Intel RealSense D435i深度相机通过点云获取图片中任意点三维信息(python实现)

intel d435i 三维信息

小小能的博客 9872

实现双目相机利用Python获取深度图并提取3D点云,并实时进行稠密重建

Project Tango是Google的一个研究项目,探索使用深度传感器和实时稠密重建技术实现室内导航、虚拟增强现实和三维建模。:实时稠密重建可以用于室内导航和建筑重建,例如为机器人提供环境感知和导航能力,或者为建筑师和设计师提供快速的建筑重建和可视化工具。:Google Tango是一种移动设备平台,使用深度传感器和实时稠密重建技术实现了室内导航、虚拟增强现实和三维场景重建。:Pix4D是一款用于无人机图像处理和三维重建的软件,使用实时稠密重建技术将无人机拍摄的照片转换为高精度的三维模型。

走向CTO的路上... 1369

扫地机器人技术路线变革:从激光雷达到视觉方案的深度解析

同步定位与地图构建(SLAM)是机器人实现自主导航的核心技术,其原理是通过传感器数据实时估计自身位置并构建环境地图。传统上,激光雷达凭借其精确的测距能力,在机器人定位与建图中扮演了关键角色,技术价值在于提供了稳定、可靠的几何环境感知。然而,随着计算机视觉和深度学习技术的突破,视觉SLAM(VSLAM)方案开始展现出巨大潜力,它利用摄像头等视觉传感器,不仅能完成定位建图,还能获取丰富的纹理和语义信息,实现更高阶的环境理解。这一技术演进正深刻影响智能家居等应用场景,推动扫地机器人等行业从依赖单一传感器向以视觉为

WGH100817的博客 362

TartanAir与Unreal Engine:构建视觉SLAM算法的仿真训练与评测平台

视觉SLAM(VSLAM)与深度估计是计算机视觉与机器人领域的核心技术,其核心原理是通过相机序列图像来估计自身运动并重建环境三维结构。传统方法依赖KITTI等有限真实数据集,难以覆盖复杂多变的真实场景,限制了算法的鲁棒性与泛化能力。仿真技术的引入,通过构建高保真、可编程的虚拟环境,为算法提供了海量、多样且带有精确真值(如稠密深度、光流、位姿)的训练与测试数据,极大提升了研发效率。TartanAir数据集结合Unreal Engine引擎,正是这一技术路线的杰出代表,它允许研究者自定义天气、光照、动态物体与传

Hi, Sun 460

机器人视觉控制实战:从DFRobot杯赛题到宇树G1跑道居中项目全解析

机器人视觉感知与控制是机器人技术的核心领域,它融合了计算机视觉、自动控制与嵌入式系统等基础原理。通过传感器(如深度相机)获取环境信息,结合图像处理算法(如边缘检测、阈值分割)提取特征,再经由控制算法(如PID)驱动机器人执行机构,实现自主导航与精准作业。这项技术的价值在于将抽象的机器人学理论转化为可落地应用的工程系统,广泛应用于工业自动化、智能服务、教育竞赛等场景。本文以近期热门的“深度相机识别”和“机器人运动控制”需求为切入点,深入剖析如何为宇树G1机器人实现跑道白线识别与居中跑步的完整项目流程,涵盖从方

weixin_30756499的博客 377

无人机自主导航避障核心技术:从事件相机到强化学习的工程实践

自主导航与避障是机器人领域的核心问题,旨在解决机器人在未知或动态环境中“我在哪、要去哪、怎么去”以及实时规避障碍的挑战。其基本原理是通过多传感器(如视觉、激光雷达、IMU)融合进行环境感知与自身状态估计,进而由规划算法生成安全、高效的移动路径。这项技术的价值在于赋予机器系统真正的环境理解与自主决策能力,是实现无人机巡检、仓储物流、自动驾驶等高级应用的关键。当前,技术演进正从依赖高精度GPS和传统视觉的方案,向更仿生、更智能的方向发展。例如,事件相机通过模仿生物视网膜,仅异步输出亮度变化事件,提供了传统相机难

weixin_34319817的博客 385

双目相机标定+去畸变+获得视差+深度(python+openCV

一共需要解决几个问题: 棋格板或者圆点板,代码有细微差别 怎样对比标定结果: 观察像素误差 需不需要棋盘格子的尺寸:内参不需要,只有计算双目间的外参R和T时,T与棋盘格大小相关,成正比关系。另外T[0]代表基线长度 代码的正确性:没有错误,已检查过,当然一些是复制别人的工作 导入你自己的标定图片需要更改: 角点个数(目前是7*7) 文件夹名称(显然) 世界坐标系的圆心点距离(目前是15mm) 确定是棋盘格还是圆心标定板(目前用的圆点板) 一共有三段代码,建议在ipython notebook下运行

擦擦擦大侠的博客 1万+

python通过鼠标点击获取保存的双目视差图实时显示

我们获取视差图的时候,往往需要查看一些点的视差,所以编写了一个小程序,可以实时的显示对应点的坐标和视差。

小张的技术分享博客 941

python】读取三维点云球坐标数据并动态生成三维图像与着色

import numpy as np import math import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib.animation import FuncAnimation f=open('data.txt','r') point=f.read() f.close() ...

咸鱼博客 7125

双目测距理论及其python实现

一、双目测距基本流程 双目测距属于双目SLAM的一个应用领域。 关于双目测距的基本原理,其实并不复杂,但说起来内容也不少,其核心原理就是三角测量,三角测量在土地测量、天文测量等领域都得到了广泛应用,是一种很好的测距方法。为了对双目测距的内容有一个很好的认识大家可以先看一下这个博客,讲的挺的不错的:https://blog.csdn.net/piaoxuezhong/article......

dulingwen的博客 10万+

python】图片标定+双目测距+SGBM+yolov8目标检测(、SGBM双目测距)

通过计算左右两个摄像头之间的视差(即对应像素之间的水平位移),可以推断出场景中物体的深度信息。:对于每个特征点,在右图像中搜索其在左图像中的匹配点。:从左右两个图像中提取特征点,常用的特征点提取算法包括SIFT、SURF等。:通过视差值计算得到深度图,将每个像素点的视差值转换为物体到相机的距离。SGBM算法是基于全局优化的立体视觉算法,它能够在一定程度上考虑像素点的全局一致性。:首先,对左右两个摄像头的图像进行预处理,包括去噪、图像矫正等操作,以便提高立体匹配的准确性。

Xinger的博客 4742

python 相机标定的原理、步骤、实现

一、相机标定的原理 1.1 相机如何成像: 相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 相机成像的原理: 1.1.1 世界坐标系: 世界坐标系(world coordinate),也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。 1.1.2 相机坐标系: 相机坐标系(camera coordinate),也是一个三维直角坐标系,原点位于镜头光心处,x、y轴分别与相面的两边平行,z轴为镜头

weixin_44064243的博客 3762

opencv摄像头特定颜色轮廓重心提取 python2.7 (滚球系统)

主要是记录一下自己做板球系统的过程 采用opencv usb摄像头 提取小球位置 并串口输出给单片机 借鉴了很多网上的资源 实在没法一一列举,引用 了 对开源精神表示感谢 室友的美背出镜。。 # -*- coding:utf-8 -*- import serial import numpy as np import cv2 # 读 取 图 片 cap = cv2.Vi...

liu2208627695的博客 1563

C题 数字存储示波器_全国大学生竞赛组委会.rar

C题 数字存储示波器_全国大学生竞赛组委会.rar

上一篇: VSLAM实践(一):基于python+opencv的后置相机拍照模式内参标定
Mike-
博客等级 码龄7年 5粉丝 2原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值