انتقل إلى المحتوى الرئيسي

ReconstructAT - المثلثة الجوية

نظرة عامة

واجهة ReconstructAT تستخدم لأداء المثلثة الجوية (Aerotriangulation)، وهي الواجهة المفضلة للمستخدمين المحترفين الذين يحتاجون إلى تحكم دقيق. توفر هذه الواجهة إعدادات تفصيلية للمعاملات وتدعم ميزات متقدمة مثل تجميع الكاميرات، واستيراد POS، واستيراد نقاط التحكم.

السيناريوهات المناسبة
  • تحتاج إلى تحكم دقيق في معاملات المثلثة الجوية
  • تحتاج إلى فحص وتحسين نتائج المثلثة الجوية
  • إعادة بناء نظام متعدد الكاميرات
  • تحتاج إلى دمج نقاط التحكم

استخدام الواجهة

استخدام سطر الأوامر

reconstruct_full_engine.exe -reconstruct_type 1 -task_json at_config.json

وصف المعاملات

  • reconstruct_type: ثابت كـ 1 (يشير إلى ReconstructAT)
  • task_json: مسار ملف التكوين

معاملات التكوين

المعاملات المطلوبة

المعاملالنوعالوصف
license_idintرمز ترخيص SDK، موحد كـ 9200
working_dirstringدليل العمل للملفات الوسطية والنتائج النهائية
gdal_folderstringمسار بيانات GDAL (مجلد البيانات الخارجية لـ SDK)
coordinate_systemJSONنظام الإحداثيات لمواقع الصور المدخلة
image_meta_dataJSON Arrayمعلومات البيانات الوصفية للصور المدخلة
camera_meta_dataJSON Arrayمعلومات البيانات الوصفية للكاميرا

المعاملات الاختيارية

المعاملالنوعالافتراضيالوصف
input_image_typeint1نوع الصورة: 1=RGB، 2=متعدد الأطياف، 3=الأشعة تحت الحمراء
remove_small_partboolfalseما إذا كان سيتم إزالة المكونات المتصلة الصغيرة من نتائج AT
output_tie_point_lasboolfalseما إذا كان سيتم إخراج نقاط الربط بصيغة LAS
output_block_change_xmlbooltrueما إذا كان سيتم إخراج نتائج AT بصيغة ContextCapture XML
coordinate_system_ATJSON-نظام الإحداثيات لنتائج AT بصيغة XML الإخراج
fast_modeboolfalseالوضع السريع، مناسب للبيانات مع GPS
use_image_position_constraintbooltrueما إذا كان سيتم استخدام معلومات موقع الصورة كقيود
use_voc_indexbooltrueما إذا كان سيتم استخدام استرجاع الصور للبحث عن أزواج المطابقة
use_spatial_indexbooltrueما إذا كان سيتم استخدام مسافة GPS للبحث عن أزواج المطابقة

وصف هيكل البيانات

البيانات الوصفية للصور

{
"id": 1, // معرف فريد للصورة
"path": "path/to/image.jpg", // مسار الصورة المطلق
"group": "camera_1", // معرف مجموعة الكاميرا (اختياري)
"meta_data": { // معلومات الصورة (مطلوب)
"width": 6000, // عرض الصورة (بكسل)
"height": 4000, // ارتفاع الصورة (بكسل)
"camera_id": 1, // معرف الكاميرا المقابل (اختياري، إذا تم توفير معامل 'pre_calib_param' فسيتم استبداله ببيانات وصف الكاميرا)
"pos": [lon, lat, alt], // الموقع [خط الطول، خط العرض، الارتفاع]
"pos_sigma": [1.0, 1.0, 2.0], // دقة الموقع (أمتار)
"orientation": [...], // مصفوفة الدوران (9 قيم، اختياري)
"position_constant": false, // ما إذا كان سيتم تثبيت الموقع
"relative_altitude": 100.0, // ارتفاع الطيران النسبي (اختياري)
"focal_length_in_35mm": 24, // البعد البؤري المعادل لـ 35 مم
"pre_calib_param": [...], // معاملات المعايرة المسبقة (اختياري، إذا تم توفير معامل 'focal_length_in_35mm' فسيتم استبداله)
"dewarp_flag": false // علامة تصحيح التشويه (اختياري، من بيانات DJI XMP)
}
}

