opencvを使用して、Webカメラから1インチの白い球までの距離を計算するプログラムを作成しようとしています。これはかなり簡単なはずだと思いますが、どういうわけか私は空白を描いています。事前に助けてくれてありがとう。
2 に答える
三角形の類似性を使用して、カメラアングルを調整し、距離を見つけることができます。
あなたはあなたのボールのサイズを知っています:D
単位(例えばcm)。カメラの前の既知の距離Z
、たとえば1メートル= 100cmに配置し、見かけの幅をピクセル単位で測定します。この幅を呼びますd
。
その場合、カメラの焦点距離f
(カメラごとにわずかに異なります)はf=d*Z/D
です。
このカメラでこのボールをもう一度見ると、その見かけの幅はd'
ピクセルであり、三角形の類似性から、次のことがわかります。カメラからのボールの現在の距離はどこにf/d'=Z'/D
ありますか。Z'=D*f/d'
Z'
私の考えでは、距離などを(実世界で)測定する場合は、カメラモデル=キャリブレーションモデルが必要になります。ピンホールカメラモデルは単純で線形であり、良好な結果が得られます(ただし、歪みは修正されません(放射状か接線方向かに関係なく)。
これを使用しない場合は、視差深度マップを計算できますが(たとえば、ステレオビジョンを使用する場合)、相対的なものであり、絶対的な測定値は得られません。背後にあるものと、何が何であるかだけがわかります。別のオブジェクトの前にあります...
したがって、答えは次のようになります。何らかの方法でキャリブレーションする必要があります。すべての画像平面がボールで完全に満たされるまで、球の測定値が事前にわかっている状態で、球をカメラに近づけるようにユーザーに依頼することができます。 、その後、距離を計算できるようになります...。
ジュリアン、