web-dev-qa-db-ja.com

カメラで物体までの距離を測定することはできますか?

電話カメラで物体までの距離を測定することはできますか?

つまり、私のアプリケーションでは、カメラを起動し、カメラをオブジェクト(家など)に向けてからボタンを押すと、距離が計算され、画面に表示されます。

チュートリアルや情報がどこで入手できるのか?

38
evilone

Ithinkdiff.comが距離をどのように「測定」するかをお読みください。

IPhoneの角度を使用して、地上のポイントまでの距離を推定します。 iPhoneを目の前に持ち、カメラのポイントを合わせて、距離を直接読み取ります。この距離は、速度ツールで使用できます。

したがって、基本的には携帯電話を保持する場所の高さ(目の高さ)が必要です。次に、オブジェクトが地面に触れるポイントにカメラを向ける必要があります。次に、電話機は傾きを測定し、単純な三角法で距離を計算します。

もちろんこれはあまり正確ではありません。オブジェクトが遠くなるほど精度が低下します。また、地面が水平であると想定しています。

27
Peter Knego

私は質問が適切に回答されたことを受け入れます(レベルの地面と可能な精度の問題を必要とするという明らかな警告を伴います)が、それを行うことができない、またはビデオカメラが必要であると思わない人のために、低レベルの数学を説明させてくださいそれをする必要がありました....

alt text

上の写真は、私の家の外に立っているところです。水平(d)は測定したい距離であり、垂直(h)はカメラを保持している地上の高さです。この場合、Androidカメラを目の高さ(約67インチまたは1.7メートル)に保持しているときの 'h'は既知の値です。カメラを傾けて直接照準するとき私の家が地面に接するポイント、ソフトウェアが行う必要があるのは、垂直に対する角度(a)を計算することです。

d = h * tan a
59
Squonk

いや。カメラは画像データのみを提供し、画像だけでは深度情報を提供するのに十分な情報を提供しません。位置情報またはビデオの画像が複数ある場合、距離を三角測量するためにそれを処理できますが、距離を与えるには単一の画像だけでは十分ではありません。

9
Daniel DiPaolo

私たちの目で使用されている手法を使用して、奥行きと距離の遠近感を得ることができます。

1)2つの異なるカメラ位置から同じオブジェクトの2つの画像を取得します。

2)2つの画像のオブジェクト間の距離またはピクセルは、カメラとオブジェクト間の距離に反比例します。

実装は https://github.com/agnelvishal/Distance-between-camera-and-object にあります。ここに研究論文があります http://dsc.ijs.si/ files/papers/S101%20Mrovlje.pdf

3
Agnel Vishal

電話の加速度計に角度があります。この角度のタンジェントを計算し、それにカメラレンズの高さを掛けると、距離が得られます。

2
Chase

いいえ。Xbox360 kinectのようなステレオモードの2台のカメラのみ。距離を三角測量するには、少なくとも3ポイントが必要です。

0

FastCVを使用すると、カメラとオブジェクト間の距離を計算できると思います。これでは、地上レベルで保持しているカメラの角度や位置を知る必要はありません。この質問を見てください here

0
kendrelaxman

電話カメラを使用してそれを行うことは可能だと思います。現代の携帯電話はレンズを使用してオブジェクトに焦点を合わせていることを知っています。 焦点距離および位置(変位)を選択して選択したオブジェクトに焦点を合わせることができる場合は、距離を決定できるです。

0
strategaD

このアプリ はMisterSquonkが言及したアプローチ(無料)を使用していると思います。 「三角法」テクニックをご覧ください。

0
intA

これを実現する1つの方法は、デバイスでDPIを使用することです。写真を撮って高さを計算できます。ただし、参照として別のオブジェクトが必要になり、このメソッドの問題がオブジェクト間の視点である可能性があることを知ることができます。