2Dから3Dへの変換は可能ですか?


8

ビデオから異なるフレームでの車の位置をキャプチャしました。 仮定車の(画像で私たちの方に来ているegleft側車)ビデオ・フレーム1の重心は、ビデオ・フレーム4でP(x1、y1)とQ(x2、y2)があります。

PおよびQポイントを3Dに表すことはできますか?正しいピクセル距離d(PQ)を計算し、最後に実際の距離を計算できるように

注:uはカメラが静止しており、地面から10 mの高さに配置されていると想定できます。u 道路上を移動する車 は、次の図も参照できる場合は、適切なデータを想定できます。

側面図と正面図


1
質問の50%を太字にしても、役に立ちません。
jojek

1
@jojek sir参考のために1つの図を追加しました
sagar

回答:


4

[編集済み]これがどのように行われるかです。

手順:1. Road Dividerパーツを分離します。

トリミングされた画像黄色い帯を分離する

次に、ハフラインを使用して、画像内の最も長いラインを見つけます。画像の境界を越える極値点を見つけます。あなたは四角形のポイントを得ました。手動で選択することで、この部分をスキップしました。私の場合、画像の上部の道路の幅は10、下部の道路の幅は60です。

変革する四辺形

ここで、Destinationに対して、Divider Quadilateralが60の均一な幅を持つようにImageを作成する必要があります。そのため、別の配列に新しいポイントを保存します。新しいポイントは、同じボトムポイントを持ちますが、トップポイントは、イメージと同じ高さの長方形を形成するため変更されます(またはそれより大きい場合は、一度実行して結果を確認した後、自分に合うように調整できます)、幅は60です。この四角形の領域にディバイダーが収まるように画像を変換しています。画像は自動的に変更されます。

今、使用して Mat TransformMat = getPerspectiveTransform(ipPts, opPts);

最初と宛先の四辺形ポイントにopencvを適用すると、テストイメージに適用する変換行列が得られます。

warpPerspective(ipImg, opImg, TransformMat, ipImg.size());

変換された画像

多くの領域が出力をInputImageサイズに合わせるためにトリミングされているのがわかります。ただし、予想どおり、Imageが変換されて並列のDividerになることがわかります。いくつかの変換とスタッフを実行し、より大きなサイズの出力画像を取得することで、これが得られます。サイズが非常に大きくなる可能性があるため、完全にラップされた出力イメージを取得することはできません。しかし、タスクを実行するいくつかの制約に達します。これが最後の画像です:

最終的な変換された画像


1
@MatlabのMatlabber先生は、2Dから3Dの投影に変換する機能はありますか?
sagar 2014年

あなたの問題は2dから3dへの投影の問題ではありません。これは、ホモグラフィック変換とパースペクティブマッピングの問題であり、その後、距離の計算に役立つ追加の処理(「3D」を作成して達成しようとしていること)です。おそらく、この議論がそれを助けるかもしれません。
シュリーロック2014年

1
@A Matlabberサーそのは同形変換を理解することは難しくなってと展望Mapping.iをGoogleで検索、しかし...それについてのアイデアを得ていない
サーガル

ホモグラフィック変換とパースペクティブマッピングのいくつかの例をグーグルできます。これは導入トピックであり、コンピュータビジョンのオンラインコースの多くで教えられています。私は今かなり忙しいです、そうでなければ私はそれらについてあなたにいくつかの反射を与えただろう。画像処理/コンピュータービジョンに関するコースを探してみてください。そのようなタイプの問題については、デモやプログラミングの演習はほとんどありません。
シュリーロック、2014年

@A Matlabber OK、私はあなたが言うようにします.uに感謝します。
sagar 14年

3

これは一種の光線追跡問題のように見えます。カメラの位置と向きがわかっている場合は、3x4の射影行列とその逆を計算できるはずです。

これにより、イメージポイントから3D位置(道路上)に変換できます。このディスカッションhttp://opencv-users.1802565.n2.nabble.com/2D-to-3D-projection-with-given-plane-td7272428.htmlには、さらに役立つ情報が含まれている可能性があります。

それをMATLABで適用することは。ありaffine3dトランスフォーム格納するために使用することができます。http://www.mathworks.com/matlabcentral/fileexchange/25974-raytracerなど、ファイル交換での投影/レイトレーシングに役立つものもあるかもしれませんが、何が何に関連しているかを詳細に調べていませんあなたが欲しい。


先生のは、ホモグラフィ変換を理解することは難しくなってと展望Mapping.iもuが与えられた、しかし...それについてのアイデアを得ていないリンクGoogleで検索
サーガル

1
@sagar Hartley&Zissermanの「Multiple View Geometry in Computer Vision」を検索してください。これは、自然な方法でホモグラフィを説明する本です(変換が線形である同次座標を使用)。
Libor 2014年

1

カメラを調整でき、路面上の基準点を検出できれば、路上にあるイメージポイントの3D座標を取得できます。これは、道路が平面上にあると想定しています。つまり、車を検出できれば、車の底面の3D座標を計算できます。Computer Vision System Toolboxを使用して、MATLABでこのを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.