الإصدار 1.1 من تنسيق الصور بدقة HDR الفائقة

مقدّمة

يحدد هذا المستند سلوك تنسيق ملف جديد يقوم بترميز صورة خريطة اكتساب النطاق اللوغاريتمي في ملف صورة JPEG. يمكن لأجهزة قراءة قديمة لا تدعم التنسيق الجديد قراءة وعرض الصورة التقليدية ذات النطاق الديناميكي المنخفض من ملف الصورة. إنّ قارئ الصور المتوافق مع هذا التنسيق يجمع بين الصورة الأساسية وخريطة الكسب ويعرض صورة ذات نطاق ديناميكي عالٍ على الشاشات المتوافقة.

يصف باقي هذا المستند طرق العمليات اللازمة لاستخدام هذا التنسيق. بشكل عام، تشمل رحلة أي صورة متوافقة مع هذا التنسيق ما يلي:

  1. الترميز

    1. الحصول على إنشاء الخرائط
    2. الحصول على ضغط للخريطة
    3. الحصول على إنشاء حاويات الخريطة
  2. فك التشفير


مثال على تنسيق ملف صورة بدقة HDR الفائقة، مع البيانات الوصفية والمعلومات المتعلّقة بالاختزال

الشكل 1: مثال على تنسيق الملف والبيانات الوصفية ذات الصلة

الحافز

يهدف تنسيق الملف هذا إلى ترميز معلومات إضافية في ملفات صور SDR التي يمكن استخدامها مع تقنية العرض لإنشاء صور HDR المثلى في ملف واحد.

لكي يكون ذلك عمليًا، يجب أن يستوفي تنسيق الملف الشروط التالية:

  • أن تكون متوافقة مع الإصدارات القديمة، بحيث يتم عرض الصورة التقليدية بنطاق ديناميكي عادي (SDR) على المشاهدين الذين لا يستخدمون تقنية HDR
  • عدم استهلاك مساحة إضافية كبيرة جدًا.

بالإضافة إلى ذلك، يجب أن تستوفي تقنية العرض الشروط التالية:

  • لا تتطلّب معالجة مكثفة لفك التشفير
  • القدرة على التكيّف مع أي نسبة بين النقاط البيضاء لإطار HDR أو SDR في العرض، وقد تختلف هذه النسبة بشكل كبير بين الأجهزة، أو بشكل مؤقت على جهاز واحد.

وأخيرًا، يجب أن يكون الأسلوب قادرًا على تنفيذ جميع الإجراءات السابقة دون:

  • اقتصاص اللحظات المميّزة
  • تصغير الظل
  • تغيير التباين المحلي أو ضغطه
  • تغيير العلاقات اللونية النسبية (بين الأجسام في المشهد)

التبعيات

في ما يلي المراجع المعيارية لهذه المواصفات:

