亲测代码程序可运行使用,open3d版本0.13.0。

open3d数据资源下载:GitHub - Cobotic/Open3D: Open3D: A Modern Library for 3D Data Processing

代码执行功能有:读取相机内参、读取RGBD图像、从一对RGBD图像中计算里程、可视化RGBD图像对,详情请见代码。

'''
Author: dongcidaci
Date: 2021-09-12 19:33:29
LastEditTime: 2021-09-12 19:55:11
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \open3d\06——RGBDImage_test.py
'''
import open3d as o3d
import numpy as np#RGBD测程法(RGBD Odometry)是去寻找两个RGBD图像之间的相机移动。
#他的输入是一对RGBImage的实例,输出是刚体变换形式的运动。
#读取相机内参(camera intrinsic)
#我们首先从json文件中读取相机内参。
pinhole_camera_intrinsic = o3d.io.read_pinhole_camera_intrinsic("Open3D-master/examples/test_data/camera_primesense.json")
print(pinhole_camera_intrinsic.intrinsic_matrix)
#Open3d 中许多小的数据结构都能够通过json文件来读写。包括相机参数,相机轨迹,姿态图等等。#读取RGBD图像
#这个代码块是读取两对Redwood格式的RGBD图像。
source_color = o3d.io.read_image("Open3D-master/examples/test_data/RGBD/color/00000.jpg")
source_depth = o3d.io.read_image("Open3D-master/examples/test_data/RGBD/depth/00000.png")
target_color = o3d.io.read_image("Open3D-master/examples/test_data/RGBD/color/00001.jpg")
target_depth = o3d.io.read_image("Open3D-master/examples/test_data/RGBD/depth/00001.png")
source_rgbd_image = o3d.geometry.RGBDImage.create_from_color_and_depth(source_color, source_depth)
target_rgbd_image = o3d.geometry.RGBDImage.create_from_color_and_depth(target_color, target_depth)
target_pcd = o3d.geometry.PointCloud.create_from_rgbd_image(target_rgbd_image, pinhole_camera_intrinsic)
#Open3d假设彩色图像和深度图像是同步的,并且在同一坐标系下配准。这通常可以在RGBD相机中通过打开同步和配准设置来实现。#从一对RGBD图像中计算里程
option = o3d.pipelines.odometry.OdometryOption()
odo_init = np.identity(4)
print(option)
#去最小化对齐图片的颜色一致性
[success_color_term, trans_color_term, info] = o3d.pipelines.odometry.compute_rgbd_odometry(source_rgbd_image, target_rgbd_image, pinhole_camera_intrinsic,odo_init, o3d.pipelines.odometry.RGBDOdometryJacobianFromColorTerm(), option)
#除了颜色一致性以外,他还实现了几何约束
[success_hybrid_term, trans_hybrid_term, info] = o3d.pipelines.odometry.compute_rgbd_odometry(source_rgbd_image, target_rgbd_image, pinhole_camera_intrinsic,odo_init, o3d.pipelines.odometry.RGBDOdometryJacobianFromHybridTerm(), option)
#OdometryOption()有几个参数:
#1.minimum_correspondence_ratio:对齐后,测量两张RGBD图像的重叠比率。如果两组RGBD图像的重叠区域小于指定的比例,则测程模块会认为这是失效的情况。
#2.max_depth_diff:在深度图像中,如果两个对齐的像素的深度差异是小于一个值的,则认为它们是对应的。值越大,搜索越激进,但是结果越不容易稳定。
#3.min_depth 和 max_depth:大于或小于指定深度的像素会被忽略。#可视化RGBD图像对
#将RGBD图像对转换成点云并且一起渲染。要注意的是,第一个(源)RGBD图像是通过测程法估计出的变换来进行变换的。经过变化之后的两组点云是对齐的。
if success_color_term:print("Using RGB-D Odometry")print(trans_color_term)source_pcd_color_term = o3d.geometry.PointCloud.create_from_rgbd_image(source_rgbd_image, pinhole_camera_intrinsic)source_pcd_color_term.transform(trans_color_term)o3d.visualization.draw_geometries([target_pcd, source_pcd_color_term])
if success_hybrid_term:print("Using Hybrid RGB-D Odometry")print(trans_hybrid_term)source_pcd_hybrid_term = o3d.geometry.PointCloud.create_from_rgbd_image(source_rgbd_image, pinhole_camera_intrinsic)source_pcd_hybrid_term.transform(trans_hybrid_term)o3d.visualization.draw_geometries([target_pcd, source_pcd_hybrid_term])

