الإصدار 1.0 من تنسيق Ultra HDR Image

المقدّمة

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

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

  1. الترميز

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


مثال على تنسيق ملف تنسيق صورة بنطاق عالي الديناميكية (Ultra HDR) مع معلومات الإزاحة
والبيانات الوصفية ذات الصلة

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

الحافز

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

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

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

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

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

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

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

التبعيات

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

التعريفات

  • عرض SDR

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

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

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

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

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

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

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

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

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

    • تتيح هذه القيمة لمنشئ المحتوى تقييد مقدار تعتيم الصورة عند عرضها على شاشة بنطاق عالي الديناميكية (HDR)، وذلك مقارنةً بعرض النطاق العادي الديناميكية (SDR).هذه القيمة هي قيمة ثابتة لصورة معيّنة.
    • على سبيل المثال، إذا كانت القيمة 0.5، يجب أن يكون الإضاء الخطي لعرض النطاق العالي الديناميكية المعروض (على الأقل) 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) المستهدَف

    • الصورة المثالية لتصوير بتقنية النطاق العالي الديناميكية وفقًا لمنشئ المحتوى
  • عرض النطاق العالي الديناميكية المُعدَّل

    • العرض النهائي للنطاق العالي الديناميكية الذي يظهر على الشاشة، بعد تعديل عرض النطاق العالي الديناميكية المستهدَف لتعزيز العرض الحالي
  • الحصول على الخريطة (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)

    • الأُس؛ بx.
  • XMP

    • منصة بيانات وصفية قابلة للتوسُّع معيار يحدد طريقة لترميز البيانات الوصفية في حاوية صورة، ويحدده ISO 16684-1:2011(E) XMP الجزء 1.
  • تنسيق متعدد الصور

    • تنسيق متعدد الصور هو تقنية طوّرتها "جمعية منتجات التصوير والتصوير (CIPA)" لتخزين صور متعددة بترميز JPEG في ملف واحد بتنسيق JPEG.
    • للحصول على مزيد من المعلومات، راجع التبعية ذات الصلة، مستند تقني من CIPA-× 007-2009 لتنسيق متعدد الصور.
  • GContainer

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

الترميز

يصف هذا القسم كيفية ترميز ملف JPEG متوافق. راجع T.81 (09/92) الضغط الرقمي والترميز للصور الثابتة للدرجات اللونية المستمرة، في قسم التبعيات، للحصول على مزيد من المعلومات حول تنسيق 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) هي صورة خطّية بنطاق عالي الديناميكية بثلاث قنوات.

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 بت غير موقع من خلال التقريب كما هو موضح.

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

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

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

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

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

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

ملف تعريف الألوان

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

سمات XMP

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

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

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

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

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

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

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

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

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

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

