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ı | Tip | Açıklama | Örnek Değer |
---|---|---|---|
license_id | int | SDK lisans ID'si | 9200 |
working_dir | string | Çalışma dizini yolu | "C:/Projects/MyProject" |
gdal_folder | string | GDAL veri dizini | "C:/MipMap/SDK/data" |
coordinate_system | object | Giriş koordinat sistemi | Aşağıdaki açıklamaya bakın |
image_meta_data | array | Görüntü listesi | Aşağıdaki açıklamaya bakın |
input_image_type | int | Görüntü tipi | 1 =RGB, 2 =Çok spektral, 3 =Kızılötesi |
resolution_level | int | Hassasiyet seviyesi | 1 =Yüksek, 2 =Orta, 3 =Düşük |
İsteğe Bağlı Parametreler - Çıktı Kontrolü
Parametre Adı | Tip | Varsayılan Değer | Açıklama |
---|---|---|---|
generate_obj | bool | false | OBJ format model üret |
generate_ply | bool | false | PLY format model üret |
generate_osgb | bool | false | OSGB format üret (eğik fotoğraf) |
generate_3d_tiles | bool | false | 3D Tiles üret (Cesium) |
generate_las | bool | false | LAS nokta bulutu üret |
generate_pc_ply | bool | false | Nokta bulutu PLY üret |
generate_pc_osgb | bool | false | Nokta bulutu OSGB üret (LOD) |
generate_pc_pnts | bool | false | Nokta bulutu PNTS üret (3D Tiles) |
generate_geotiff | bool | false | Ortofoto üret |
generate_tile_2D | bool | false | 2D karo üret |
generate_2D_from_3D_model | bool | false | 3D modelden ortofoto üret |
İsteğe Bağlı Parametreler - Koordinat Sistemi
Parametre Adı | Tip | Varsayılan Değer | Açıklama |
---|---|---|---|
coordinate_system_3d | object | Local/LocalENU | Çıktı 3D koordinat sistemi |
coordinate_system_2d | object | LocalENU | Çıktı 2D koordinat sistemi |
İsteğe Bağlı Parametreler - Gelişmiş Özellikler
Parametre Adı | Tip | Varsayılan Değer | Açıklama |
---|---|---|---|
gcp_path | string | - | Kontrol noktası dosya yolu |
gcp_coor_sys | object | - | Kontrol noktası koordinat sistemi |
use_image_position_constraint | bool | true | Görüntü pozisyon kısıtlaması kullan |
fast_mode | bool | false | Hızlı mod (kalite düşüşü) |
min_avali_memory_size | float | 16.0 | Minimum kullanılabilir bellek (GB) |
output_block_change_xml | bool | false | Block 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 | σ_Z | Açıklama |
---|---|---|---|
RTK sabit çözüm | 0.02-0.05m | 0.05-0.10m | Maksimum hassasiyet |
PPK son işleme | 0.03-0.08m | 0.08-0.15m | Yüksek hassasiyet |
Normal GPS | 2-5m | 3-8m | Standart hassasiyet |
Manuel tahmin | 0.5-2m | 1-3m | Düşü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:
- ReconstructAT arayüzünü kullanın (GPS'siz işlemeyi destekler)
- Veya GPS bilgilerini manuel olarak EXIF'e ekleyin
- Veya harici POS dosyası kullanın
S: Büyük proje işlerken bellek yetersiz?
C: Çözümler:
resolution_level
'ı 2 veya 3'e düşürün- Aynı anda üretilen çıktı formatlarını azaltın
- 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.