إنه تنفيذ لهذا الأمر.fractal image compression خوارزميةنشرت في IEEE خلال أيام جامعتي
يستخدم التطبيق مكتبة Delaunay التثليث التدريجي ، والذي يستخدم أيضا فيتطبيق Morphing
خوارزمية عالية المستوى:
- ضغط:
- يركز الضغط الكسري على تخزين العلاقات بين مناطق الصورة بدلاً من قيم البكسل الفعلية ، وتحديدًا بين المثلثات في هذه الحالة.
- تنقسم الصورة إلى شبكة ثلاثية تتكون من مثلثات متعددة ، تشكل مجالًا ثلاثيًا.
- تنقسم الصورة إلى مجموعة جديدة من التثليثات التي تضم مثلثات أكبر مخصصة لكتاب التعليمات البرمجية.
- التثليثات ديناميكية ، ويتم تطبيق خوارزمية الانقسام والدمج بناءً على تباين بكسل المثلث.
- بمجرد تحديد التثليث لكتاب التعليمات البرمجية ، يتم اختيار المثلثات الأكثر تمثيلاً 2 n لتشكيل كتاب التعليمات البرمجية. تؤثر قيمة n بشكل كبير على وقت الضغط بينما يكون لها تأثير بسيط على نسبة الضغط والجودة المحققة.
- لكل مثلث نطاق ، يتم البحث عن التعيين الأمثل مع مثلث من كتاب التعليمات البرمجية باستخدام معيار الحد الأدنى لمتوسط الخطأ التربيعي (MSE)
- تم العثور على رسم الخرائط الأمثل بين المثلثات عن طريق صنع مجموعات من:
- تبديل القمم (6 احتمالات)
- تحديد تعويض للمتوسط
- إيجاد عامل مقياس بين 0 و 1 ، والذي يتم تطبيقه على الانحراف عن المتوسط. يجب أن يظل عامل المقياس هذا بين 0 و 1 لمنع الاختلاف أثناء عملية إزالة الضغط التكراري
بالإضافة إلى ذلك ، يجب تحديد هذه المعلمات باستخدام عدد محدود من البتات لضمان أن يكون كل من وقت الضغط والنسبة معقولين ومتوافقين مع الجودة المطلوبة.
- المعلومات المخزنة في الملف المضغوط لكل قناة:
- المعلومات لإعادة إنتاج التثليثين:
- المثلثات التي تنقسم في كل تكرار
- القرح التي تمت إزالتها نتيجة للدمج (بعد الانتهاء من التكرارات المقسمة)
- اختيار مثلثات 2n من كتاب التعليمات البرمجية
- رسم الخرائط الأمثل لكل مثلث مجال:
- مثلث الترميز الذي يستخدمه لرسم خريطة (n بت)
- تبديل الرأس الأمثل (6 مجموعات ، 3 بت)
- أوفست (يشير المؤلفون إلى أن الإزاحة ممثلة بشكل فعال مع 6 بت)
- مقياس (يشير المؤلفون إلى أن المقياس يتم تمثيله بفعالية مع 6 بت)
- تخفيف الضغط (لكل قناة):
- يتم الحصول على مثلثات المثلثين.
- يتم الحصول على مثلثات الشفرات.
- وتتكرر هذه العملية حتى يتحقق التقارب:
- تعيين جميع مثلثات المجال إلى التناظر الأمثل مع مثلثات كتاب التعليمات البرمجية
بعد حصوله على درجة الماجستير في الذكاء الاصطناعي، وأنا أتصور ابتكار كيفية استخلاص مثلثات أهم لكتاب التعليمات البرمجية من خلال تطبيق K-ميدويدس.
لست متأكدًا مما إذا كان الابتكار سيحسن أو يعيق الخوارزمية ، لكنه ينقذني من الحاجة إلى برمجتها بنفسي ، والتي بدت في البداية معقدة.
يتم تقسيم معالجة الصور إلى قنوات ، وعادة ما تكون RGB.
يستخدم Multiprocessing ، مع موضوع واحد مخصص لكل قناة.
مع الإصدار v1.1 ، تمت إضافة قارئ متوافق مع معيار ImageIO.
لذلك ، يمكنك فتح صورة مضغوطة (.dfc) مع التطبيق ببساطة عن طريق القيام بما يلي:
BufferedImage image = ImageIO.read("image.dfc");