الاسم Type الوصف
hdrgm:إصدار نص يتم استخدام إصدار تنسيق خريطة التحصيل هذا. هذا الإصدار هو "1.0". Required.
hdrgm:BaseRenditionIsHDR قيمة منطقية تشير هذه السمة إلى النطاق الديناميكي للصورة الأساسية. يشير الخيار "خطأ" إلى أنّ الصورة الأساسية هي SDR ويمكن دمج خريطة الالتقاط معها لإنشاء عرض نطاق عالي الديناميكية (HDR). يشير الخيار "صحيح" إلى أنّ الصورة الأساسية هي نطاق عالي الديناميكية (HDR)، وقد يتم دمج خريطة الالتقاط معها لإنتاج عرض النطاق العادي الديناميكية (SDR). يجب أن تكون القيمة "False". اختيارية، القيمة التلقائية هي False.
hdrgm:GainMapMin مصفوفة قيم حقيقية أو مرتّبة تخزين قيم map_min_log2. تشير هذه القيمة إلى log2 دقيقة لتعزيز المحتوى، وهو الحد الأدنى المسموح به لنسبة السطوع الخطي لعرض النطاق العالي الديناميكية المستهدَف مقارنةً بنسبة (مقسومة) على صورة النطاق العادي الديناميكية (SDR) في وحدة بكسل محدّدة. يمكن أن تكون قيمة حقيقية واحدة، أو مصفوفة مرتبة من القيم الحقيقية. عند مصفوفة مرتّبة من القيم الحقيقية، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات الأحمر والأخضر والأزرق على التوالي. ويجب أن تكون أقل من أو تساوي hdrgm:GainMapMax. اختيارية، القيمة التلقائية هي 0.0.
hdrgm:GainMapMax مصفوفة قيم حقيقية أو مرتّبة تخزين قيم map_max_log2. هذه القيمة هي log2 من التعزيز الأقصى للمحتوى، وهو الحد الأقصى المسموح به للسطوع الخطي لعرض النطاق العالي الديناميكية المستهدَف مقارنةً بنسبة (مقسمة على) صورة النطاق العادي الديناميكية (SDR) في وحدة بكسل محدّدة. يمكن أن تكون قيمة حقيقية واحدة، أو مصفوفة مرتبة من القيم الحقيقية. عند مصفوفة مرتّبة من القيم الحقيقية، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات الأحمر والأخضر والأزرق على التوالي. ويجب أن تكون أكبر من أو تساوي hdrgm:GainMapMin. مَعلمة مطلوبة.
hdrgm:غاما مصفوفة قيم حقيقية أو مرتّبة تخزين قيم map_gamma. هذه هي غاما التي سيتم تطبيقها على قيم الخريطة المخزّنة. يمكن أن تكون قيمة حقيقية واحدة، أو مصفوفة مرتبة من القيم الحقيقية. عند مصفوفة مرتّبة من القيم الحقيقية، قد تحتوي على عنصر واحد ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات الحمراء والخضراء والزرقاء على التوالي. يجب أن تكون القيمة أكبر من 0.0. اختيارية، القيمة التلقائية هي 1.0.
hdrgm:OffsetSDR مصفوفة قيم حقيقية أو مرتّبة تخزين قيم offset_sdr. هذه هي الإزاحة التي سيتم تطبيقها على قيم وحدات بكسل SDR أثناء إنشاء خرائط التحصيل وتطبيقها. قد تكون مصفوفة واحدة من القيم الحقيقية، أو مصفوفة مرتبة من القيم الحقيقية. عند إدراج مصفوفة مرتّبة من القيم الحقيقية، قد تتضمّن عنصرًا واحدًا ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات الأحمر والأخضر والأزرق على التوالي. يجب أن تكون القيمة 0.0 أو أكبر. اختيارية، القيمة التلقائية هي 0.015625 (1/64).
hdrgm:OffsetHDR مصفوفة قيم حقيقية أو مرتّبة تخزين قيم offset_hdr. هذه هي الإزاحة التي سيتم تطبيقها على قيم بكسل النطاق العالي الديناميكية أثناء إنشاء خريطة التحصيل وتطبيقها. قد تكون مصفوفة واحدة من القيم الحقيقية، أو مصفوفة مرتبة من القيم الحقيقية. عند إدراج مصفوفة مرتّبة من القيم الحقيقية، قد تتضمّن عنصرًا واحدًا ينطبق على جميع القنوات أو ثلاثة عناصر للقنوات الأحمر والأخضر والأزرق على التوالي. يجب أن تكون القيمة 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-Image Format، كما هو مُشار إليه في قسم التبعيات.

فك الترميز

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

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

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

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

للحصول على تفاصيل حول تحليل الصورة وفك ترميزها، يُرجى الاطّلاع على قسم تفاصيل GContainer التالي. يُستخدم العنصر الدلالي "GainMap" في XMP rdf:Directory للإشارة إلى موقع صورة خريطة التحصيل. بدلاً من ذلك، يتم استخدام MPF Index IFD و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)

"الحد الأقصى لتعزيز العرض" هو قيمة النقطة العائمة العددية التي يتم تحديدها على أنّها النسبة بين النقطة البيضاء الحالية للنطاق العالي الديناميكية (HDR) الحالية ومقسومة على النقطة البيضاء الحالية الخاصة بنطاق 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 "True"، تكون المعادلة الثانية بدلاً من ذلك:

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.

يمكن احتساب عرض النطاق العالي الديناميكية المُعدَّل خطيًا على النحو التالي:

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

يحدّد هذا القسم متطلبات إضافية يتوافق هذا التنسيق مع البيانات الوصفية بتنسيق XML في GContainer. يتم ترتيب البيانات الوصفية في تسلسل وفقًا للجزء الأول من مواصفات XMP (ISO 166841:2011(E)، ويتم تضمينها داخل ملف الصورة الأساسي على النحو الموضح في مواصفات 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 للإضافة GContainer XMP هي http://ns.google.com/photos/1.0/container/. بادئة مساحة الاسم التلقائية هي Container.

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

يتم ترميز عنصر الحاوية ضمن بيانات XMP الوصفية للصورة الأساسية ويحدّد دليل عناصر الوسائط في الحاوية. ويجب وضع عناصر الوسائط في ملف الحاوية بنفس ترتيب عناصر الوسائط في الدليل، كما يجب تعبئتها بإحكام.

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

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

عنصر العنصر

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

معرّف الموارد المنتظم (URI) لمساحة الاسم XMP للإضافة GContainer Item XMP هو 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 صفرًا في موارد عناصر الوسائط التي لا تحدّد قيمتها.

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

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

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

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

مثال على GContainer XMP

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

<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>