[英]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.