[英]how to match rgb image pixels with corresponding pointcloud points
听起来您想使用计算出的差异 map 将 2D object 投影到 3 个维度。为此,您还需要了解您的相机内在函数。 您应该可以使用 opencv 来解决这个问题。
您将需要提供
这是一个编码示例:
import numpy as np
import cv2
Q = np.zeros((4,4))
cv2.stereoRectify(cameraMatrix1=K_left, # left intrinsic matrix
cameraMatrix2=K_right, # right intrinsic matrix
distCoeffs1=0,
distCoeffs2=0,
imageSize=imageSize, # pass in the image size
R=R, # Rotation matrix from camera 1 to camera 2
T=T, # Translation matrix from camera 1 to camera 2
R1=None,
R2=None,
P1= None,
P2= None,
Q=Q);
接下来,您需要使用已知视差 map 和 Q 矩阵将图像重新投影到 3D。 该操作如下所示,但 opencv 使这更容易。
xyz = cv2.reprojectImageTo3D(disparity, Q)
这将为您提供 3D 个点的 Nx3 数组。 该数组具体具有以下形状:(rows, columns, 3),其中 3 对应于点云的 (x,y,z) 坐标。 现在您可以使用像素位置索引到 xyz 并找到它对应的 (x, y, z) 点。
pix_row = 250
pix_col = 526
point_cloud_coordinate = xyz[pix_row, pix_col, :]
有关详细信息,请参阅文档
要将 RGB 图像像素与相应的点云点匹配,您需要使用描述两个坐标系之间转换的外部参数(旋转和平移)对齐 RGB 图像和点云。 这是执行此操作的一般过程:
校准捕获 RGB 图像的相机和捕获点云的 LIDAR/RGB-D 传感器。 此步骤涉及计算相机的内部参数和描述相机相对 position 和方向的外部参数。
利用RGB相机的外参数和内参数将点云中的3D个点投影到RGB相机的图像平面上。 这将为您提供投影点的二维图像坐标。
对于 RGB 图像中的每个像素,找到 2D 图像平面中最近的投影点,并将其与点云中对应的 3D 点相关联。 这可以使用最近邻搜索算法或其他图像处理技术来完成。
将RGB图像中的像素信息和对应的点云值存储在一个数据结构中,以备后用。
有许多可用的开源库和工具可以帮助您实施此过程,例如 PCL(点云库)、OpenCV 等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.