التعريفات

  • شاشة SDR

    • شاشة عادية غير مصمّمة لعرض محتوى بتقنية النطاق العالي الديناميكية (HDR) تُنتج هذه الشاشة عادةً ذروة سطوع اسمية تبلغ حوالي 400 cd/m2 أو أقل.
  • شاشة بتقنية النطاق العالي الديناميكية

    • شاشة مصمَّمة للمحتوى بتقنية HDR وتُنتج هذه الشاشات عادةً درجة سطوع أعلى اسمية أكبر من مستوى سطوع الشاشة SDR، أي 800 قرص مضغوط/متر أو أكثر، وتكون عادةً نسبة التباين فيها أفضل من شاشات SDR.
  • الصورة الأساسية

    • النسخة الأولى من صورة في ملف GContainer مع إرفاق ملفات وسائط ثانوية بها تحتوي الصورة الأساسية على البيانات الوصفية XMP في GContainer التي تحدّد ترتيب ملفات عناصر الوسائط الثانوية اللاحقة وخصائصها في حاوية الملفات.
  • الصورة الثانوية

    • ملفات عناصر الوسائط اللاحقة التي يتم إلحاقها بالصورة الأساسية في ملف GContainer
  • ضغط النطاق

    • في التصوير الفوتوغرافي، غالبًا ما تحتوي المشاهد الواقعية على نطاق ديناميكي أكبر مما يمكن أن تمثله شاشة SDR. هناك عمليات، مثل ضغط النطاق، الذي يُعرف أيضًا باسم ربط الدرجات اللونية المحلية، مطلوبة لتقليل النطاق الديناميكي لصورة معيّنة. يجب أن يتجنّب هذا التخفيض اقتصاص الأجزاء المميّزة أو تقليل التظليل، مع الحفاظ على التباين المحلي قدر الإمكان. تحاول تقليل حجم حواف الإضاءة الكبيرة في الصورة، والتي تساهم بشكل أكبر في التباين العام، مع محاولة الحفاظ على حجم حواف الإضاءة الصغيرة، والتي تشكّل التفاصيل. على الرغم من توفّر العديد من عمليات التنفيذ المختلفة، إلا أنّ هذه العملية هي إجراء عادي في معظم الكاميرات الرقمية الحديثة اليوم.
  • النقطة البيضاء في SDR

    • الحد الأقصى للإضاءة الخطية لمحتوى SDR على شاشة في وقت معين.
  • النقطة البيضاء لميزة "النطاق العالي الديناميكية"

    • الحدّ الأقصى للإضاءة الخطية لمحتوى HDR على الشاشة في وقت محدّد وتكون هذه القيمة عادةً أعلى من نقطة الأبيض في SDR.
  • تعزيز الصوت

    • النقطة البيضاء لتقنية النطاق العالي الديناميكية مقسومة على النقطة البيضاء لتقنية النطاق الديناميكي العادي
  • الحد الأقصى للتحسين المرتبط بالمحتوى (max_content_boost في المعادلات)

    • وتتيح هذه القيمة لمنشئ المحتوى تقييد درجة سطوع الصورة عند عرضها على شاشة HDR، مقارنةً بعرض SDR.
    • هذه القيمة ثابتة لصورة معيّنة. على سبيل المثال، إذا كانت القيمة هي أربعة، بالنسبة إلى أي بكسل معين، يجب أن يكون الإضاءة الخطية لعرض النطاق عالي الديناميكية المعروض 4 أضعاف الإضاءة الخطية لعرض SDR. في الواقع، يعني ذلك أنّه يمكن عرض الأجزاء الأكثر سطوعًا في المشهد بمستوى سطوع أعلى بمقدار 4 مرات.
    • في العادة، تكون هذه القيمة أكبر من 1.0.
    • يجب أن تكون دائمًا أكبر من أو تساوي الحد الأدنى لتحسين المحتوى.
  • الحد الأدنى لتعزيز المحتوى (min_content_boost في المعادلات)

    • تتيح هذه القيمة لصانع المحتوى فرض قيود على درجة تعتيم الصورة عند عرضها على شاشة HDR، مقارنةً بعرض SDR. وهذه القيمة ثابتة لصورة معيّنة.
    • على سبيل المثال، إذا كانت القيمة 0.5، يجب أن يكون سطوع إشارة HDR المعروضة (على الأقل) 0.5 ضِعف سطوع إشارة SDR المعروضة لأي بكسل معيّن.
    • في العادة، تكون هذه القيمة مساوية لـ 1.0 أو أقل بقليل.
    • يجب أن تكون دائمًا أقل من أو تساوي الحد الأقصى لتحسين المحتوى.
  • الحد الأقصى لزيادة العرض (max_display_boost في المعادلات)

    • الحد الأقصى للتحسين المتاح الذي توفّره الشاشة في وقت معيّن يمكن أن تتغيّر هذه القيمة بمرور الوقت استنادًا إلى إعدادات الجهاز وغيرها من عوامل ، مثل ظروف الإضاءة المحيطة أو عدد البكسلات الساطعة على الشاشة.
    • على سبيل المثال، إذا كانت هذه القيمة 4.0، تكون الشاشة قادرة على عرض بكسل يزيد سطوعه بأربع مرات عن النقطة البيضاء ذات تنسيق SDR. تكون هذه القيمة دائمًا أكبر من أو تساوي 1.0، لأنّ الشاشة يمكنها دائمًا عرض اللون الأبيض بتقنية HDR بدرجة سطوع لا تقل عن درجة سطوع اللون الأبيض بتقنية SDR.
  • تحسين الأداء على الشبكة الإعلانية

    • يساوي الحد الأدنى من الحد الأقصى لتحسين المحتوى والحد الأقصى لتحسين العرض. وتكون هذه القيمة أكبر من أو تساوي 1.0 دائمًا.
    • على سبيل المثال، إذا كان الحدّ الأقصى لمضاعفة المحتوى هو 4.0 والحدّ الأقصى لمضاعفة العرض هو 3.0، تكون القيمة القصوى لتحسين العرض 3.0. تظهر وحدات البكسل بدرجة أكبر بمقدار 3 مرات من SDR، نظرًا لأن إمكانات العرض هي العامل المقيد.
    • على سبيل المثال، إذا كان الحدّ الأقصى لمضاعفة المحتوى هو 4.0 والحدّ الأقصى لمضاعفة العرض هو 5.0، تكون قيمة مضاعفة العرض 4.0. يتم عرض وحدات البكسل بدرجة سطوع أعلى بـ 4 مرات مقارنةً بتقنية SDR، لأنّ الغرض من المحتوى هو العامل المحدود.
  • المعالجة المستهدَفة للمحتوى بتقنية النطاق العالي الديناميكية (HDR)

    • المعالجة المثالية للصور بتقنية HDR، وفقًا لصانع المحتوى
  • تحويل المحتوى إلى نطاق عالي الديناميكية (HDR)

    • النسخة النهائية من HDR التي تظهر على الشاشة، بعد تكييف النسخة المستهدفة من HDR لتحسين الشاشة الحالي
  • الحصول على الخريطة (recovery(x, y) في المعادلات)

    • خريطة تشير إلى مقدار سطوع كل بكسل، في عرض SDR، لتحقيق عرض النطاق عالي الديناميكية المستهدف. يمكن أن تكون هذه الخريطة قناة واحدة أو قنوات متعدّدة. تشير خريطة القنوات المتعددة إلى زيادة منفصلة لكل قناة من قنوات الألوان، مثل الأحمر والأخضر والأزرق. يوضّح هذا المستند حالة خريطة قناة واحدة.
  • clamp(x, a, b)

    • تقييد القيمة x بالنطاق [a, b]
  • exp2(x)

    • الأسس بالأساس 2: 2x
  • floor(x)

    • تعرِض هذه الدالة أقرب عدد صحيح يساوي x أو أقل منه.
  • log2(x)

    • لوغاريتم الأساس 2، اللوغاريتم2(x)
  • pow(b, x)

    • الأُس؛ bx.
  • تقنية XMP

    • النظام الأساسي القابل للتوسع للبيانات الوصفية يشير ذلك المصطلح إلى معيار يحدّد طريقة لترميز البيانات الوصفية في حاوية صورة، وفقًا لمواصفات ISO 16684-1:2011(E) XMP الجزء 1.
  • تنسيق متعدد الصور

  • GContainer

    • ‫GContainer هي طريقة لتخزين صور متعددة في حاوية صور واحدة، حيث تُعدّ صورة واحدة هي الصورة الأساسية. وتعتبر أي صور إضافية إصدارات بديلة أو مساعدة. تُستخدَم البيانات الوصفية بتنسيق XMP للإشارة إلى توفّر أي صور إضافية وتحديد معناها. لمزيد من المعلومات، يُرجى الاطّلاع على قسم GContainer details.

