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

مقدّمة

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

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

  1. الترميز

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


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

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

الحافز

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

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

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

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

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

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

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

التبعيات

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

التعريفات

  • شاشة SDR

    • شاشة عرض تقليدية، وغير مصممة لعرض المحتوى بنطاق عالي الديناميكية. وتنتج عادةً هذه الشاشات أعلى درجة سطوع اسمية تبلغ حوالي 400 قرص مضغوط/متر مكعب 2 أو أقل.
  • عرض النطاق العالي الديناميكية

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

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

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

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

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

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

    • النقطة البيضاء ذات النطاق العالي الديناميكية مقسومة على النقطة البيضاء لنطاق 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 content Boost.
  • الحدّ الأقصى لتأثير الشبكة الإعلانية (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، log2(x)
  • pow(b, x)

    • الرفع إلى أس: bx
  • XMP

    • منصة البيانات الوصفية القابلة للتوسيع معيار يحدّد طريقة لتحويل البيانات الوصفية إلى حاوية صور، وهو محدّد في ISO 16684-1:2011(E) XMP Specification Part 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.

يتم احتساب خريطة الاكتساب من صورتَين خطّيتَين تشتملان على سطوع الصورة ذي النطاق العالي الديناميكية المطلوب، 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 الخاص بالصورة الأساسية على عنصر لصورة خريطة الكسب.

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

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

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

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

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

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

سمات XMP

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

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

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

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

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

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

البيانات الوصفية لخريطة زيادة نطاق الديناميكية العالي (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 من الحد الأدنى لمقدار تعزيز المحتوى، وهو الحد الأدنى المسموح به للإضاءة الخطية لعرض النطاق العالي الديناميكية المستهدَف مقارنةً بعرض صورة SDR (مقسّمة على) على بكسل معيّن. يمكن أن يكون عددًا حقيقيًا واحدًا أو مصفوفة مرتبة من الأعداد الحقيقية. وعند ترتيب مصفوفة من قيم "القيم الواقعية"، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر لقنوات الأحمر والأخضر والأزرق على التوالي. ويجب أن تكون أقل من أو تساوي hdrgm:GainMapMax. اختياري، القيمة التلقائية هي 0.0
hdrgm:كسبَانMapMax مصفوفة حقيقية أو مرتّبة من الريال تخزِّن قيم map_max_log2. هذا هو log2 من الحد الأقصى لتحسين المحتوى، وهو الحد الأقصى المسموح به لنسبة الإضاءة الخطية لعرض النطاق العالي الديناميكية المستهدف مقارنةً (مقسومًا عليه) بنسبة صورة النطاق العادي الديناميكية، في بكسل معيّن. يمكن أن يكون عددًا حقيقيًا واحدًا أو مصفوفة مرتبة من الأعداد الحقيقية. عندما تكون مصفوفة مرتبة من Reals، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات "الأحمر" و"الأخضر" و و"الأزرق" على التوالي. يجب أن تكون القيمة أكبر من أو تساوي hdrgm:GainMapMin. مَعلمة مطلوبة.
تنسيق hdrgm:غاما صفيف حقيقي أو مرتب من القيم الحقيقية تخزِّن قيم map_gamma. هذا هو غاما الذي يجب تطبيقه على قيم الخريطة المخزنة. قد تكون قيمة واحدة حقيقية أو مصفوفة مرتبة من الريال. عندما تكون مصفوفة من القيم الفعلية مرتبة، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات "الأحمر" و"الأخضر" و"الأزرق" على التوالي. يجب أن تكون القيمة أكبر من 0.0. اختياري، القيمة التلقائية هي 1.0.
hdrgm:OffsetSDR مصفوفة حقيقية أو مرتّبة من الريال تخزِّن قيم offset_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 بتنسيق متعدد الصور، كما هو موضّح في قسم التبعيات.

فك الترميز

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

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

يمكن التعرّف على ملف JPEG المطابِق لهذا التنسيق من خلال توفُّر hdrgm:Version="1.0" في حزمة XMP الخاصة بالصورة الأساسية، حيث يشير hdrgm إلى معرّف الموارد المنتظم (URI) لمساحة الاسم 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 للبيانات الوصفية لخريطة الاكتساب عبر معرف الموارد المنتظم (URI) لمساحة الاسم 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 لكل بيانات عنصر وسائط.

القيمة الوصف
صورة/jpeg صورة بتنسيق JPEG

مثال على GContainer XMP

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

<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 آلية بديلة لتغليف ترميز البيانات الوصفية لخريطة الكسب في ملف صورة. يمكنك ترميز كل من البيانات الوصفية ذات تنسيق HDR الفائق والبيانات الوصفية وفقًا لمعيار ISO 21496-1 في ملف JPEG واحد باستخدام صورة واحدة في الملف.

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

الشكل 2: مثال على تنسيق ملفّ باستخدام البيانات الوصفية بتنسيق Ultra HDR وISO 21496-1

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

سجل التغيير

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

v1.1

جميع التغييرات في هذا الإصدار من مواصفات دقة HDR الفائقة هي معلومات ومعلومات عن التوافق مع ISO 21496-1. وليس هناك أي تغييرات في تنسيق الملف الفعلي.

الإصدار 1.0

نشر مواصفات دقة HDR الفائقة الأولية