Ana içeriğe geç

ReconstructFull API

ReconstructFull, en basit ve kullanımı kolay tam rekonstrüksiyon arayüzüdür, hızlı proje başlatma ve yeni kullanıcılar için uygundur. Görüntü metadata çıkarma, hava triangülasyonu hesaplama ve 3D rekonstrüksiyon tam iş akışını otomatik olarak işler.

🎯 Arayüz Özellikleri

  • Yüksek otomasyon derecesi: Görüntü EXIF'den GPS ve kamera bilgilerini otomatik okur
  • Basit yapılandırma: Minimum gereksinim sadece görüntü yolu sağlamak
  • Hepsi bir arada: Görüntülerden doğrudan nihai sonuçlar üretir
  • Akıllı optimizasyon: En iyi işleme parametrelerini otomatik seçer

📋 Parametre Detayları

Gerekli Parametreler

Parametre AdıTipAçıklamaÖrnek Değer
license_idintSDK lisans ID'si9200
working_dirstringÇalışma dizini yolu"C:/Projects/MyProject"
gdal_folderstringGDAL veri dizini"C:/MipMap/SDK/data"
coordinate_systemobjectGiriş koordinat sistemiAşağıdaki açıklamaya bakın
image_meta_dataarrayGörüntü listesiAşağıdaki açıklamaya bakın
input_image_typeintGörüntü tipi1=RGB, 2=Çok spektral, 3=Kızılötesi
resolution_levelintHassasiyet seviyesi1=Yüksek, 2=Orta, 3=Düşük

İsteğe Bağlı Parametreler - Çıktı Kontrolü

Parametre AdıTipVarsayılan DeğerAçıklama
generate_objboolfalseOBJ format model üret
generate_plyboolfalsePLY format model üret
generate_osgbboolfalseOSGB format üret (eğik fotoğraf)
generate_3d_tilesboolfalse3D Tiles üret (Cesium)
generate_lasboolfalseLAS nokta bulutu üret
generate_pc_plyboolfalseNokta bulutu PLY üret
generate_pc_osgbboolfalseNokta bulutu OSGB üret (LOD)
generate_pc_pntsboolfalseNokta bulutu PNTS üret (3D Tiles)
generate_geotiffboolfalseOrtofoto üret
generate_tile_2Dboolfalse2D karo üret
generate_2D_from_3D_modelboolfalse3D modelden ortofoto üret

İsteğe Bağlı Parametreler - Koordinat Sistemi

Parametre AdıTipVarsayılan DeğerAçıklama
coordinate_system_3dobjectLocal/LocalENUÇıktı 3D koordinat sistemi
coordinate_system_2dobjectLocalENUÇıktı 2D koordinat sistemi

İsteğe Bağlı Parametreler - Gelişmiş Özellikler

Parametre AdıTipVarsayılan DeğerAçıklama
gcp_pathstring-Kontrol noktası dosya yolu
gcp_coor_sysobject-Kontrol noktası koordinat sistemi
use_image_position_constraintbooltrueGörüntü pozisyon kısıtlaması kullan
fast_modeboolfalseHızlı mod (kalite düşüşü)
min_avali_memory_sizefloat16.0Minimum kullanılabilir bellek (GB)
output_block_change_xmlboolfalseBlock Exchange XML çıktısı

📝 Veri Yapısı Detayları

coordinate_system nesnesi

{
"type": 2, // 1=Projeksiyon, 2=Coğrafi, 3=Jeomerkezli
"type_name": "Geographic",
"label": "WGS 84", // Koordinat sistemi adı
"epsg_code": 4326 // EPSG kodu
}

image_meta_data dizi elemanları

Temel format (otomatik EXIF okuma)

{
"id": 1, // Benzersiz tanımlayıcı
"path": "C:/Images/DJI_0001.JPG", // Görüntü yolu
"group": "camera_1" // İsteğe bağlı: kamera gruplandırması
}

Tam format (özel metadata)

