0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

視差データの表示方法

Last updated at Posted at 2024-09-03

ステレオ計測をすると、データをどう可視化するのかという問題に出くわす。

データの保存だけなら、*.npy ファイルでなんとかなるだろう。

numpy を利用すること前提になるが、IEEEの不動小数点フォーマットでNaN, PosInf, NegInf を含めてデータを保存できる。

データを登録して管理するのは、npyファイルだけで十分

  • カラー化した画像を保存するのは無駄。
  • カラー化した画像はnpyファイルから簡単に作れる。
  • ビューワーは簡単にアルゴリズムから切り離せる。

視差それとも深度

  • 視差データがよいと考える。
    • left画像とright画像から決まるのは視差データ。
    • 特定のステレオカメラの深度データは、視差データに換算できる。
    • DepthAnythingも視差データを算出する。
    • 視差こそが比較に適している。
  • データの精度を考えるとき
    • 視差ベースの比較の方が、残差の比較に適する。
    • 15m、20mの差を5mの残差として考えるよりは, 15m相当の視差、20m相当の視差の差と考えるほうがいい。
    • 残差2乗和の最小化に適するのは、視差。
  • ロボットの場合
    • 近距離の物体の方が重要。
    • 近距離での距離の精度の方が重要。

以上のことから視差データの表示ツールを作ることにした。

表示方法の例(最大値と最小値による正規化)

  • グレースケール表示:
    • データを最大値と最小値で正規化してそれをグレースケールで表示する
    • 近い側が白、遠い側が黒の方が、視覚的に理解しやすい。
  • カラーマップ表示:
    • データを最大値と最小値で正規化してそれをカラーマップで表示する
    • カラーマップを表示の画像をモノクロ印刷しても大小関係がわかるカラーマップとそうでないカラーマップがある。
      考慮すべき値の範囲
  • 視差ベースならば、カメラに違い側が限界を決める。

欠損値の扱いをどうするか?

難点:

異なるフレーム間での比較、異なる手法間での比較に向かない。

plt.imshow(img, vmin=0.0, vmax=10.0)
この方法だと、フレーム間での比較が可能になる。

Jetのcolormap
利点:セグメンテーションとしてわかりやすい
難点:
colomap に対応するcolorbar が与えられていないことが多いので
深度の絶対値を知ることができない。
平面であるべきものが平面に保たれているか・歪んでいるかがわからない。

視差データ・深度データの表示の課題
よほどの理由がないかぎり、その示す値の妥当性(もっともらしさ)を人が視覚的にすることができない

ほしい情報

  • 物体表面の法線ベクトルの向きがわかる可視化手法
    そうすれば、平面であるべき領域が平面になっているのかが判定しやすい。
    シェーディングの情報によって対象物の形状の様子などがわかる。

Open3D Visualization
から引用

.py
print("Load a ply point cloud, print it, and render it")
pcd = o3d.io.read_point_cloud("../../TestData/fragment.ply")
o3d.visualization.draw_geometries([pcd], zoom=0.3412,
                                  front=[0.4257, -0.2125, -0.8795],
                                  lookat=[2.6172, 2.0475, 1.532],
                                  up=[-0.0694, -0.9768, 0.2024])

image.png

open3d.visualization.draw_geometries

3D カメラのSDKでのサンプルコードの例

OpenGL を利用して書かれたviewerを利用している。
https://github.com/stereolabs/zed-sdk/blob/master/depth%20sensing/depth%20sensing/python/depth_sensing.py

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?