したがって、3D投影方程式を使用し、それらを逆方向に処理して、シーン内のオブジェクトのx、y、zを見つけます。したがって、オブジェクトのサイズ、カメラの焦点距離が与えられると、フレーム内のオブジェクトのx、y、zを計算できます。
私はカメラについていくつかの仮定をします(回転なし、平行移動なし、カメラはz軸の下の0、0、0に座っています)。
image.x = model.x * camera.focalLength / model.z
image.y = model.y * camera.focalLength / model.z
あなたの周りにそれらをひっくり返すと:
model.x = image.x * model.z / camera.focalLength;
model.y = image.y * model.z / camera.focalLength;
これは、オブジェクトがカメラから離れていると思われるポイント(つまり、model.z)までの距離がわかっていることを前提としています。同様に、カメラからオブジェクトまでの距離を計算する場合は、model.zを次のように計算できます。
model.z = model.x * camera.focalLength / image.x
model.z = model.y * camera.focalLength / image.y
トリックは、model.x、この場合はmodel.yに何を使用すべきかを理解していると思います。オブジェクトの幅またはオブジェクトの高さのいずれかを使用すると、オブジェクトの一定の幅と、距離が変化するときのシーン内のオブジェクトの幅との関係を考え出すことができます。
model.z = model.width * camera.focalLength / image.width;
model.z = model.height * camera.focalLength / image.height;
その答えに数日間座っていたので、私は自分の事実を確認します。しかし、それは他の投稿とほぼ一致しています。