用于colmap重建结果、pcd/ply、6D位姿的点云可视化工具

该工具专注于点云可视化,支持Colmap重建结果、PCD和PLY格式的点云数据,以及位姿(R|t)的显示。它解决了仅拥有部分Colmap数据时的可视化问题,并能接收Python实时发送的坐标点进行动态绘制。此外,还具备点云保存和颜色修改等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具介绍:提供一款用于点云可视化windows的工具

可视化的对象包括:
1、colmap重建结果
2、pcd\ply格式的点云
3、位姿R|t可视化
4、在线接收点python发送的坐标
在这里插入图片描述

其他功能:点云保存、颜色修改、点云隐藏、点云大小调整
工具地址:用于colmap重建结果、pcd/ply、6D位姿的点云可视化工具

1、colmap重建结果可视化

Colmap是一款基于SFM进行点云重建的开源工具,但是使用colmap对重建的点云进行可视化时,需要提供一下四个文件数据(images,camera,points3D,project),其中images文件是用于存储图像的位姿和特征点、cameras文件保存相机的参数信息,points3D文件保存重建坐标点,project文件是保存colmap的配置信息。只有在一下四个文件齐全的情况下才可以使用colmap来加载重建结果
在这里插入图片描述
但是,通常情况下我们从共数据库中获取的数据只给我们提供了前三个文件,此时就无法使用colmap加载重建结果例如用于图像定位的:CMU 数据集,现有的colmap就无法对重建结果进行可视化。
在这里插入图片描述
因此,为例解决colmap无法加载重建点云的问题,该工具提供了一个对该类数据进行可视化的工具,使用过程:点击colmap->选择sparse文件所在路径,点击确定
在这里插入图片描述

2、pcd/ply点云可视化工具

pcd和ply是点云保存的通用格式,作为一款用于点云可视化的工具对该类数据的可视化必不可少。使用过程:点击读取点云》选择pcd/ply格式的点云》确定
在这里插入图片描述

R|t位姿可视化

熟悉坐标位置的读者或许知道R|t具体指什么,其中R是旋转矩阵,t是平移量,通过这两个参数就可以得到一个坐标点。
在该工具中,提供的接口读取的是一个txt文件,其中该文件保存的数据结构为(name,四元数,t)此处为什么要用四元组呢?因为四元数保存的数据只有四个,而旋转矩阵有9个,关于两者之间的变换过程如下。
在这里插入图片描述

# 四元数转R旋转矩阵
def qvec2rotmat(qvec):
    return np.array([
        [1 - 2 * qvec[2]**2 - 2 * qvec[3]**2,
         2 * qvec[1] * qvec[2] - 2 * qvec[0] * qvec[3],
         2 * qvec[3] * qvec[1] + 2 * qvec[0] * qvec[2]],
        [2 * qvec[1] * qvec[2] + 2 * qvec[0] * qvec[3],
         1 - 2 * qvec[1]**2 - 2 * qvec[3]**2,
         2 * qvec[2] * qvec[3] - 2 * qvec[0] * qvec[1]],
        [2 * qvec[3] * qvec[1] - 2 * qvec[0] * qvec[2],
         2 * qvec[2] * qvec[3] + 2 * qvec[0] * qvec[1],
         1 - 2 * qvec[1]**2 - 2 * qvec[2]**2]])
# R|t转xyz坐标
pos_xyz = R.T @ t

# 旋转矩阵转四元数
def rotmat2qvec(R):
    Rxx, Ryx, Rzx, Rxy, Ryy, Rzy, Rxz, Ryz, Rzz = R.flat
    K = np.array([
        [Rxx - Ryy - Rzz, 0, 0, 0],
        [Ryx + Rxy, Ryy - Rxx - Rzz, 0, 0],
        [Rzx + Rxz, Rzy + Ryz, Rzz - Rxx - Ryy, 0],
        [Ryz - Rzy, Rzx - Rxz, Rxy - Ryx, Rxx + Ryy + Rzz]]) / 3.0
    eigvals, eigvecs = np.linalg.eigh(K)
    qvec = eigvecs[[3, 0, 1, 2], np.argmax(eigvals)]
    if qvec[0] < 0:
        qvec *= -1
    return qvec

数据读取结果:
在这里插入图片描述

python坐标点在线读取

该功能可以实时获取python端发送的坐标点,并动态的绘制坐标点。
python端数据发送的代码如下:

import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
client.connect((str(ip), 10101))
msg=client.recv(1024)
print("pose,x,y,z,r,g,b")
data=""
while(data!='exit'):
    data=input()
    client.send(data.encode('utf-8'))
client.close()

在这里插入图片描述
点云保存:选中需要保存的对象——》点击点云保存,输入**.pcd的文件名称将点云保存到本地。
python坐标点保存:点击 保存 按钮保存python端传输的坐标点:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuLaDe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值