जेबीआईजी2

From Vigyanwiki
जेबीआईजी2
Developed byJoint Bi-level Image Experts Group
Latest release
2
Contained byPortable Document Format, FAX
StandardITU T.88 & ISO/IEC 14492

जेबीआईजी2 बाइनरी इमेज, बाई-लेवल इमेज के लिए एक इमेज कम्प्रेशन मानक है, जिसे जॉइंट बाई-लेवल इमेज एक्सपर्ट ग्रुप द्वारा विकसित किया गया है। यह लोस्सलेस्स (क्षतिरहित) डेटा कम्प्रेशन और लोस्सी (लोस्सी/हासी संपीडन) डेटा कम्प्रेशन दोनों के लिए उपयुक्त है। एक प्रेस विज्ञप्ति के अनुसार[1] समूह से, अपने लोस्सलेस्स मोड में जेबीआईजी2 सामान्यतः समूह 4 कम्प्रेशन से 3-5 गुना छोटी और समूह द्वारा जारी पिछले बाई-लेवल कम्प्रेशन मानक जेबीआईजी से 2-4 गुना छोटी फ़ाइल उत्पन्न करता है। जेबीआईजी2 को 2000 में अंतर्राष्ट्रीय मानक आईटीयू टी.88 के रूप में,[2] और 2001 में अंतर्राष्ट्रीय मानकीकरण संगठन/अंतर्राष्ट्रीय इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशन के रूप में प्रकाशित किया गया था।[3]

कार्यक्षमता

आदर्श रूप से, एक जेबीआईजी2 एनकोडर इनपुट पेज को टेक्स्ट के क्षेत्रों, आंशिक रंग इमेज के क्षेत्रों और अन्य डेटा के क्षेत्रों में विभाजित करेगा। वे क्षेत्र जो न तो टेक्स्ट हैं और न ही हाफ़टोन हैं, सामान्यतः एमक्यू कोडर नामक संदर्भ-निर्भर अंकगणितीय कोडिंग एल्गोरिदम का उपयोग करके कंप्रेस होते हैं। टेक्सटुअल क्षेत्रों को निम्नानुसार कंप्रेस किया जाता है: क्षेत्रों में अग्रभूमि पिक्सेल को सिम्बॉल में समूहीकृत किया जाता है। सिम्बॉल का एक डिक्शनरी तब बनाया और एन्कोड किया जाता है, सामान्यतः संदर्भ-निर्भर अंकगणितीय कोडिंग का भी उपयोग किया जाता है, और क्षेत्रों को यह बताकर एन्कोड किया जाता है कि कौन से सिम्बॉल कहां दिखाई देते हैं। सामान्यतः एक सिम्बॉल (प्रतीक) टेक्स्ट के एक करैक्टर के अनुरूप होगा, लेकिन कम्प्रेशन विधि के लिए इसकी आवश्यकता नहीं है। लोस्सी कम्प्रेशन के लिए समान सिम्बॉल (उदाहरण के लिए, एक ही अक्षर के थोड़े भिन्न प्रभाव) के बीच अंतर को उपेक्षित किया जा सकता है; लोस्सलेस्स कम्प्रेशन के लिए, एक टेम्पलेट के रूप में दूसरे का उपयोग करके एक समान सिम्बॉल को कंप्रेस करके इस अंतर को ध्यान में रखा जाता है। हाफ़टोन इमेज को हाफ़टोन उत्पन्न करने के लिए उपयोग की जाने वाली ग्रेस्केल इमेज का पुनर्निर्माण करके और फिर इस इमेज को हाफ़टोन पैटर्न के डिक्शनरी के साथ भेजकर कंप्रेस किया जा सकता है।[4] कुल मिलाकर, टेक्स्ट को कंप्रेस करने के लिए जेबीआईजी2 द्वारा उपयोग किया जाने वाला एल्गोरिदम बाइनरी इमेज को कोड करने के लिए DjVu फ़ाइल प्रारूप में उपयोग की जाने वाली JB2 कम्प्रेशन योजना के समान है।

