1

私のプロジェクトでは、x、y をピクセルで、Z をカメラからの距離を mm で計算しています。だから私は深さを利用してx、y、zを計算したい。

どうすればそれができるか教えてもらえますか?

次の情報があります。

  1. 画像から取得した x,y ピクセル
  2. カメラからの距離とオブジェクト カメラとオブジェクトからの距離は、さまざまな距離から画像を作成しているため、変化し続けます
4

1 に答える 1

3

画像座標に x、y、カメラ行列、ワールド座標に z がある場合、画像座標を同次ベクトルに入れ、カメラ行列の逆数を掛けてから、z_world 座標を掛ける必要があります。最初は直感的ではないかもしれませんが、ワールド座標の単位は関係ありません。カメラ行列の逆数を掛けた後、単位のない比率 x/z を定義しました。z_world を掛けて、結果の単位を指定します。mm、インチ、マイルなどで測定でき、結果のベクトルは同じ単位になります。

cv::Matx31f world_cord(x_im,y_im,1);         //here measured in pixels
world_cord = camera_matrix.inv()*world_cord; //representing a ratio x/z,y/z
world_cord *= z_world;                       //now x,y,z are measured in units of z_world

world_cord に x_world、y_world、z_world が含まれるようになりました。

于 2012-11-16T18:00:23.520 に答える