さまざまなサイズと向きの複数の長方形を含む写真があります。現在、カメラから画像に存在する長方形までの距離を見つけようとしています。これを達成するための最良の方法は何ですか?
たとえば、写真の例は次のようになります (ただし、これはおそらく非常に不釣り合いです)。
カメラの視野と解像度とともに、画像内の任意の長方形の角のピクセル座標を見つけることができます。また、画像に含まれる可能性のある長方形の長さと幅も事前に知っています(ただし、それらがカメラにどの角度を向いているかはわかりません)。画像に含まれる可能性のある各長方形ターゲットの長さと幅の比率は、一意であることが保証されています。長方形とカメラは常に地面と平行になります。
私が試したこと:
インターネットで見つけたサンプルコードに基づいてソリューションをハックしました。私は基本的に各長方形を繰り返し処理し、平均ピクセルの長さと高さを見つけています。
次に、これを使用して長さと高さの比率を見つけ、既知のすべての長方形のターゲットの比率のリストと比較して、ターゲットの実際の高さをインチで見つけることができます。次に、この情報を使用して距離を見つけます。
...ここactual_height
で、 はターゲットの実際の高さ (インチIMAGE_HEIGHT
単位)、 は画像pixel_height
の高さ (ピクセル単位)、 は画像上の長方形の平均高さ (ピクセル単位)、VERTICAL_FOV
はカメラが見る角度です。垂直軸に沿って度数 (私のカメラでは約 39.75 度)。
インターネットでこの式を見つけました。ある程度はうまくいくように見えますが、どのように機能するのかよくわかりません。また、常に実際の距離を少し下回るようです。
さらに、角度に沿って見ると非常に歪んだ長方形を処理できるように、式を変更する方法がわかりません。私のアルゴリズムは長さと高さの比率を見つけることで機能するため、長方形 1 と 2 (あまり歪んでいない) では問題なく機能しますが、長方形 3 では機能しません。 .
この StackOverflow question で概説されている方法を使用して比率を見つけることを検討しましたが、それが私が持っているものでうまく機能するかどうかはわかりませんでした。私が試すことができる解決策。