{
"id": 1,
"path": "C:/Images/IMG_0001.JPG",
"group": "nadir", // Kamera grup adı
"meta_data": { // Özel metadata
"width": 6000, // Görüntü genişliği (piksel)
"height": 4000, // Görüntü yüksekliği (piksel)
"pos": [114.123456, 22.123456, 100.5], // [Boylam, Enlem, Yükseklik]
"pos_sigma": [0.05, 0.05, 0.10], // [X hassasiyet, Y hassasiyet, Z hassasiyet] (metre)
"focal_length": 24.0, // Odak uzaklığı (milimetre)
"pixel_size": 0.00391 // Piksel boyutu (milimetre)
}
}

Kamera gruplandırması (group) parametresi

Çoklu kamera sistemleri için, farklı kameraların görüntülerini gruplar halinde işlemek için kullanılır:

"image_meta_data": [
{"id": 1, "path": "nadir/IMG_001.jpg", "group": "nadir"},
{"id": 2, "path": "nadir/IMG_002.jpg", "group": "nadir"},
{"id": 3, "path": "oblique_f/IMG_001.jpg", "group": "oblique_forward"},
{"id": 4, "path": "oblique_b/IMG_001.jpg", "group": "oblique_backward"},
{"id": 5, "path": "oblique_l/IMG_001.jpg", "group": "oblique_left"},
{"id": 6, "path": "oblique_r/IMG_001.jpg", "group": "oblique_right"}
]

Yaygın gruplandırma senaryoları:

  • Beş objektifli eğik kamera: nadir, oblique_forward, oblique_backward, oblique_left, oblique_right
  • Çift kamera sistemi: wide_angle, telephoto
  • Çoklu drone işbirliği: drone_1, drone_2, drone_3
  • Çoklu zamansal: morning, afternoon

pos ve pos_sigma parametrelerinin açıklaması

pos parametresi:

  • Format: [Boylam, Enlem, Yükseklik] veya [X, Y, Z] (koordinat sistemine bağlı)
  • Birim: Coğrafi koordinat sistemi için derece ve metre, projeksiyon koordinat sistemi için metre
  • Amaç: EXIF'deki GPS bilgilerini geçersiz kılmak veya GPS'siz görüntüler için pozisyon sağlamak

pos_sigma parametresi:

  • Format: [σ_X, σ_Y, σ_Z]
  • Birim: Metre
  • Anlam: Her yöndeki pozisyon ölçümünün standart sapması (1σ)
  • Amaç: Hava triangülasyonu optimizasyonunda ağırlık olarak kullanılır, daha yüksek hassasiyet (daha küçük σ) daha büyük ağırlık anlamına gelir

Tipik değerler:

Konumlama Yöntemiσ_X/σ_Yσ_ZAçıklama
RTK sabit çözüm0.02-0.05m0.05-0.10mMaksimum hassasiyet
PPK son işleme0.03-0.08m0.08-0.15mYüksek hassasiyet
Normal GPS2-5m3-8mStandart hassasiyet
Manuel tahmin0.5-2m1-3mDüşük hassasiyet

📝 Yapılandırma Örnekleri

Minimum Yapılandırma

{
"license_id": 9200,
"working_dir": "C:/Projects/QuickStart",
"gdal_folder": "C:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 2,
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},
"image_meta_data": [
{"id": 1, "path": "C:/Images/DJI_0001.JPG"},
{"id": 2, "path": "C:/Images/DJI_0002.JPG"},
{"id": 3, "path": "C:/Images/DJI_0003.JPG"},
{"id": 4, "path": "C:/Images/DJI_0004.JPG"},
{"id": 5, "path": "C:/Images/DJI_0005.JPG"}
],
"generate_obj": true,
"generate_geotiff": true
}

Çoklu Kamera Grupları Yapılandırma Örneği

{
"license_id": 9200,
"working_dir": "D:/Projects/MultiCamera",
"gdal_folder": "D:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1,
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},