पोर्टेबल डॉक्यूमेंट फॉर्मेट (पीडीएफ) फाइल वर्शन 1.4 और उससे ऊपर में जेबीआईजी2-कंप्रेस डेटा हो सकता है। ओपन -सोर्स सॉफ्टवेयर जेबीआईजी2 के लिए ओपन-सोर्स डिकोडर jbig2dec हैं[5] (मैं जीएनयू जनरल पब्लिक लाइसेंस लाता हूं), जावा-आधारित जेबीआईजी2-imageio[6] (अपाचे लाइसेंस; अपाचे-2), जावास्क्रिप्ट-आधारित जेबीआईजी2.js[7] (अपाचे लाइसेंस|अपाचे-2), और ग्लिफ़ एंड कॉग एलएलसी द्वारा डिकोडर एक्सपीडीएफ और पॉपलर (सॉफ्टवेयर) में पाया गया[8] (दोनों जीपीएल)। एक ओपन-सोर्स एनकोडर jbig2enc है[9] (अपाचे लाइसेंस; अपाचे-2)।

तकनीकी विवरण

सामान्यतः एक बाई-लेवल इमेज में मुख्य रूप से बड़ी मात्रा में टेक्सटुअल और हाफ़टोन डेटा होता है, जिसमें समान आकृतियाँ बार-बार दिखाई देती हैं। बाई-लेवल इमेज को तीन क्षेत्रों में विभाजित किया गया है: टेक्स्ट, हाफ़टोन और सामान्य क्षेत्र। प्रत्येक क्षेत्र को अलग-अलग कोडित किया गया है और कोडिंग पद्धतियों का वर्णन निम्नलिखित अनुच्छेद में किया गया है।

टेक्स्ट इमेज डेटा

टेक्स्ट कोडिंग ह्यूमन विसुअल इंटरप्रिटेशन (मानव दृश्य व्याख्या) की प्रकृति पर आधारित है। एक ह्यूमन आब्जर्वर (मानव पर्यवेक्षक) बाई-लेवल इमेज में समान करैक्टर के दो उदाहरणों के बीच अंतर नहीं बता सकता है, भले ही वे पिक्सेल दर पिक्सेल बिल्कुल मेल न खाते हों। इसलिए, एक ही करैक्टर की प्रत्येक घटना के बिटमैप को अलग-अलग कोड करने के बजाय केवल एक प्रतिनिधि करैक्टर उदाहरण के बिटमैप को कोड करने की आवश्यकता होती है। प्रत्येक करैक्टर उदाहरण के लिए, करैक्टर का कोडित उदाहरण फिर एक ''सिम्बॉल डिक्शनरी'' में संग्रहीत किया जाता है।[10] टेक्स्ट इमेज डेटा के लिए दो एन्कोडिंग विधियाँ हैं: पैटर्न मैचिंग और सब्स्टिटूशन (पीएम एंड एस) और सॉफ्ट पैटर्न मैचिंग (एसपीएम)।[11]

(बाएं) पैटर्न मैचिंग और सब्स्टिटूशन विधि और (दाएं) सॉफ्ट पैटर्न मैचिंग विधि के ब्लॉक आरेख

पैटर्न मैचिंग एंड सब्स्टिटूशन (पैटर्न मिलान और प्रतिस्थापनटर्न मिलान और प्रतिस्थापन) (पीएम एंड एस) अधिक क्लासिक कोडिंग विधि है। एनकोडर करैक्टर-आकार के हिस्सों को अलग करने के लिए इमेज विभाजन करता है। प्रत्येक व्यक्तिगत हिस्से के लिए, एनकोडर बिटमैप डिक्शनरी में एक मैचिंग की तलाश करता है। यदि कोई मैचिंग उपस्थित है, तो हम डिक्शनरी में संबंधित प्रतिनिधि बिटमैप की एक अनुक्रमणिका और पृष्ठ पर करैक्टर की स्थिति को कोड करते हैं। स्थिति सामान्यतःपहले से कोडित किसी अन्य करैक्टर से संबंधित होती है। यदि कोई मैचिंग नहीं मिलता है, तो खंडित पिक्सेल ब्लॉक को सीधे कोडित किया जाता है और डिक्शनरी में जोड़ा जाता है। पैटर्न मैचिंग और सब्स्टिटूशन एल्गोरिदम की विशिष्ट प्रक्रियाएं उपरोक्त चित्र के बाएं ब्लॉक आरेख में प्रदर्शित की गई हैं। यद्यपि पीएम एंड एस की विधि उत्कृष्ट कम्प्रेशन प्राप्त कर सकती है, यदि इमेज रिज़ॉल्यूशन कम है तो प्रक्रिया के दौरान सब्स्टिटूशन त्रुटियां हो सकती हैं।[11]

