通常のWebカメラで撮影した2D画像を3Dモデルに変換する方法はありますか? 私はC#を使用しているので、C#に基づくアルゴリズムは役に立ちます。
4 に答える
これは活発な研究テーマであり、決して容易なことではありません。
Make3Dは、教師あり学習 (人工知能の一種) を使用して、膨大な数の係数を計算しました。これらは、画像から深度マップを推定するために使用されます。
彼らのサイトにはいくつかのコードがありますが、それはC# ではなくMatlab用です。
異なるカメラ位置から撮影された高品質(中)の画像が複数ある場合は、それが可能です。このプロセスは「運動からの構造」と呼ばれます
http://en.wikipedia.org/wiki/Structure_from_motion
通常、非常に重くて複雑な計算が含まれます。唯一の例外は、画像がステレオカメラまたは位置合わせされたカメラによって事前定義された固定位置から撮影された場合です。C#でそれを行う方法はありません。C#は、コンピュータービジョンアプリケーションにはまったく役に立ちません。BundlerやPMVSなどのオープンソースのGPLライブラリがあります
http://phototour.cs.washington.edu/bundler
手の追跡は、他のまったく異なるタスクであり、ある意味ではそれほど複雑ではありませんが、動きからのブルートフォース構造が手の追跡に役立つ場合があります。正確な手の追跡にはいくつかのアプローチがあり、アクティブな形状モデルまたはアクティブな外観モデルに基づくものもあれば、特徴点の追跡に基づくものもあります。これは、あなたの場合に機能する可能性があります。しかし、最も単純なアプローチでさえ非常に複雑であり、1つの投稿で信頼することはできません。あなたはグーグルすることができます、手追跡のためのオープンソースのライブラリもあるかもしれません。
追加情報がないわけではありません。
2D イメージをモデル化された 3D サーフェスに投影できる場合があります。注: 平面は通常 2D であるため、「3D 平面」と言うのはおかしいです。
平面とは、紙のように 3D の世界で平らな面を意味するので、「印刷してください」と言いたいです。
しかし実際には、各ポイントに 3 次元の値を提供したいだけです。3D 空間のどこに配置するかを決定し、必要な計算を行います。たとえば、「壁」に配置したい場合は、代わりに x、y 座標を x、0、z にマップします。
-新しい質問のために編集...
各ポイントがカメラからどれだけ離れているかを計算する必要があります。カメラは光がどれだけ移動したかを判断できないため、これを行うのは非常に困難です。