MRが楽しい

MRやVRについて学習したことを書き残す

AzureKinectから取得したカラー画像とデプス画像を使ってBlenderで立体を再構築する その3(画角の修正)

本日は AzureKinect と Blender の調査枠です。
AzureKinect から取得したカラー画像とデプス画像を使って Blender で立体を再構築してみます
f:id:bluebirdofoz:20191102180148j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

今回は画角の修正を行います。

取り込んだ3Dデータの歪み

取り込んだ3Dデータはだと、全体が大きく歪んでいます。
f:id:bluebirdofoz:20191102180211j:plain

平行投影で上方から確認した画像が以下です。円錐形に遠くなるほど縮んでいることが分かります。
f:id:bluebirdofoz:20191102180223j:plain

これはデプス画像を、平面のメッシュに反映したためです。
デプスの映像は1つのレンズで撮影したものなので、透視投影の画像です。
このため、近くの物は大きく、遠くのものは小さく撮影されています。
f:id:bluebirdofoz:20191102180233j:plain

しかし、その一方で出力されたデプスの深度情報は平行投影で計算されています。
例えば以下は何もない壁を撮影したデプス画像です。
深度がカメラからの距離であれば、壁の中心から外側に向かって距離が遠くなるはずですが、壁全体が一定の深度で取得されています。
f:id:bluebirdofoz:20191102180242j:plain

つまりデプスの画像の見た目は透視投影(カメラレンズからの距離)ですが、深度の情報は平行投影(奥行の平行軸の距離)になっています。
このため、デプス画像から立体を再構築するにはこの歪みを補正する必要があります。
今回は以下のようなスクリプトを作成し、奥行に合わせて歪みを補正することとしました。
・decode_angleview.py

f:id:bluebirdofoz:20191102180253j:plain

スクリプトを実行した結果が以下になります。
f:id:bluebirdofoz:20191102180304j:plain

改めて上方から見ると、歪みが補正されて長方形な部屋の形状が取得できていることが分かります。
f:id:bluebirdofoz:20191102180314j:plain

近くの物体を取り込む

近くの物もキャプチャして試してみました。
こちらはノイズ部分を削除せず、スムーズをかけることで穴抜けを防いでみました。
デプスが取れない部分はやはりノイズが残ってしまいます。この辺りはBlender内ではなく画像処理で対処した方が良さそうです。
f:id:bluebirdofoz:20191102180324j:plain

カラー画像をオフしたものが以下になります。
手のひらの僅かな凹凸も綺麗に拾えているように見えます。
ノイズの除去やリトポロジーの問題はありますが、可能性を感じる結果です。
f:id:bluebirdofoz:20191102180334j:plain