簡體   English   中英

opengl 查找矩陣到相機外在矩陣

[英]opengl lookup matrix to camera extrinsic matrix

我正在嘗試從我從 opengl 幀緩沖區保存的深度數據中渲染 3D 點雲。 基本上,對於以 (0, 0, 0) 為中心的渲染 model,我從不同的n 個視點(已知)獲取了不同的深度樣本。 我成功保存了深度圖,但現在我想從這些深度圖中提取協調的 x、y、z。 為此,我重新將點從圖像投射到世界。 為了獲得世界坐標,我使用以下等式P = K_inv [R|t]_inv * p。 計算世界坐標。

為了計算圖像內在矩陣,我使用了來自 opengl 相機矩陣glm::perspective(fov, aspect, near_plane, far_plane)的信息。 固有矩陣 K 計算為

在此處輸入圖像描述 在哪里在此處輸入圖像描述

如果我轉換相機原點的坐標(即,沒有外部轉換 [R|t]),我會得到一個 3D model 用於單個圖像。 為了融合多個深度圖,我還需要從 OpenGL 觀察矩陣glm::lookat(eye=n_viewpoint_coorinates, center=(0, 0, 0), up=(0, 1, 0))計算的外部變換. 外部矩陣計算如下(參考: http://ksimek.github.io/2012/08/22/extrinsic/

在此處輸入圖像描述

但是當我融合兩個深度圖像時,它們沒有對齊。 我認為外在矩陣是不正確的。 我也嘗試直接使用 glm::lookat 矩陣,但這也不起作用。 融合后的 model 快照如下圖所示

在此處輸入圖像描述

有人可以建議,我的方法有什么問題。 是錯誤的外在矩陣嗎(我很確定)?

最后,我設法自己解決了這個問題。 我沒有在 OpenGL 內部進行轉換,而是在 OpenGL 外部進行了轉換。 基本上,我保持相機恆定並與 model 保持一定距離,並對 model 進行旋轉變換,然后最終渲染 model 而不使用觀察矩陣(或僅 4x 單位矩陣)。 我不知道為什么使用lookat matrix 沒有給我結果,或者可能是由於我遺漏了一些東西。 要將 model 反向投影到世界坐標中,我只需將我最初在將 model 輸入到 OpenGL 之前所做的精確變換的逆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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