जेबीआईजी2 वैकल्पिक सॉफ्ट पैटर्न मैचिंग (SPM) के साथ PM&S में सुधार करता है। समान विभाजन और खोज की जाती है, लेकिन प्रत्येक पाए गए मैचिंग के लिए, एनकोडर न केवल संबंधित डिक्शनरी प्रविष्टि को बचाता है, बल्कि वास्तविक खंड और डिक्शनरी खंड के बीच अंतर का वर्णन करने वाला शोधन डेटा भी बचाता है। ऐसा करने से सब्स्टिटूशन त्रुटियाँ बहुत कम हो जाती हैं।[10][lower-alpha 1] चूंकि डिक्शनरी मैचिंग के लिए आवश्यक है कि एक्चुअल (वास्तविक) करैक्टर और डिक्शनरी करैक्टर अत्यधिक समान हों, एसपीएम केवल थोड़ी मात्रा में डेटा जोड़ता है।[11]


हाफ़टोन

हाफ़टोन इमेज को दो विधियों का उपयोग करके कंप्रेस किया जा सकता है। तरीकों में से एक संदर्भ-आधारित अंकगणित कोडिंग एल्गोरिदम के समान है, जो आसन्न पिक्सल के बीच सहसंबंध प्राप्त करने के लिए टेम्पलेट पिक्सल को अनुकूल रूप से स्थित करता है। दूसरी विधि में, हाफ़टोन इमेज पर डिसस्क्रीनिंग की जाती है ताकि इमेज वापस ग्रेस्केल में परिवर्तित हो जाए। परिवर्तित ग्रेस्केल मानों को हाफ़टोन बिटमैप डिक्शनरी में निहित निश्चित आकार के छोटे बिटमैप पैटर्न के सूचकांक के रूप में उपयोग किया जाता है। यह डिकोडर को एक-दूसरे के साथ अनुक्रमित डिक्शनरी बिटमैप पैटर्न प्रस्तुत करके हाफ़टोन इमेज को सफलतापूर्वक प्रस्तुत करने की अनुमति देता है।[10]


एन्ट्रॉपी कोडिंग

टेक्स्ट, हाफ़टोन और सामान्य क्षेत्रों सहित सभी तीन क्षेत्र प्रकार अंकगणित कोडिंग या हफ़मैन कोडिंग का उपयोग कर सकते हैं। जेबीआईजी2 विशेष रूप से एमक्यू कोडर का उपयोग करता है, JPEG 2000 द्वारा नियोजित वही एन्ट्रापी एनकोडर।

पेटेंट

जेबीआईजी2 के पेटेंट का स्वामित्व IBM और मित्सुबिशी के पास है। अनुरोध के बाद निःशुल्क लाइसेंस उपलब्ध होना चाहिए। JBIG और जेबीआईजी2 पेटेंट समान नहीं हैं।[13][14][15]


स्कैन किए गए डॉक्यूमेंट में करैक्टर सब्स्टिटूशन त्रुटियाँ (एरर)

जेबीआईजी2 कम्प्रेशन संभावित रूप से पीडीएफ में स्कैन किए गए डॉक्यूमेंट में टेक्स्ट में वास्तविक करैक्टर को बदल सकता है। यह कुछ अन्य एल्गोरिदम के विपरीत है, जो केवल धुंधलापन में बदल जाता है, जिससे कम्प्रेशन आर्टिफैक्ट्स (कलाकृतियाँ) स्पष्ट हो जाती हैं।[16] चूँकि जेबीआईजी2 समान दिखने वाले सिम्बॉल का ''पैटर्न मैचिंग'' पहचान का उपयोग करता है, उदाहरण के लिए, संख्या ''6'' और ''8'' को प्रतिस्थापित किया जा सकता है, खासकर यदि अधिक आक्रामक (उच्च) कम्प्रेशन विकल्प के रूप में उपयोग किया जाता है।[17]