// Çoklu kamera görüntü gruplandırması
"image_meta_data": [
// Nadir kamera
{"id": 1, "path": "nadir/IMG_001.jpg", "group": "nadir"},
{"id": 2, "path": "nadir/IMG_002.jpg", "group": "nadir"},

// İleri eğik kamera
{"id": 3, "path": "forward/IMG_001.jpg", "group": "oblique_f"},
{"id": 4, "path": "forward/IMG_002.jpg", "group": "oblique_f"},

// Daha fazla kamera grubu...
],

"generate_osgb": true,
"generate_3d_tiles": true
}

Özel POS Yapılandırma Örneği

{
"license_id": 9200,
"working_dir": "D:/Projects/PPK_Project",
"gdal_folder": "D:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1,
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},

// Yüksek hassasiyetli PPK son işlenmiş pozisyon verilerini kullan
"image_meta_data": [
{
"id": 1,
"path": "images/DJI_0001.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"pos": [114.305421, 22.596013, 120.543], // PPK işleme sonrası hassas pozisyon
"pos_sigma": [0.03, 0.03, 0.05] // PPK hassasiyeti
}
},
{
"id": 2,
"path": "images/DJI_0002.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"pos": [114.305512, 22.596089, 120.621],
"pos_sigma": [0.03, 0.03, 0.05]
}
}
// ... daha fazla görüntü
],

"generate_obj": true,
"generate_geotiff": true
}

Tam Yapılandırma Örneği (GCP ile)

{
"license_id": 9200,
"working_dir": "D:/Projects/HighPrecision",
"gdal_folder": "D:/MipMap/SDK/data",
"input_image_type": 1,
"resolution_level": 1,

// Giriş koordinat sistemi - WGS84
"coordinate_system": {
"type": 2,
"label": "WGS 84",
"epsg_code": 4326
},

// Çıktı koordinat sistemi - UTM
"coordinate_system_3d": {
"type": 3,
"label": "WGS 84 / UTM zone 50N",
"epsg_code": 32650
},

// Kontrol noktaları
"gcp_path": "D:/Projects/HighPrecision/gcps.txt",
"gcp_coor_sys": {
"type": 3,
"label": "WGS 84 / UTM zone 50N",
"epsg_code": 32650
},

// Görüntü listesi
"image_meta_data": [
{"id": 1, "path": "D:/Data/flight1/IMG_001.JPG"},
{"id": 2, "path": "D:/Data/flight1/IMG_002.JPG"},
// ... daha fazla görüntü
],

// Tüm formatları üret
"generate_obj": true,
"generate_osgb": true,
"generate_3d_tiles": true,
"generate_las": true,
"generate_geotiff": true,
"generate_tile_2D": true
}

💾 Çıktı Yapısı

İşleme tamamlandıktan sonra, çalışma dizininde aşağıdaki yapı oluşturulacaktır:

working_dir/
├── products/ # Nihai sonuçlar
│ ├── models/ # 3D modeller
│ │ ├── model.obj # OBJ formatı
│ │ ├── model.mtl # Malzeme dosyası
│ │ ├── textures/ # Doku görüntüleri
│ │ └── tileset.json # 3D Tiles
│ ├── pointcloud/ # Nokta bulutu verileri
│ │ └── cloud.las # LAS formatı nokta bulutu
│ └── orthophoto/ # Ortofoto
│ ├── ortho.tif # GeoTIFF
│ └── tiles/ # Karo verileri
├── milestones/ # Ara sonuçlar
│ ├── at_result/ # Hava triangülasyonu sonucu
│ ├── roi.json # ROI aralığı
│ └── report.html # İşleme raporu
└── log/ # Log dosyaları
└── log.txt # Detaylı log

🎯 Kullanım Önerileri

Uygun Senaryolar

  • ✅ Hızlı prototipleme ve testler
  • ✅ Standart hava fotoğrafçılığı projeleri
  • ✅ Otomatik toplu işleme
  • ✅ Başlangıç seviyesi öğrenme

