تكميم متجه الهرم
تُعدّ تقنية التكميم المتجهي الهرمي ( PVQ ) طريقةً تُستخدم في برامج ترميز الصوت والفيديو لتكميم ونقل متجهات الوحدة ، أي المتجهات التي يعرف المُفكِّك مقدارها بينما لا يعرف اتجاهها. كما يُمكن استخدام PVQ كجزء من نظام تكميم الكسب/الشكل ، حيث يتم تكميم مقدار المتجه واتجاهه بشكل منفصل. وُصفت تقنية PVQ لأول مرة عام 1986 في ورقة بحثية بعنوان "مُكمِّم متجهي هرمي" للمؤلف توماس ر. فيشر. [ 1 ]

من عيوب طريقة PVQ أنها تعمل وفقًا لمسافة سيارة الأجرة (معيار L1). يمكن التحويل من وإلى المسافة الإقليدية الأكثر شيوعًا (معيار L2) عبر إسقاط المتجهات ، إلا أن ذلك ينتج عنه توزيع أقل انتظامًا لنقاط التكميم (تصبح أقطاب الكرة الإقليدية ذات البعد n أكثر كثافة من المناطق غير القطبية). [ 3 ] حتى عام 2010، لم تكن هناك خوارزمية فعالة معروفة للتكميم المتجهي المثالي (أي المنتظم) للكرة الإقليدية ذات البعد n. [ 4 ] يمكن تقليل هذا التباين بتطبيق تشويه، مثل القوة على مستوى الإحداثيات، قبل الإسقاط، مما يقلل متوسط مربع خطأ التكميم بنسبة 10% تقريبًا. [ 2 ]
يتم استخدام PVQ في برنامج ترميز الصوت CELT (الموروثة في Opus ) وبرنامج ترميز الفيديو Daala .
ملخص
كشكل من أشكال التكميم المتجهي ، يحدد PVQ دفتر رموز مكون من M نقطة تكميم، يتم تعيين كلمة رمزية عددية صحيحة لكل منها من 0 إلى M − 1. هدف المشفر هو إيجاد كلمة الرمز لأقرب متجه، والذي يجب على المفكك فك تشفيره مرة أخرى إلى متجه.
يتكون دليل رموز PVQ من جميع النقاط ذات الأبعاد Nبإحداثيات عددية صحيحة فقط، مجموع قيمها المطلقة يساوي ثابتًا K (أي أن معيارها L1 يساوي K ). في تدوين بناء المجموعة :
أينيشير إلى معيار L1 لـ.
في الوضع الحالي، تُشكّل المجموعة S سطح هرم ذي N بُعد. وإذا رغبنا، يُمكننا إعادة تشكيله إلى كرة عن طريق "إسقاط" النقاط على الكرة، أي عن طريق تطبيعها .
أينيشير إلى معيار L2 لـ.
تؤدي زيادة قيمة المعامل K إلى المزيد من نقاط التكميم، وبالتالي عادةً ما ينتج عنها تقريب "أكثر دقة" لمتجه الوحدة الأصليعلى حساب استخدام كلمات ترميزية عددية أكبر تتطلب المزيد من البتات للإرسال.
مثال
لنفترض أننا نرغب في تكميم متجهات الوحدة ثلاثية الأبعاد باستخدام المعامل K = 2. يصبح دليل الترميز الخاص بنا كالتالي:
|
|
(0.707 =(مقربة إلى 3 منازل عشرية.)
لنفترض الآن أننا نرغب في إرسال متجه الوحدة <0.592, −0.720 , 0.362> (مقربًا هنا إلى 3 منازل عشرية، للتوضيح). وفقًا لدليل الشفرات الخاص بنا، فإن أقرب نقطة يمكننا اختيارها هي الكلمة المشفرة 13 (<0.707, −0.707 , 0.000>)، والتي تقع على بُعد 0.381 وحدة تقريبًا من نقطتنا الأصلية.
تؤدي زيادة قيمة المعامل K إلى زيادة حجم دفتر الرموز، مما يزيد عادةً من دقة إعادة البناء. على سبيل المثال، بناءً على كود بايثون الموضح أدناه، ينتج عن K = 5 (حجم دفتر الرموز: 102) خطأً قدره 0.097 وحدة فقط، بينما ينتج عن K = 20 (حجم دفتر الرموز: 1602) خطأً قدره 0.042 وحدة فقط.
كود بايثون
استيراد itertools و math من typing استيراد NamedTupleclass PVQEntry ( NamedTuple ): codeword : int point : tuple [ int , ... ] normalizedPoint : tuple [ float , ... ]دالة إنشاء دفتر رموز PVQ ( n : عدد صحيح ، k : عدد صحيح ) -> قائمة [ PVQEntry ]: """ خوارزمية بسيطة لإنشاء دفتر رموز PVQ ذي n بُعدًا مع k نبضة. تعقيد وقت التشغيل: O(k**n) " "" ret = [] for p in itertools.product ( range ( -k , k + 1 ) , repeat = n ) : if sum ( abs ( x ) for x in p ) == k : norm = math.sqrt ( sum ( x ** 2 for x in p )) q = tuple ( x / norm for x in p ) ret.append ( PVQEntry ( len ( ret ) , p , q ) )إرجاع retدالة ` search_pvq_codebook ( codebook : list [ PVQEntry ] , p : tuple [ float , ... ] ) -> tuple [ PVQEntry , float ] ` : خوارزمية بسيطة للبحث في دفتر رموز PVQ. تُرجع هذه الدالة النقطة الأقرب إلى p في دفتر الرموز، وفقًا للمسافة الإقليدية. ` ret = None min_dist = None for entry in codebook : q = entry.normalizedPoint dist = math.sqrt ( sum (( q [ j ] - p [ j ]) ** 2 for j in range ( len ( p ) ) ) ) if min_dist is None or dist < min_dist : ret = entry min_dist = dist`إرجاع القيمة ret ، min_distدالة مثال ( p : tuple [ float , ... ], k : int ) -> None : n = len ( p ) codebook = create_pvq_codebook ( n , k ) print ( "عدد إدخالات دفتر الرموز: " + str ( len ( codebook ))) entry , dist = search_pvq_codebook ( codebook , p ) print ( "أفضل إدخال: " + str ( entry )) print ( "المسافة: " + str ( dist ))φ = 1.2 θ = 5.4 x = math.sin ( φ ) * math.cos ( θ ) y = math.sin ( φ ) * math.sin ( θ ) z = math.cos ( φ ) p = ( x , y , z ) مثال ( p , 2 ) مثال ( p , 5 ) مثال ( p , 20 )تعقيد
يمكن البحث في دليل رموز PVQ في[ 4 ] يمكن أيضًا إجراء التشفير وفك التشفير فياستخدامالذاكرة. [ 5 ]
حجم دفتر الرموز يخضع للتكرار [ 4 ]
معللجميعوللجميع.
يُعطى الحل المغلق بواسطة [ 6 ]
أينهي الدالة الهندسية الفائقة .
انظر أيضاً
مراجع
- ↑ فيشر، توماس ر. (يوليو 1986). "مُكمِّم متجه هرمي". معاملات IEEE في نظرية المعلومات . 32 (4): 568-583 . doi : 10.1109/TIT.1986.1057198 .
- 1 2 دودا، جاريك (2017). "تحسين مُكمِّم المتجهات الهرمي باستخدام إسقاط القوة". arXiv : 1705.05285 [ math.OC ].
- ↑ فالين، جان مارك (سبتمبر 2013). "التكميم المتجهي الهرمي لترميز الفيديو" (ملف PDF) . مؤسسة Xiph.Org . تم الاطلاع عليه في 4 أبريل 2021 .
- 1 2 3 فالين، جان مارك؛ تيريبري، تيموثي ب.؛ مونتغمري، كريستوفر؛ ماكسويل، غريغوري (يناير 2010). "برنامج ترميز عالي الجودة للكلام والصوت بتأخير أقل من 10 مللي ثانية". معاملات IEEE في معالجة الصوت والكلام واللغة . 18 (1): 58-67 . arXiv : 1602.05526 . doi : 10.1109/TASL.2009.2023186 . S2CID 11516136 .
- ↑ تيريبري، تيموثي ب. (2009). "cwrs.c" . أوبوس . مؤسسة Xiph.Org . تم الاطلاع عليه في 6 أبريل 2021 .
- ↑ تيريبري، تيموثي ب. (ديسمبر 2007). "ترميز متجه النبض" . مؤسسة Xiph.Org . مؤرشف من الأصل في 30 سبتمبر 2019. تم الاطلاع عليه في 4 أبريل 2021 .
- خوارزميات الضغط مع فقدان البيانات