ترميز

يصف هذا القسم كيفية ترميز ملف JPEG مطابق. يُرجى الرجوع إلى T.81 (09/92) Digital compression and coding of continuous-tone still images، في قسم "التبعيات"، للحصول على مزيد من المعلومات حول تنسيق JPEG.

الحصول على إنشاء الخرائط

غالبًا ما تُجري مسارات معالجة الصور في الكاميرا عملية ضغط النطاق بهدف ضغط بيانات الإضاءة ذات النطاق الديناميكي العالي إلى النطاق الأدنى من الشاشات التقليدية المزوّدة بتقنية النطاق الديناميكي العادي (SDR). توفّر خريطة الكسب آلية لتخزين بيانات كافية لمحاولة استرداد بيانات الإضاءة الأصلية ذات النطاق الديناميكي العالي.

تفترض العمليات الحسابية التالية في هذا القسم حساب النقاط العائمة.

تصف الدوالّ التالية صورة SDR:

  • SDR'(x, y) هي الصورة الأساسية غير الخطية والمكوَّنة من ثلاث قنوات (عادةً ما تكون بترميز غاما).
  • SDR(x, y) هي النسخة الخطية للصورة الأساسية ذات القنوات الثلاث، ويتم الحصول عليها من خلال التحويل إلى نسخة خطية من مساحة ألوان الصورة الأساسية. على سبيل المثال، من مساحة ألوان تتضمّن وظيفة نقل sRGB إلى مساحة ألوان خطية تحافظ على الألوان الأساسية sRGB.

يتم تعريف الدالة Ysdr(x, y) في النطاق من 0.0 إلى 1.0، وهي представлява السطوع الخطي للصورة الأساسية ذات النطاق الديناميكي العادي:

Ysdr(x, y) = primary_color_profile_to_luminance(SDR(x, y))

تتوفّر تعريفات مشابهة لصورة النطاق العالي الديناميكية.

  • HDR'(x, y) هي قناة غير خطية ثلاثية، أي صورة مُشفَّرة بتنسيق PQ أو HLG.
  • HDR(x, y) هي صورة HDR الخطية ذات القنوات الثلاث.

Yhdr(x, y) هو الإضاءة في نقطة معيّنة من صورة النطاق العالي الديناميكية:

Yhdr(x, y) = primary_color_profile_to_luminance(HDR(x, y))

يتم تحديد Yhdr(x, y) في النطاق من 0.0 إلى الحد الأقصى لمضاعفة المحتوى.

يجب أن تكون الصورتان SDR وHDR بدرجة الدقة نفسها. يحدد ملف تعريف الألوان لصورة SDR مساحة اللون لصورة HDR.

على سبيل المثال، إذا كانت الصورة الأساسية ذات النطاق العادي الديناميكية (SDR) تتضمّن ملفًا شخصيًا للألوان Display-P3، يتم تحديد صورة النطاق العالي الديناميكية (HDR) وفقًا للألوان الأساسية لهذا الملف الشخصي. وهذا يعني أن صورة النطاق العالي الديناميكية تحتوي أيضًا على الألوان الأساسية لـ Display-P3.

يتم احتساب خريطة الكسب من صورتَين خطيتين تحتويان على سطوع صورة HDR المطلوبة، Yhdr(x, y)، وصورة سطوع النطاق العادي، Ysdr(x, y).

يتم تعريف دالة pixel_gain(x, y) على أنّها النسبة بين دالة Yhdr(x, y) ودالة Ysdr(x, y):

pixel_gain(x, y) = (Yhdr(x, y) + offset_hdr) / (Ysdr(x, y) + offset_sdr)

إنّ سلوك الدالة pixel_gain(x, y) عندما يكونYsdr(x, y) وoffset_sdr كلاهما صفرًا يعتمد على طريقة التنفيذ.

على سبيل المثال، يمكن أن تعالج عمليات التنفيذ الحالة التي يكون فيها كلّ من Ysdr(x, y) وoffset_sdr صفرًا من خلال تحديد pixel_gain(x, y) على أنّه 1.0. بدلاً من ذلك،تجنّب عمليات التنفيذ أيضًا هذا السيناريو من خلال استخدام offset_sdr غير صفري.

قد يختار التنفيذ قيمتَي offset_sdr وoffset_hdr.

خريطة المكاسب هي دالة قياسية تُشفِّر pixel_gain(x, y) في مساحة لوغاريتمية، مقارنةً بأكبر زيادة في المحتوى وأقل زيادة في المحتوى:

map_min_log2 = log2(min_content_boost)
map_max_log2 = log2(max_content_boost)

log_recovery(x, y) = (log2(pixel_gain(x, y)) - map_min_log2)
                   / (map_max_log2 - map_min_log2)
clamped_recovery(x, y) = clamp(log_recovery(x, y), 0.0, 1.0)
recovery(x, y) = pow(clamped_recovery(x, y), map_gamma)

يكون سلوك الدالة recovery(x, y) حيث تكون قيمة pixel_gain(x, y) صفرًا يتم تعريف التنفيذ، لأنّ log2(0) غير معرَّفة.

map_gamma هو رقم نقطة عائمة يجب أن يكون أكبر من 0.0 ويتم اختياره من خلال التنفيذ.

يتم تحديد قيم الحد الأقصى لزيادة المحتوى والحد الأدنى لزيادة المحتوى حسب طريقة التنفيذ، ويمكن لصانع المحتوى تحديدها بشكل تعسّفي. يجب أن يكون الحدّ الأقصى لتعزيز المحتوى أكبر من أو يساوي 1.0. يجب أن يكون الحد الأدنى لتحسين المحتوى في النطاق [0.0, 1.0].

تقتصر القيم في recovery(x, y) على النطاق [0.0، 1.0].

يتم تخزين خريطة الكسب في صورة ثانوية بتنسيق JPEG، وبالتالي يجب ترميزها باستخدام قيم أعداد صحيحة غير موقَّعة بسعة 8 بت، وبالتالي في النطاق [0، 255]. تمثّل كل قيمة قيمة recovery(x, y) ويتم تخزينها في بكسل واحد من الصورة الثانوية.

لتخزين الأعداد الصحيحة غير المزوّدة بعلامة بسعة 8 بت، يتم تعريف القيمة المشفَّرة على النحو التالي:

encoded_recovery(x, y) = floor(recovery(x, y) * 255.0 + 0.5)

يتم احتساب دالة الترميز باستخدام النقطة العائمة ويتم تحويلها في نهاية الأمر إلى نتيجة عدد صحيح غير موقَّع مكوّن من 8 بتات من خلال التقريب كما هو موضَّح.

يؤدي ترميز UTF-8 إلى تمثيل عدد صحيح غير موقَّت بسعة 8 بت لقيم recovery(x, y)، من 0.0 إلى 1.0. يجب تخزين خريطة الكسب المشفرة في عنصر صورة ثانوي كملف JPEG. يختار التنفيذ مقدار الضغط الذي سيتم استخدامه أثناء ترميز JPEG.

بعد تخزين خريطة الاكتساب في صورة ثانوية، يتم إلحاقها بصورة أساسية ببيانات وصفية لكل من MPF وGContainer XMP. يجب أن يحتوي دليل GContainer الخاص بالصورة الأساسية على عنصر لصورة خريطة الكسب.

تكون دقة خريطة الاكتساب المخزنة محددة التنفيذ ويمكن أن تختلف عن درجة دقة الصورة الأساسية. في حال تم تكبير Gain Map إلى درجة دقة مختلفة عن الصورة الأساسية للتخزين، يجب أن تكون طريقة أخذ العينات ثنائية الخطوط أو أفضل، ويتم تحديدها حسب التنفيذ.

يجب أن يتطابق اتجاه خريطة الاكتساب مع اتجاه الصورة الأساسية. إذا كانت ملفّات EXIF متاحة، لن يتم استخدام أي بيانات وصفية عن الاتجاه في صورة خريطة الكسب المخزّنة.

لا يتم استخدام الملف الشخصي للّون في خريطة الكسب، في حال توفّره.

الحصول على حاوية الخريطة

الملف الشخصي للألوان

يجب الإشارة إلى الملف الشخصي للألوان في الصورة من خلال ملف ICC الشخصي للصورة الأساسية.

سمات XMP

تحتوي الصورة الأساسية على بيانات وصفية بتنسيق XMP لتحديد صورتَين على الأقل تتضمّنان معلومات إضافية دلالية لتنسيق خريطة زيادة النطاق الديناميكي العالي (HDR).

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

يتم تخزين قيم السمات الموضّحة في الجداول التالية كقيم بسيطة لتنسيق XMP من أنواع القيم الأساسية المحدّدة لتنسيق XMP.

القيم الدلالية للعناصر

تحدِّد السمة Item:Semantic المعنى الخاص بالتطبيق لكل عنصر وسائط في دليل الحاوية.

القيمة الوصف
Primary يشير إلى أنّ عنصر الوسائط هو الصورة الأساسية الجاهزة للعرض في الحاوية. يجب أن يحتوي الدليل على عنصر "أساسي" واحد.
GainMap يشير إلى أنّ عنصر الوسائط هو خريطة مكاسب. قد يحتوي الدليل على عنصر "GainMap" واحد كحد أقصى.

البيانات الوصفية لخريطة زيادة نطاق الديناميكية العالي (HDR)

تُشفِّر البيانات الوصفية لخريطة الكسب معلومات عن كيفية تفسير خريطة الكسب وتطبيقها لإنشاء تمثيل HDR للصورة الأساسية.

عنوان URL الخاص بمساحة اسم XMP لإضافات XMP للبيانات الوصفية لخريطة المكاسب هو http://ns.adobe.com/hdr-gain-map/1.0/. بادئة مساحة الاسم التلقائية هي hdrgm.