Uygun Olmayan Senaryolar

  • ❌ İşleme parametrelerinin ince kontrolüne ihtiyaç
  • ❌ Kontrol noktalarının kullanılması gerekli
  • ❌ Ara sonuçların kontrol edilmesi gerekli
  • ❌ Özel kameralar veya sensörler

🔧 Gelişmiş Teknikler

1. Çoklu projelerin toplu işlenmesi

import json
import subprocess
from pathlib import Path

def batch_process(project_list):
for project in project_list:
# Yapılandırma oluştur
config = {
"license_id": 9200,
"working_dir": f"./output/{project['name']}",
"gdal_folder": "./data",
"coordinate_system": {"type": 2, "epsg_code": 4326},
"image_meta_data": [
{"id": i+1, "path": str(img)}
for i, img in enumerate(project['images'])
],
"input_image_type": 1,
"resolution_level": 2,
"generate_obj": True,
"generate_geotiff": True
}

# Yapılandırmayı kaydet
config_path = f"./config_{project['name']}.json"
with open(config_path, 'w') as f:
json.dump(config, f, indent=2)

# İşlemeyi çalıştır
subprocess.run([
"reconstruct_full_engine.exe",
"-reconstruct_type", "0",
"-task_json", config_path
])

2. Otomatik parametre optimizasyonu

def optimize_parameters(image_count, available_memory_gb):
"""Proje boyutuna göre parametreleri otomatik seç"""

# Çözünürlük seviyesi
if image_count < 100:
resolution_level = 1 # Yüksek hassasiyet
elif image_count < 500:
resolution_level = 2 # Orta hassasiyet
else:
resolution_level = 3 # Düşük hassasiyet (büyük projeler)

# Çıktı formatları
if available_memory_gb > 32:
formats = {
"generate_obj": True,
"generate_osgb": True,
"generate_3d_tiles": True,
"generate_las": True
}
else:
formats = {
"generate_obj": True,
"generate_las": False
}

return resolution_level, formats

3. İlerleme izleme

import re
import time
from threading import Thread

def monitor_progress(log_file):
"""İşleme ilerlemesini izle"""

def read_progress():
with open(log_file, 'r') as f:
f.seek(0, 2) # Dosya sonuna git
while True:
line = f.readline()
if line:
match = re.search(r'\[PROGRESS\] (\d+)%', line)
if match:
progress = int(match.group(1))
print(f"\rİlerleme: {'█' * (progress//2)}{'░' * (50-progress//2)} {progress}%", end='')
time.sleep(0.1)

thread = Thread(target=read_progress, daemon=True)
thread.start()

❓ Sık Sorulan Sorular

S: Neden bazı görüntüler kullanılmadı?

C: ReconstructFull kötü kaliteli görüntüleri otomatik olarak filtreler:

  • Bulanık görüntüler
  • GPS bilgisi olmayan görüntüler
  • Tekrarlanan veya çok benzer görüntüler

Filtrelenen görüntüleri ve nedenlerini log'da kontrol edebilirsiniz.

S: GPS'siz görüntüler nasıl işlenir?

C: GPS bilgisi olmayan görüntüler için:

  1. ReconstructAT arayüzünü kullanın (GPS'siz işlemeyi destekler)
  2. Veya GPS bilgilerini manuel olarak EXIF'e ekleyin
  3. Veya harici POS dosyası kullanın
S: Büyük proje işlerken bellek yetersiz?

C: Çözümler:

  1. resolution_level'ı 2 veya 3'e düşürün
  2. Aynı anda üretilen çıktı formatlarını azaltın
  3. Blok işleme kullanın (diğer arayüzler gerekir)

🔗 İlgili Bağlantılar

  • Koordinat sistemleri detayları
  • Görüntü metadata açıklaması
  • Çıktı formatları karşılaştırması
  • ReconstructAT arayüzü (daha fazla kontrol)

ReconstructFull, MipMapEngine SDK'yı kullanmaya başlamak için en iyi seçimdir. Deneyim arttıkça, daha fazla kontrol için diğer arayüzleri keşfedebilirsiniz.