Photogrammetryでなんかやってる人

Photogrammetryから心理学、人類学までいろいろ話したかった

Alignmentの話 PART1 画像の読み込み

Alignmentの精度(SfM精度?)について書いていいかどうか迷ってた、なにせ趣味でフォトグラメトリをやっている人だったらそこまでこだわる必要ないし、仕事/研究でやっている人間だったら大体僕より詳しい。 

そもそもこの記事で書かれている内容が間違っているかもしれない。

 

 

 

 画像データの読み込み

おそらくどのソフトも共通

前提

  1. 「同じカメラ+同じレンズ」で撮った写真の歪みが同じなはず(特殊な状況を除く)
  2. フォトグラメトリソフトで画像処理する際に、同じ歪みを持つ画像群を「1つ(1セット)の歪みパラメーター」でアライメントしたい
  3. Metashape(RC)などでは自動で写真データをグループ化し、同じクループ内にある写真の歪みを同じパラメーターで処理するが、それは常に正しくグループ化されるわけではない
  4. 「同じカメラ+同じレンズ」で撮った画像のデータセットを「1つの歪みパラメーター」→つまり「同じグループ」に指定したい

 

f:id:fft_kedar:20190606181040p:plain (わざとグループ分けただけ)

 

するとそのやり方は

Importする前に画像の回転を揃える。

ExifToolGUIなどで自動回転を消して、Importして確認。

 

ソフトが画像データをグループ化するときに、向きの違う画像群を別々にグループ化される恐れがあって、自動回転Tagを消して向きを直せばOK。

 (しなくても同じカメラで撮った画像データが大体一つのグループにまとまるけど、縦に撮った写真が90度か270度に認識されることがあって、違うグループにされるかもしれないらしい。自分はグループ化されないときだけはこれをやる。

また、RAWデータの現像処理は自分でも実はよくわかってないから割愛、Vladさんのチュートリアル参照)

 

Agisoft Metashapeの場合

 Metashapeでは自動的にImportされた画像をEXIFデータごとに(イメージセンサーとレンズで)グループ化し、予めそれぞれのグループをプリキャピブレーションする(→カメラのfの値をEXIFから読み込み、それを大体の基準として写真をアライメントする)。

 fというのは、画面距離(厳密にはレンズの焦点距離ではなく、撮影時のイメージセンサと光学中心との距離を1画素の大きさで除したもの)で、3次元空間を2次元の画像に投影するときの縮尺倍率を決めるものであり、最も重要な内部パラメータである。

PhotoScanを極める 9. 教科書的手順 Step 2 | 山口大学 空中測量研究室の技術ノート

EXIFデータがない場合は、Metashapeは全部の画像データをカメラのイメージセンサー/画像の解像度でグループ化し、そのレンズを35mm相当の焦点距離50mmと仮定し、写真をアライメントしようとする。

結果的にそのまま1回目のアライメントではよくないデータが返ってくる。

 

一方、EXIFデータがなくても、Metashapeでピクセルサイズ(イメージセンサのサイズ/画素数;つまりセンサ面上の1画素の大きさ)と焦点距離を入力すればfの値が出てくる。 

 

 

 

(あるいはそのままf値を入力する。

極一部のケースではこれをする必要があるが、僕はやってる、めっちゃやってる。

例えば電子接点のついてないレンズを使わなければいけないスキャン案件などなど)

 

また、Importする前に写真のEXIFデータを(exiftoolなどで)いじってデータを手動入力することもできる。

 

 

RealityCaptureの場合

80.lv

 

を参照しましょう。

importされた画像をグループ化する方法。

(デフォルト設定ではグループ化しないらしい)

“Clear Calibration Groups” – Ungroup and “Group Calibrations w.r.t. EXIF” – Group.

Enable grouping on image import.

WorkFlow - Setting - ImportSettings  [Group Calibration by exif]  - True

 

Camera grouping by EXIFはできるが、焦点距離のマニュアル入力などはできないようだ。 もできる。

Calibration Groupの下に

 

 

 

ここまでが画像をimportする時のSfM的に正しいやり方だと考えるが、実際これやるとどうなるの?

 

  • タイポイントのノイズが減る
  • より綺麗なメッシュが得られる

 

でどのぐらいの効果かというと、

 

趣味やAR/VR程度の3Dモデルだったら全くやる必要がない。  Exif情報が取れるカメラ/レンズで撮影して、普通にアライメントして失敗した時にこれやってもダメ、鏡面反射の強い被写体も諦めて別の方法でスキャンしよう。

 

 

 

(ビデオから画像を切り出してExifデータがなく、しかもズームしたりしてカメラグループがめちゃくちゃ? そんなの知らない )

 

 

 

[完]