البيانات الوصفية للكاميرا

{
"id": 1, // معرف فريد للكاميرا
"meta_data": {
"camera_name": "DJI FC6310", // اسم الكاميرا
"width": 6000, // عرض المستشعر (بكسل)
"height": 4000, // ارتفاع المستشعر (بكسل)
"parameters": [ // خصائص الكاميرا الداخلية (اختياري، مصفوفة من 10 عناصر، placeholder_param هو معامل نائب حاليًا)
// fx, fy, cx, cy, k1, k2, p1, p2, k3,placeholder_param
]
}
}

نظام الإحداثيات

{
"type": 2, // 0=LocalENU، 1=Local، 2=Geographic، 3=Projected، 4=ECEF
"epsg_code": 4326, // رمز EPSG (مطلوب لـ Geographic/Projected/ECEF)
"wkt": "...", // سلسلة WKT (يمكن أن تحل محل epsg_code)
"origin_point": [lon, lat, alt], // أصل LocalENU (مطلوب فقط لـ type=0)
"offset": [0, 0, 0] // الإزاحة بالنسبة لأصل نظام الإحداثيات
}

أمثلة تكوين كاملة

تكوين المثلثة الجوية الأساسية

{
"license_id": 9200,
"working_dir": "C:/Projects/AT_Task",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "DJI FC6310",
"width": 5472,
"height": 3648
}
}
],
"image_meta_data": [
{
"id": 1,
"path": "C:/Images/DJI_0001.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"camera_id": 1,
"pos": [114.123456, 22.123456, 100.5],
"pos_sigma": [2.0, 2.0, 3.0]
}
},
{
"id": 2,
"path": "C:/Images/DJI_0002.JPG",
"meta_data": {
"width": 5472,
"height": 3648,
"camera_id": 1,
"pos": [114.123556, 22.123456, 100.8],
"pos_sigma": [2.0, 2.0, 3.0]
}
}
],
"output_tie_point_las": true,
"output_block_change_xml": true
}

تكوين مجموعة متعددة الكاميرات

{
"license_id": 9200,
"working_dir": "C:/Projects/MultiCamera_AT",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "Camera_Nadir",
"width": 6000,
"height": 4000
}
},
{
"id": 2,
"meta_data": {
"camera_name": "Camera_Oblique",
"width": 6000,
"height": 4000
}
}
],
"image_meta_data": [
{
"id": 1,
"path": "nadir/IMG_0001.JPG",
"group": "nadir",
"meta_data": {
"width": 6000,
"height": 4000,
"camera_id": 1,
"pos": [114.123456, 22.123456, 200.0],
"pos_sigma": [0.05, 0.05, 0.10]
}
},
{
"id": 2,
"path": "oblique/IMG_0001.JPG",
"group": "oblique_forward",
"meta_data": {
"width": 6000,
"height": 4000,
"camera_id": 2,
"pos": [114.123456, 22.123456, 200.0],
"pos_sigma": [0.05, 0.05, 0.10]
}
}
],
"fast_mode": true
}

تكوين RTK/PPK عالي الدقة

{
"license_id": 9200,
"working_dir": "C:/Projects/RTK_AT",
"gdal_folder": "C:/MipMap/SDK/data",
"coordinate_system": {
"type": 2,
"epsg_code": 4326
},
"camera_meta_data": [
{
"id": 1,
"meta_data": {
"camera_name": "DJI P1",
"width": 8192,
"height": 5460,
"parameters": [8839.5, 8839.5, 4096, 2730, 0, 0, 0, 0, 0, 0]
}
}
],
"image_meta_data": [
{
"id": 1,
"path": "C:/RTK_Images/IMG_0001.JPG",
"meta_data": {
"width": 8192,
"height": 5460,
"camera_id": 1,
"pos": [114.12345678, 22.12345678, 150.123],
"pos_sigma": [0.02, 0.02, 0.05], // RTK عالي الدقة
"orientation": [
// مصفوفة دوران 3x3 (إذا كانت بيانات IMU متاحة)
]
}
}
],
"use_image_position_constraint": true
}

