ステレオ計測結果を利用しようとすると、実行結果の可視化が重要になる。
そこで、ライブラリを作ってみたので紹介する。
利点:面の向きがわかるので、同程度の深度の領域での微細な構造がわかる。シェーディングを強調したようなもの
利点:
視点位置が連続的に変わることで、空間の認識がしやすくなる。点群としての位置がおかしいときには、違和感を感じやすくなる。
使用例
この記事の中では、なぜこのような表示用のライブラリを作ったのかを述べます。
作った理由
表示をなんとかしたい
- 最新のステレオ計測のアルゴリズムを使いたい。
- ステレオ計測で算出した結果を表示するいい方法がほしい。
- グレースケール画像:
よくわからない - colormap 画像:
他の実装と比較で必要になる。
でも、精度が出ているのかどうかわからない。
物体の輪郭は視認しやすい。ケーブルのように細い領域でも視認しやすい。しかし、ほぼ同じ色に見えてしまっている領域での変化に気づきにくい。エンジン付近の凹凸も、シートの曲面も、タイヤの曲面も視認することができない。 - 点群データを保存して、あとでじっくり見たい
- 再投影画像で確認したい。
- 少しづつ視点を動かして、見え方の変化で確認したい。
アルゴリズムが変わっても同じ表示方法で表示したい。
- アルゴリズムごとに、表示部分をメンテナンスするのは避けたい。
- もっと楽をしたいよ!
きっと、みんな困っているよね。
- 少なくとも、私は困っている。
もくろみ
視差計算の結果を、どのようなステレオ計測ライブラリでも表示に使える。
- Ubuntu PC、Jetson AGX Orinの両方で同様に動作する。
- pip でインストールできるようにする。(作業中)
公開するインタフェースは最低限に
- このモジュールの開発の中で、実装を大きく変化させてきた。
- それでも、公開するインタフェースをごくわずかにとどめたので、利用する側のコードをほとんど変えなくて済むようにしている。
- モジュール内の
__init__.py
ファイルに記述するのを最小限にすることで、公開する範囲を最小限にしている。
開発の初期にありがちなこと
- 利用するライブラリの使い方がわかっていない。
- そのため、試行錯誤を必要とする。
- 作り上げたライブラリの使い方が、どういう使い方をしたいのかがわかっていない。
- 自由度を最大限に設定すべきなのか、特定の使い方だけを確実にこなせるようにするのがいいのか
- 間違えた入力が入ってきたときに、どう対応するのか。
- 無理やりつじつまを合わせるのか、異常終了させるのか
公開先
https://github.com/katsunori-waragai/disparity-view
実装言語: python3
達成したこと
- 視差データを元に可視化する。
- npyファイルで保存してある視差データを読み込める。
- Open3Dを使って投影画像を作成する。
最後に
自分がほしいものが、公開されている実装に見つからなければ、作るしかないでしょ。