2013 में, कई ज़ीरक्सा वर्कसेंटर फोटोकॉपियर और प्रिंटर मशीनों पर विभिन्न सब्स्टिटूशन (''6'' को ''8'' से बदलने सहित) ज़ेरॉक्स कैरेक्टर सब्स्टिटूशन बग हुआ। स्कैन किए गए (लेकिन ऑप्टिकल कैरेक्टर मान्यता नहीं) डॉक्यूमेंट पर प्रिंटेड नंबर संभावित रूप से बदल दिए गए थे। इसे निर्माण ब्लूप्रिंट और संख्याओं की कुछ तालिकाओं पर प्रदर्शित किया गया है; चिकित्सा नुस्खे जैसे डॉक्यूमेंट में ऐसी सब्स्टिटूशन त्रुटियों के संभावित प्रभाव का संक्षेप में उल्लेख किया गया था।[18][19][20] जर्मन कंप्यूटर वैज्ञानिक डेविड क्रिसेल और ज़ेरॉक्स इसकी जांच कर रहे थे।[21][22]

ज़ेरॉक्स ने बाद में स्वीकार किया कि यह एक लंबे समय से चली आ रही सॉफ़्टवेयर खराबी थी, और यह सुझाव देने वाले उनके प्रारंभिक बयान कि केवल गैर-फ़ैक्टरी सेटिंग्स ही सब्स्टिटूशन प्रस्तुत कर सकती हैं, गलत थे। प्रभावित उपकरणों के अपडेट को वापस बुलाने या अनिवार्य करने का कोई प्रयास नहीं किया गया - जिसे एक दर्जन से अधिक उत्पाद परिवारों को प्रभावित करने के लिए स्वीकार किया गया था। हालाँकि, अगस्त 2013 में एक पैच (कंप्यूटिंग) उपलब्ध कराया गया था, जिसे स्थापित करने पर, पैटर्न मैचिंग स्वचालित रूप से अक्षम हो जाता था।[17]पहले स्कैन किए गए डॉक्यूमेंट में संभावित रूप से त्रुटियां बनी रहती हैं जिससे उनकी सत्यता को प्रमाणित करना कठिन हो जाता है। त्रुटियों की संभावना के बारे में प्रचार के बाद कुछ देशों में अधिकारियों ने जेबीआईजी2 के उपयोग को रोकने के लिए बयान दिए।[23] जर्मनी में सूचना सुरक्षा के लिए संघीय कार्यालय ने एक तकनीकी दिशानिर्देश जारी किया है जिसमें कहा गया है कि सब्स्टिटूशन स्कैनिंग के लिए जेबीआईजी2 एन्कोडिंग का उपयोग नहीं किया जाना चाहिए।[24] स्विट्जरलैंड में इलेक्ट्रॉनिक डॉक्यूमेंट के स्थायी संग्रह के लिए समन्वय कार्यालय ने पीडीएफ डॉक्यूमेंट बनाते समय जेबीआईजी2 के उपयोग के खिलाफ सिफारिश की है।[25]


शोषण

जेबीआईजी2 के Xpdf कार्यान्वयन में एक भेद्यता, एप्पल के iOS फ़ोन ऑपरेटिंग सॉफ़्टवेयर में पुन: उपयोग किया गया, पेगासस (स्पाइवेयर) द्वारा जेबीआईजी2 स्ट्रीम के अंदर एक अनुकरणीय कंप्यूटर आर्किटेक्चर का निर्माण करके IPhone पर शून्य-क्लिक हमले को लागू करने के लिए उपयोग किया गया था। एप्पल ने सितंबर 2021 में iOS 14.8 में इस जबर्दस्ती प्रविष्टि (फोर्स्डेनटरी) भेद्यता को ठीक किया था।[26]


