2013-10-06 82 views
0

我在兩個不同的座標空間(A和B)中有一個3D配對點陣列。從3D數據計算非仿射變換矩陣

給定的點不是共面的,我該如何計算一個能夠將點從A轉換爲B的非仿射變換矩陣?

我已經設法在二維(使用單應性)做到這一點,但不能解決如何使它在3D中工作。如果可能,快速代碼示例將非常感謝。 :)

回答

2

this post中描述的方法將概括爲三個維度:如果知道兩個座標系中的五個點的座標,則可以使用它們來計算4×4投影變換矩陣,這將是除了沒有幾何相關性的比例因子之外是唯一的。

我已經包括在variousposts用於2D所需的代碼的變型,sage寫的,並且還存在與the description沿提到的JavaScript示例。其中的任何一個都可以適應3D情況,但是如果您還想更改編程語言,那麼您可能會更好地直接實現公式,請記住,伴隨矩陣可以用作幾個矩陣的逆矩陣的替代位置。

下面是關於泛化一些細節3D:

  1. 使用線性方程組的4×4系統,具有的四個點的左側和上右側的第五點的齊次座標。
  2. 使用四個解決方案變量來縮放這四列以獲得轉換矩陣。
  3. (如前)
  4. (如前)
  5. (如前)
  6. (如前)
  7. 鴻溝均質的前三個座標由第四座標向量座標,以獲得dehomogenized座標。
+0

謝謝 - 我知道如何在2D中做到這一點,但我不確定如何推廣到3D,特別是在步驟1,2和7中。 – John

+0

感謝您的更新!在你的文章中你提到你使用了輔助矩陣來解決。你能解釋一下嗎? – John

+0

在步驟1中,您必須求解一個線性方程,該方程可以通過將RHS向量乘以LHS矩陣的逆矩陣來實現。在第4步中,您需要進行反向操作。在這兩種情況下,您都可以使用伴隨而不是反向,最終結果只會因標量倍數而有所不同,這是沒有幾何結果的。 – MvG