Open3d(六)——RGBD测程法相关推荐

  1. Open3d之RGBD测程法

    RGBD测程法是去寻找两个连续的RGBD图像对之间的相机移动.它的输入是一对RGBImage的实例,输出是刚体变换形式的运动.Open3D实现了 [Steinbrucker2011] and [Par ...

  2. 算高差改正数的计算机程序,水准测量中的高差改正数应该怎么算?我们是六个点,而且每次只能观测两个点,也就是有六个测段...

    1.设六个观测点为ABCDEF,先测个闭合环,算出闭合差w. 2.测出每个测段的距离L1~L6,计算总距离L. 3.闭合差W除以总距离L,再分别乘上每个测段的距离L1〜L6,得出的这六个数就是每个测段 ...

  3. Open3d从RGBD生成点云、mesh

    相机模型 x=PX→x=K[R∣t]X→zc[uv1]=[kx0u00kyv0001][R∣t][xcyczc]x=PX \rightarrow x = K[R|t]X \rightarrow z_c ...

  4. Open3D:如何使用RGBD图像集成实现三维重建?

    Open3D:如何使用RGBD图像集成实现三维重建? Open3D是一个开源的跨平台计算机视觉库,可用于处理点云.深度图像和RGB图像等数据.在三维重建中,RGBD图像集成是非常重要的一步,可以帮助我 ...

  5. 3D视觉创新应用(三维重建)竞赛作品系列——人体三维精准量测与动作捕捉

    一.背景介绍 1 项目背景与国内外研究现状 1.1 项目背景分析 近年来,RGB-Depth(RGB-D)传感器,如Kinect V1,和Structure Sensor等,在室内即时定位与地图构建应 ...

  6. winpcap基本原理及常见应用_碳十四测年的基本原理和常见应用谬误

    如果说地层学原理是18世纪地质学给19世纪考古学的重要礼物,那么放射性碳定年法就是20世纪考古学最重要的进步之一.这两种方法都对年代判定做出了重要的贡献,因为若是没有某种类型的年代测定,我们就不可能建 ...

  7. 安全宝多点测速一“真”见血

    本文讲的是安全宝多点测速一"真"见血,近日,针对央视<每周质量报告>曝光宽带运营商网速造假及或存帮凶一事,网站安全专家--安全宝为维护网民利益迅速做出反应,宣布推出安全 ...

  8. (19)深度点云学习--利用RGBD图三维重建room

    1.主要参考 (1)最主要参考,官方的blog Make fragments - Open3D 0.16.0 documentation (2)操作流程参考 Python从RGBD数据进行3D场景重建 ...

  9. Open3d利用彩色图和深度图生成点云进行室内三维重建

    上一次得到的点云图在累加多张后配准会出现少量离群的点云,效果很差,于是考虑从 ICL-NUIM dataset这个数据集获得官方的室内图进行三维重建,数据集网址如下: ICL-NUIM RGB-D B ...

最新文章

  1. 修改html时webpack热更新,webpack学习之路(二)webpack-dev-server实现热更新
  2. 微软宣布公开预览其内容分发网络
  3. ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)(转)
  4. 学习打卡-2018/08/09
  5. java宝典app_java宝典安卓版_手机java宝典V2.0下载(暂未上线)_预约_飞翔下载
  6. 大众继续深耕SUV市场:5款新车型先于上海车展登场,ID. ROOMZZ成点睛之笔
  7. space index.php 7-14,disk_free_space()
  8. 代码 直接调节显示设备亮度_LED显示屏参数系列,亮度是什么,如何调节,如何选择...
  9. Mblog 开源Java多人博客系统
  10. 想成为测试工程师,这7件事你必须先知道
  11. 【codeforces 340B】Maximal Area Quadrilateral
  12. 17.电话号码的字母组合(力扣leetcode) 博主可答疑该问题
  13. ARM926EJ-S/ARM920T 协处理器 CP14, CP15详解
  14. 【学习笔记】powell法的python实现
  15. 信息论实验一:信源熵的计算
  16. gedit c语言,让gedit 成为强大的C语言IDE
  17. 计算机键盘能直接接手机吗,手机变电脑!智能手机外接键盘和鼠标的3种方法...
  18. 试试Live Witer
  19. vnc远程软件,盘点六款你值得拥有的vnc远程软件
  20. 无论如何,我喜欢过你

热门文章

  1. 不用变量调用 同一个累加函数 -- struct A a 与 struct A *a 区别
  2. clover没有linux引导文件夹,clover引导安装时看不到硬盘
  3. 身份证人脸比对-实现流程
  4. 台式计算机电池更换后无法启动,如何解决电脑换主板电池后开不了机了
  5. yum 卸载 java,CentOS下安装JDK的四种方法和卸载JDK,centosjdk
  6. 消息称阿里平头哥正在研发专用SoC芯片
  7. 分析一下阿里平头哥RISC-V的开源~
  8. strut2中使用ajax主题时出现 template/ajax/head.ftl. 错误的解决办法
  9. 家庭财务管理系统1.0【PHP版】
  10. DOS程序员手册(二)