2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XREAL Beam Proの空間ビデオからフォトグラメトリする

Last updated at Posted at 2024-08-12

サングラス型の反透過ARグラスを出しているXrealが
ステレオカメラ搭載のAndoroid端末Beam Proを出していたので
簡易的な3Dスキャンに活用できないかと 試しに購入してみました
image.png
ステレオカメラを活用して3Dモデル作成するテストの覚書です。
普段はTLで技術情報を眺めているだけで 翻訳片手なので間違いが多いかもしれません

XREAL Beam Proの撮影画像について

撮影画像は 左右のカメラ画像を横並びにしたもので記録されるようで
動画 は片目1920*10803840*1080
静止画は片目3844*28807688*2880になるようです
image.png

今回はまずは動画撮影したものから画像を切り出してテストをしています

動画からのフレームの書き出し

ffmpegを使って動画のフレームを一定間隔で抜き出して
横並びの左右片目づつ切り抜きするバッチファイルを作成してみました

4f.bat
rem 動画の場所にフォルダ作成
md %~dp1sbimgL
md %~dp1sbimgR
rem 秒間4枚画像を書き出し
%~dp0ffmpeg\bin\ffmpeg.exe -i %1 -vf crop=1920:1080:0:0 -r 4 -f image2 %~dp1sbimgL\img%%06d.jpg -vf crop=1920:1080:1920:0 -r 4 -f image2 %~dp1sbimgR\img%%06d.jpg
pause

動画のある場所に 左右それぞれのフォルダを作成し
秒間4フレームで切り出して 左右振り分けての画像を保存する処理にしています

動画から切り出したものを青赤ステレオ風で重ねて画像を比較してみました
image.png

大体3m先で15pixel程度 10m先の軒先で5pixel程度の平行移動が確認できます
ただ動画なのもあって拡大画像で確認してみるとブロックノイズが気になりますね

COLLMAPでの解析

まず CollmapでSfM (Structure-from-Motion)してみました
SfMとは画像から抽出した特徴点からカメラの移動位置や 特徴点の立体位置を再構築する処理のことです
Colmapは制度が良く高速なのもあって 学術的な解析でもよく使われるようです

Collmapでの解析ではまず File>NewProjectで
プロジェクトのデータベースファイルの作成と画像のあるフォルダの指定をします
image.png
Reconstruction>Automatic Reconstruction で開くウインドウで
各種設定をすることでで解析開始です
image.png
動画から連続画像を作ったので Data typeをVideo framesに設定して
画像のある親フォルダ下に左右のカメラで画像を振り分けたサブフォルダを作っておいて
Shared intrinsics per sub-folder をチェックすることで 別の一連の画像として解析するようです

今回の再構築した点群データはこんな感じでした
image.png
後半で左右のカメラの動きに解析違いが出来てしまっている様子ですが点群だけも全容が分かる程度には構築できています
今回の解析では13th Gen Core i7ノートで9分強 ポータブルゲーミングPCで20分の解析時間と
少なくとも自分のやりたいことはできそうです

左右のカメラの相対位置を拘束する設定がないか 調べる必要がありそうです

Meshroomでのフォトグラメトリ

複数写真から立体を生成するフォトグラメトリソフトの一つに AliceVision Meshroom という
オープンソースのソフトがあります
ステレオカメラに対応した処理があるようなので試してみました

Meshroomのマルチカメラリグの設定

meshroomはrigフォルダ下に番号分けしたフォルダを置くと
フォルダ下の同一番号の画像を同期して撮影された画像として処理してくれるようです

ただ、画像のExif情報のBodySerialNumberが別である必要もあるようです
幸いにも Windowsのプロパティでも複数ファイルExif情報を一括編集できるようです
image.png
IDが被っていさえいなければいいので 片目分のデータに適当な値を入れればいいだけのようです

後はデフォルトの設定で処理を実行してみました

image.png
枚数や1080p動画から書き出した画像の精度と考えると比較的いい仕上がりなのではないでしょうか

カメラの撮影軌跡について

フォトグラメトリの素材撮影において、より綺麗な結果を得るには
カメラの位置を変えずに回転する撮影(パン)を極力減らして画像同士で重なる部分が8割程度あるようにするとよいようです

今回のテストでは あえて撮影位置をあまり移動せずに左右の首振り中心で撮影も試してみました
image.png
上が片目分の平行移動画像
下が両目撮影の首振り画像 の結果。入力枚数を揃えたものです

従来通り平行移動を心掛けた方が結果が良いようですが
左右に平行移動した画像のペアがある分 カメラ1つで首振りするよりはまともな結果になってるかもしれません

雑な検証ですが 個人的には実りの多い検証でした
まだ把握していなかった設定も含め 引き続き色々試していきたいと思います

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?