以前に追跡したポイントで OpenCV calcOpticalFlowPyrLK 関数を使用してオプティカル フロー (OF) を計算しています。これは正常に機能します。ここで、相対的な深さ Z を取得しようとします。
このために、u と v に次の 2 つの式を使用しようとしました。
(Tz*x - Tx*f) (Tz*y - Ty*f)
u = ______________ v = _____________
Z Z
純粋な平行移動があると仮定しているため、方程式の回転部分を省略しました。Z について上記の両方の方程式を解き、前の OF 計算ステップから取得した値 (座標) i を使用して Z を計算しようとしました。
- vars x,yi には、image1 の画像座標を使用しました。
- u と vi については、OF 計算から取得したポイント i を使用しました -> image2 の追跡ポイント。
- たとえば、x = 413、y = 210、u = 415、v = 210、Tx = -0.9、Ty = -0.176、Tz = -0.3846、f = 640 とします。
私の問題は、結果として 2 つの異なる Z 値を取得することです。私の意見では、深さは両方で等しくなければなりませんか?
問題を解決する方法についてさらに情報を検索し、パフォーマンス分析でFarnbackとLKを混合したと思われることを除いて、良い論文を見つけました。方程式 (4、ページ 4) の背後にある数学を理解する限り、行列表現のみで上記の方程式と同じです。上記の値でも解決しようとしましたが、結果として2x2マトリックスが得られました。4 つの Z 値をどうすればいいのかわからない?!
OFから正しいZ値(深さ)を取得できるように、誰かが間違っていることを説明し、正しい方向に案内してくれることを願っています。ありがとう!