يتم تخزين هذه البيانات الوصفية في حزمة XMP لصورة خريطة الكسب، ويجب أن تظهر الخصائص التالية في rdf:Description لملف XMP الخاص بخريطة الكسب:

الاسم النوع الوصف
hdrgm:الإصدار نص نسخة تنسيق خريطة الاكتساب قيد الاستخدام. هذا الإصدار هو "1.0". Required.
hdrgm:BaseRenditionIsHDR قيمة منطقية يشير إلى النطاق الديناميكي للصورة الأساسية. يشير الخيار "خطأ" إلى أنّ الصورة الأساسية هي SDR ويمكن دمج خريطة الكسب معها لتقديم عرض بتقنية HDR. يشير الخيار "صحيح" إلى أنّ الصورة الأساسية هي بتقنية HDR، وقد يتم دمج خريطة الكسب معها لإنشاء نسخة بتقنية SDR. يجب أن تكون "False". اختيارية، والقيمة التلقائية هي "خطأ".
hdrgm:GainMapMin صفيف حقيقي أو مرتب من القيم الحقيقية تخزِّن قيم map_min_log2. هذا هو log2 من الحد الأدنى لتحسين المحتوى، وهو الحد الأدنى المسموح به لنسبة الإضاءة الخطية لعرض النطاق العالي الديناميكية المستهدف مقارنةً (مقسومًا عليه) بنسبة صورة النطاق العادي الديناميكية، في بكسل معيّن. يمكن أن يكون عددًا حقيقيًا واحدًا أو مصفوفة مرتبة من الأعداد الحقيقية. عندما تكون مصفوفة مرتبة من Reals، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات "الأحمر" و"الأخضر" و و"الأزرق" على التوالي. ويجب أن تكون أقل من أو تساوي hdrgm:GainMapMax. اختياري، القيمة التلقائية هي 0.0
hdrgm:GainMapMax مصفوفة حقيقية أو مرتّبة من الريال تخزِّن قيم map_max_log2. هذا هو log2 من الحد الأقصى لتحسين المحتوى، وهو الحد الأقصى المسموح به لنسبة الإضاءة الخطية لعرض النطاق العالي الديناميكية المستهدف مقارنةً (مقسومًا عليه) بنسبة صورة النطاق العادي الديناميكية، في بكسل معيّن. يمكن أن يكون عددًا حقيقيًا واحدًا أو مصفوفة مرتبة من الأعداد الحقيقية. عندما تكون مصفوفة مرتبة من Reals، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات "الأحمر" و"الأخضر" و و"الأزرق" على التوالي. يجب أن تكون القيمة أكبر من أو تساوي hdrgm:GainMapMin. مَعلمة مطلوبة.
تنسيق hdrgm:غاما صفيف حقيقي أو مرتب من القيم الحقيقية تخزِّن قيم map_gamma. هذه هي قيمة جاما التي سيتم تطبيقها على قيم الخريطة المخزّنة. يمكن أن يكون عددًا حقيقيًا واحدًا أو مصفوفة مرتبة من الأعداد الحقيقية. عندما تكون مصفوفة من القيم الفعلية مرتبة، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات "الأحمر" و"الأخضر" و"الأزرق" على التوالي. يجب أن تكون أكبر من 0.0. اختياري، القيمة التلقائية هي 1.0.
تنسيق hdrgm:OutsetSDR مصفوفة حقيقية أو مرتّبة من الريال تخزِّن قيم offset_sdr. يشير هذا المصطلح إلى الإزاحة التي يتم تطبيقها على قيم وحدات بكسل SDR خلال عملية إنشاء الخريطة وتطبيقها. يمكن أن يكون عددًا حقيقيًا واحدًا أو مصفوفة مرتبة من الأعداد الحقيقية. عندما تكون مصفوفة مرتبة من صور Real، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات الحمراء والخضراء والزرقاء على التوالي. يجب أن تكون القيمة 0.0 أو أكبر. اختياري، القيمة التلقائية هي 0.015625 (1/64).
hdrgm:OffsetHDR صفيف حقيقي أو مرتب من القيم الحقيقية تخزِّن قيم offset_hdr. هذا هو المبلغ المُضاف الذي يتم تطبيقه على قيم وحدات بكسل HDR أثناء إنشاء خريطة الكسب وتطبيقها. يمكن أن يكون عددًا حقيقيًا واحدًا أو مصفوفة مرتبة من الأعداد الحقيقية. عندما تكون مصفوفة مرتبة من صور Real، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات الحمراء والخضراء والزرقاء على التوالي. يجب أن تكون القيمة 0.0 أو أكبر. اختيارية؛ القيمة التلقائية هي 0.015625 (1/64).
hdrgm:HDRCapacityMin حقيقي تخزِّن قيمة hdr_capacity_min. وهذا يمثّل log2 من الحد الأدنى لقيمة زيادة العرض التي يتم تطبيق الخريطة عليها على الإطلاق. تؤثر هذه القيمة أيضًا في مقدار تطبيق خريطة الاكتساب استنادًا إلى تحسين العرض. يجب أن تكون القيمة 0.0 أو أكبر. اختيارية؛ القيمة التلقائية هي 0.0.
hdrgm:نطاق HDRCapacityMax حقيقي تخزِّن قيمة hdr_capacity_max. هذا هو log2 من الحد الأقصى لقيمة تحسين العرض التي يتم تطبيق الخريطة عليها بالكامل. تؤثّر هذه القيمة أيضًا في مقدار تطبيق خريطة المكاسب استنادًا إلى زيادة العرض. ويجب أن تكون أعلى من hdrgm:HDRCapacityMin. مَعلمة مطلوبة.

