我试图从预测深度的图像中生成3D点云(PC)。给出了摄像机的本质和地面真实深度图像。首先,我正在用摄像机内部的GT深度生成一台PC,它看起来如下:
但是,当我试图生成与预测深度相同的图像的PC时,PC看起来很奇怪。下面是预测深度的PC:
我用同样的相机本质来做这件事。我正在使用相同的代码和程序的两个PC代。我原以为两台PC会很接近,但我得到的是真的很奇怪。我做错了什么?
我生成点云的代码如下所示:
int rows = RGB.size[0];
int cols = RGB.size[1];
for (int v = 0; v < rows; v++) {
for (
我有两个具有相等数量元素的二维点云。对于这些元素,我知道它们的对应关系,也就是说,对于PC1中的每个点,我都知道PC2中对应的元素,反之亦然。
现在我想估计一下这两个点云之间的旋转。也就是说,我想要找到一个角度alpha,通过这个角度,我必须围绕原点旋转PC1中的所有点,以便最小化PC1和PC2中的对应点之间的距离。
我可以使用scipy的线性优化器来解决这个问题(见下文);但是,这种优化位于代码关键路径的循环中,是当前的瓶颈。
import numpy as np
from scipy.optimize import minimize_scalar
from math import sin,
假设我有一个点云的形状(H,W,4),其中每个H,W是创建点云的深度图像的高度和宽度,并且在每个空间位置(h,w)有一个均匀的形状向量(4,)。我希望在每个有效使用numpy的空间位置上应用来自外部矩阵的转换,一个形状(4,4)的numpy数组。
现在,我对循环进行的效率很低,如下所示:
import numpy as np
def apply_transformation(pc, extr_matr):
for h in range(pc.shape[0]):
for w in range(pc.shape[1]):
pc[h, w, :] = np.
我试图分割一个LiDAR点云后,地面已被分类。我使用numpy来创建点云(pc)的“图像”,并在numpy数组中循环。我想加速循环,或者一起避免这一切。我将使用图像分割技术,但首先我需要运行这个代码来创建一个“图像”,这是需要一段时间的部分。有没有办法提高这个循环的速度,还是避免它?
import numpy as np
from math import ceil, floor
'''In this case:
pc = point cloud (X,Y,Z values)'''
# point cloud is in the numpy
我需要创建这个软件光栅,给定投影(P)、视图(V)和模型(M)矩阵,可以从给定的角度以位图格式(单色位图)从给定的角度创建点云(pc)的2D图像。
我已经把数学记下来了(事情似乎大部分都在进行中):
转换点云的点pc' = (P x V x M) x pc (注意点云已经在同构系统中)
对于每个点,用它的w除以所有组件(同时要小心地丢弃w接近于零的点。
丢弃属于视域之外的点(通过使用描述的P方法从中提取锥面)
将每个点的x和y坐标转换为使用(x + 1) * imageWidth / 2和(-y + 1) * imageHeight / 2 (具有正确的y坐标)屏幕坐标
我有这个TOF传感器,我想把传感器的数据可视化为Qt中的点云。我将数据转换为pcl::PointCloud,现在我想将其可视化。
传感器的API会在创建图片时发出图像。我会把它发送到QVTKWidget来可视化它。我用这段代码(我从获得的)试了一下:
pcl::visualization::PCLVisualizer pvis ("test_vis", false);
// 'false' prevents PCLVisualizer's own window to pop up
pvis.addPointCloud<pcl::PointXYZ