web-dev-qa-db-ja.com

オブジェクトとカメラの間の距離がわからないときに、画像からオブジェクトの実際の実物大を取得する方法は?

画像内のオブジェクトの実際のサイズを計算するモバイルアプリを作成する必要があります。

私はそれについていくつかの研究を行ったが、役に立つ[質問]: 画像が与えられたオブジェクトの高さをどのように見つけますか?

カメラの距離とオブジェクトの実際のサイズの関係は実際にはそれほど複雑ではなく、センサー上のオブジェクトのサイズと実際のオブジェクトのサイズの比率は、焦点距離とオブジェクトまでの距離。

distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels)
                          ---------------------------------------------------------------------------
                          object height (pixels) * sensor height (mm)

しかし、距離がわからない場合、オブジェクトの実際の高さの値を取得する方法は?

画像から3Dモデルを作成するツールには実際の寸法がありますか?

26
Parth mehta

簡単な答えは、できません

ちなみに、これが人間が2つの目を持っている理由です。既知の距離なしでサイズを判断する場合は、少なくとも2つの基準点が必要です。これにより、オブジェクトの位置を三角測量し、オブジェクトまでの距離を取得し、既知の焦点距離を使用してサイズを計算できます。

より複雑な答えはで、これを回避する方法があります。例えば:

  1. 既知のリファレンスを使用してチート:

    たとえば、既知のサイズのオブジェクトがある場合、距離を推測できます。これは、たとえば、カメラを調整するために NASAが行う に似ています。

    建物の画像を分析するときの1階建ての高さなど、一般的なオブジェクトを扱っている場合は、安全な仮定を立てることができます。

  2. カメラを動かす:

    これにより、同じカメラで複数の参照ポイントを取得できます。

    加速度計を使用して、時点T1でキャプチャされた画像と時点T2の位置関係を正確に測定できると思います。これにより、既知の距離の同じ被写体の2つの画像が得られます。これにより、2つの目があるかのように三角測量を行うことができます。

    通常の手持ちカメラのジッターが三角測量に十分であるか、加速度計が電話を慣性的に配置するのに十分な精度であるかどうかはわかりません。

  3. 距離を想定:

    あなたのアプリが人間の手のスケール(または人間の解剖学の他の部分)で何かを比較するように設計されている場合、おそらく人々が自然に行うことに基づいて距離を安全に想定できます。カメラ自体のフォーカス制限は、オブジェクトがどれだけ遠くまで焦点を合わせられるかという上限と下限の範囲も与えます。これはおそらく許容範囲内のエラーです。

質問で言及したように、この質問専用の サブフィールド があり、それは アクティブな研究領域 です。

32
brice