مثال على خريطة اكتساب المستخدمين في XMP

يحتوي المثال التالي لحزمة XMP صالحة لخريطة الكسب على بيانات وصفية مأخوذة من ملف المثال الموضّح في قسم المقدّمة.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
     xmlns:hdrgm="http://ns.adobe.com/hdr-gain-map/1.0/"
     hdrgm:Version="1.0"
     hdrgm:GainMapMin="-0.57609993"
     hdrgm:GainMapMax="4.7090998"
     hdrgm:Gamma="1"
     hdrgm:OffsetSDR="0.015625"
     hdrgm:OffsetHDR="0.015625"
     hdrgm:HDRCapacityMin="0"
     hdrgm:HDRCapacityMax="4.7090998"
     hdrgm:BaseRenditionIsHDR="False"/>
  </rdf:RDF>
</x:xmpmeta>

تخزين MPF لخريطة الكسب

يجب تخزين صورة خريطة الكسب كصورة إضافية على النحو المحدّد في CIPA DC-x 007-2009 Multi-Picture Format، كما هو موضح في القسم التبعيات.

فك الترميز

يوضّح هذا القسم كيفية فك ترميز خريطة الكسب من ملف JPEG متوافق.

إشارة التنسيق

يمكن تحديد ملف JPEG متوافق مع هذا التنسيق من خلال توفُّر hdrgm:Version="1.0" في حزمة XMP للصورة الأساسية، حيث يكون hdrgm هو معرّف الموارد المنتظم للنطاقات http://ns.adobe.com/hdr-gain-map/1.0/.

تحديد موقع صورة خريطة المكاسب

لمعرفة تفاصيل حول تحليل الصورة وفك ترميزها، يُرجى الاطّلاع على قسم تفاصيل GContainer التالي. يُستخدَم العنصر الدلالي "GainMap" ضمن ملف XMP rdf:Directory للإشارة إلى موقع صورة خريطة الزيادة. بدلاً من ذلك، يتم استخدام فهرس IFD لملف MPF وملف XMP للصور الممسوحة ضوئيًا لتحديد موقع خريطة الكسب.

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

تُعدّ البيانات الوصفية غير صالحة إذا لم يكن هناك حقل مطلوب أو إذا كان هناك أي حقل يحتوي على قيمة غير صالحة. قد تكون القيمة غير صالحة لأنها غير قابلة للتحليل إلى النوع المحدد أو لأنها خارج نطاقها المتوقع.

في حال العثور على بيانات وصفية غير صالحة، يجب تجاهل خريطة الاكتساب وعرض صورة SDR.

الشاشة

قد يتم عرض الملفات التي تم ترميزها بتنسيق خريطة زيادة النطاق العالي الديناميكية (HDR) على إما شاشات النطاق العادي الديناميكية (SDR) التقليدية أو شاشات النطاق العالي الديناميكية (HDR) القادرة على إخراج سطوع أعلى.

استخدام خريطة التحصيل لإنشاء عرض HDR معدّل

تفترض العمليات الحسابية التالية في هذا القسم استخدام العمليات الحسابية بنقطة عائمة.

encoded_recovery(x, y) هي قيمة عدد صحيح غير موقَّت بسعة 8 بت وقناة واحدة من صورة خريطة الكسب.

إذا كانت خريطة الكسب ذات درجة دقة مختلفة عن الصورة الأساسية، يتم تحديد encoded_recovery(x, y) بدلاً من ذلك من خلال أخذ عيّنات تمت فلترتها من صورة خريطة الكسب للإحداثيتين x وy على نطاق عرض وارتفاع الصورة الأساسية، على التوالي. يجب أن تكون طريقة الفلترة ثنائية الخطوط أو أفضل، وتكون محددة من خلال التنفيذ.

يتم تحديد map_gamma من خلال حقل البيانات الوصفية hdrgm:Gamma.

log_recovery(x, y) هو اكتساب بكسل النقطة العائمة الذي تمت تسويته في أي مساحة لوغاريتمية:

recovery(x, y) = encoded_recovery(x, y) / 255.0
log_recovery(x, y) = pow(recovery(x, y), 1.0 / map_gamma)

"الحدّ الأقصى لتحسين العرض" هو قيمة نقطة عائمة عددية يتم تحديدها على أنّها النسبة بين النقطة البيضاء الحالية للنطاق العالي الديناميكية ومقسمة على النقطة البيضاء الحالية لنطاق SDR. يوفّر نظام العرض هذه القيمة ويمكن أن تتغيّر بمرور الوقت.

يتم تحديد hdr_capacity_max من خلال حقل البيانات الوصفية hdrgm:HDRCapacityMax. يتم تحديد hdr_capacity_min من خلال حقل البيانات الوصفية hdrgm:HDRCapacityMin.

يتم تحديد weight_factor على النحو التالي عندما تكون قيمة hdrgm:BaseRenditionIsHDR "False":

unclamped_weight_factor = (log2(max_display_boost) - hdr_capacity_min)
                        / (hdr_capacity_max - hdr_capacity_min)
