2017-11-16 19 views
0

私はKinect V2を使用して3D点群とそれに対応するカラー画像を取得しています。このカラー画像に3Dモデルを正しく投影するには、有効な投影行列をカメラから画像空間まで計算する必要があります.Kinect V2 SDKではRGBカメラに関する較正情報がないため、 coordinateMapperクラスのMapCameraPointsToColorSpaceKinect v2、3D点群のカラー画像への投影

このメソッドは、クラウド内の各3D点と画像ピクセルの対応を含むルックアップテーブルを返します。テーブルから、私はRGBカメラ固有の行列(焦点距離、主点、画像間隔係数)を計算しようとしました。しかし、計算された組み込み行列を使用して投影された2D点とルックアップテーブルの値との間にはいくつかの誤差があります。私は、ラジアルディストーションを数えていないので、このエラーが発生したと思います。私は正しい?このルックアップテーブルを使用して3Dから2Dのカラーポイントへの正確なマッピングを得るために放射状の歪みを気にする必要がありますか?

答えて

0

はい、正しいです。 Raw Kinect RGB画像に歪みがあります。最善の方法は、最初にRGBカメラ固有のマトリックスを使用して手作業で空白の画像を歪ませ、それをルックアップテーブルとして使用することです。

distort(int mx, int my, float& x, float& y) const 
    { 
     float dx = ((float)mx - depth.cx)/depth.fx; 
     float dy = ((float)my - depth.cy)/depth.fy; 
     float dx2 = dx * dx; 
     float dy2 = dy * dy; 
     float r2 = dx2 + dy2; 
     float dxdy2 = 2 * dx * dy; 
     float kr = 1 + ((depth.k3 * r2 + depth.k2) * r2 + depth.k1) * r2; 
     x = depth.fx * (dx * kr + depth.p2 * (r2 + 2 * dx2) + depth.p1 * dxdy2) + depth.cx; 
     y = depth.fy * (dy * kr + depth.p1 * (r2 + 2 * dy2) + depth.p2 * dxdy2) + depth.cy; 
} 

For more information

+0

ありがとうございます!それは私をたくさん助けます –

関連する問題