Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
VisualSfMとMeshLabとCloudCompareによる
ドローン撮影画像を用いたデジタル地図作成
東京大学駒場リサーチキャンパスAn棟2階
2015年10月9日(金)10時-13時
FOSS4G 2015 Tokyo ハンズオン
立...
1.はじめに
この資料について
・資料の利用について
この資料は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に
ご利用ください。資料とは、この資料に登場する文章と画像と数値、そしてこの資
料でデータ処理用のサンプルとして利用するデータです。...
データの処理に用いるPCについて
この資料で説明するデータの処理は、Windows OSの64bit版(Windows7,
Windows8, Windows8.1, Windows10)という動作環境の下、おこなっていま
す。
これ以外のWi...
データの処理に用いるプログラムとそのバージョンについて
この資料では、それぞれ次のバージョンのプログラムを使用しています。
• VisualSFM version 0.5.26
• MeshLab version 1.3.3
• CloudCo...
謝辞
この資料は、次の科研費により得た研究成果の一部をもとにしています。
• JSPS科研費26870764
• JSPS科研費25292213
1-1 自己紹介
名前:山口 欧志(やまぐち ひろし)
専門:景観考古学(文化遺産のデジタル資料化とこれを活用した古代社会の景観研究)
フィールド:日本、モンゴル国、ウズベキスタン共和国
所属:立命館大学アート・リサーチセンター
仕事内容:小型...
 撮影した画像から、地図を作る方法を身につける。
(ドローンで撮影した画像だけでなく、3~5mほどの高さから撮影した画像にも使える方法)
 関連する知識や情報を得る手段を知る。
