これが私のセットアップです: Kinect は水平移動用のアクチュエーターに取り付けられています。これが私がやっていることの短いデモです。http://www.youtube.com/watch?v=X1aSMvDQhDM
これが私のシナリオです:
上図を参照してください。アクチュエータの中心「M」と Kinect の光軸の中心「C」の間の距離を「dx」(ミリメートル) とすると、Kinect から得られる深度情報「D」(ミリメートル) は相対的です。光軸へ。Kinect の中心にアクチュエータが取り付けられているので、オブジェクトと Kinect の間の実際の深さは「Z」です。
X は、光軸とオブジェクトの間の距離 (ピクセル単位) です。Theta2 は、光軸と物体の間の角度です。「dy」は無視できます。
これが私の問題です。 Z を取得するには、図 2 の距離方程式を使用するだけです。ただし、X の実際の値 (mm) はわかりません。オブジェクトと光軸 'theta2' の間の角度がある場合、Dsin(theta2) を使用して X を mm 単位で取得できます。ただし、theta2 も不明です。X (mm 単位) がわかれば theta2 を取得でき、theta2 がわかっている場合は X を取得できます。では、X 値 (mm 単位) または光軸とオブジェクト P の間の角度を取得するにはどうすればよいでしょうか?
Kinect の最大視野が 57 度であり、Kinect の最大水平解像度が 640 ピクセルであることを知っているので、kinect の 1 度は 11.228 (640/57) ピクセルをカバーすると言えます。しかし、実験を通じて、これにより少なくとも 2 度の誤差が生じることがわかりました。Kinect のレンズの歪みが原因だと思われます。しかし、それを補正/正規化する方法がわかりません。
どんなアイデア/助けも大歓迎です。