JPEG. خوارزمية الضغط

مرحبا مرة أخرى! لقد وجدت هذه المقالة ، كتبت مرة أخرى في مايو 2019. هذا استمرار لسلسلة من المقالات حول WAVE و JPEG. سيتضمن هذا المنشور معلومات حول خوارزمية ترميز الصور والتنسيق نفسه ككل.


قليل من التاريخ


ملعقة كبيرة من مقالة ويكيبيديا:


تعد JPEG (Joint Photographic Experts Group) أحد تنسيقات الرسومات النقطية الشائعة المستخدمة لتخزين صور الصور والصور المشابهة.

تم تطوير هذا المعيار بواسطة مجموعة خبراء التصوير الفوتوغرافي المشتركة مرة أخرى في عام 1991 لضغط الصور بكفاءة.


ما هي المسارات التي تذهب من الخام إلى الحياة السياسية في فرنسا


يعتقد بعض الأشخاص أن صور JPEG عبارة عن بيانات أولية مضغوطة بطريقة Huffman ، لكن هذا ليس كذلك. قبل التحكم في الضغط ، تقطع البيانات شوطًا طويلاً.


أولاً ، يتم تغيير نموذج اللون من RGB إلى YCbCr. هناك حتى خوارزمية خاصة لهذا - هنا . لا يتم لمس Y ، لأنه مسؤول عن السطوع ، وسيكون التغيير ملحوظًا.


أول ما يتم مع الصورة هو أخذ العينات. هذا سهل الفهم: يتم أخذ صفيف 2 × 2 بكسل ، ثم يتم أخذ Cb و Cr - متوسط ​​قيم كل مكون من مكونات YCbCr من هذه البكسلات الأربعة. وهكذا ، فزنا بـ 6 بايت ، بدلاً من 4 Y و 4 Cb و 4 Cr ، حصلنا على 4 Y ونفس Cb و Cr لكل منهم (4 + 4 + 4 = 12 ؛ 4 + 1 + 1 = 6 ؛ 12 - 6 = 6). على مقياس من 2x2 ، يبدو الضغط المفقود مع نسبة ضغط 2: 1 صلبًا. هذا ينطبق على الصورة بأكملها. وهكذا - انخفضوا نصف الحجم. ويمكننا استخدام هذه التقنية بسبب إدراكنا للألوان. سوف يلاحظ الشخص بسهولة وجود اختلاف في السطوع ، ولكن ليس في اللون ، إذا تم حسابه في كتلة صغيرة من البكسل. يمكن أيضًا إجراء التخفيف في خط ، 4 بكسل أفقياً وعموديًا. يتم استخدام الخيار الأول في كثير من الأحيان. إذا كانت جودة الصورة مهمة ، فلن يتم تنفيذ الترقق على الإطلاق.
التوضيح المرئي للتخفيف (لم يسمح Habr بإدخال صورة gif) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif


الجزء الأكبر من الإعداد

DCT

الآن الجزء الأكثر صعوبة وضرورية. تنقسم الصورة بأكملها إلى كتل 8 × 8 (استخدم الحشوة في حالة عدم وجود دقة مضاعفة لجانب الكتلة).


الآن ، لكل كتلة ، يتم تطبيق DCT (تحويل جيب التمام المنفصل) . في هذا الجزء ، يتم إخراج كل الفائض من الصورة. باستخدام DCT ، من الضروري فهم ما إذا كانت هذه الكتلة (8 × 8) تصف أي جزء رتيب من الصورة: السماء ، الجدار ؛ أو يحتوي على بنية معقدة (الشعر ، الشخصيات ، إلخ). من المنطقي أن 64 من وحدات البكسل المتشابهة بالألوان يمكن وصفها في واحد فقط ، لأنه حجم الكتلة معروف بالفعل. الكثير للضغط: 64 إلى 1.


يقوم DCT بتحويل الكتلة إلى طيف ، وعندما تتغير القراءات فجأة ، يصبح المعامل موجبًا ، وكلما زاد الانتقال ، زاد الناتج. عندما يكون المعامل أعلى ، تُظهر الصورة انتقالات واضحة في اللون والسطوع ، حيث تكون منخفضة - ضعيفة (متجانسة) تتغير في قيم مكونات YCbCr في الكتلة.


تكميم

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


يتم الكمي لإنشاء ضغط أكثر. فيما يلي كيفية ظهور مثال القياس الكمي للرسم البياني y = sin (x):


صورة


ضغط

أولاً نذهب إلى مصفوفة منعرج:


صورة


نحصل على مجموعة ذات بعد واحد مع الأرقام. نرى أن هناك العديد من الأصفار فيه ، ويمكن إزالتها. للقيام بذلك ، بدلاً من تسلسل العديد من الأصفار ، نقوم بإدخال 1 صفر وبعد ذلك يشير الرقم إلى رقمهم في التسلسل. وبالتالي ، يمكنك إعادة التعيين إلى 1/3 من حجم الصفيف بأكمله. ثم يضغط هذا المصفوفة ببساطة باستخدام طريقة هوفمان ونحن ندخلها في الملف نفسه.


حيث يستخدم


في كل مكان. مثل PNG ، يتم استخدام JPEG في الكاميرات ، وأنظمة التشغيل (مثل شعارات الشركة ، ورموز التطبيقات ، والصور المصغرة) وفي جميع المناطق المحتملة حيث تحتاج إلى تخزين الصور بكفاءة.


استنتاج


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


مصادر

مقالة ويكيبيديا عن YCbCr
مقالة JPEG على ويكيبيديا
قليلا عن DCT من وظيفة Picabu
مقال DCT على ويكيبيديا

Source: https://habr.com/ru/post/ar482728/


All Articles