संदर्भ

  1. If the refinement data is used without any threshold of difference, encoding would be completely lossless. This could be less efficient than just tagging the whole page as a "generic region" for direct arithmetic coding.[12]
  1. Press release from the Joint Bi-level Image experts Group Archived 2005-05-15 at the Wayback Machine.
  2. "ITU-T Recommendation T.88 – T.88 : Information technology - Coded representation of picture and audio information - Lossy/lossless coding of bi-level images". Retrieved 2011-02-19.
  3. "ISO/IEC 14492:2001 – Information technology – Lossy/lossless coding of bi-level images". Retrieved 2011-02-19.
  4. JBIG2-the ultimate bi-level image coding standard, by F. Ono, W. Rucklidge, R. Arps, and C. Constantinescu, in Proceedings, 2000 International Conference on Image Processing (Vancouver, BC, Canada), vol. 1, pp. 140–143.
  5. jbig2dec decoder home page.
  6. jbig2-imageio decoder plugin for Java's ImageIO.
  7. jbig2.js decoder for PDF.js.
  8. JBIG2Stream decoder by Glyph & Cog LLC.
  9. jbig2enc encoder project home.
  10. 10.0 10.1 10.2 F. Ono, W. Rucklidge, R. Arps, and C. Constantinescu, "JBIG2-the ultimate bi-level image coding standard", Image Processing, 2000. Proceedings. 2000 International Conference on , vol. 1, pp. 140–143 vol. 1, 2000.
  11. 11.0 11.1 11.2 P. Howard, F. Kossentini, B. Martins, S. Forchhammer, and W. Rucklidge, "The emerging JBIG2 standard", Circuits and Systems for Video Technology, IEEE Transactions on , vol. 8, no. 7, pp. 838–848, Nov 1998.
  12. Langley, Adam. "jbig2enc: Documentation". GitHub. We can choose to do this for each symbol on the page, so we don't have to refine when we are only a couple of pixel off. If we refine whenever we [sic] a wrong pixel, we have lossless encoding using symbols.
  13. What is the patent situation with JBIG?, archived from the original on 2012-02-23
  14. What is JBIG2?, archived from the original on 2012-04-14, retrieved 2012-04-07
  15. JBIG2 patents, archived from the original on 2017-09-29, retrieved 2012-04-07
  16. Zhou Wang, Hamid R. Sheikh and Alan C. Bovik (2002). "No-reference perceptual quality assessment of JPEG compressed images". Proceedings 2002 International Conference on Image Processing (PDF). Archived from the original (PDF) on 2013-11-02.
  17. 17.0 17.1 Xerox Corporation. Scanning and Compression White Paper, 2013
  18. "Xerox scanners/photocopiers randomly alter numbers in scanned documents". 2013-08-02. Retrieved 2013-08-04.
  19. "भ्रमित ज़ेरॉक्स कॉपियर दस्तावेज़ों को फिर से लिखते हैं, विशेषज्ञ ने पाया". BBC News. 2013-08-06. Retrieved 2013-08-06.
  20. "Xerox Scanners / Photocopiers Randomly Alter Numbers". The Font Feed. 5 August 2013. Archived from the original on 26 October 2017.
  21. "ज़ेरॉक्स नवीनतम मैंगलिंग परीक्षण निष्कर्षों की जांच कर रहा है". 2013-08-11. Retrieved 2013-08-11.
  22. Update on Scanning Issue: Software Patches To Come, Xerox (blog), 2013-08-11, archived from the original on 2013-11-04, retrieved 2013-08-11
  23. Kriesel, David. "Video and Slides of my Xerox Talk at 31C3". D. Kriesel Data Science, Machine Learning, BBQ, Photos, and Ants in a Terrarium. Retrieved 31 July 2016.
    Note: The video there is dubbed over in English; if you understand German, the original might be easier to follow: David Kriesel: Traue keinem Scan, den du nicht selbst gefälscht hast
  24. "BSI Technical Guidelines 03138: Replacement Scanning" (PDF). Retrieved 28 December 2021.
  25. "JBIG2 Compression". Retrieved 28 December 2021.
  26. Beer, Ian; Groß, Samuel (2021-12-15). "Project Zero: A deep dive into an NSO zero-click iMessage exploit: Remote Code Execution". Google Project Zero. Retrieved 2021-12-16.


बाहरी संबंध