weight_factor = clamp(unclamped_weight_factor, 0.0, 1.0)

عندما تكون قيمة hdrgm:BaseRenditionIsHDR هي "صحيح"، تكون المعادلة الثانية بدلاً من ذلك:

weight_factor = 1.0 - clamp(unclamped_weight_factor, 0.0, 1.0)

يتم تحديد gain_map_max من خلال حقل البيانات الوصفية hdrgm:GainMapMax. يتم تحديد gain_map_min من خلال حقل البيانات الوصفية hdrgm:GainMapMin. يتم تحديد offset_sdr من خلال حقل البيانات الوصفية hdrgm:OffsetSDR. يتم تحديد offset_hdr من خلال حقل البيانات الوصفية hdrgm:OffsetHDR.

يمكن احتساب التحويل الخطي المُعدّل لمحتوى HDR على النحو التالي:

log_boost(x, y) = gain_map_min * (1.0f - log_recovery(x, y))
                + gain_map_max * log_recovery(x, y)
HDR(x, y) = (SDR(x, y) + offset_sdr) * exp2(log_boost(x, y) * weight_factor)
          - offset_hdr

وإذا لزم الأمر، قد يتم تنفيذ تحويل على HDR(x, y) لوضع البيانات في المساحة التي تتوقعها الشاشة. يجب أن تكون أي من هذه التحويلات صحيحة من حيث اللون.

تفاصيل GContainer

يحدّد هذا القسم متطلبات إضافية لكي يتوافق هذا التنسيق مع البيانات الوصفية بتنسيق GContainer XML. تظهر البيانات الوصفية على نحو تسلسلي وفقًا لمواصفات ISO 166841:2011(E) XMP الجزء 1، ويتم تضمينها داخل ملف الصورة الأساسي كما هو موضّح في الجزء 3 من مواصفات Adobe XMP الجزء 3 التخزين في الملفات. يحتوي ملف الصورة الأساسي على العناصر التالية بتنسيق RDF/XML.

متطلبات حِزم XMP

يجب أن تتضمّن حزمة XMP إضافة XMP للبيانات الوصفية لخريطة المكاسب من خلال معرّف الموارد المنتظم للنطاقات http://ns.adobe.com/hdr-gain-map/1.0/. البادئة التلقائية لنطاق الاسم هي hdrgm.

يجب أن تحدِّد حزمة XMP hdrgm:Version="1.0".

عنصر الحاوية

مساحة اسم XMP لإضافات XMP في GContainer هي http://ns.google.com/photos/1.0/container/. بادئة مساحة الاسم التلقائية هي Container.

وتتضمن الصورة الأساسية عنصر Container:Directory في البيانات الوصفية لـ XMP يحدّد ترتيب ملف الوسائط التالي وخصائصه في حاوية الملف. يحتوي كل ملف في الحاوية على عنصر وسائط مقابل في Container:Directory. يصف عنصر الوسائط الموقع في حاوية الملفات والخصائص الأساسية لكل ملف مُدمَج.

يتم ترميز عنصر الحاوية في البيانات الوصفية XMP للصورة الأساسية ويحدد directory of media items in the container. يجب وضع عناصر الوسائط في ملف الحاوية بنفس ترتيب عناصر الوسائط في الدليل، كما يجب وضعها بإحكام.

يمكن أن يحتوي الدليل على عنصر صورة "أساسي" واحد فقط، ويجب أن يكون هو العنصر الأول في الدليل.

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

عنصر السلعة

تصف عناصر العنصر كيفية استخدام التطبيق لكل عنصر من عناصر الوسائط.

عنوان URL الخاص بمساحة اسم XMP لإضافات XMP الخاصة بعناصر GContainer هو http://ns.google.com/photos/1.0/container/item/. بادئة مساحة الاسم التلقائية هي Item.

يجب أن يكون عنصر الوسائط الأول هو الصورة الأساسية.  يجب أن تحدّد Item:Semantic = "Primary" وItem:Mime مدرَجين في قيم أنواع MIME للعناصر.

يتم تحديد طول عنصر الصورة الأساسي من خلال تحليل الصورة الأساسية استنادًا إلى نوع MIME بدءًا من بداية حاوية الملف.

يمكن أن تحتوي عناصر الوسائط على سمة Item:Padding تحدّد مساحة إضافية بين نهاية عنصر الوسائط وبداية عنصر الوسائط التالي. عند ظهور العنصرContainer:Directory، يشيرItem:Padding إلى المساحة الفارغة بين نهاية العنصر ونهايةملف.

يجب أن يحتوي كل عنصر وسائط على نوع Item:Mime وسمة Item:Semantic. يجب أن تحتوي عناصر وسائط الصور الثانوية على سمات Item:Length.

يمكن لعناصر الوسائط التسلسلية مشاركة بيانات الموارد ضمن حاوية الملف. يحدِّد عنصر الوسائط الأول موقع المورد في حاوية الملف، ويتم ضبط Item:Length على 0 في عناصر الوسائط المشترَكة اللاحقة. في حال كانت بيانات المورد هي نفسها حاوية، يمكن استخدام Item:URI لتحديد موقع بيانات عنصر الوسائط داخل المورد.

يتم تحديد موقع موارد عناصر الوسائط في الحاوية من خلال جمع طول ترميز الصورة الأساسي وقيم Item:Length الخاصة بموارد عناصر الوسائط الثانوية السابقة وجميع قيم Item:Padding السابقة. يُعتبَر أنّ القيمة Item:Padding هي 0 في موارد عناصر الوسائط التي لا تحدد قيمتها.

