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

تصف هذه الصفحة مواصفات تتيح لملفات MP4 تضمين بيانات وصفية حول حركة الكاميرا أثناء التقاط الفيديو. عادةً ما تتضمّن الأجهزة التي تسجّل الفيديو أجهزة استشعار يمكنها توفير معلومات إضافية عن التسجيل. مثلاً:

  • تتوفّر في الهواتف الجوّالة عادةً أجهزة استشعار للجيروسكوب و مقياس التسارع ومقياس المغناطيسية ونظام تحديد المواقع العالمي (GPS).
  • يمكن استخدام دمج المستشعرات لتتبُّع وضع الحرية الذي يبلغ 3 درجات في الأجهزة (3DoF).
  • يمكن استخدام ميزتَي الأقلمة والتحديد في آنٍ واحد (SLAM) في تتبُّع وضعية الحرية الست (6DoF) في الجهاز (على سبيل المثال، Tango).
  • يمكن استخدام معلومات التعرّض للتداخل بين حركة كل مسح ضوئي.

ويمكن حفظ هذه البيانات الوصفية في الفيديو لإجراء عمليات معالجة متقدّمة في تطبيقات مختلفة. مثلاً:

  • يمكن استخدام معلومات التدوير على مستوى الإطار لتثبيت الفيديوهات، ويمكن استخدام بيانات الحركة على مستوى المسح الضوئي لتقليل تأثيرات الالتقاط.
  • يمكن استخدام قراءات IMU ووضع 3DoF المستمَد من أجل تقييم محاذاة الوقت والمحاذاة الهندسية بين IMU والكاميرا.

تحدّد الأقسام أدناه مسار بيانات CAmera Motion (CAMM) التي تتضمّن إدخالاً جديدًا لنموذج يشير إلى توفّر المقطع الصوتي وتنسيق البيانات فيه.

نموذج إدخال

يجب أن يحتوي ملف الفيديو على نموذج إدخال النموذج التالي للإشارة إلى مسار البيانات الوصفية المخصص، ويجب ضبط subComponentType للمقطع الصوتي على meta.

Camera Motion Metadata Sample Entry (camm)

Definition
Box Type: camm
Container: stsd
A sample entry indicating the data track that saves the camera motion.

Syntax
aligned(8) class CameraMotionMetadataSampleEntry extends SampleEntry('camm') {
}
  

تنسيق البيانات

يحتوي مسار البيانات الوصفية على تدفق من عيّنات البيانات الوصفية التي تم تنسيقها على النحو التالي.

الحقل الوحدة الوصف
uint16 reserved;
محجوزة. يجب أن تكون القيمة 0.
uint16 type;
نوع حزمة البيانات (انظر أدناه). تحتوي كل حزمة على نوع واحد من البيانات.
switch (type) {
  case 0:
    float angle_axis[3];
  break;
          

الاتجاه على محور الزاوية بوحدات الراديان التي تمثّل التدوير من إحداثيات الكاميرا المحلية إلى نظام إحداثيات عالمي. يتم تحديد نظام الإحداثيات العالمي حسب التطبيقات.

اسمح لـ M باستخدام مصفوفة التدوير بزاوية 3 × 3 المقابلة لمتّجه المحور الزاوية. بالنسبة إلى أي أشعة X في نظام الإحداثيات المحلي، يكون اتجاه الشعاع في الإحداثي العالمي هو M * X.

ويمكن الحصول على هذه المعلومات من خلال تشغيل دمج أجهزة استشعار 3DoF على الجهاز. بعد دمج قراءات IMU، يجب فقط تسجيل الاتجاه العالمي المتكامل.

وتمثّل القيم الثلاث متّجه المحور الزاوية، بحيث يتم منح زاوية التدوير بوحدات الراديان بطول المتّجه، ويتم منح محور التدوير من خلال المتّجه الذي تمت تسويته.

يمكن إنشاء التمثيل المشفّر من محور وزاوية باستخدام float[3] angle_axis := angle_radians * normalized_axis_vec3. وتمثل الزاوية ذات الزاوية تدويرًا عكس اتجاه عقارب الساعة حول المحور.

ويمكن تحويل التمثيل المشفّر إلى محور وزاوية من خلال float[3] axis := normalize(axis_angle) وfloat angle_radians := length(angle_axis).

  case 1:
    int32 pixel_exposure_time;
    int32 rolling_shutter_skew_time;
  break;
          
نانو ثانية

يتم عرض هذه البيانات الوصفية حسب كل إطار فيديو. يجب أن يكون وقت العرض (PTS) لهذه البيانات الوصفية بداية التعرّض للخط المُستخدَم لأول مرة في إطار الفيديو.

pixel_exposure_time_ns هي وقت التعرّض لوحدة بكسل واحدة بالنانو ثانية وrolling_shutter_skew_time_ns هي التأخير بين عرض خط المسح المُستخدَم لأول مرة والمسح الضوئي الذي تم استخدامه مؤخرًا. ويمكن استخدامها للدمج بين البيانات الوصفية لكل خط.

ويجب أن تكون نقاط التقييم (PTS) للإطار المقابل ضمن pts_of_this_metadata وpts_of_this_metadata + pixel_exposure_time_ns + Roll_shutter_skew_time_ns.

وعندما لا يتم حفظ هذه المعلومات، يجب أن يبذل الجهاز قصارى جهده لضبط نقاط PTS لإطار الفيديو لتكون في وسط التعرّض للإطار.

  case 2:
    float gyro[3];
  break;
          
الراديان/ثانية

إشارة الجيروسكوب بالراديان/الثواني حول محاور XYZ للكاميرا. تدوير في اتجاه عكس اتجاه عقارب الساعة.

تحدد التطبيقات العلاقة بين نظام إحداثيات IMU ونظام إحداثيات الكاميرا. وننصحك بمحاذاة هذه البيانات إن أمكن.

لاحظ أن قراءات الجيرو الأولية تقع في نظام إحداثيات IMU الذي يحدده برنامج التشغيل، ويلزم التحويل السليم لتحويله إلى نظام إحداثيات الكاميرا.

يُرجى الرجوع إلى جهاز الاستشعار في Android.TYPE_GYROSCOPE.

  case 3:
    float acceleration[3];
  break;
          
متر/ثانية^2

قراءة مقياس التسارع بالمتر/الثانية^2 على محاور XYZ للكاميرا

تحدد التطبيقات العلاقة بين نظام إحداثيات IMU ونظام إحداثيات الكاميرا. وننصحك بمحاذاة هذه البيانات إن أمكن.

يُرجى الرجوع إلى جهاز الاستشعار في Android.TYPE_ACCELEROMETER.

  case 4:
    float position[3];
  break;
          

موضع ثلاثي الأبعاد للكاميرا. يحدد الوضع الثلاثي الأبعاد وتدوير المحور الزاوية معًا وضع 6DoF للكاميرا، وهي في نظام إحداثيات شائع يحدّده التطبيق.

يمكنك الحصول على هذه المعلومات عند تشغيل ميزة تتبُّع 6DoF على الجهاز.

  case 5:
    double latitude;
    double longitude;
    double altitude;
  break;
          
درجات

الحد الأدنى من إحداثيات نظام تحديد المواقع العالمي (GPS) للعينة.

  case 6:
    double time_gps_epoch;
    int gps_fix_type;
    double latitude;
    double longitude;
    float altitude;
    float horizontal_accuracy;
    float vertical_accuracy;
    float velocity_east;
    float velocity_north;
    float velocity_up;
    float speed_accuracy;
  break;
          

seconds

degrees
degrees
meters
meters
meters
meters/seconds
meters/seconds
meters/seconds
meters/seconds
          

time_gps_epoch - الوقت منذ عصر نظام تحديد المواقع العالمي (GPS) عند إجراء القياس

gps_fix_type - 0 ( بدون إصلاح)، 2 (إصلاح ثنائي الأبعاد)، 3 (إصلاح ثلاثي الأبعاد)

خط العرض - خط العرض بالدرجات

خط الطول - خط الطول بالدرجات

height - الارتفاع فوق علامة الحذف WGS-84

أفقي_الدقة - الدقة الأفقية (الطويلة/الطويلة)

vertical_accuracy - دقة عمودية (الارتفاع)

velocity_east - سرعة الاتجاه في الاتجاه الشرقي

velocity_north - السرعة المتّجهة في الاتجاه الشمالي

velocity_up - السرعة في اتجاه الأعلى

speed_accuracy - دقة السرعة

  case 7:
    float magnetic_field[3];
  break;
          
Microtesla

المجال المغناطيسي المحيط.

يُرجى الرجوع إلى جهاز الاستشعار في Android.TYPE_MAGNETIC_FIELD.

}

