वेवलेट संपीड़न एक एन्कोडिंग छवि के दो-आयामी तरंगिका अपघटन का उपयोग करके छवि एन्कोडिंग विधियों के एक वर्ग का सामान्य नाम है। आमतौर पर गुणवत्ता के नुकसान के साथ संपीड़न का मतलब है। लेख में जटिल गणितीय सूत्र नहीं होंगे, लेख के नीचे दिए गए लिंक से पूरे सिद्धांत को पढ़ा जा सकता है। केवल यहाँ अभ्यास!
जेपीईजी अंतर
जेपीईजी एल्गोरिथ्म, वेवलेट एक के विपरीत, आकार 8 की मूल छवि के प्रत्येक ब्लॉक को 8 पिक्सल से अलग-अलग संपीड़ित करता है। नतीजतन, उच्च संपीड़न अनुपात में, एक ब्लॉक संरचना पुनर्निर्मित छवि में ध्यान देने योग्य हो सकती है। तरंगिका संपीड़न के साथ, ऐसी समस्या उत्पन्न नहीं होती है, लेकिन एक अन्य प्रकार की विकृतियां दिखाई दे सकती हैं, जिसमें तेज सीमाओं के पास "भूतिया" लहर का रूप होता है।
यह माना जाता है कि ऐसी कलाकृतियों, औसतन, जेपीईजी द्वारा निर्मित "वर्गों" की तुलना में पर्यवेक्षक के लिए कम ध्यान देने योग्य हैं।
उदाहरण
उदाहरण के लिए, समान
छवि को लगभग समान आकार में दृढ़ता से संपीड़ित करें:
JPEG का उपयोग करने की शुरुआत में:
(7959 बाइट्स)
तब JPEG 2000 तरंगिका संपीड़न एल्गोरिथ्म:
(7813 बाइट्स)
इन उदाहरणों में, आप तुरंत दोनों एल्गोरिदम द्वारा शुरू की गई विकृति की प्रकृति देख सकते हैं। एक तरंगिका का उपयोग करके एक संकुचित छवि स्पष्ट रूप से बेहतर दिखती है।
एक
और छवि के संपीड़न का
एक और उदाहरण, फ़ाइल का आकार 3kb प्रत्येक तक कम करना:
(JPEG)
(जेपीईजी 2000)
यह क्या है
मैंने जिस विधि को लागू किया है वह अनिवार्य रूप से प्रसिद्ध
जेपीईजी 2000 तरंगिका संपीड़न एल्गोरिदम का एक एनालॉग है, जिसने कभी भी लोकप्रिय जेपीईजी को प्रतिस्थापित नहीं किया है। कुछ साल पहले मैंने इसे VisualBasic6.0 में धार्मिक बनाया, लेकिन विशेष रूप से स्रोत कोड को समझने के लिए, मैंने इसे दर्शकों के अधिकांश भाग के लिए C # में फिर से लिखा।
प्रस्तुत कार्यान्वयन में, मैंने जेपीईजी 2000 छवि संपीड़न एल्गोरिथ्म में उपयोग किए गए असतत बायोरिथोगोनल सीडीएफ 9/7 तरंगिका का तेजी से उठाने का उपयोग किया। सी कार्यान्वयन
यहां डाउनलोड किया जा सकता
है ।
यहाँ प्रस्तुत कोड की सीमाएँ:
कोड को न बढ़ाने के लिए, मैंने किसी भी आकार और किसी भी पहलू अनुपात की छवियों को संपीड़ित करने की क्षमता को स्थानांतरित नहीं किया। इसलिए, यह केवल 256x256, 512x512, 1024x1024, 2048x2548 के साइड साइज वाली स्क्वायर इमेज को कंप्रेस कर सकता है। मैंने संपीड़न में उपयोग किए गए गुणांकों के साथ हेडर फ़ाइल को मेमोरी उपयोग और सहेजने / पढ़ने के अनुकूलन को भी हटा दिया। अन्यथा, कोड फिर से अनुचित रूप से फूला हुआ होगा।
मुख्य संपीड़न परिदृश्य:
- हम फ़ाइल से छवि को लोड करते हैं;
- डाउनलोड की गई छवि को RGB मानों के बाइट सरणी में परिवर्तित करें;
- परिणामी रंग घटकों के परिमाणीकरण के साथ आरजीबी को YCrCb में फिर से दर्ज करें;
- एक वेवलेट लागू करें;
- हम एक बहुआयामी सरणी का एक आयामी (सपाट) एक में अनुवाद करते हैं;
- किसी भी उपलब्ध साधन (उदाहरण के लिए, GZip) द्वारा परिणामी धारा को संपीड़ित करें।
प्रस्तुत कोड में संपीड़न के लिए गुणांक का चयन आकार में न्यूनतम आउटपुट फ़ाइल प्राप्त करने के लिए किया जाता है, लेकिन कुछ देखने की क्षमता के साथ।
कंप्रेसर कोड (C #)
मैं C # में एक ऐस नहीं हूं, इसलिए हो सकता है कि कोड में ऐसे स्थान हों जहां आप मानक .Net विधियों का उपयोग कर सकें।
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; using System.IO.Compression; using System.IO; namespace WaveleteCompression { class wvCompress {
डिकम्प्रेसर कोड
स्वाभाविक रूप से, डीकंप्रेसर रिवर्स ऑर्डर में सब कुछ करता है।
जैसा कि मैंने ऊपर लिखा था, कोड पठनीयता के लिए, मैंने शीर्ष लेख फ़ाइल में सहेजा नहीं था।
इसलिए, रन () विधि में, डिकोड की गई छवि के आकार और तरंगिका को डिकोड करने के लिए गुणांक कठोर-कोडित होते हैं।
using System; using System.Collections.Generic; using System.Text; namespace WaveleteCompression { class wvDecompress {
C # प्रोजेक्ट स्रोत कोड
GitHubसंदर्भ
- छोटा लहर
- वेवलेट कम्प्रेशन
- जेपीईजी 2000
- जेपीईजी
- असतत वेवलेट ट्रांसफ़ॉर्म
- उठाने की योजना
युपीडी:
mikhanoid : 1.149604398, -0.4435068522, -0.8829110762, आदि। - तरंग बिंदुओं के मूल्यों के गुणांक कुछ बिंदुओं पर कार्य करते हैं। सामान्य रूप से पढ़ें:
भारोत्तोलन योजना