簡體   English   中英

如何將 rgb 圖像像素與相應的點雲點匹配

[英]how to match rgb image pixels with corresponding pointcloud points

我有一張彩色圖像,由oak-D相機拍攝的對應點雲(見下圖),我想獲取彩色圖像中的像素信息和點雲中對應的點雲值。 我怎樣才能得到這些信息? 例如,我在彩色圖像中有一個像素值(200,250),如何知道點雲中對應的點值? 任何幫助,將不勝感激。 在此處輸入圖像描述

聽起來您想使用計算出的差異 map 將 2D object 投影到 3 個維度。為此,您還需要了解您的相機內在函數。 您應該可以使用 opencv 來解決這個問題。

首先,您需要構建 Q 矩陣(或整流變換矩陣)。 Q矩陣

您將需要提供

  • 左右固有校准矩陣
  • 從第一台攝像機的坐標系到第二台攝像機的平移向量
  • 從第一台攝像機的坐標系到第二台攝像機的旋轉矩陣

這是一個編碼示例:

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 使這更容易。

重新投影到 3D 的操作

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM