双目RGB计算三维坐标

去年我发过下面一篇博客

双目视觉计算三维坐标_双目相机获取三维坐标-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_44228301/article/details/134102319当时初次接触理解的不够透彻。现在发现我的理解有问题,博客里介绍的视频内容是正确的。

原理:

如下图所示,我推导的公式是以像平面为基础推导出来的,但是视频里是以虚拟像平面为基础推导出来的。

建议使用视频里的公式。

图片来源 :哔哩哔哩的一个视频

计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)——1.摄像机几何_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1mT4y1o7Q2/?spm_id_from=333.337.search-card.all.click&vd_source=3b6cdacf9e8cb3171856fe2c07acf498

心得体会

自从接触SLAM相关的东西,不得不学习坐标转化。。。。,这个知识点真的让我非常头疼。vins的世界坐标系到底怎么来的?重力对齐又是怎么回事??。哎,只能慢慢探索!!!!

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Matlab中,可以使用计算机视觉工具箱中的双目视觉函数来求解双目图像对应的三维坐标。 首先,需要使用`stereoParameters`函数对双目摄像机的内外参数进行标定,得到双目的内外参数集。 然后,使用`rectifyStereoImages`函数对左右眼图像进行校正,使其在同一平面上。 接下来,使用`disparity`函数计算视差图,该函数接受校正后的双目图像作为输入,计算左右眼图像中每个像素的视差值。 然后,使用`reconstructScene`函数,将视差图和`stereoParameters`作为输入,计算每个像素的三维坐标。 最后,可以使用`pcshow`函数将三维坐标可视化显示出来,以便观察结果。 以下是一个示例代码: ```matlab % 读取左右眼图像 leftImage = imread('left.png'); rightImage = imread('right.png'); % 标定双目摄像机,得到内外参数集 stereoParams = stereoParameters(calibrationData); % 对左右眼图像进行校正 [leftRectImage, rightRectImage] = rectifyStereoImages(leftImage, rightImage, stereoParams); % 计算视差图 disparityMap = disparity(rgb2gray(leftRectImage), rgb2gray(rightRectImage)); % 计算三维坐标 point3D = reconstructScene(disparityMap, stereoParams); % 可视化显示三维坐标 pcshow(point3D); ``` 上述代码中,`left.png`和`right.png`是左右眼图像的文件路径。`calibrationData`是标定得到的双目摄像机内外参数集。代码中使用`rgb2gray`将彩色图像转换为灰度图像,因为`disparity`函数需要输入灰度图像。 这段代码的作用是读取双目图像,根据内外参数集将图像进行校正,然后计算视差图和三维坐标,并将三维坐标可视化显示出来。你可以根据自己的双目图像和内外参数集进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值