نتائج الإخراج

بعد اكتمال المثلثة الجوية، سيتم إنشاء التالي في دليل العمل:

1. دليل النتائج الوسطية (milestones/)

  • mvs.xml - نتائج المثلثة الجوية بالصيغة الداخلية
  • mvs_undistort.xml - نتائج المثلثة الجوية غير المشوهة
  • roi.json - منطقة الاهتمام المحسوبة تلقائياً
  • cs.json - معلومات نظام الإحداثيات
  • tie_points.las - سحابة نقاط الربط (إذا تم تمكينها)

2. نتائج التصدير (products/AT/)

  • block_exchange.xml - نتائج المثلثة الجوية بصيغة ContextCapture (إذا تم تمكينها)

3. ملفات السجل (log/)

  • log.txt - سجل المعالجة التفصيلي

وصف استخدام ROI

roi.json المُنشأ بعد المثلثة الجوية يحتوي على ثلاثة أنواع من ROI:

{
"rois": [
{
"type": "Smart", // محسوب بذكاء بناءً على النقاط المتناثرة
"roi": {
"boundary": [...], // رؤوس الحدود ثنائية الأبعاد
"min_z": 100.0, // الحد الأدنى للارتفاع
"max_z": 200.0 // الحد الأقصى للارتفاع
}
},
{
"type": "Maximal", // بناءً على مواقع الصور والنقاط المتناثرة
"roi": {...}
},
{
"type": "Frustum", // بناءً على مخاريط الصور
"roi": {...}
}
]
}

أفضل الممارسات

1. إعداد الصور

  • تأكد من أن EXIF للصور يحتوي على معلومات GPS كاملة
  • التداخل الموصى به للصور >60%
  • تجنب الصور الضبابية أو المفرطة التعرض

2. تحسين المعاملات

  • GPS القياسي: استخدم pos_sigma الافتراضي [2.0, 2.0, 3.0]
  • RTK/PPK: قم بتعيين pos_sigma أصغر مثل [0.05, 0.05, 0.10]
  • الوضع السريع: مكّن fast_mode عندما يكون GPS متاحاً

3. معالجة متعددة الكاميرات

  • استخدم معامل group لتحديد كاميرات مختلفة
  • استخدم camera_id مستقل لكل مجموعة كاميرا
  • تأكد من دقة معاملات الكاميرا

4. تحسين مجموعة البيانات الكبيرة

  • مكّن fast_mode لتسريع المعالجة
  • فكر في استخدام remove_small_part لتنظيف النتائج
  • قم بتعيين حدود استخدام ذاكرة معقولة

الأسئلة الشائعة

س: فشلت المثلثة الجوية مع "عدم كفاية مطابقة الصور"

ج: تحقق من:

  • هل تداخل الصور كافٍ (>60%)
  • هل معلومات GPS دقيقة
  • هل جودة الصور جيدة

س: كيفية تحسين دقة المثلثة الجوية؟

ج:

  • استخدم بيانات POS عالية الدقة (RTK/PPK)
  • قم بتعيين قيم pos_sigma مناسبة
  • استخدم OptimizeAT لإضافة نقاط التحكم

س: كيفية إعداد أنظمة متعددة الكاميرات؟

ج:

  • أنشئ camera_meta_data مستقل لكل كاميرا
  • استخدم معامل group لتمييز الصور من كاميرات مختلفة
  • تأكد من دقة خصائص الكاميرا الداخلية

الخطوات التالية


ملاحظة: ReconstructAT توفر أقصى مرونة، ولكنها تتطلب أيضاً إعدادات معاملات أكثر. إذا كنت تحتاج فقط إلى إعادة بناء سريعة، نوصي باستخدام ReconstructFull.