99810_Jomi
@99810_Jomi

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

RealSenseで取得した深度画像から深度推定を行う方法を教えてください

Depth CameraのRealSense D415に関する質問です。
ReralSenseから取得した深度画像から、深度情報を取り出すことは可能でしょうか。自分の認識では、深度画像はOpenCVで深度に合わせて着色を行っているだけなので出来ないと思っているのですが、もし可能でしたら方法を教えていただきたいです。

0

1Answer

簡単に言うなら、camera intrinsicsを取り出して、深度画像を較正する(calibration)と、現実世界の3D点群を取得することができます。

深度画像I(xi,yi,z)の座標系:

次元 単位 範囲
xi pixel (integer) [0, N]
yi pixel (integer) [0, N]
z meter (float) R+
e.g. 256x256の深度画像の場合 N=255

3D点群P(x,y,z)の座標系:

次元 単位 範囲
x meter (float) R+
y meter (float) R+
z meter (float) R+

つまり、xi/yiから、x/yに変換する公式が必要です。

このwikiページを参考すると、一番簡単な公式は下記のような感じです。

x = (xi - principle_point_x) / focal_x * z
y = (yi - principle_point_y) / focal_y * z

どうやってprinciple pointfocal_lengthを取得するかというと、C APIの場合は、rs2_get_video_stream_intrinsicsで、rs2_intrinsicsを取り出して、rs2_intrinsicsからprinciple pointfocal_lengthの情報を掘り出すことができます。

SDKの中には、手軽いhigh-level APIもあります。例はこちら:

1Like

Your answer might help someone💌