VK لديها مجموعة مع الوصف التالي:
يتم حفظ الصورة نفسها يدويًا كل يوم على جهاز كمبيوتر ويتم تحميلها مرة أخرى ، مما يؤدي إلى فقد الجودة بشكل تدريجي.
على اليسار ، الصورة الأصلية التي تم تحميلها في 7 يونيو 2012 ، على اليمين هي ما هي عليه الآن.

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

لذلك ، 4 عمليات:
- DCT هو تحويل جيب التمام منفصلة.
- الكمي - تقريب كل قيمة إلى أقرب مضاعف لخطوة الكمي: y = [x / h] * h ، حيث h هي الخطوة.
- IDCT هو تحويل جيب التمام المنفصل العكسي.
- التقريب هو التقريب العادي. لا يمكن عرض هذه المرحلة في الرسم التخطيطي ، لأنها واضحة. ولكن بعد ذلك سوف تظهر أهميتها.
يتم تمييز العمليات التي توفر جميع المعلومات باللون الأخضر (دون مراعاة الخسائر عند العمل بأرقام الفاصلة العائمة) ، وتشير العمليات الوردي إلى الخسارة. وهذا يعني أن الخسائر والتحف لا تظهر بسبب تحويل جيب التمام ، ولكن بسبب الكميات البسيطة. لن تعتبر المقالة مرحلة مهمة - ترميز هوفمان ، حيث يتم تنفيذها دون خسارة.
النظر في هذه الخطوات بمزيد من التفصيل.
DCT
نظرًا لوجود العديد من أشكال DCT ، فقط في حالة ، سأوضح أن JPEG يستخدم النوع الثاني من DCT مع التطبيع. عند الترميز ، يتم تقسيم كل صورة إلى مربعات 8 × 8 (لكل قناة). يمكن تمثيل كل مربع على أنه ناقل 64-الأبعاد. تحول جيب التمام هو العثور على إحداثيات هذا المتجه في أساس غير طبيعي آخر. من الصعب تصور مساحة 64-الأبعاد ، لذلك سيتم إعطاء تشبيهات ثنائية الأبعاد أدناه. يمكنك أن تتخيل أن الصورة مقسمة إلى كتل 2 × 1. في الرسوم البيانية التي ستظهر أدناه ، يتوافق المحور السيني مع قيم البيكسل الأول للكتلة ، والمحور الصادي للثاني.
متابعة التشبيه بمثال محدد ، افترض أن قيمتين بكسل من الصورة الأصلية هي 3 و 4. نرسم المتجه (3 ، 4) في الأساس الأصلي ، كما هو موضح في الشكل أدناه. الأساس الأصلي يتميز باللون الأزرق. إحداثيات المتجه في بعض الأساسيات الجديدة هي (4.8 ، 1.4).

في المثال المدروس ، تم اختيار أساس جديد بشكل عشوائي. يوفر DCT أساس ثابت 64-الأبعاد محددة للغاية. يعد مبرر سبب استخدامه في ملف JPEG مثيرًا للاهتمام ، وقد تم وصفه في مقالة أخرى. سوف نتطرق فقط إلى جوهر. بشكل عام ، تكون قيم جميع وحدات البكسل مكافئة. ولكن إذا قمنا بتحويلها باستخدام DCT ، فمن الإحداثيات الـ 64 الناتجة على أساس جديد (تسمى معاملات تحويل DCT) ، يمكننا أن نفشل في الخروج منها أو تقريبها تقريبًا ، بأقل خسائر. هذا ممكن بفضل ميزات الصور القابلة للضغط.
تكميم
لا يمكن حفظ القيم الكسرية في ملف. لذلك ، بناءً على خطوة القياس ، سيتم حفظ القيم 4.8 ، 1.4 على النحو التالي:
- في الخطوة 1 (الخيار الأكثر رقة): 5 و 1 ،
- في الخطوة 2: 4 و 2 ،
- في الخطوة 3: 6 و 0.
عادة ما يتم اختيار الخطوة مختلفة لكل قيمة. يحتوي ملف JPEG على صفيف واحد على الأقل ، يسمى جدول القياس ، والذي يخزن 64 خطوة من خطوات القياس. يعتمد هذا الجدول على جودة الضغط المحددة في أي محرر رسومات.
IDCT
نفس DCT ، ولكن مع أساس منقول. رياضيا ، x = IDCT (DCT (x)) ، لذلك إذا لم يكن هناك تكميم ، فسيكون من الممكن التعافي دون خسارة. ولكن لن يكون هناك ضغط. نظرًا لاستخدام القياس ، لا يمكن دائمًا حساب المتجه الأصلي بدقة. يوضح الشكل التالي مثالين باسترداد دقيق وغير دقيق. تتوافق الشبكة المائلة مع أساس جديد ، الخط المستقيم مع الخط الأصلي.

يطرح السؤال الواضح: هل يمكن أن يؤدي تسلسل الشفرة إلى متجه مختلف تمامًا عن المتجه الأصلي؟ ربما.