ملاحظات

  • ويجب ألا يتوفّر سوى مسار CAMM واحد لكل ملف MP4 يحتوي على جميع أنواع البيانات الواردة أعلاه عن طريق مزجها معًا.
  • يجب أن تكون نماذج نظام تحديد المواقع العالمي (GPS) في العلامتَين 5 و6 قيمًا نيئة تم إنشاؤها بواسطة أجهزة الاستشعار. ولا يمكن تضمينها أو تكرارها عندما لا يكون هناك أي تغيير في نظام تحديد المواقع العالمي (GPS).
  • تقع أنظمة الإحداثيات في الجانب الأيمن. يتم تعريف نظام إحداثيات الكاميرا على أنه X مُوجِّهًا لليمين وصغيرًا يشير إلى الأسفل وZ للأمام. ويجب أن يشير المحور "ص" في نظام الإحداثيات العالمية إلى متّجه الجاذبية.
  • عادةً ما تكون قراءات IMU في نظام إحداثيات IMU منفصل، ويلزم إجراء التدوير لربطها بنظام إحداثيات الكاميرا إذا كان نظاما الإحداثيات مختلفين.
  • تكون جميع الحقول صغيرة (أي الأقل بايت مهمًا أولاً)، وتكون النقاط العائمة 32 بت بتنسيق IEEE 754-1985.
  • لمزامنة إطار الفيديو والبيانات الوصفية بدقة، يجب أن تكون نقاط اتصال إطار الفيديو (PTS) لإطار الفيديو مركز عرض الفيديو (يمكن استنتاج ذلك أيضًا من البيانات الوصفية للإضاءة).
  • يجب أن يختار التطبيق الذي يمزج هذه البيانات مقياسًا زمنيًا كبيرًا بما يكفي للحصول على نقاط تقييم دقيقة.

المشاكل المحتملة

  • لا يسمح هذا التصميم إلا بحزمة واحدة لكل عيّنة بيانات. قد تواجه الأجهزة المضمّنة مشاكل في كتابة حِزم ذات معدّل تكرار مرتفع جدًا، لأنّها تزيد من ضغط I/O، بالإضافة إلى حجم العنوان (مثل تنسيقَي Atom stsc وstsz) إذا كان حجم الحزمة يختلف.
  • قد يؤدي المزج بين أنواع مختلفة من البيانات مع تأخيرات مختلفة في انتقال PTS إلى الأمام والخلف أثناء كتابة حِزم البيانات في الملف. ويمكن التغلّب على ذلك من خلال تخزين الحِزم مؤقتًا وكتابتها بترتيب أحادي.