اسم السمة النوع الوصف
العنصر:ميمي نص سلسلة بسيطة تشير إلى نوع MIME لعنصر الوسائط في الحاوية للاطّلاع على تعريف، راجِع قسم "قيم أنواع MIME للعناصر". Required.
العنصر:دلالي نص سلسلة بسيطة تشير إلى المعنى الخاص بالتطبيق لعنصر الوسائط للاطّلاع على تعريف، يُرجى الاطّلاع على قسم "القيم الدلالية للسلع". Required.
العنصر: الطول عدد صحيح سلسلة بسيطة تحتوي على عدد صحيح موجب بالبايت من العنصر. يشير الطول 0 إلى أنّه تمت مشاركة مرجع عنصر الوسائط مع عنصر الوسائط السابق. مطلوب لملفات الوسائط الثانوية. اختيارية لعنصر وسائط الصورة الأساسي.
السلعة:التصنيف نص سلسلة محدّدة من التنفيذ تُستخدَم لإزالة الغموض عن عناصر السلع المتعددة التي تحمل القيمة نفسها لسمة Item:Semantic. اختياري:
العنصر:المساحة المتروكة عدد صحيح سلسلة تحتوي على طول عدد صحيح موجب بوحدة البايت لمساحة ملء إضافية بين نهاية عنصر الوسائط وبداية عنصر الوسائط التالي، أو نهاية الملف عند استخدامه في عنصر الوسائط الأخير في Container:Directory. يتم افتراض القيمة 0 في حال عدم وجودها. اختياري
العنصر:URI نص سلسلة عنوان URL متوافقة مع القسم 8.11.9 من ISO/IEC 14496-12، تحتوي على عنوان URL النسبي لبيانات الوسائط داخل مورد عنصر الوسائط القيمة التلقائية هي مصدر الصورة الأساسي. اختياري لأنواع MIME الخاصة بتنسيق ملف الوسائط الأساسي ISO/IEC 14496-12 ولا يجوز استخدامها في الحالات الأخرى.

قيم أنواع MIME للعناصر

تحدّد السمة Item:Mime نوع MIME لكل عنصر وسائط data.

القيمة الوصف
image/jpeg صورة JPEG

مثال على ملف XMP في GContainer

يحتوي المثال التالي لحزمة GContainer XMP صالحة على بيانات وصفية مأخوذة من نموذج الملف الموضّح في القسم Introduction.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.1.2">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description
     xmlns:Container="http://ns.google.com/photos/1.0/container/"
     xmlns:Item="http://ns.google.com/photos/1.0/container/item/"
     xmlns:hdrgm="http://ns.adobe.com/hdr-gain-map/1.0/"
     hdrgm:Version="1.0">
      <Container:Directory>
        <rdf:Seq>
          <rdf:li rdf:parseType="Resource">
            <Container:Item
             Item:Semantic="Primary"
             Item:Mime="image/jpeg"/>
          </rdf:li>
          <rdf:li rdf:parseType="Resource">
            <Container:Item
             Item:Semantic="GainMap"
             Item:Mime="image/jpeg"
             Item:Length="66171"/>
          </rdf:li>
        </rdf:Seq>
      </Container:Directory>
    </rdf:Description>
  </rdf:RDF>
</x:xmpmeta>

التوافق مع ISO 21496-1

يوفّر ISO 21496-1 آلية تغليف بديلة للبيانات الوصفية لخريطة كسب الترميز في ملف صورة. يمكنك ترميز كل من البيانات الوصفية لميزة Ultra HDR والبيانات الوصفية وفقًا لمعيار ISO 21496-1 في ملف JPEG واحد باستخدام صورة واحدة لخريطة الكسب في الملف.

تظهر البيانات الوصفية ISO 21496-1 مباشرةً بعد قسم APP1 XMP في
كلتا صورتَي JPEG.

الشكل 2. مثال على تنسيق الملف باستخدام تقنية "النطاق العالي الديناميكي الفائق" وبيانات وصفية وفقًا لمعيار ISO 21496-1

لتحقيق أكبر قدر من التوافق على عدّة منصات، يجب أن تتيح عمليات التنفيذ والتطبيقات في Android التي تنفِّذ ترميزًا أو فك ترميز ملفات JPEG باستخدام خرائط اكتساب التشفير وفك الترميز لكل من البيانات الوصفية Ultra HDR v1 وISO 21496-1. أثناء عملية الترميز، يجب أن يُشفِّر التطبيق أو عملية التنفيذ كلا تنسيقَي البيانات الوصفية. إذا كان كلا النوعَين من البيانات الوصفية متوفّرَين أثناء عملية فك التشفير، يجب أن يفضّل التطبيق أو عملية التنفيذ استخدام البيانات الوصفية وفقًا لمعيار ISO 21496-1.

سجل التغيير

يحتوي هذا القسم على معلومات حول التغييرات بين إصدارات هذه المواصفات.

v1.1

جميع التغييرات في هذا الإصدار من مواصفات Ultra HDR هي معلومات تتعلّق بالتوافق مع معيار ISO 21496-1. لم يتم إجراء أي تغييرات على تنسيق الملف الفعلي.

الإصدار 1.0

جهة النشر الأولية لمواصفات Ultra HDR