1

私は OpenCV と python を使用しており、2 つのカメラ間の現実世界の翻訳を取得したいと考えています。移動している単一のキャリブレーション済みカメラを使用しています。私はすでに特徴マッチング、RANSAC による F の計算、および E の計算を行ってきました。カメラ間の変換を取得するには、次を使用できると思いw, u, vt = cv2.SVDecompますt = u[:,2]

[[ -1.16399893 9.78967574 1.40910252]
[ -7.79802049 -0.26646268 -13.85252956]
[ -2.67690676 13.89538682 0.19209676]]

t ベクトル:[ 0.81586158 0.0750399 -0.57335756]

翻訳が実世界の縮尺ではないことを理解していると思うので、実世界の翻訳が必要な場合は、その縮尺を提供する必要があります。カメラ間の距離がわかっている場合、乗算によって t ベクトルに直接適用できますか? ここで何かが足りないと思います...

4

2 に答える 2

2

答えは「はい」のようです。

カメラ間の距離が 2m の場合、結果として得られる現実世界の移動は、この値と t ベクトルの積になります。

dist = 2
t = [ 0.81586158 0.0750399 -0.57335756]
tworld = 2 * t

print tworld 
[ 1.63172316  0.1500798  -1.14671512]

もちろん、ここで覚えておくべきことは、変換は現実世界の単位になっていますが、カメラ 1 のカメラ座標系のままであるということです。したがって、これは、2 番目のカメラが右に 1.63172316m、上に 0.1500798m、カメラ 1 の後ろに -1.14671512 あることを意味します。

于 2013-03-08T20:13:59.577 に答える