빠른 시작
이 가이드는 MipMapEngine SDK를 빠르게 시작하는 데 도움이 됩니다. 완전한 예제 스크립트를 제공하여 몇 분 만에 첫 번째 3D 재구성 작업을 실행할 수 있습니다.
📋 전제 조건
시작하기 전에 다음을 확인하세요:
- ✅ SDK 설치 완료 (설치 가이드 참조)
- ✅ 라이선스 활성화 완료
🚀 빠른 체험: SDK 예제 스크립트 사용
SDK는 example 디렉토리에 완전한 예제와 원클릭 실행 스크립트를 제공합니다:
example/
├── 1_reconstruct_full_basic.json # 기본 재구성 예제
├── 2_group_cameras.json # 다중 카메라 그룹 예제
├── 3_custom_image_pos.json # 사용자 정의 위치 예제
├── sample-images/ # 샘플 이미지
├── Step1_Hardware_Check_EN.bat
├── Step2_License_Manager_EN.bat
├── Step3_Run_Example1_Basic_Drone_Reconstruction_EN.bat
├── Step4_Run_Example2_Multi_Camera_Groups_EN.bat
└── Step5_Custom_Image_Positions_EN.bat
첫 번째 재구성 실행
Step3_Run_Example1_Basic_Drone_Reconstruction_EN.bat
스크립트는 자동으로:
sample-images의 샘플 이미지 사용- 출력 디렉토리 생성
- 3D 재구성 프로세스 시작
- 여러 형식으로 결과 생성
🎯 예제 세부사항
예제 1: 기본 드론 재구성
가장 간단한 사용 방법으로, 표준 드론 항공 이미지에 적합합니다.
특징:
- ✅ 최소 구성, 즉시 사용 가능, 대부분의 애플리케이션에 적합
- ✅ 주요 DJI 측량 드론과 원활하게 호환
구성 파일 (1_reconstruct_full_basic.json):
{
"working_dir": "./output/reconstruct_full_basic",
"gdal_folder": "../gdal_data",
"input_image_type": 1,
"resolution_level": 3,
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},
"image_meta_data": [
{
"id": 1,
"path": "../sample-images/DJI_20250507103417_0124_V.JPG"
},
{
"id": 2,
"path": "../sample-images/DJI_20250507103421_0125_V.JPG"
}
// ... 더 많은 이미지
],
"generate_osgb": true,
"generate_3d_tiles": true,
"generate_las": true,
"generate_obj": true,
"generate_geotiff": true
}
수동 실행:
reconstruct_full_engine.exe -reconstruct_type 0 -task_json 1_reconstruct_full_basic.json
예제 2: 다중 카메라 그룹 재구성
다중 렌즈 경사 카메라 또는 다중 드론 협업 작업에 적합합니다.
Step4_Run_Example2_Multi_Camera_Groups_EN.bat
응용 시나리오:
- 🔸 5렌즈 경사 카메라 시스템
- 🔸 다중 드론 협업 작업
- 🔸 다른 초점 거리 카메라 조합
- 🔸 지상 + 항공 공동 수집
주요 구성:
{
"image_meta_data": [
{
"id": 1,
"path": "image1.jpg",
"group": "camera_1" // 카메라 그룹화
},
{
"id": 2,
"path": "image2.jpg",
"group": "camera_2" // 다른 카메라 그룹
}
]
}
예제 3: 사용자 정의 이미지 위치
고정밀 측위 또는 GPS 없는 시나리오에 적합합니다.
Step5_Custom_Image_Positions_EN.bat
응용 시나리오:
- 📍 PPK/RTK 고정밀 측위 데이터
- 📍 실내 또는 GPS 신호가 약한 환경
- 📍 위치 정확도 가중치를 사용자 정의해야 하는 경우
주요 구성:
{
"image_meta_data": [
{
"id": 1,
"path": "image.jpg",
"meta_data": {
"width": 4000,
"height": 3000,
"pos": [114.123456, 22.123456, 100.5], // [경도, 위도, 고도]
"pos_sigma": [0.03, 0.03, 0.06] // [X 정확도, Y 정확도, Z 정확도] 미터
}
}
]
}
정확도 참조:
| 측위 방법 | X/Y 정확도 (m) | Z 정확도 (m) | 응용 시나리오 |
|---|---|---|---|
| RTK/PPK 고정해 | 0.02-0.05 | 0.05-0.10 | 고정밀 측량 |
| 일반 GPS | 2-5 | 3-8 | 일반 응용 |
📊 출력 결과 보기
재구성이 완료되면 출력 디렉토리에는 다음이 포함됩니다:
- 📁
3D/- 3D 모델model-b3dm/- 3D Tiles (Cesium)model-osgb/- OSGB 형식model-obj/- OBJ 형식point-las/- LAS 점군
- 📁
2D/- 2D 제품dom_tiles/- 정사영상 타일dsm_tiles/- 디지털 표면 모델 타일geotiffs/- GeoTIFF 형식
- 📁
AT/- AT 결과 - 📁
report/- 품질 보고서 - 📁
logs/log.txt- 처리 로그
🛠️ 대화형 구성 생성기
JSON 구성 파일을 수동으로 작성하고 싶지 않다면, 대화형 도구를 사용하여 빠르게 생성할 수 있습니다:
🔧 인터랙티브 설정 생성기
아래 양식을 사용하여 설정 파일을 생성하세요:
기본 설정
처리 매개변수
좌표계 설정
출력 형식
3D 모델
포인트 클라우드
2D 정사영상
기타 형식
고급 옵션
3D 타일 옵션
2D 타일 옵션
지상 기준점 (GCP)
출력 좌표계 (선택사항)
생성된 설정 파일
아래 JSON을 다음 이름으로 저장하세요 task.json:
{
"license_id": 9200,
"working_dir": "C:/Projects/MyProject",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 2,
"coordinate_system": {
"type": 2,
"type_name": "Geographic",
"label": "WGS 84",
"epsg_code": 4326
},
"generate_obj": false,
"generate_ply": false,
"generate_osgb": true,
"generate_3d_tiles": true,
"generate_fbx": false,
"generate_las": false,
"generate_pc_ply": false,
"generate_pc_osgb": false,
"generate_pc_pnts": false,
"generate_gs_ply": false,
"generate_gs_splats": false,
"generate_geotiff": true,
"generate_tile_2D": true,
"generate_2D_from_3D_model": false,
"generate_dsm_tile": false,
"fast_mode": false,
"use_image_position_constraint": true,
"min_avali_memory_size": 16,
"output_block_change_xml": false,
"output_tie_point_las": false,
"keep_undistort_images": false,
"use_draco_compression": true,
"tex_image_type_3dtiles": 0,
"use_gcj02": false,
"image_meta_data": [
{
"id": 1,
"path": "path/to/image1.jpg"
},
{
"id": 2,
"path": "path/to/image2.jpg"
}
]
}
검증 및 실행
1. 먼저 설정 파일을 검증하세요:
task_json_check.exe -task_json task.json
2. 검증 후 재구성을 실행하세요:
reconstruct_full_engine.exe -reconstruct_type 0 -task_json task.json
🎯 첫 번째 프로젝트 사용자 정의
예제를 기반으로 자신만의 구성 파일을 만듭니다:
1. 예제 구성 복사
copy 1_reconstruct_full_basic.json my_project.json
2. 이미지 경로 수정
my_project.json을 편집하고 이미지 경로를 자신의 이미지로 변경합니다:
{
"image_meta_data": [
{
"id": 1,
"path": "C:/MyImages/DJI_0001.JPG"
},
{
"id": 2,
"path": "C:/MyImages/DJI_0002.JPG"
}
// ... 모든 이미지 추가
]
}
3. 구성 파일 검증
재구성을 실행하기 전에 task_json_check.exe 도구를 사용하여 구성 파일을 검증합니다:
task_json_check.exe my_project.json
구성 파일에 오류가 있으면 도구가 특정 오류 메시지를 표시합니다. 일반적인 오류는 다음과 같습니다:
- 이미지 경로가 존재하지 않음
- 좌표계 매개변수 오류
- 필수 필드 누락
4. 재구성 실행
구성 파일이 검증을 통과하면 재구성 작업을 실행합니다:
reconstruct_full_engine.exe -reconstruct_type 0 -task_json my_project.json
📊 진행 상황 모니터링
콘솔 출력
처리 단계와 진행률을 표시합니다.
로그 파일
output/logs/log.txt에는 자세한 처리 정보가 포함되어 있습니다.
진행 상황 모니터링 스크립트
import re
import time
def monitor_progress(log_file):
with open(log_file, 'r') as f:
while True:
line = f.readline()
if '[PROGRESS]' in line:
match = re.search(r'\[PROGRESS\] (\d+)%', line)
if match:
print(f"현재 진행률: {match.group(1)}%")
time.sleep(1)
monitor_progress("output/logs/log.txt")
❓ 일반적인 문제
Q: "이미지 수가 부족함"으로 재구성이 실패했습니다
A: 다음을 확인하세요:
- 최소 5개의 이미지가 제공됨
- 이미지 간 충분한 중첩 (권장 >60%)
- 이미지에 GPS 정보가 포함되어 있거나 수동으로 위치 제공
Q: 재구성 품질을 개선하는 방법은?
A: 해상도 레벨을 조정합니다:
"resolution_level": 1 // 최고 정밀도 사용
Q: 재구성이 너무 느립니까?
A: 최적화 전략:
- 빠른 미리보기를 위해
resolution_level: 3사용 fast_mode: true활성화- 블록 처리 사용 고려
💡 실용적인 팁
배치 구성 생성
많은 수의 이미지에 대해 스크립트를 사용하여 자동으로 구성을 생성합니다:
import json
import os
from glob import glob
def create_task_json(image_folder, output_file):
images = glob(os.path.join(image_folder, "*.JPG"))
task_config = {
"working_dir": "./output/my_project",
"gdal_folder": "../gdal_data",
"input_image_type": 1,
"resolution_level": 2,
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},
"image_meta_data": []
}
for idx, img_path in enumerate(images, 1):
task_config["image_meta_data"].append({
"id": idx,
"path": img_path.replace("\\", "/")
})
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(task_config, f, indent=2, ensure_ascii=False)
print(f"구성 파일 생성됨: {output_file}")
print(f"{len(images)}개의 이미지 포함")
# 사용법
create_task_json("C:/MyImages", "batch_task.json")
🚀 다음 단계
축하합니다! MipMapEngine SDK의 기본 사용법을 마스터했습니다. 다음으로 할 수 있는 것:
- 📚 기본 개념 학습 - 3D 재구성 원리를 깊이 이해
- 🔧 API 참조 확인 - 더 많은 고급 기능 탐색
- 💡 기본 개념 검토 - 3D 재구성 원리를 깊이 이해
- 🎯 특수 장면 처리 시도 - 약한 텍스처, 낮은 중첩률과 같은 도전적인 시나리오
도움이 필요하신가요? 문제 해결 가이드를 확인하거나 기술 지원팀에 문의하세요.