hqx (خوارزمية)
hqx ("مقياس الجودة العالية") عبارة عن مجموعة من ثلاث خوارزميات لتكبير الصور، طوّرها ماكسيم ستيبين. هذه الخوارزميات هي hq2x و hq3x و hq4x ، والتي تُكبّر الصورة بمعامل 2 و 3 و 4 على التوالي. أُنشئت هذه الخوارزميات في البداية عام 2003 لمحاكي Super NES المسمى ZSNES ، [ 1 ] وتُستخدم في محاكيات أخرى مثل Nestopia و FCEUX و higan و Snes9x .
الخوارزمية
يتم المرور على بكسلات الصورة الأصلية من أعلى اليسار إلى أسفل اليمين. لكل بكسل، تتم مقارنة البكسلات الثمانية المحيطة به بلون البكسل الأصلي. يتم الكشف عن الأشكال من خلال البحث عن بكسلات ذات لون مشابه وفقًا لعتبة YUV . يستخدم برنامج hqx فضاء ألوان YUV لحساب فروق الألوان، بحيث تُعطى فروق السطوع وزنًا أكبر لمحاكاة الإدراك البشري. [ 2 ] وهذا يعطي إجماليًامجموعات من الجيران المتشابهين أو المختلفين. لتوسيع البكسل الواحد إلى كتلة من البكسلات بحجم 2×2 أو 3×3 أو 4×4، يتم البحث عن ترتيب الجيران في جدول محدد مسبقًا يحتوي على أنماط الاستيفاء اللازمة. [ 2 ]
تخضع بيانات الاستيفاء في جداول البحث لشرط الحفاظ على استمرارية القطع المستقيمة، مع الحرص على تحسين سلاسة الحركة. يُعدّ توليد جداول البحث هذه، التي تحتوي على 256 مرشحًا، عملية بطيئة نسبيًا، وهي المصدر الرئيسي للتعقيد في الخوارزمية: فمرحلة العرض بسيطة وسريعة للغاية، ومصممة بحيث يمكن تنفيذها في الوقت الفعلي على وحدة معالجة مركزية تدعم تقنية MMX . [ 2 ]
في شفرة المصدر، تُمثَّل بيانات الاستيفاء كوحدات ماكرو للمعالجة المسبقة تُدرج في عبارات switch case ، ولا توجد شفرة مصدر تؤدي إلى إنشاء جدول بحث. يصف المؤلف عملية إنشاء جدول البحث على النحو التالي: [ 2 ]
... لكل تركيبة، يجب تحديد التمثيل المتجهي الأكثر احتمالاً للمنطقة، مع مراعاة الحفاظ على الحواف بين المناطق الملونة المختلفة في الصورة، بحيث يكون اتجاه الحافة أقرب ما يمكن إلى الاتجاه الصحيح. ثم يُحوّل هذا التمثيل المتجهي إلى صورة نقطية بدقة أعلى (3x) باستخدام تقنية منع التعرج، وتُخزّن النتيجة في جدول البحث.
تم تكبير الصورة 3 مرات باستخدام تقنية الاستيفاء لأقرب جار.
تم تكبير الصورة ثلاث مرات باستخدام الاستيفاء الثنائي الخطي
تم تكبير الصورة بمقدار 3 أضعاف باستخدام hq3x
التطبيقات
- تم نقل الخوارزمية الأصلية إلى DevIL (مع الاحتفاظ بها بلغة C). [ 2 ]
- تتوفر نسخٌ مُعدّلة للغات Java وC#. تُوسّع هذه التطبيقات نطاق وحدات الماكرو. [ 3 ] [ 4 ]
- نسخة C++ من تطوير byuu، مؤلف bsnes ، تقوم بتشفير جدول البحث بطريقة فعالة من حيث المساحة. استغل byuu تناظر الأنماط لإنشاء هذا التشفير، وكتب بعض الملاحظات حول تفسير جداول البحث الأصلية. [ 5 ]
- تُنفذ مكتبة libretro مجموعتين من التظليل في لغات Slang/ HLSL و GLSL و Cg :
- عائلة hqx ، وهي hqx الأصلية. [ 6 ] نظرًا لأنها تعمل على وحدات معالجة الرسومات الحديثة ، يتم استبدال جداول البحث بالنسيج. [ 7 ] تم إنشاء النسيج عن طريق استعلام نسخة معدلة من hqx عن عبارة switch/case الخاصة بها.
- عائلة scalehq ، التي غالباً ما يتم الخلط بينها وبين hqx. لا علاقة لها بـ hqx، بل هي بالأحرى خوارزمية عامة لتكبير الصور وتنعيمها. [ 8 ]
- تم تطبيق تقنية hqx أيضًا في ffmpeg لتكبير الصور والفيديوهات بمقدار 2x أو 3x أو 4x. تجدون شرحًا لعملية إنتاج هذه التقنية لـ ffmpeg هنا ، ويمكن استخدامها على النحو التالي:
ffmpeg -i %1 -filter_complex hqx=2 hqx2-%1لإنتاج صورة أو فيديو بحجم 2x.
انظر أيضاً
مراجع
- ↑ "HiEnd3D" . 2013-12-05. مؤرشف من الأصل في 2013-12-05 . تم الاطلاع عليه في 2023-02-12 .
- 1 2 3 4 5 زيميك، كاميرون (6 مايو 2019). "hqx README (منفذ grom358)" . جيثب .
- ↑ غارسيا، إيدو (6 مارس 2019). "hqx-java" . جيت هاب .
- ↑ تامشي. "hqxsharp" . جيت هاب .
- ↑ بييو. إعلان الإصدار. مؤرشف بتاريخ 30 سبتمبر 2011 في أرشيف الإنترنت . تم الاطلاع عليه بتاريخ 14 أغسطس 2011. تم نشر نسخة متاحة للعموم على موقع Pastebin.
- ↑ "hqx" . وثائق Libretro .
- ↑ بلوك، جولز (12 أبريل 2019). "hqx-shader" . جيت هاب .
- ↑ ك، هنتر (20 يونيو 2014). "Filthy Pants: مدونة حاسوب: مقارنة حقيقية بين تظليل Hq2x و xBR" . Filthy Pants .
روابط خارجية
- hq2x و hq3x و hq4x في أرشيف الإنترنت
- نسخة من المشروع الأصلي باستخدام أداة سطر الأوامر DevIL ومكتبة C
- مشروع hqxSharp هو نسخة معدلة من hqx مع دعم إضافي للشفافية والتفاوتات المخصصة والتجانب السلس (C#)
- مشروع فلترة الصور ثنائية الأبعاد على موقع code.google.com يتضمن فلاتر hqx والمزيد (C#)
- مشروع hqx-java، مشروع Arcnor - نسخة مجانية من hqxSharp مكتوبة بلغة Java مع عرض توضيحي للاستخدام (Java)
- HqxCli-Java أداة سطر أوامر تستخدم تطبيق Arcnor (جافا)
- قصة تنفيذ ffmpeg ffmpeg -i %1 -filter_complex hqx=2 hqx2-%1 لإنتاج صورة أو فيديو بحجم 2x.
- معالجة الصور