سيكون من المثير للاهتمام الفرز بين جميع المتجهات الصحيحة ومعرفة ما سيؤدي إليه تحويل الشفرة. لتقليل ضوضاء المعلومات ، نقوم بإزالة شبكة الأساس المبدئي وسنقوم بتوصيل المتجهات الأصلية والمعادة مباشرة (بدون خطوة وسيطة) بواسطة القطاعات. أولاً ، ضع في اعتبارك خطوة تقدير كمي تساوي 1 لجميع الإحداثيات. الأساس الجديد في الشكل التالي هو استدارة 45 درجة ولدينا 17.1 ٪ من المبالغ المستردة غير دقيقة. لا تعني ألوان الشرائح شيئًا ، لكنها ستكون مفيدة لمنع دمجها المرئي.

هذا الأساس هو 10.3 درجة مع استرداد 7.4 ٪ غير دقيقة:

القريبة:

وهذا هو في 10.4 من 6.4 ٪:

19 درجة من 12.5 ٪:

ولكن إذا قمت بتعيين خطوة القياس أكبر من 1 ، فإن المتجهات التي أعيد بناؤها تبدأ في التركيز بوضوح بالقرب من العقد الشبكية. هذه هي الخطوة 5:

هذا هو 2:

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

وعلى هذا - مع الخطوات من 1 إلى 7. يظهر التصور فقط لجزء من المتجهات الأصلية من أجل تحسين التصور.

التقريب
لماذا تقريب القيم بعد IDCT؟ بعد كل شيء ، إذا تخلصت من هذه المرحلة ، فسيتم تمثيل الصورة المستعادة بقيم كسرية ، ولن نفقد أي شيء عند إعادة الترميز. من وجهة نظر رياضية ، سننتقل ببساطة من قاعدة إلى أخرى دون خسارة. من الضروري أن نذكر هنا تحويل مساحات الألوان. على الرغم من أن JPEG لا تنظم مساحة اللون وتتيح لك الحفظ مباشرة في مصدر RGB ، ولكن في الغالبية العظمى من الحالات ، يتم استخدام التحويل الأولي إلى YCbCr. ميزات العين وكل ذلك. ومثل هذا التحويل يؤدي أيضا إلى خسائر.
لنفترض أننا حصلنا على ملف JPEG مضغوط بأقصى جودة ، أي بخطوة تقدير مقدارها 1 لجميع المعاملات. لا نعرف برنامج الترميز الذي تم استخدامه ، ولكن عادةً ما تقوم برامج الترميز بإجراء التقريب بعد تحويل RGB -> YCbCr. نظرًا لأن الجودة هي الحد الأقصى ، بعد IDCT ، نحصل على قيم كسرية ، ولكننا قريبون من القيم الأصلية في مساحة YCbCr. إذا استدارنا ، فستتم استعادة معظمهم تمامًا.
ولكن إن لم يكن مستديرًا ، فبسبب هذه الاختلافات الصغيرة ، يمكن لتحويل YCbCr -> RGB أن يبعدهم عن القيم الأصلية. مع تحويل الشفرة اللاحق ، ستزيد الفجوة أكثر فأكثر. لتصور هذه العملية بطريقة أو بأخرى ، نستخدم طريقة المكون الرئيسي لإظهار متجهات 64-الأبعاد على مستوى الطائرة. ثم بالنسبة إلى 1000 رمز ، نحصل على تقريبًا تسلسل التغييرات التالي:

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

بعد إعادة حفظ واحدة بجودة 50:

بعد أي عدد لاحق من الترميزات بنفس الجودة ، لا تتغير الصورة. الآن سنخفض تدريجياً الجودة من 90 إلى 50 في 1:

حدث الشيء نفسه على الرسم البياني أدناه:

بعد إعادة حفظ واحدة بجودة 20:

بسلاسة من 90 إلى 20:

الآن 1000 مرة بجودة عشوائية من 80 إلى 90:

10000 مرة:

تحليل صور مجموعة VK
لنبدأ بتحليل أكثر من 2000 صورة من مجموعة VK. أولاً ، تحقق من متوسط الانحراف المطلق عن الأول. المحور س هو رقم الصورة (أو اليوم) ، المحور ص هو الانحراف.

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

تقلبات صغيرة في البداية طبيعية. حتى 232 ، كل شيء يسير على ما يرام ، الصور متطابقة تماما. و 233 يختلف فجأة بمتوسط 1.23 لكل بكسل (على مقياس من 0 إلى 255). هذا كثير ربما تغيرت الجداول الكمي فقط. التحقق من ذلك. وفي الوقت نفسه ، يمكن مقارنتها بحجم الملفات المستلمة.

نعم ، لقد تغيرت الجداول. ولكن ليس قبل 700s. ثم ، ربما ، حدث ترميز خفي وسيط ذي جودة منخفضة. دعنا نحاول إعادة ترميز 232 مرتين. لأول مرة ، سنتطرق إلى مستويات جودة مختلفة ، وللمرة الثانية ، نستخدم جدول القياس الكمي كما هو الحال بالنسبة للجميع بدءًا من الأول إلى السبعينيات. هدفنا هو الحصول على صورة مماثلة قدر الإمكان إلى 233. في الشكل التالي ، على طول المحور x هي نوعية الترميز الوسيط ، على طول y هو متوسط الانحراف المطلق عن 233.

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