web-dev-qa-db-ja.com

カメラから既知のサイズのオブジェクトまでの距離を見つける

Opencvを使用して、Webカメラから1インチの白い球までの距離を計算するプログラムを作成しようとしています。これはかなり簡単なはずだと思いますが、どういうわけか私は空白を描いています。事前に助けてくれてありがとう。

14
David Harbage

三角形の類似性を使用して、カメラアングルを調整し、距離を見つけることができます。
ボールのサイズを知っています:D単位(例:cm)。カメラの前の既知の距離Z、たとえば1メートル= 100cmに配置し、見かけの幅をピクセル単位で測定します。この幅をdと呼びます。
カメラの焦点距離f(カメラごとにわずかに異なります)はf=d*Z/D

このカメラでこのボールをもう一度見ると、その見かけの幅はd'ピクセル、次に三角形の類似性により、f/d'=Z'/D したがって: Z'=D*f/d' どこ Z'は、カメラからのボールの現在の距離です。

24
Adi Shavit

私の考えでは、距離やその他のことを(現実の世界で)測定したい場合は、カメラモデル=キャリブレーションモデルが必要になります。ピンホールカメラモデルは単純で線形であり、良好な結果が得られます(ただし、歪みは修正されません(放射状か接線か)。

これを使用しない場合は、視差深度マップを計算できますが(たとえば、ステレオビジョンを使用している場合)、相対的で絶対的な測定値は得られず、背後にあるものと何が原因であるかだけがわかります。別のオブジェクトの前にあります...

したがって、答えは次のようになります。何らかの方法でキャリブレーションを行う必要があります。すべての画像平面がボールで完全に満たされるまで、球体をカメラに近づけるようにユーザーに依頼することができます。 、その後、距離を計算できるようになります..。

ジュリアン、

1
jmartel