2017-02-11 70 views
0

我有一個3D場景中的對象的兩個圖像I1和I2。圖像之間的區別在於對象已移動。攝像機位置和校準是已知的,並且已知該對象上的幾個3D特徵點以及移動它的3D變換。我也有這些特徵點的投影。圖像對齊warp查看或warpAffine

我想調整圖像。所以它看起來像我有幾個選項:

  1. 我可以看看二維特徵點,並派生仿射變換做對齊。直觀地說,這看起來好像會有錯誤,因爲它不會考慮透視失真。

  2. 我可以找到單應變換並使用warpPerspective進行變換。我對單應性變換很陌生,但聽起來這樣會考慮透視失真。事實上,在我的設置中,我相信單應性矩陣很簡單:反轉投影矩陣,反轉3D變換,然後重新投影。這將給x'= Hx。這看起來好像會給我準確的圖像對齊。

所以第一個問題:warpPerspective會給出warpAffine更好的對齊結果嗎?

第二個問題:並非所有的特徵點都位於同一平面上。我仍然可以使用warpPerspective?我想我閱讀單應變換的觀點必須在同一架飛機上。

第三個問題:由於單應變換是3x3,那意味着我需要知道圖像中每個像素的z座標以進行變換嗎?

謝謝。

回答

1

仿射變換是一種圖像平面2D變換。它沒有考慮到飛機外轉換。

單應性模型平面的透視變換。因此可以說明例如對於後傾式飛機。

如果你的物體是平面的,但可以做平面外旋轉,你需要一個單應性來對它進行建模。

如果你的模式是而不是平面,那麼單應性不是真正的模型。這就是說,通常它是一個足夠的近似值。不過,飛機外的點將被錯誤地扭曲。