1-2 このハンズオンの目標
テクスチャ付きメッシュ
位置情報をもった点群
GISデータ
3Dモデル
このハンズオンでつくるもの
ドローンを使った空撮
1-3 撮影画像から地図作成までの流れ
GISを使ったいろいろな処理
このハンズ
オンが扱う
主な範囲
ドローンを使った空撮
ドローンを使った空撮と、SfM-MVSの利用可能性の参考文献
ドローンを使った撮影と、SfM-MVSの利用可能性については、
たとえば、以下などが参考になります。
内山庄一郎 ・井上 公 ・鈴木比奈子2014
「SfM を...
1 はじめに
1-1 自己紹介
1-2 このハンズオンの目標
1-3 撮影画像から地図作成までの流れ
1-4 このハンズオンのメニュー
2 3次元モデルの作成
2-1 SfMとMVSを使った3次元モデルの概要
2-2 Visual SFMとMe...
2 3次元モデルの作成
2-1 SfMとMVSを使った3次元モデルの概要
2-2 Visual SFMとMeshLabとCloudCompareのインストール
2-3 Visual SFMを使った3次元モデル作成と出力
2 3次元モデルの作成
2 3次元モデルの作成
2-1 SfMとMVSを使った3次元モデルの概要
2-1 SfMとMVSを使った3次元モデルの概要
1 SfM-MVSの位置付け
2 SfM
3 MVS
3 SfM-MVSの代表的なプログラム
4 現状の課題
5 概要のまとめ
2-1 SfMとMVSを使った3次元モデルの概要
いきなりSfM-MVSのお話をする前に、
考古学や文化遺産の調査研究に携わる僕にとってのSfM-MVSの位置付けを確認します。
2-1-1 SfM-MVSの位置付け
文化遺産の記録方法(例えば、、)
• アナログ
• テキスト
• スケッチ
• 実測
• フィルム写真撮影
• デジタル
• デジタル写真撮影
• デジタル写真測量
• SfM-MVS(Structure from Motion, Multi-...
考古学や文化遺産の調査研究にとってSfM-MVSは、、
 文化財や文化遺産を次世代に伝えるために。
 数ある方法のひとつ。
 使うことが目的ではない。
 対象について、深く知り、考えるために使う。
この方法に拘らず、常に最適な方法を模索...
2-1-2 SfM
 SfM(Structure from Motion)
撮影した動画や画像から、撮影位置やカメラのパラメータを求め、
被写体の粗い3次元点群を復元する技術。
2-1-3 MVS
 MVS(Multi View Stereo)
SfMによって得られた粗な点群とカメラのパラメータと画像を利用して、密な3次元モデ
ルを作成し、これに対してテクスチャーを貼る技術。
2-1-4 SfM-MVSの代表的なプログラム
名称 機能 価格 操作の手軽さ
PhotoScan Pro
PhotoScan Standard
◎
○
○$549
◎$59
◎
Pix 4D
◎
※空撮Drone
→地形復元向け
×$1990...
Photoscanの画面
Pix4Dの画面
VisualSFMの画面
CMPMVSで立体視動画
CMPMVSについては、こちら↓
http://ptak.felk.cvut.cz/sfmservice/websfm.pl?menu=cmpmvs
2-1-5 現状の課題
• 照明:色や露光の最適化
• 省力化:撮影から3次元モデル作成までの手間
• 処理速度:たくさんの写真を扱うと、時間がかかる
• 標準化:データ形式、メタ情報、点群密度の検討
• 公開:ライセンス、オープンデータ化
2-1-6 概要のまとめ
 目的や条件によって最適な道具立ては異なる。
 SfM-MVSは数ある道具の1つ。
 SfM-MVSは誰もが導入できる!
 自らの手でデジタル資料化できる!
2 3次元モデルの作成
2-2 Visual SFMとMeshLabとCloudCompareのインストール
2-2 Visual SFMとMeshLabとCloudCompareのインストール
2-2-1 VisualSfMのインストール
http://ccwu.me/vsfm/
インストールガイド
http://ccwu.me/vsfm/install.html
自分の作業環境に合ったバー
ジョンをダウンロード
可能であれば、64b...
ダウンロードして解凍
http://ccwu.me/vsfm/
ダウンロードしたファイルを解凍すると、
ディレクトリ「VisualSFM_windows_64bit」ができる。
解凍してできたディレクトリをCドライブ直下にコピー
ディレクトリの場所は、「C:¥VisualSFM_windows_64bit」 になる。
この「VisualSFM~」のディレクトリに、MVS用のファイルをコピーする
この場所に、cmvs.exeと、pmvs.exeと、genOption.exeと、pthreadVc2.dll
をコピーする。これらのファイルは、PMVS2/CMVS...
URI
https://code.google.com/p/osm-
bundler/downloads/detail?name=osm-
bundler-pmvs2-cmvs-full-32-64.zip
“OSM-bundler”で検索する...
ダウンロードしたファイルの解凍する
ダウンロードしたファイルを解凍すると、以下の4つができる。
次に、このうちのディレクトリ「osm-bundlerwin64」を開く。
osm-bundlerWin64¥software を開く
cmvsとpmvsがあることを確認
「osm-bundlerwin64」の中にある「software」を開くと、
「cmvs」と「pmvs」があることを確認する。
cmvs¥binに移動してcmvs.exeをコピー
ディレクトリ「cmvs」の中にあるディレクトリ「bin」に移動して、
cmvs.exeをコピーする。
ディレクトリ「C:¥VisualSFM_windows_64bit」を
開いてcmvs.exeをペースト
osm-bundlerWIN64¥software¥pmvs>binに移動して、
全てのファイルをコピー
全てのファイルをコピー
ディレクトリC:¥VisualSFM_windows_64bitを開いて、
先ほどの3つのファイルをペースト
VisualSFMのプログラムで、MVSまで処理できるようになった。
Tips: Visual SFMが起動しない場合
起動しない場合は、MSVC2010 runtimeをインストールしてください。
64bit OS の方はこちらから、
http://www.microsoft.com/en-us/downloa...
2-2-2 MeshLabのインストール
http://meshlab.sourceforge.net/ からダウンロードする。
MeshLabはオープンソースの点群処理プログラムです。
Winwdos,Mac,Linuxどれでも使える。
こち...
2-2-3 CloudCompareのインストール
http://www.danielgm.net/cc/ からダウンロードしてください。
CloudCompareはオープンソースの点群処理プログラムで、
名前のとおり、点群間の比較に強い。
W...
2 3次元モデルの作成
2-3 Visual SFMを使った3次元モデル作成と出力
2-3 Visual SFMを使った3次元モデル作成と出力
2-3 Visual SFMを使った3次元モデル作成と出力
VisualSFMを使った処理の流れ
1 データの準備
2 画像データを開く
3 画像のマッチング
4 撮影位置の計算と粗い点群の作成
5 バンドル調整
6 密な点群の作成
7 結果の...
2-3-1 データの準備(注意事項)
• 作業用のデータを格納する場所と名前は、半角英数のみで構成されるディ
レクトリに!
• 日本語や全角文字の入ったディレクリだと、うまく動作しない可能性が高くな
ります。
• お薦めは、C(D)ドライブの直...
2-3-1 データの準備(ダウンロード)
• 今回のWorkshopで使用する画像群(39枚)は以下にあります。
• https://www.dropbox.com/s/qmilpebrkveekcr/raw39pic.zip?dl=0
(約2...
2-3-1 ダウンロードしたデータをコピーして、処理用のデータを用意
C:¥SfM_MVS¥handson¥data例
39枚の写真があるはず。
・解凍してできたディレクトリ「raw39pic」を「C¥SfM_MVS¥handson」に移動。
...
2-3-2 VisualSFMを起動→画像データを開く
• 「C:¥VisualSFM_windows_64bit」にあるVisualSFM.exeを起動
• File > Open+Multi Imagesを選択して、対象の画像群を選択
• ...
2-3-2 VisualSFMを起動→画像データを開いた結果
右側に表示されているLog Windowを表示するには、
Tools->Log Window
2-3-3 VisualSFMで画像のマッチング
特徴点の抽出と、画像間の対応点の探索
SfM > Pairwise Matching > Compute Missing Matchを選択
あるいは、
赤丸で囲ったアイコンを左クリック
2-3-3 VisualSFMで画像のマッチング
特徴点の抽出と、画像間の対応点の探索
SfM > Pairwise Matching > Compute Missing Matchを選択
すると、
ログウィンドウ上に処理内容が
表示される
2-3-4 撮影位置の復元と粗い点群の生成
撮影位置の推定と粗い点群の生成、カメラパラメータの計算
SfM > Reconstruct Sparseを選択
あるいは、
赤丸で囲ったアイコンを左クリック
しばらく(ラップトップPCだと10分くらい...
2-3-5 バンドルの調整
Run Bundle Ajustmentを選択,バンドル調整
53
あるいは、
赤丸で囲ったアイコンを左クリック
2-3-6 密な点群の生成
PMVS/CMVSで密な点群の生成
SfM > Reconstruct Denceを選択,ファイル名を付けて保存。
今回は、ディレクトリ「C:¥SfM_MVS¥handson¥data」に「cmvs」と名前を付けて保...
2-3-7 作成した3次元モデルの確認
処理が終了したら、Tabキーで表示方法を切り替えて結果を確認する。
3 3次元モデルのテクスチャー貼り
3-1 MeshLabによる点群からサーフェス(面)の作成
3-2 MeshLabによるサーフェスへのテクスチャー貼り
3 3次元モデルのテクスチャー貼り
3 3次元モデルのテクスチャー貼り
3-1 MeshLabによる点群からサーフェス(面)の作成
3-1 MeshLabによる点群からサーフェス(面)の作成
3-1 MeshLabによる点群からサーフェス(面)の作成
MeshLabによる処理の流れ
1 データを読み込む
2 画面の表示設定
3 各点の法線ベクトルを計算
4 操作方法:拡大と縮小・拡大、パン
5 不要なデータの削除
6 サーフェス(面...
3-1-1 MeshLabを起動→データを読み込み
MeshLabで3次元データを開く
今回は、予め作っておいたデータセットを使います。
https://www.dropbox.com/s/dyx8wzme2pqvj95/sample001.z...
3-1-1 MeshLabを起動→データの読み込み
MeshLabで3次元データを開く
File > Open Projectを選択,VisualSFMで作成した「bundle.rd.out」を選択
今回は、予めつくっておいた.bundle.r...
3-1-1 MeshLabを起動→データの読み込み
MeshLabで3次元データを開く
続いて、image List fileを選択するよう、指示が表示される
今回は、予めつくっておいた「list.txt」を選択
場所は、同じく「sample0...
3-1-2 画面の表示設定
開いているファイルや、処理の内容などを表示(非表示に)するには、
View > Show Layer Dailog を選択
黄色になっているレイヤーが、選択されているレーヤーです。
ここで選択されているレイヤーが処理...
Tips レイヤーの削除
たとえば選択したレイヤーを削除したいときには、
選択したレイヤーの上で右クリックを押すと表示されるメニューで
Delete Current Meshを選択 すると、選択したレイヤーを削除することができます。
3-1-3 各点の法線ベクトルを計算
Filters > Normals, Curvatures and Orientation > Compute normals for point setsを選択
パラメータは、上から10、0。
Flip ...
3-1-4 操作方法:拡大と縮小・拡大、パン
回転:左クリックを押したまま、マウスを移動
縮小拡大:Altキーを押しながらマウスを前後に移動
パン(移動):Ctrlキーを押しながらマウスを移動
3-1-5 不要なデータの削除
Edit > Select Vertexesを選択,点群の不要な部分を四角形に囲って選択する。
次に右下図にあるDelete the current set of selected verticesのアイコンをク...
Tips undo(取り消し)機能はありません。
MeshLabには今のところ
(Ver.1.3.3)、undo(取り消し)機能
やredo(繰り返し)機能はありません。
データを消しすぎた場合や、誤った処理をしてしまった際には、
該当処理以前...
Tips 不要な部分を加工コツ
不要な部分を囲うには、ちょっとしたコツが必要。
最初の1点目(たとえば左上)でクリックしたまま2秒ほど待つ。
それから2点目(右下)のほうにポインタをずらしていくイメージ。
残したい範囲以外を選択したい場合には、...
参考資料(対象地:帝塚山大学生駒キャンパス中庭の様子)
北から
東から
西から 南から
通常はデータ処理する人も現地を確認しているはずなので不要部分は分かるはずですが、
今回は、現地確認を省いているため不要部分が不明です。
そこで、現地の様子が...
3-1-6 サーフェス(面)の生成
Edit > Select Connected conponents in a region を選択
続いて、Filters > Point Set > Surface Reconstruction:Pois...
右側のレイヤーを表示するには、メニューのView > Show layer Dialog
71
3-1-7 不要なサーフェスができたら、選択して削除する
Edit > Select Faces in a rectangular regionを選択,サーフェスの不要な部分を囲って選択する。
3-1-7 不要なサーフェス部分を削除する。
次に下図にあるDelete the current set of selected faces and..のアイコンをクリックして削除する。
不要な部分を完全に削除することは難しいので、おおよそで不...
Tips 不要なサーフェスを囲うコツ
残したい範囲以外を選択したい場合には、残したい範囲を選択→反転!
反転させるには、Filters > Selection > Invert Selection
反転すると、選択部分(赤の範囲)が反転する
表...
サーフェスの作成結果
サーフェスを作成できた。
3 3次元モデルのテクスチャー貼り
3-2 MeshLabによるサーフェスへのテクスチャー貼り
3 3次元モデルのテクスチャー貼り
3-2 MeshLabによるサーフェスへのテクスチャー貼り
MeshLabによる処理の流れ
1 非マニホールドエッジの削除
2 テクスチャーの貼り付け
3 テクスチャーの修正
4 サーフェスの保存
5 プロジェクトの保存
3-2-1 非マニホールドエッジの削除
作成したサーフェスにテクスチャーを貼り付けようとすると、“manifold faces”..といったエラー表示が出る
ことがあります。そこで、この非マニホールドエッジ(要素を正しく接続できていないエッジ)...
3-2-2 テクスチャの貼り付け1
Filters > Texture > Parametrization from registered rastersを選択
パラメータは以下の通りにして、「Apply」→計算完了後→「Close」
3-2-2 テクスチャの貼り付け2
Filters > Camera > Project active rasters color to current mesh, Filling the textureを選択
パラメータは以下の通りにして、「...
サーフェスにテクスチャを貼り付けることができた。
3-2-3 テクスチャの修正
Filters > Texture > Parametrization + texturing from registered rastersを選択
パラメータは右下図の通り。
「Apply」をクリックしてちょっと...
3-2-3 テクスチャの修正結果
不要な部分のテクスチャーを黒く修正することができた。
テクスチャをもったメッシュの完成!
3-2-4 サーフェスの保存
保存したいサーフェスのレイヤーを左クリックして選択
メニューからFile > Export Mesh Asを選択
ファイルの保存場所は
「C:¥SfM_MVS¥handson¥sample001¥sample.nv...
3-2-5 プロジェクトの保存
Meshlabの作業環境をそのまま保存したいときには「プロジェクト」を保存する。
メニューからFile > Save Projectを選択。
プロジェクトの保存場所は、
「C:¥SfM_MVS¥handson¥s...
3-2-6 プロジェクトの保存
続いて、プロジェクトの任意の名前(今回はhandson)を付けて保存する。
MeshLabを終えるには、メニューから、File > Exit を選択する。
注意点
左図を見ると分かるとおり、モ
デルは周辺の歪みが大きくな
る。
SfM-MVS用の写真を撮影す
る際には、予めモデル作成し
たい対象範囲よりも広め(一
回りもしくは二回りほど)の範
囲を撮影しておくことが肝要。
赤色枠部分の図を作りたい...
4 3次元モデルへの位置情報追加
4-1 CloudCompareを使った3次元モデルへの位置情報追加(点群編)
4-2 CloudCompareを使った3次元モデルへの位置情報追加(サーフェス編)
4-3 GISデータとしての出力
4 3次元...
4 3次元モデルへの位置情報追加
4-1 CloudCompareを使った3次元モデルへの位置情報追加(点群編)
4 3次元モデルへの位置情報追加
4-1 CloudCompareを使った3次元モデルへの位置情報追加(点群編)
CloudCompareによる処理の流れ
1 MeshLabで点群の読み込み
2 不要な点群の削除
3 CloudCompareで3次元データを開く
4 Cloud...
4-1-1 3次元モデルへの位置情報追加(点群編)
File > Open Projectを選択,VisualSFMで作成した.plyファイルを選択
今回は、予めつくっておいたoption-0000.plyを選択
このファイルは、MeshLab...
4-1-2 MeshLabで3次元データを開いて不要な部分を削除
MeshLabでoption-0000.plyを開いたら、不要な部分を削除する。
削除し終えたら、名前は変えずに保存する。保存する場所も同じ。
「sample001>sample...
4-1-3 CloudCompareで3次元データを開く
CloudCompareで3次元データを開く
File > Openを選択,MeshLabで編集した先ほどのoption-0000.plyを選択
場所は、「sample001>sampl...
4-1-4 CloudCompareの基本的な操作方法
回転:左クリックしながらポインタを動かす
移動:右クリックしながらポインタを動かす
拡大:マウスの中ボタンを前後に動かす
光源位置の変更:Ctrlを押しながら、右クリックしながらポインタを...
4-1-5 点群のNormalsを計算する
左側のレイヤーが表示されたウィンドウのうち、
雲のアイコンが表示された「option-0000」を左クリックして選択
メニューから、Edit > Normals > Compute
表示されるパラメー...
4-1-6 点群の表示の大きさを調整する
ウィンドウ左下のPropertiesの下の方にある「Point size」の数値を
2または3にして、点群を見やすくする。
4-1-7 CloudCompareで地球上の位置情報を与える
1.国土地理院の地理院地図で座標を調べる
地理院地図で座標を調べる
出典:地理院地図(国土地理院) (http://maps.gsi.go.jp/)
地理院地図で“帝塚山大学”と検索
左下のアイコンをクリックして、写真を選ぶ
(本当は現地で測量した座標があれば良いのだけれど、無い場合は...
地理院地図で座標を調べる
出典:地理院地図(国土地理院) (http://maps.gsi.go.jp/)
地理院地図上で、CloudCompareにもある地点を探してクリック、経緯度(10進法)得る。
地理院地図で座標を調べる
出典:地理院地図(国土地理院) (http://maps.gsi.go.jp/)
今回はこの図を参考に、point3,4,6の地点のおよその座標を得て、コピーする。
テキストエディタか、適当な表計算ソフトを利用して、座...
Point3
Point4
円の中心が各ポイントの位置
Point6
円の中心がポイントの位置
地理院地図で座標を調べる
出典:地理院地図(国土地理院) (http://maps.gsi.go.jp/)
貼り付けた数値は経緯度なので、UTM座標に変換する。
(次のスライドに使う座標の一覧があります。)
今回は、NCM社さんが公開している
...
座標一覧
point 3,566188.812,3838455.093,175.000
point 4,566202.573,3838452.198,174.900
point 6,566220.545,3838512.701,174.584
...
4-1-7 CloudCompareを使って、地球上の位置を与える
左側のウィンドウに表示されているレイヤーから、
位置を与える点群「option-0000 - Cloud」をクリック
Aligns..を使って、地球上の位置を与える
ウィンドウの上の方に表示されているAligns…のアイコンをクリック
Aligns..を使って、地球上の位置を与える
座標を付ける点(先ほど取得したpoint3.4.6の地点)を左クリック
Aligns..を使って、地球上の位置を与える
Point3.4.6をクリックしたら、下の鉛筆アイコンをクリックして、先ほど調べた対応する座標を入力
Aligns..を使って、地球上の位置を与える
すると、座標が大きすぎるので、オフセットをかけるためのウィンドウが表示される。。ので表示のとおりに。
Aligns..を使って、地球上の位置を与える
Alignのボタンを押してみる。
うまく行けば、これくらいのRMS値になる。あくまでも目安です。
Aligns..を使って、地球上の位置を与える
左端のアイコン(Set top View)をクリックして、真上から表示。
良さそうなら、resetの右隣にあるチェックアイコンをクリック。ダメならreset
CloudCompareを使って、地球上の位置を与える
地球上の座標を追加できた。
右下のスケール表示も正しい。
4-1-8 データの保存
色々な形式で保存できる。今回は.plyのバイナリ形式で保存しておく。
左のウィンドウで保存するメッシュを左クリックして選択後、
File > Save として、.plyのバイナリ形式で保存しておく(テキストデータとして...
4-1-9 GISデータとして出力
やっぱり地図資料として使いたい。
Tools > Projection > Rasterizeを選択
GISデータとして出力(ラスターデータ)
Tools > Projection > Rasterizeを選択,
Update gridをクリックして出力対象のレイヤーを表示、
各種設定を変更してRasterのボタンをクリックして出力
Geoti...
GISデータとして出力(ラスターデータ)
ファイルの保存場所とファイル名を尋ねられるので、「C:¥SfM_MVS¥handson」に
GISデータ用のディレクトリ「gis」を作成して、名前を付けて保存。
GISデータとして出力(ベクタ-データ)
ウィンドウに新しく点群のレイヤーが追加される
Tools > Projection > Rasterizeを選択,
Update gridをクリックして出力対象のレイヤーを表示、各種設定を変更して出力
...
GISデータとして出力(ベクタ-データ)
作成した点群をクリックして選択、File > Saveを選択,
必要なファイル形式を選択して名前を付けて保存。
QGISで表示
GISで使えます。
4 3次元モデルへの位置情報追加
4-2 CloudCompareを使った3次元モデルへの位置情報追加(サーフェス編)
4 3次元モデルへの位置情報追加
4-2 CloudCompareを使った3次元モデルへの位置情報追加(サーフェス編)
CloudCompareによる処理の流れ
1 CloudCompareで3次元データ(サーフェス)を開く
2 CloudCompareで地球上の位置情報を与え...
4-2-1 CloudCompareで3次元データ(サーフェス)を開く
CloudCompareのメニューから、
File > Open Projectを選択,VisualSFMで作成した.plyファイルを選択
今回は、先のセッションで作成した...
4-2-2 CloudCompareを使って、地球上の位置を与える
あとは点群に位置情報を与える方法と同じです。
まずは、位置情報を与えるメッシュを左クリックして選択。
Aligns..を使って、地球上の位置を与える
Aligns…のアイコンをクリック
Aligns..を使って、地球上の位置を与える
座標を付ける点(先ほど取得したpoint3.4.6の地点)を左クリックすると、
赤枠に点名とローカル座標が表示される。
Aligns..を使って、地球上の位置を与える
Point3.4.6をクリックしたら、下の鉛筆アイコンをクリックして、先ほど調べた対応する座標を入力
Aligns..を使って、地球上の位置を与える
左端のアイコン(Set top View)をクリックして、真上から表示。
良さそうなら、resetの右隣にあるチェックアイコンをクリック。ダメならreset
Aligns..を使って、地球上の位置を与える
地球上の座標を追加できた。
右下のスケール表示も正しい。
Tips: Align後にメッシュが真っ白くなったら…
ウィンドウの一番上に並んでいるメニューのDisplay > Refresh を選択するか、
左のウィンドウで保存するメッシュを左クリックして選択後、
File > Save として、.pl...
4-2-3 オルソ表示
初期設定でウィンドウ左端に並んでいるアイコンのうち、上から6番目のアイコンをクリックして、
Orthographic projection を選択する。
4-2-4 オルソ画像の出力
ウィンドウの一番上に並んでいるメニューのDisplay > Render to Fileから、
画像の解像度などを決め、保存する場所を選び、名前を付けて画像を出力できる。
4-2-4 オルソ画像の出力結果
今日はここまで。
お疲れさまでした。
Upcoming SlideShare
Loading in …5
×

VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成

24,404 views

Published on

ドローンで撮影した画像から3次元モデルやデジタル地図を作る方法。

Published in: Science
  • Be the first to comment

VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成

  1. 1. VisualSfMとMeshLabとCloudCompareによる ドローン撮影画像を用いたデジタル地図作成 東京大学駒場リサーチキャンパスAn棟2階 2015年10月9日(金)10時-13時 FOSS4G 2015 Tokyo ハンズオン 立命館大学アート・リサーチセンター 山口欧志
  2. 2. 1.はじめに
  3. 3. この資料について ・資料の利用について この資料は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に ご利用ください。資料とは、この資料に登場する文章と画像と数値、そしてこの資 料でデータ処理用のサンプルとして利用するデータです。データとは、ドローンで 撮影した画像と解析結果のデータ(中間生成ファイル)を指します。出典を明示さ えすればどのように使っていただいてもかまいません。この資料を踏み台にして、 どんどん内容を充実していただければ幸いです。 ・資料が不完全な点について この資料には、説明の至らない点が多々あると思います。そうした点は、今後 改善していきますが、ひとまず今の時点で発表いたします。 また、この資料に登場する各種プログラムはプログラムの更新によって、資料 で示したものと必ずしも同じ手順や画面にならない可能性があります。
  4. 4. データの処理に用いるPCについて この資料で説明するデータの処理は、Windows OSの64bit版(Windows7, Windows8, Windows8.1, Windows10)という動作環境の下、おこなっていま す。 これ以外のWindows OSの32bit版(32bit版は一部の処理でメモリ不足と エラーが出てしまいます)をはじめ、MacやLinux環境での動作までは対応でき ておりませんので、あらかじめ御理解ください。 ただし、MacやLinux環境でも64bit版であれば環境さえ構築すれば、同様の 手順で各種データを作成することができます。
  5. 5. データの処理に用いるプログラムとそのバージョンについて この資料では、それぞれ次のバージョンのプログラムを使用しています。 • VisualSFM version 0.5.26 • MeshLab version 1.3.3 • CloudCompare version 2.6.2 • QGIS version 2.10.1
  6. 6. 謝辞 この資料は、次の科研費により得た研究成果の一部をもとにしています。 • JSPS科研費26870764 • JSPS科研費25292213
  7. 7. 1-1 自己紹介 名前:山口 欧志(やまぐち ひろし) 専門:景観考古学(文化遺産のデジタル資料化とこれを活用した古代社会の景観研究) フィールド:日本、モンゴル国、ウズベキスタン共和国 所属:立命館大学アート・リサーチセンター 仕事内容:小型文化遺産の3Dデジタルアーカイブと活用法の体系化
  8. 8.  撮影した画像から、地図を作る方法を身につける。 (ドローンで撮影した画像だけでなく、3~5mほどの高さから撮影した画像にも使える方法)  関連する知識や情報を得る手段を知る。 1-2 このハンズオンの目標
  9. 9. テクスチャ付きメッシュ 位置情報をもった点群 GISデータ 3Dモデル このハンズオンでつくるもの
  10. 10. ドローンを使った空撮 1-3 撮影画像から地図作成までの流れ GISを使ったいろいろな処理 このハンズ オンが扱う 主な範囲
  11. 11. ドローンを使った空撮 ドローンを使った空撮と、SfM-MVSの利用可能性の参考文献 ドローンを使った撮影と、SfM-MVSの利用可能性については、 たとえば、以下などが参考になります。 内山庄一郎 ・井上 公 ・鈴木比奈子2014 「SfM を用いた三次元モデルの生成と災害調査への活用可能性に関する研究」 防災科学技術研究所研究報告 第81号 p.37-60 http://dil-opac.bosai.go.jp/publication/nied_report/PDF/81/81-4uchiyama.pdf (2015年11月15日確認) ※(以降のスライドに登場する全てのURIは、2015年11月18日に確認しました)
  12. 12. 1 はじめに 1-1 自己紹介 1-2 このハンズオンの目標 1-3 撮影画像から地図作成までの流れ 1-4 このハンズオンのメニュー 2 3次元モデルの作成 2-1 SfMとMVSを使った3次元モデルの概要 2-2 Visual SFMとMeshLabとCloudCompareのインストール 2-3 Visual SFMを使った3次元モデル作成と出力 3 3次元モデルのテクスチャー貼り 3-1 MeshLabによる点群からサーフェス(面)の作成 3-2 MeshLabによるサーフェスへのテクスチャー貼り 4 3次元モデルへの位置情報追加 4-1 CloudCompareを使った3次元モデルへの位置情報追加(点群編) 4-2 CloudCompareを使った3次元モデルへの位置情報追加(サーフェス編) 4-3 GISデータとしての出力 1-4 このハンズオンのメニュー
  13. 13. 2 3次元モデルの作成 2-1 SfMとMVSを使った3次元モデルの概要 2-2 Visual SFMとMeshLabとCloudCompareのインストール 2-3 Visual SFMを使った3次元モデル作成と出力 2 3次元モデルの作成
  14. 14. 2 3次元モデルの作成 2-1 SfMとMVSを使った3次元モデルの概要 2-1 SfMとMVSを使った3次元モデルの概要
  15. 15. 1 SfM-MVSの位置付け 2 SfM 3 MVS 3 SfM-MVSの代表的なプログラム 4 現状の課題 5 概要のまとめ 2-1 SfMとMVSを使った3次元モデルの概要
  16. 16. いきなりSfM-MVSのお話をする前に、 考古学や文化遺産の調査研究に携わる僕にとってのSfM-MVSの位置付けを確認します。 2-1-1 SfM-MVSの位置付け
  17. 17. 文化遺産の記録方法(例えば、、) • アナログ • テキスト • スケッチ • 実測 • フィルム写真撮影 • デジタル • デジタル写真撮影 • デジタル写真測量 • SfM-MVS(Structure from Motion, Multi-View Stereo) • パノラマ画像 • 動画撮影 • 3Dレーザー計測 • GNSS(Global Navigation Satellite System(s)):汎地球航法衛星システム
  18. 18. 考古学や文化遺産の調査研究にとってSfM-MVSは、、  文化財や文化遺産を次世代に伝えるために。  数ある方法のひとつ。  使うことが目的ではない。  対象について、深く知り、考えるために使う。 この方法に拘らず、常に最適な方法を模索しつづける。 考古学は、遺跡を掘るだけでなく、 発掘前・発掘中・発掘後の遺物・遺構・遺跡の記録とそれらの活用も重要
  19. 19. 2-1-2 SfM  SfM(Structure from Motion) 撮影した動画や画像から、撮影位置やカメラのパラメータを求め、 被写体の粗い3次元点群を復元する技術。
  20. 20. 2-1-3 MVS  MVS(Multi View Stereo) SfMによって得られた粗な点群とカメラのパラメータと画像を利用して、密な3次元モデ ルを作成し、これに対してテクスチャーを貼る技術。
  21. 21. 2-1-4 SfM-MVSの代表的なプログラム 名称 機能 価格 操作の手軽さ PhotoScan Pro PhotoScan Standard ◎ ○ ○$549 ◎$59 ◎ Pix 4D ◎ ※空撮Drone →地形復元向け ×$1990 ○ Visual SFM with PMVS2/CMVS + MeshLab ◎ 無料 僕には最初の環境整備 が少し難しかった この他にOpenDroneMapやOpenMVGなどもあります。
  22. 22. Photoscanの画面
  23. 23. Pix4Dの画面
  24. 24. VisualSFMの画面
  25. 25. CMPMVSで立体視動画 CMPMVSについては、こちら↓ http://ptak.felk.cvut.cz/sfmservice/websfm.pl?menu=cmpmvs
  26. 26. 2-1-5 現状の課題 • 照明:色や露光の最適化 • 省力化:撮影から3次元モデル作成までの手間 • 処理速度:たくさんの写真を扱うと、時間がかかる • 標準化:データ形式、メタ情報、点群密度の検討 • 公開:ライセンス、オープンデータ化
  27. 27. 2-1-6 概要のまとめ  目的や条件によって最適な道具立ては異なる。  SfM-MVSは数ある道具の1つ。  SfM-MVSは誰もが導入できる!  自らの手でデジタル資料化できる!
  28. 28. 2 3次元モデルの作成 2-2 Visual SFMとMeshLabとCloudCompareのインストール 2-2 Visual SFMとMeshLabとCloudCompareのインストール
  29. 29. 2-2-1 VisualSfMのインストール http://ccwu.me/vsfm/ インストールガイド http://ccwu.me/vsfm/install.html 自分の作業環境に合ったバー ジョンをダウンロード 可能であれば、64bit版をダウ ンロード。 VisualSFMはオープンソース じゃないけれど、 商業目的以外なら自由に使える。 文字通り、視覚的に分かりや すく、SfMを実行するプログラ ム。別途プログラムを追加す れば、MVSも実行できる。
  30. 30. ダウンロードして解凍 http://ccwu.me/vsfm/ ダウンロードしたファイルを解凍すると、 ディレクトリ「VisualSFM_windows_64bit」ができる。
  31. 31. 解凍してできたディレクトリをCドライブ直下にコピー ディレクトリの場所は、「C:¥VisualSFM_windows_64bit」 になる。
  32. 32. この「VisualSFM~」のディレクトリに、MVS用のファイルをコピーする この場所に、cmvs.exeと、pmvs.exeと、genOption.exeと、pthreadVc2.dll をコピーする。これらのファイルは、PMVS2/CMVS実行プログラムから得る。
  33. 33. URI https://code.google.com/p/osm- bundler/downloads/detail?name=osm- bundler-pmvs2-cmvs-full-32-64.zip “OSM-bundler”で検索するか、https://goo.gl/8LMPFPでもOK PMVS2/CMVS実行プログラムのダウンロード
  34. 34. ダウンロードしたファイルの解凍する ダウンロードしたファイルを解凍すると、以下の4つができる。 次に、このうちのディレクトリ「osm-bundlerwin64」を開く。
  35. 35. osm-bundlerWin64¥software を開く cmvsとpmvsがあることを確認 「osm-bundlerwin64」の中にある「software」を開くと、 「cmvs」と「pmvs」があることを確認する。
  36. 36. cmvs¥binに移動してcmvs.exeをコピー ディレクトリ「cmvs」の中にあるディレクトリ「bin」に移動して、 cmvs.exeをコピーする。
  37. 37. ディレクトリ「C:¥VisualSFM_windows_64bit」を 開いてcmvs.exeをペースト
  38. 38. osm-bundlerWIN64¥software¥pmvs>binに移動して、 全てのファイルをコピー 全てのファイルをコピー
  39. 39. ディレクトリC:¥VisualSFM_windows_64bitを開いて、 先ほどの3つのファイルをペースト VisualSFMのプログラムで、MVSまで処理できるようになった。
  40. 40. Tips: Visual SFMが起動しない場合 起動しない場合は、MSVC2010 runtimeをインストールしてください。 64bit OS の方はこちらから、 http://www.microsoft.com/en-us/download/details.aspx?id=13523 32bit OS の方はこちらから、 http://www.microsoft.com/en-us/download/details.aspx?id=8328 インストールプログラムをダウンロードすることができます。
  41. 41. 2-2-2 MeshLabのインストール http://meshlab.sourceforge.net/ からダウンロードする。 MeshLabはオープンソースの点群処理プログラムです。 Winwdos,Mac,Linuxどれでも使える。 こちらも64bit版をインストールしてください。
  42. 42. 2-2-3 CloudCompareのインストール http://www.danielgm.net/cc/ からダウンロードしてください。 CloudCompareはオープンソースの点群処理プログラムで、 名前のとおり、点群間の比較に強い。 Winwdos,Mac,Linuxどれでも使える。 こちらも64bit版をインストールしてください。
  43. 43. 2 3次元モデルの作成 2-3 Visual SFMを使った3次元モデル作成と出力 2-3 Visual SFMを使った3次元モデル作成と出力
  44. 44. 2-3 Visual SFMを使った3次元モデル作成と出力 VisualSFMを使った処理の流れ 1 データの準備 2 画像データを開く 3 画像のマッチング 4 撮影位置の計算と粗い点群の作成 5 バンドル調整 6 密な点群の作成 7 結果の確認
  45. 45. 2-3-1 データの準備(注意事項) • 作業用のデータを格納する場所と名前は、半角英数のみで構成されるディ レクトリに! • 日本語や全角文字の入ったディレクリだと、うまく動作しない可能性が高くな ります。 • お薦めは、C(D)ドライブの直下にVisualSFM用のディレクトリを作り、その 中に各プロジェクト用のディレクトリを作成、そしてそのプロジェクトの元デー タの保管場所と分かるような名前のディレクトリを作成してコピー。 C:¥SfM_MVS¥handson¥raw 例
  46. 46. 2-3-1 データの準備(ダウンロード) • 今回のWorkshopで使用する画像群(39枚)は以下にあります。 • https://www.dropbox.com/s/qmilpebrkveekcr/raw39pic.zip?dl=0 (約245MB) (※ただし、この画像群を使うと、撮影数が少なく、また撮影位置が適切で はないので、モデルが少し歪みます。) • 歪みの少ないモデルを作成できる画像群はこちら。上の約3.5倍の枚数(135枚)があります。ただし、 大きなデータなので、処理も重くなります。 • https://www.dropbox.com/s/kg035s4cebwegma/raw.zip?dl=0 (約850MB) 「raw39pic.zip」をダウンロードして、解凍してください。
  47. 47. 2-3-1 ダウンロードしたデータをコピーして、処理用のデータを用意 C:¥SfM_MVS¥handson¥data例 39枚の写真があるはず。 ・解凍してできたディレクトリ「raw39pic」を「C¥SfM_MVS¥handson」に移動。 ・次にディレクトリ「raw39pic」をコピーして、コピーしたできたディレクトリを「data」と名 前を変更し、処理用のデータを用意する。
  48. 48. 2-3-2 VisualSFMを起動→画像データを開く • 「C:¥VisualSFM_windows_64bit」にあるVisualSFM.exeを起動 • File > Open+Multi Imagesを選択して、対象の画像群を選択 • 今回は、先ほど用意した「C:¥SfM_MVS¥handson¥data」の画 像群を全て選択。 VisualSFMで対象画像群を開く
  49. 49. 2-3-2 VisualSFMを起動→画像データを開いた結果 右側に表示されているLog Windowを表示するには、 Tools->Log Window
  50. 50. 2-3-3 VisualSFMで画像のマッチング 特徴点の抽出と、画像間の対応点の探索 SfM > Pairwise Matching > Compute Missing Matchを選択 あるいは、 赤丸で囲ったアイコンを左クリック
  51. 51. 2-3-3 VisualSFMで画像のマッチング 特徴点の抽出と、画像間の対応点の探索 SfM > Pairwise Matching > Compute Missing Matchを選択 すると、 ログウィンドウ上に処理内容が 表示される
  52. 52. 2-3-4 撮影位置の復元と粗い点群の生成 撮影位置の推定と粗い点群の生成、カメラパラメータの計算 SfM > Reconstruct Sparseを選択 あるいは、 赤丸で囲ったアイコンを左クリック しばらく(ラップトップPCだと10分くらい)待つ。
  53. 53. 2-3-5 バンドルの調整 Run Bundle Ajustmentを選択,バンドル調整 53 あるいは、 赤丸で囲ったアイコンを左クリック
  54. 54. 2-3-6 密な点群の生成 PMVS/CMVSで密な点群の生成 SfM > Reconstruct Denceを選択,ファイル名を付けて保存。 今回は、ディレクトリ「C:¥SfM_MVS¥handson¥data」に「cmvs」と名前を付けて保存。 しばらく(ラップトップPCだと30分くらい)待つ。 結果は、「C:¥SfM_MVS¥handson¥data¥cmvs.nvm.cmvs」に出力される。 あるいは、 赤丸で囲ったCMVSアイコンを左クリック
  55. 55. 2-3-7 作成した3次元モデルの確認 処理が終了したら、Tabキーで表示方法を切り替えて結果を確認する。
  56. 56. 3 3次元モデルのテクスチャー貼り 3-1 MeshLabによる点群からサーフェス(面)の作成 3-2 MeshLabによるサーフェスへのテクスチャー貼り 3 3次元モデルのテクスチャー貼り
  57. 57. 3 3次元モデルのテクスチャー貼り 3-1 MeshLabによる点群からサーフェス(面)の作成 3-1 MeshLabによる点群からサーフェス(面)の作成
  58. 58. 3-1 MeshLabによる点群からサーフェス(面)の作成 MeshLabによる処理の流れ 1 データを読み込む 2 画面の表示設定 3 各点の法線ベクトルを計算 4 操作方法:拡大と縮小・拡大、パン 5 不要なデータの削除 6 サーフェス(面)の生成 7 不要なサーフェス部分を削除する
  59. 59. 3-1-1 MeshLabを起動→データを読み込み MeshLabで3次元データを開く 今回は、予め作っておいたデータセットを使います。 https://www.dropbox.com/s/dyx8wzme2pqvj95/sample001.zip?dl=0 からダウンロードして解凍し、できたディレクトリ「sample001」を 「C:¥SfM_MVS¥handson」に入れてください。 先ほどの「2-3 Visual SFMを使った3次元モデル作成と出力」で自分で作成した データセットを使いたい場合には、「C:¥SfM_MVS¥handson¥data」の中にある ディレクトリ「cmvs.nvm.cmvs」を「C:¥SfM_MVS¥handson」にコピーして、 「sample001」とディレクトリ名を変更して使ってください。
  60. 60. 3-1-1 MeshLabを起動→データの読み込み MeshLabで3次元データを開く File > Open Projectを選択,VisualSFMで作成した「bundle.rd.out」を選択 今回は、予めつくっておいた.bundle.rd.outを選択します。 場所は、先ほどのディレクトリ「sample001」の中の>sample001.nvm.cmvs>00
  61. 61. 3-1-1 MeshLabを起動→データの読み込み MeshLabで3次元データを開く 続いて、image List fileを選択するよう、指示が表示される 今回は、予めつくっておいた「list.txt」を選択 場所は、同じく「sample001>sample001.nvm.cmvs>00」 すると、VisualSFMで作成した3次元の点群が表示される。
  62. 62. 3-1-2 画面の表示設定 開いているファイルや、処理の内容などを表示(非表示に)するには、 View > Show Layer Dailog を選択 黄色になっているレイヤーが、選択されているレーヤーです。 ここで選択されているレイヤーが処理対象になります。
  63. 63. Tips レイヤーの削除 たとえば選択したレイヤーを削除したいときには、 選択したレイヤーの上で右クリックを押すと表示されるメニューで Delete Current Meshを選択 すると、選択したレイヤーを削除することができます。
  64. 64. 3-1-3 各点の法線ベクトルを計算 Filters > Normals, Curvatures and Orientation > Compute normals for point setsを選択 パラメータは、上から10、0。 Flip normal w.r.t にチェックを入れる。 Applyをクリックして計算終了後、 Closeで閉じる。
  65. 65. 3-1-4 操作方法:拡大と縮小・拡大、パン 回転:左クリックを押したまま、マウスを移動 縮小拡大:Altキーを押しながらマウスを前後に移動 パン(移動):Ctrlキーを押しながらマウスを移動
  66. 66. 3-1-5 不要なデータの削除 Edit > Select Vertexesを選択,点群の不要な部分を四角形に囲って選択する。 次に右下図にあるDelete the current set of selected verticesのアイコンをクリックして削除する。 不要な部分の判断は、次のスライドを参照してください。 不要な部分を完全に削除することは難しいので、おおよそで構いません。
  67. 67. Tips undo(取り消し)機能はありません。 MeshLabには今のところ (Ver.1.3.3)、undo(取り消し)機能 やredo(繰り返し)機能はありません。 データを消しすぎた場合や、誤った処理をしてしまった際には、 該当処理以前のファイルをインポートして、再度処理します。
  68. 68. Tips 不要な部分を加工コツ 不要な部分を囲うには、ちょっとしたコツが必要。 最初の1点目(たとえば左上)でクリックしたまま2秒ほど待つ。 それから2点目(右下)のほうにポインタをずらしていくイメージ。 残したい範囲以外を選択したい場合には、残したい範囲を選択→反転! 反転させるには、Filters > Selection > Invert Selection 反転すると、選択部分(赤の範囲)が反転する 表示されたウィンドウで、メッシュとポイントについて、どれを選択する/選択しないのか決める。 この場合は、点群のみを選択したいので、Invert Vertciesのみにチェックを入れて、Applyして、Closeをクリック。 すると、残したい範囲以外を選択することができる。
  69. 69. 参考資料(対象地:帝塚山大学生駒キャンパス中庭の様子) 北から 東から 西から 南から 通常はデータ処理する人も現地を確認しているはずなので不要部分は分かるはずですが、 今回は、現地確認を省いているため不要部分が不明です。 そこで、現地の様子が分かるこの図を参考に、不要部分の検討をつけてください。 特に空中に不要なデータがあります。
  70. 70. 3-1-6 サーフェス(面)の生成 Edit > Select Connected conponents in a region を選択 続いて、Filters > Point Set > Surface Reconstruction:Poissonを選択 パラメータは、とりあえず、上から12,10,2,1 「Apply」をクリックしてちょっと待つ。処理が完了したら、「Close」をクリック
  71. 71. 右側のレイヤーを表示するには、メニューのView > Show layer Dialog 71
  72. 72. 3-1-7 不要なサーフェスができたら、選択して削除する Edit > Select Faces in a rectangular regionを選択,サーフェスの不要な部分を囲って選択する。
  73. 73. 3-1-7 不要なサーフェス部分を削除する。 次に下図にあるDelete the current set of selected faces and..のアイコンをクリックして削除する。 不要な部分を完全に削除することは難しいので、おおよそで不要構いません。
  74. 74. Tips 不要なサーフェスを囲うコツ 残したい範囲以外を選択したい場合には、残したい範囲を選択→反転! 反転させるには、Filters > Selection > Invert Selection 反転すると、選択部分(赤の範囲)が反転する 表示されたウィンドウで、サーフェスとポイントについて、どれを選択する/選択しないのか決める。 この場合は、メッシュのみを選択したいので、Invert Facesのみにチェックを入れて、Applyして、Closeをクリック。 すると、残したい範囲以外を選択することができる。
  75. 75. サーフェスの作成結果 サーフェスを作成できた。
  76. 76. 3 3次元モデルのテクスチャー貼り 3-2 MeshLabによるサーフェスへのテクスチャー貼り 3 3次元モデルのテクスチャー貼り
  77. 77. 3-2 MeshLabによるサーフェスへのテクスチャー貼り MeshLabによる処理の流れ 1 非マニホールドエッジの削除 2 テクスチャーの貼り付け 3 テクスチャーの修正 4 サーフェスの保存 5 プロジェクトの保存
  78. 78. 3-2-1 非マニホールドエッジの削除 作成したサーフェスにテクスチャーを貼り付けようとすると、“manifold faces”..といったエラー表示が出る ことがあります。そこで、この非マニホールドエッジ(要素を正しく接続できていないエッジ)を含むメッシュを 事前に削除しておきます。 非マニホールドエッジを削除するには、メニューから、Filters > Selection > non manifold edges で選択 して、 ウィンドウが表示されるので「Apply」→「Close」の順にクリック。 そして、 Filters > Selection > Delete Seleced Faces で削除します。 エラー表示
  79. 79. 3-2-2 テクスチャの貼り付け1 Filters > Texture > Parametrization from registered rastersを選択 パラメータは以下の通りにして、「Apply」→計算完了後→「Close」
  80. 80. 3-2-2 テクスチャの貼り付け2 Filters > Camera > Project active rasters color to current mesh, Filling the textureを選択 パラメータは以下の通りにして、「Apply」→ちょっと待って計算完了後→「Close」 最初に読み込んだ、outのファイルに、画像のアングルや位置が含めてあるので、 元画像のデータをテクスチャーとして利用できる。
  81. 81. サーフェスにテクスチャを貼り付けることができた。
  82. 82. 3-2-3 テクスチャの修正 Filters > Texture > Parametrization + texturing from registered rastersを選択 パラメータは右下図の通り。 「Apply」をクリックしてちょっと待つ。処理が完了したら、「Close」をクリック
  83. 83. 3-2-3 テクスチャの修正結果 不要な部分のテクスチャーを黒く修正することができた。 テクスチャをもったメッシュの完成!
  84. 84. 3-2-4 サーフェスの保存 保存したいサーフェスのレイヤーを左クリックして選択 メニューからFile > Export Mesh Asを選択 ファイルの保存場所は 「C:¥SfM_MVS¥handson¥sample001¥sample.nvm.cmvs¥00」を選択。 ↑のディレクトリは、最初にプロジェクトとして読み込んだ「bundle.rd.out」のある場所。 任意の名前(今回はtexture_mesh.ply)を付けて保存。 パラメータは右下の図の通り。最後にOKをクリック。
  85. 85. 3-2-5 プロジェクトの保存 Meshlabの作業環境をそのまま保存したいときには「プロジェクト」を保存する。 メニューからFile > Save Projectを選択。 プロジェクトの保存場所は、 「C:¥SfM_MVS¥handson¥sample001¥sample.nvm.cmvs¥00」を選択。 ↑のディレクトリは、最初にプロジェクトとして読み込んだ「bundle.rd.out」のある場所。 まずはレイヤー名「0 model」の点群ファイルを「point.ply」として保存する。 保存時のパラメータは下図の通り。
  86. 86. 3-2-6 プロジェクトの保存 続いて、プロジェクトの任意の名前(今回はhandson)を付けて保存する。 MeshLabを終えるには、メニューから、File > Exit を選択する。
  87. 87. 注意点 左図を見ると分かるとおり、モ デルは周辺の歪みが大きくな る。 SfM-MVS用の写真を撮影す る際には、予めモデル作成し たい対象範囲よりも広め(一 回りもしくは二回りほど)の範 囲を撮影しておくことが肝要。 赤色枠部分の図を作りたいなら、黄色枠ぐらいの 範囲の写真が欲しいところ。
  88. 88. 4 3次元モデルへの位置情報追加 4-1 CloudCompareを使った3次元モデルへの位置情報追加(点群編) 4-2 CloudCompareを使った3次元モデルへの位置情報追加(サーフェス編) 4-3 GISデータとしての出力 4 3次元モデルへの位置情報追加
  89. 89. 4 3次元モデルへの位置情報追加 4-1 CloudCompareを使った3次元モデルへの位置情報追加(点群編) 4 3次元モデルへの位置情報追加
  90. 90. 4-1 CloudCompareを使った3次元モデルへの位置情報追加(点群編) CloudCompareによる処理の流れ 1 MeshLabで点群の読み込み 2 不要な点群の削除 3 CloudCompareで3次元データを開く 4 CloudCompareの基本的な操作方法 5 点群のNormalsを計算する 6 点群の表示の大きさを調整する 7 CloudCompareで地球上の位置情報を与える ・地理院地図で座標を調べる ・Aligns..を使って、地球上の位置を与える 8 データの保存 9 GISデータとして出力 ・ラスター ・ベクター
  91. 91. 4-1-1 3次元モデルへの位置情報追加(点群編) File > Open Projectを選択,VisualSFMで作成した.plyファイルを選択 今回は、予めつくっておいたoption-0000.plyを選択 このファイルは、MeshLabで使ったディレクトリ「sample001」の中にあります。 詳しい場所は、「sample001>sample001.nvm.cmvs>00>models」
  92. 92. 4-1-2 MeshLabで3次元データを開いて不要な部分を削除 MeshLabでoption-0000.plyを開いたら、不要な部分を削除する。 削除し終えたら、名前は変えずに保存する。保存する場所も同じ。 「sample001>sample001.nvm.cmvs>00>models」 92 データを保存するときのパラメータを注意 Tips:CloudCompareのSegment という機能を使って削除することもできる。
  93. 93. 4-1-3 CloudCompareで3次元データを開く CloudCompareで3次元データを開く File > Openを選択,MeshLabで編集した先ほどのoption-0000.plyを選択 場所は、「sample001>sample001.nvm.cmvs>00>models」 93 データを開くときのパラメータには注意
  94. 94. 4-1-4 CloudCompareの基本的な操作方法 回転:左クリックしながらポインタを動かす 移動:右クリックしながらポインタを動かす 拡大:マウスの中ボタンを前後に動かす 光源位置の変更:Ctrlを押しながら、右クリックしながらポインタを動か す
  95. 95. 4-1-5 点群のNormalsを計算する 左側のレイヤーが表示されたウィンドウのうち、 雲のアイコンが表示された「option-0000」を左クリックして選択 メニューから、Edit > Normals > Compute 表示されるパラメータのまま→「OK」をクリック。
  96. 96. 4-1-6 点群の表示の大きさを調整する ウィンドウ左下のPropertiesの下の方にある「Point size」の数値を 2または3にして、点群を見やすくする。
  97. 97. 4-1-7 CloudCompareで地球上の位置情報を与える 1.国土地理院の地理院地図で座標を調べる
  98. 98. 地理院地図で座標を調べる 出典:地理院地図(国土地理院) (http://maps.gsi.go.jp/) 地理院地図で“帝塚山大学”と検索 左下のアイコンをクリックして、写真を選ぶ (本当は現地で測量した座標があれば良いのだけれど、無い場合はこんな方法で座標を取得します。)
  99. 99. 地理院地図で座標を調べる 出典:地理院地図(国土地理院) (http://maps.gsi.go.jp/) 地理院地図上で、CloudCompareにもある地点を探してクリック、経緯度(10進法)得る。
  100. 100. 地理院地図で座標を調べる 出典:地理院地図(国土地理院) (http://maps.gsi.go.jp/) 今回はこの図を参考に、point3,4,6の地点のおよその座標を得て、コピーする。 テキストエディタか、適当な表計算ソフトを利用して、座標を貼り付ける。 Point3 Point4 Point6
  101. 101. Point3 Point4 円の中心が各ポイントの位置
  102. 102. Point6 円の中心がポイントの位置
  103. 103. 地理院地図で座標を調べる 出典:地理院地図(国土地理院) (http://maps.gsi.go.jp/) 貼り付けた数値は経緯度なので、UTM座標に変換する。 (次のスライドに使う座標の一覧があります。) 今回は、NCM社さんが公開している Web上の変換プログラムを利用させても らいました。 http://asp.ncm- git.co.jp/QuickConvert/BL2UTM.aspx
  104. 104. 座標一覧 point 3,566188.812,3838455.093,175.000 point 4,566202.573,3838452.198,174.900 point 6,566220.545,3838512.701,174.584 今回は、point3.4.6を使います。 (予備として、座標を6点くらい得ておくと、安心。)
  105. 105. 4-1-7 CloudCompareを使って、地球上の位置を与える 左側のウィンドウに表示されているレイヤーから、 位置を与える点群「option-0000 - Cloud」をクリック
  106. 106. Aligns..を使って、地球上の位置を与える ウィンドウの上の方に表示されているAligns…のアイコンをクリック
  107. 107. Aligns..を使って、地球上の位置を与える 座標を付ける点(先ほど取得したpoint3.4.6の地点)を左クリック
  108. 108. Aligns..を使って、地球上の位置を与える Point3.4.6をクリックしたら、下の鉛筆アイコンをクリックして、先ほど調べた対応する座標を入力
  109. 109. Aligns..を使って、地球上の位置を与える すると、座標が大きすぎるので、オフセットをかけるためのウィンドウが表示される。。ので表示のとおりに。
  110. 110. Aligns..を使って、地球上の位置を与える Alignのボタンを押してみる。 うまく行けば、これくらいのRMS値になる。あくまでも目安です。
  111. 111. Aligns..を使って、地球上の位置を与える 左端のアイコン(Set top View)をクリックして、真上から表示。 良さそうなら、resetの右隣にあるチェックアイコンをクリック。ダメならreset
  112. 112. CloudCompareを使って、地球上の位置を与える 地球上の座標を追加できた。 右下のスケール表示も正しい。
  113. 113. 4-1-8 データの保存 色々な形式で保存できる。今回は.plyのバイナリ形式で保存しておく。 左のウィンドウで保存するメッシュを左クリックして選択後、 File > Save として、.plyのバイナリ形式で保存しておく(テキストデータとして保存することもできる)。 保存場所は「C:¥SfM_MVS¥handson¥sample001¥sample.nvm.cmvs¥00」で、 保存ファイル名は、任意でよいがここでは「georeferenced_point」としておく。
  114. 114. 4-1-9 GISデータとして出力 やっぱり地図資料として使いたい。 Tools > Projection > Rasterizeを選択
  115. 115. GISデータとして出力(ラスターデータ) Tools > Projection > Rasterizeを選択, Update gridをクリックして出力対象のレイヤーを表示、 各種設定を変更してRasterのボタンをクリックして出力 Geotiff形式で保存 ラスターの高さを出力 解像度とラスタのサイズ
  116. 116. GISデータとして出力(ラスターデータ) ファイルの保存場所とファイル名を尋ねられるので、「C:¥SfM_MVS¥handson」に GISデータ用のディレクトリ「gis」を作成して、名前を付けて保存。
  117. 117. GISデータとして出力(ベクタ-データ) ウィンドウに新しく点群のレイヤーが追加される Tools > Projection > Rasterizeを選択, Update gridをクリックして出力対象のレイヤーを表示、各種設定を変更して出力 min heightにチェックを入れてCloudボタンをクリック 点群の間隔(0.1m)
  118. 118. GISデータとして出力(ベクタ-データ) 作成した点群をクリックして選択、File > Saveを選択, 必要なファイル形式を選択して名前を付けて保存。
  119. 119. QGISで表示 GISで使えます。
  120. 120. 4 3次元モデルへの位置情報追加 4-2 CloudCompareを使った3次元モデルへの位置情報追加(サーフェス編) 4 3次元モデルへの位置情報追加
  121. 121. 4-2 CloudCompareを使った3次元モデルへの位置情報追加(サーフェス編) CloudCompareによる処理の流れ 1 CloudCompareで3次元データ(サーフェス)を開く 2 CloudCompareで地球上の位置情報を与える ・地理院地図で座標を調べる(点群編と同じ内容なので省略) ・Aligns..を使って、地球上の位置を与える 3 オルソ表示 4 GISデータとして出力 ・ラスター ・ベクター
  122. 122. 4-2-1 CloudCompareで3次元データ(サーフェス)を開く CloudCompareのメニューから、 File > Open Projectを選択,VisualSFMで作成した.plyファイルを選択 今回は、先のセッションで作成した「texture_mesh.ply」を選択 このファイルは、MeshLabで使ったディレクトリ「sample001」の中にあります。 詳しい場所は、「sample001>sample001.nvm.cmvs>00」
  123. 123. 4-2-2 CloudCompareを使って、地球上の位置を与える あとは点群に位置情報を与える方法と同じです。 まずは、位置情報を与えるメッシュを左クリックして選択。
  124. 124. Aligns..を使って、地球上の位置を与える Aligns…のアイコンをクリック
  125. 125. Aligns..を使って、地球上の位置を与える 座標を付ける点(先ほど取得したpoint3.4.6の地点)を左クリックすると、 赤枠に点名とローカル座標が表示される。
  126. 126. Aligns..を使って、地球上の位置を与える Point3.4.6をクリックしたら、下の鉛筆アイコンをクリックして、先ほど調べた対応する座標を入力
  127. 127. Aligns..を使って、地球上の位置を与える 左端のアイコン(Set top View)をクリックして、真上から表示。 良さそうなら、resetの右隣にあるチェックアイコンをクリック。ダメならreset
  128. 128. Aligns..を使って、地球上の位置を与える 地球上の座標を追加できた。 右下のスケール表示も正しい。
  129. 129. Tips: Align後にメッシュが真っ白くなったら… ウィンドウの一番上に並んでいるメニューのDisplay > Refresh を選択するか、 左のウィンドウで保存するメッシュを左クリックして選択後、 File > Save として、.plyのバイナリ形式で保存しておく。その後、File > Open で再度ファイルを開けば解決。
  130. 130. 4-2-3 オルソ表示 初期設定でウィンドウ左端に並んでいるアイコンのうち、上から6番目のアイコンをクリックして、 Orthographic projection を選択する。
  131. 131. 4-2-4 オルソ画像の出力 ウィンドウの一番上に並んでいるメニューのDisplay > Render to Fileから、 画像の解像度などを決め、保存する場所を選び、名前を付けて画像を出力できる。
  132. 132. 4-2-4 オルソ画像の出力結果
  133. 133. 今日はここまで。 お疲れさまでした。

×