これからiPhoneとかMacでフォトグラメトリ（& LiDAR）で3Dスキャンを始めようっていう人向けの雑記

# 初めに

フォトグラメトリは元々土木業界でドローン飛ばしてPhotoScan（現MetaShape？）フォトグラメトリしていた関係で、エンジニアに転職した今でも割と興味ある分野でしたが、使う機会があまりなく…
そんな中、最近はiPhoneで手軽に3Dスキャンが手軽にできるようになったので、最先端を走っている方々の記事を参考にして自分用になんとなくまとめてみたメモです！

## LiDARとフォトグラメトリの違い

- 参考
    - [https://note.com/tama19/n/n39ba3467a27c](https://note.com/tama19/n/n39ba3467a27c)
    - [https://www.pix4d.com/jp/blog/lidar-photogrammetry](https://www.pix4d.com/jp/blog/lidar-photogrammetry)
- LiDAR
    - こっちからレーザーを飛ばせるので、天気など光源があまり影響しない
    - 非常に高価だけど、iPhoneとかに搭載され始めたので、手軽になってきてる
        - ただし、iPhoneだとレーザーが5mしか飛ばない
    - LiDARのみだと点群しか得られない（テクスチャなど）
    - 部屋とか中くらいの広さのものをスキャンするのに良い
- フォトグラメトリ
    - 写真から点群を作成する
    - 画像から得られる情報しか利用できないため、天気などに影響されやすい
    - ただ、iPhoneとかだと写真（heic）にLiDARの情報（位置とか角度とか深度とか距離とか）が乗るらしいので、精度は高いとかなんとか
        - 自動的にスケールが与えられる
    - (iPhoneでの撮影が前提なら)広い範囲ならフォトグラメトリ一択
    - さらに、写真の枚数をいくらでも増やせるって観点で、人より小さいものならフォトグラメトリの方が強い

## 利用できるソフトは?

- Macならphotocatch一択
    - macは「Object Capture」というAPIが搭載されたので、それでフォトグラメトリができる
    - photocatchはiOSとmacの両方で利用可能
        - 公式
            - [https://www.photocatch.app/](https://www.photocatch.app/)
        - 参考
            - [https://ux.daishinsha-cd.jp/blog/object-capture1](https://ux.daishinsha-cd.jp/blog/object-capture1)
            - [https://biz-ar.jp/news/blog/2021/06/object-capture/](https://biz-ar.jp/news/blog/2021/06/object-capture/)
        - ただし、まぁ有料ソフトよりは精度悪いよねって話
            - [https://fft-kedar.hatenablog.com/entry/2021/11/21/155253](https://fft-kedar.hatenablog.com/entry/2021/11/21/155253)
                - ObjectCapture自体あまり調整が効かない
                - ポリゴン数が削られてたりとか
- iPhoneなら色々あるけど無料で高性能なscaniverce
    - [https://scaniverse.com/](https://scaniverse.com/)

### Winなら色々あるよ

- 有料ならmetashepe（旧photoscan）かreality capture
    - photoscanの特徴
        - [https://kuu-satsu.com/software/photoscan/](https://kuu-satsu.com/software/photoscan/)
    - reality captureの特徴
        - [https://kuu-satsu.com/software/reality-capture/](https://kuu-satsu.com/software/reality-capture/)
    - 比較
        - [https://kuu-satsu.com/pointcloud-comp/](https://kuu-satsu.com/pointcloud-comp/)
- 無料なら3DF Zephyrの無料版かMeshroom
    - [https://qiita.com/hazama_susumu/items/ac56689ce938749e98ca](https://qiita.com/hazama_susumu/items/ac56689ce938749e98ca)
    - 3DF Zephyr
        - [https://www.3dflow.net/3df-zephyr-free/](https://www.3dflow.net/3df-zephyr-free/)
        - 一度に使える写真は50枚まで
    - Meshroom
        - [https://alicevision.org/#meshroom](https://alicevision.org/#meshroom)
        - OSSっぽい
        - 写真無制限
        - ただしmacは非対応…

## メモ

### フォトグラメトリは何枚写真を取ればいいのか

- 参考
    - [https://fft-kedar.hatenablog.com/entry/2019/11/08/034801](https://fft-kedar.hatenablog.com/entry/2019/11/08/034801)
    - [https://ssh4.medium.com/where-and-how-many-images-required-for-good-photogrammetry-3d-scan-a5481b3b7bef](https://ssh4.medium.com/where-and-how-many-images-required-for-good-photogrammetry-3d-scan-a5481b3b7bef)

#### 理想はすべての「面」に対して3枚ずつ

- じゃないと特徴点の移動から深度を計算できない
- ただし、現実世界の物体は無限の面を持つので、「ローポリにしたらここに面があるだろうな…」という面に対して、必要な枚数を計算すればいい

#### フォトグラメトリは基本的に「ステレオ」情報、つまり視差で三次元形状を計算する

- なので、写真は必ずオーバーラップしている必要がある
- レンズの歪みや解像度、ボケの影響で画像の端っこは信頼性が低いので、画像の中心部付近でオーバーラップさせないといけない
- となると、画像同士が6割〜8割以上はオーバーラップしていないと、正確に計算できない

#### 平面のフォトグラメトリはなんで失敗しがちなのか

- [https://qiita.com/Ykoba791/items/e12d254c0f9322750ab5](https://qiita.com/Ykoba791/items/e12d254c0f9322750ab5)
- openCVとかで見てみると平面は特徴点めっちゃ少ない
- グレースケールにした時に、周辺のドットと差異が大きいものを特徴点としているらしい

### フォトグラメトリをやる時に考慮しとくこと一覧

- 参考
    - [https://fft-kedar.hatenablog.com/entry/2021/10/23/164426](https://fft-kedar.hatenablog.com/entry/2021/10/23/164426)