Drogger MJpeg, RealityScan 解析処理例
生成されたモデル
Skethfabリンク
1Mtrisに簡素化 + 適当にクリーンアップ
8kテクスチャ5枚
RTK-Based GoPro Photogrammetry via RealityScan - 3D model by Kana (@kana2205) [9a772c1]
MJpegを使用したことによる効果
画像アライメントにかかる時間が大幅に減少した。ミドルスペックPCで4000枚の4k画像が1時間足らずで処理できた。
大半の画像が、初回のアラインで正確に整列した。
画像の初期位置が正確に与えられるため、アライメント失敗画像の発見がしやすい。
RTK-GNSSの位置情報から、回転調整なしでモデルの水平が取れた。
同様に、モデルの適切なスケールが得られた。
正確な地理座標によるモデル位置
以下の注意点
あくまで事例であるため、設定等の正解を示すものではない。
焦点距離の初期値などは適当。
GoPro撮影設定
撮影機材:: GoPro Hero 13
撮影設定:: フルフレーム、4K、30FPS
撮影時間:: 22:18
動画ファイルサイズ:: 7.02GB
GNSSログファイルサイズ:: 1.73MB
DroggerGPS設定
受信機:: RZS.D (Gパッケージ)
GNSS:: 使用可能なものすべて
計測・更新レート:: 10Hz
RTK基準局:: Softbank ALES
MJpeg処理
使用バージョン:: Ver 0.4.0
同期方法:: Auto (GoPro HERO 13)
出力間隔:: 10フレームごと
画像品質:: 高
画像回転:: なし
出力座標系:: 平面直角座標
高さにJPGEO2024の標高を使う:: 有効
出力画像の枚数:: 4013枚
出力画像の解像度:: 3840 x 3360
出力画像1枚のファイルサイズ:: 3~4MB程度
出力画像全体のファイルサイズ:: 12.9GB
flightlog処理
PythonスクリプトでPitch角の改変
繰り返すが、下記設定が正解なのかは不明。RealityScanのorientationの読み取りは課題。
"""
flightlog.txt の Pitch 列を 90 - x に変換して
flightlog_converted.txt として保存するスクリプト
"""
from pathlib import Path
INPUT_FILE = Path("flightlog.txt")
OUTPUT_FILE = Path("flightlog_converted.txt")
def convert_pitch_line(line: str) -> str:
"""1 行分を変換して返す(ヘッダ行はそのまま返す)"""
# ヘッダや空行はそのまま
if not line.strip() or line.lstrip().startswith("#"):
return line.rstrip("\n")
parts = line.rstrip("\n").split(",")
if len(parts) < 9:
# 想定外フォーマットは変更せずに返す
return line.rstrip("\n")
try:
pitch_val = float(parts[8])
new_pitch = 90.0 - pitch_val
# 元と同じ小数点以下 3 桁で書式化
parts[8] = f"{new_pitch:.3f}"
except ValueError:
# 数値変換できなければ変更しない
pass
return ",".join(parts)
def main() -> None:
if not INPUT_FILE.exists():
raise FileNotFoundError(f"{INPUT_FILE} が見つかりません")
with INPUT_FILE.open("r", encoding="utf-8") as fin, \
OUTPUT_FILE.open("w", encoding="utf-8", newline="\n") as fout:
for line in fin:
fout.write(convert_pitch_line(line) + "\n")
print(f"変換が完了しました: {OUTPUT_FILE.resolve()}")
if __name__ == "__main__":
main()水平精度と鉛直精度の改変
RTK-floatだけでなくsingleも含むため、`2.00,2.00,2.50` から`5.00,5.00,10.00`、に変更。変更はメモ帳で開いて置換した。
RealityScan処理
設定変更は、デフォルトからの変更点のみ記す。
Application Settings
プロジェクト/出力座標系:: JGD2011 Ⅸ系
Alignment Settings
Preselector features:: 20000
Distortion model:: Division
Import Flight Log
File format
`Name, X(East),Y(North),Alt,X Accuracy,Y Accuracy, Alt Accuracy, Yaw, Pitch, Roll`
Coordinate system
epsg:6677 JGD2011 Ⅸ
Accuracy settings source
From file and edit missing definitions
Use flight log orientation
Yes
Selected inputs
Prior calibration
Calibration group:: 1
Prior:: Approximate
Focal length(35mm):: 17.0
Prior lens distortion
Lens group:: 1
Alignment処理
初回Alignment処理時間:: 55m25s
初回Alignment枚数:: 4012/4013
全体の処理時間:: 180min程度
最終的なAlignment枚数:: 4013/4013
初回アライメントで大半が整列したものの、位置不良の画像があった。それらを一度無効化して、アラインし直した。また、橋の部分の往復箇所にControlPointを1点追加した。
再アラインやCPの追加は、撮影の最適化で省略が期待できる。
Mesh処理
Reconstruction Settings
Remove marginal triangles:: Enable
Mesh処理手順
以下の手順で、Mesh/Textureに使用する画像の枚数を減らして処理を高速化した。
`-selectImage g/[0-9]{3}[02468].jpg/`を入力して偶数番の画像のみ選択
コマンド入力後に `Ctrl+R` で画像を無効化
Preview設定でMesh生成後にReconstrucion Regionの調整。
Normal設定で処理。
メッシュの簡素化
Simplify Toolで1Mtris
Normal Mesh処理時間:: 39m38s
Texture処理
8k解像度のテクスチャを5枚
CloudCompare処理
適当に無駄を削除。
