या वेगवेगळ्या कॉम्प्रेशनच्या फॉरमॅट्सनाच आपण ' जिफ ' , ' जेपेग ' , ' एमपेग ' , ' एमपीथ्री ' , ' एमपीफोर ' , ' बीएमपी ' , ' एव्हीआय ' वगैरे नावांनी ओळखतो.
जेव्हा आपण पेंट, विंडोज, मीडिया प्लेअर, रिअलप्लेअर वगैरे सॉफ्टवेअर वापरून चित्रं, फोटो, गाणी, सिनेमे वगैरे ऐकतो/बघतो/तयार करतो तेव्हा ही सारी सॉफ्टवेअर्स काय करतात?
कम्प्युटरमध्ये माहिती मेमरीत किंवा डिस्कवर साठवणं, तसंच एकीकडून दुसरीकडे पाठवणं खचिर्क असतं. अलिकडे कम्प्युटरचं हार्डवेअर अधिकाधिक स्वस्त होत चाललेलं असलं आणि त्याची माहिती साठवण्याची क्षमता वाढत चालली असली, तरीही ते पुरेसं नाही. याचं कारण असं की, आजकाल कम्प्युटर्सचा वापर फक्त 'टेक्स्ट' (उदाहरणार्थ डॉक्युमेंट्स, हिशेब वगैरे) साठवण्यासाठीच होतो असं नाही. उलट चित्रं, चलतचित्रं, आवाज इत्यादी 'मल्टिमीडिया' प्रकारात मोडणाऱ्या गोष्टींसाठी तो बऱ्याच जास्त प्रमाणात होतो. 'मल्टिमीडिया'मध्ये तर प्रत्येक चित्र , तसंच ध्वनिफीत इत्यादि गोष्टी साठवण्यासाठी अनेक बिट्स खचीर् पडतात. उदाहरणार्थ समजा, आपण एखादं छायाचित्र स्कॅनरच्या मदतीनं 'स्कॅन' करून ते कम्प्युटरच्या डिस्कवर साठवलं तर त्या चित्रातले बारकावे, रंगांच्या छटा वगैरे गोष्टी अचूकपणे टिपून त्या साठवायला तीन मेगॅबाईट्स (म्हणजे अडीच कोटींपेक्षा जास्त बिट्स) खचीर् पडू शकतात! शिवाय त्यामुळे मग ते छायाचित्र ई-मेलच्या द्वारे एका ठिकाणाहून दुसरीकडे पाठवायचं म्हणजे एवढे प्रचंड बिट्स पाठवावे लागतात. साहजिकच माहिती कमीतकमी बिट्समध्ये साठवता येणं हे खूपच महत्वाचं असतं. हे समजून घेण्यासाठी आपण एक उदाहरण घेऊ.
समजा, आपण कम्प्युटरच्या पडद्यावर सोबतच्या चित्रात दाखवलेली आकृती काढली. आणि आपण कम्प्युटरच्या पडद्यावर एक सूक्ष्म जाळी ठेवली आहे असं कल्पिलं तर त्या जाळीतून काही ठिकाणी पांढरे ठिपके दिसतील तर काही ठिकाणी काळे. आता पांढऱ्या ठिपक्यांसाठी ० तर काळ्यांसाठी १ अशा बिट्समध्ये हे चित्र कम्प्युटरच्या 'फ्रेम बफर' या मेमरीत आणि नंतर डिस्कवर आपण साठवु शकतो हे आपण जाणतोच. आता प्रश्न हा की, आपल्याला एवढे बिट्स या चित्रासाठी लागतील का? आपण फ्रेम बफरमध्ये साठवले गेलेले बिटस् वाचले तर आपल्याला पहिल्या चार रांगांतल्या प्रत्येकी सोळाच्या सोळा कप्प्यात शून्यच दिसतील. म्हणजे पहिले चौसष्ट बिट्स हे '०'च आहेत. मग हीच माहिती त्यापेक्षा कमी बिट्स मध्ये मांडण्याचे प्रयत्न झाले. या तंत्राला 'डेटा कॉम्प्रेशन' किंवा चक्क माहिती कोंबणं किंवा आकुंचित करणं असं म्हणतात. हे समजण्यासाठी आपण एक उदाहरण घेऊया. समजा आपल्याला ३० बिट्स कम्प्युटरमध्ये साठवायचे आहेत. तर हे तीस बिट्स तसे न लिहिता आपण त्यांचं 'आकुंचन' करू शकतो. ते कसं होईल, बघा :
मूळ बिट्स०००००००००१११ ०१११११११०११०१०१००१
आकुंचनानंतर *९*०१११०*७*१०११०१०१००१
इथे आपण जिथे जिथे एखादा बिट परत परत येईल तेव्हा तो दर वेळी लिहिण्यापेक्षा फक्त तो किती वेळा असला पाहिजे, ही माहिती लिहितोय. उदाहरणार्थ नऊ वेळा शून्य (०००००००००) ऐवजी आपण *९*० असं लिहिलं, अर्थातच * या चिन्हाचा अर्थ 'आता दुसऱ्या * पुढे असणारा (०) हा आकडा दोन मध्ये असणाऱ्या आकड्याएवढ्या (९) वेळा आहे असं सांगतोय. म्हणजे, थोडक्यात कम्प्युटरला आपण सांगतोय, ९ वेळा ० हा बिट लिही, मग १११० हे बिट्स लिही, मग ७ वेळा १ बिट लिही आणि मग त्यानंतर ०११०१०१००१ असे बिट्स लिही. त्यामुळे आपल्या मूळच्या ३० बिट्समधली माहिती आपण फक्त २२ चिन्हांत लिहू शकलो! मोठमोठ्या आकाराच्या माहितीत तर अशा कोंबाकोंबीच्या (कॉंम्प्रेशन) तंत्रज्ञानाने खूपच बिट्स वाचतात. उदाहरणार्थ आपल्याच चित्राच्या पहिल्या चार रांगेमधल्या चौसष्ट वेळा ० या बिट्सऐवजी *६४*० अशा पाचच चिन्हांसाठीची बिट्स लिहावी लागतील. मग माहिती पुन्हा वाचताना 'डीकाँम्प्रेशन' या सॉफ्टवेअरनं ही आकुंचित केलेली माहिती पुन्हा मूळ स्वरुपात (उदाहरणार्थ *९*चं रूपांतर पुन्हा ००००००००० करून) आणली, की झालं!
माहिती अशा प्रकारे आकुंचित करून वा कोंबून टाकण्यासाठी बऱ्याच पध्दती असतात आणि त्या प्रत्येकासाठी मग एक वेगळी कोडभाषा (कॉम्प्रेशन फॉरमॅट) असते. तसंच काही बिट्स बदलून जर अचूकता फारशी न बदलता कॉंप्रेशन खूप वाढवता येत असेल तर ते करण्यात येतं. उदाहरणार्थ समजा दोन ओळीनं १०० वेळा ० हा बिट असेल, पण त्यात मध्येच एकच १ हा बिट असेल तर त्याचा ० केल्यानं जे चित्र उमटेल, ते जवळपास मूळच्यासारखंच दिसेल. म्हणजेच कमीत कमी बिट्समध्ये जास्तीत जास्त बिट्स माहिती ही वेगवेगळ्या कॉंम्प्रेशनची पध्दती वापरून साठवता येते. यात किंचितशी अचूकता गेली तरी कॉंम्प्रेशन झकास करता आल्यानं मग काही फॉरमॅट्स तो बिट बदलतात. या वेगवेगळ्या कॉम्प्रेशनच्या फॉरमॅट्सनाच आपण ' जिफ ' , ' जेपेग ' , ' एमपेग ' , ' एमपीथ्री ' , ' एमपीफोर ' , ' बीएमपी ' , ' एव्हीआय ' वगैरे नावांनी ओळखतो.
जेव्हा आपण पेंट, विंडोज, मीडिया प्लेअर, रिअलप्लेअर वगैरे सॉफ्टवेअर वापरून चित्रं, फोटो, गाणी, सिनेमे वगैरे ऐकतो/बघतो/तयार करतो तेव्हा ही सारी सॉफ्टवेअर्स काय करतात? समजा, आपण एक एमपीथ्रीची तबकडी कम्प्युटरमध्ये लावली तर एमपीथ्री पध्दतीत बिट्स कोणत्या पध्दतीने 'कोंबलेली' असणार हे त्या रिअलप्लेअर वगैरेला माहीत असतं. त्यावरून तो एमपीथ्रीच्या तबकडीवरची आकुंचन पावलेली बिट्स वाचतो आणि त्यांचं रूपांतर मूळच्या बिट्समध्ये करतो. मग त्या 'विस्तारलेल्या' बिट्सचं रूपांतर प्रथम विद्युत आणि ध्वनीलहरींमध्ये करून ते कम्प्युटरच्या स्पीकर्सकडे पाठवलं जातं. हेच तत्त्व सीडी/डीव्हीडीमध्ये वापरलं जातं. पण यामुळेच साध्या सीडी प्लेअरवर एमपीथ्रीची सीडी चालत नाही. कारण त्या प्लेअरला या कोंबलेल्या बिट्सचं मूळ विस्तारित बिट्समध्ये रूपांतर कसं करायचं हे माहीतच नसतं. याच धतीर्वर चित्रं, फोटो वगैरंसाठी 'जिफ', 'जेपेग', 'बीएमपी' वगैरे विविध प्रकारचे बिट्सच्या कोंबाकोंबीचे प्रकार आहेत. त्यांचंही मूळ स्वरुप तेच.
माहितीची अचूकता कमीत कमी घालवून जितक्या कमी बिट्समध्ये जास्तीत जास्त माहिती 'कोंबता' येईल, तितकं उत्तमच! त्यामुळे भविष्यातही असे विविध फॉरमॅट्स आणि त्यांचे प्लेअर्स येतच राहतील!
जेव्हा आपण पेंट, विंडोज, मीडिया प्लेअर, रिअलप्लेअर वगैरे सॉफ्टवेअर वापरून चित्रं, फोटो, गाणी, सिनेमे वगैरे ऐकतो/बघतो/तयार करतो तेव्हा ही सारी सॉफ्टवेअर्स काय करतात?
कम्प्युटरमध्ये माहिती मेमरीत किंवा डिस्कवर साठवणं, तसंच एकीकडून दुसरीकडे पाठवणं खचिर्क असतं. अलिकडे कम्प्युटरचं हार्डवेअर अधिकाधिक स्वस्त होत चाललेलं असलं आणि त्याची माहिती साठवण्याची क्षमता वाढत चालली असली, तरीही ते पुरेसं नाही. याचं कारण असं की, आजकाल कम्प्युटर्सचा वापर फक्त 'टेक्स्ट' (उदाहरणार्थ डॉक्युमेंट्स, हिशेब वगैरे) साठवण्यासाठीच होतो असं नाही. उलट चित्रं, चलतचित्रं, आवाज इत्यादी 'मल्टिमीडिया' प्रकारात मोडणाऱ्या गोष्टींसाठी तो बऱ्याच जास्त प्रमाणात होतो. 'मल्टिमीडिया'मध्ये तर प्रत्येक चित्र , तसंच ध्वनिफीत इत्यादि गोष्टी साठवण्यासाठी अनेक बिट्स खचीर् पडतात. उदाहरणार्थ समजा, आपण एखादं छायाचित्र स्कॅनरच्या मदतीनं 'स्कॅन' करून ते कम्प्युटरच्या डिस्कवर साठवलं तर त्या चित्रातले बारकावे, रंगांच्या छटा वगैरे गोष्टी अचूकपणे टिपून त्या साठवायला तीन मेगॅबाईट्स (म्हणजे अडीच कोटींपेक्षा जास्त बिट्स) खचीर् पडू शकतात! शिवाय त्यामुळे मग ते छायाचित्र ई-मेलच्या द्वारे एका ठिकाणाहून दुसरीकडे पाठवायचं म्हणजे एवढे प्रचंड बिट्स पाठवावे लागतात. साहजिकच माहिती कमीतकमी बिट्समध्ये साठवता येणं हे खूपच महत्वाचं असतं. हे समजून घेण्यासाठी आपण एक उदाहरण घेऊ.
समजा, आपण कम्प्युटरच्या पडद्यावर सोबतच्या चित्रात दाखवलेली आकृती काढली. आणि आपण कम्प्युटरच्या पडद्यावर एक सूक्ष्म जाळी ठेवली आहे असं कल्पिलं तर त्या जाळीतून काही ठिकाणी पांढरे ठिपके दिसतील तर काही ठिकाणी काळे. आता पांढऱ्या ठिपक्यांसाठी ० तर काळ्यांसाठी १ अशा बिट्समध्ये हे चित्र कम्प्युटरच्या 'फ्रेम बफर' या मेमरीत आणि नंतर डिस्कवर आपण साठवु शकतो हे आपण जाणतोच. आता प्रश्न हा की, आपल्याला एवढे बिट्स या चित्रासाठी लागतील का? आपण फ्रेम बफरमध्ये साठवले गेलेले बिटस् वाचले तर आपल्याला पहिल्या चार रांगांतल्या प्रत्येकी सोळाच्या सोळा कप्प्यात शून्यच दिसतील. म्हणजे पहिले चौसष्ट बिट्स हे '०'च आहेत. मग हीच माहिती त्यापेक्षा कमी बिट्स मध्ये मांडण्याचे प्रयत्न झाले. या तंत्राला 'डेटा कॉम्प्रेशन' किंवा चक्क माहिती कोंबणं किंवा आकुंचित करणं असं म्हणतात. हे समजण्यासाठी आपण एक उदाहरण घेऊया. समजा आपल्याला ३० बिट्स कम्प्युटरमध्ये साठवायचे आहेत. तर हे तीस बिट्स तसे न लिहिता आपण त्यांचं 'आकुंचन' करू शकतो. ते कसं होईल, बघा :
मूळ बिट्स०००००००००१११ ०१११११११०११०१०१००१
आकुंचनानंतर *९*०१११०*७*१०११०१०१००१
इथे आपण जिथे जिथे एखादा बिट परत परत येईल तेव्हा तो दर वेळी लिहिण्यापेक्षा फक्त तो किती वेळा असला पाहिजे, ही माहिती लिहितोय. उदाहरणार्थ नऊ वेळा शून्य (०००००००००) ऐवजी आपण *९*० असं लिहिलं, अर्थातच * या चिन्हाचा अर्थ 'आता दुसऱ्या * पुढे असणारा (०) हा आकडा दोन मध्ये असणाऱ्या आकड्याएवढ्या (९) वेळा आहे असं सांगतोय. म्हणजे, थोडक्यात कम्प्युटरला आपण सांगतोय, ९ वेळा ० हा बिट लिही, मग १११० हे बिट्स लिही, मग ७ वेळा १ बिट लिही आणि मग त्यानंतर ०११०१०१००१ असे बिट्स लिही. त्यामुळे आपल्या मूळच्या ३० बिट्समधली माहिती आपण फक्त २२ चिन्हांत लिहू शकलो! मोठमोठ्या आकाराच्या माहितीत तर अशा कोंबाकोंबीच्या (कॉंम्प्रेशन) तंत्रज्ञानाने खूपच बिट्स वाचतात. उदाहरणार्थ आपल्याच चित्राच्या पहिल्या चार रांगेमधल्या चौसष्ट वेळा ० या बिट्सऐवजी *६४*० अशा पाचच चिन्हांसाठीची बिट्स लिहावी लागतील. मग माहिती पुन्हा वाचताना 'डीकाँम्प्रेशन' या सॉफ्टवेअरनं ही आकुंचित केलेली माहिती पुन्हा मूळ स्वरुपात (उदाहरणार्थ *९*चं रूपांतर पुन्हा ००००००००० करून) आणली, की झालं!
माहिती अशा प्रकारे आकुंचित करून वा कोंबून टाकण्यासाठी बऱ्याच पध्दती असतात आणि त्या प्रत्येकासाठी मग एक वेगळी कोडभाषा (कॉम्प्रेशन फॉरमॅट) असते. तसंच काही बिट्स बदलून जर अचूकता फारशी न बदलता कॉंप्रेशन खूप वाढवता येत असेल तर ते करण्यात येतं. उदाहरणार्थ समजा दोन ओळीनं १०० वेळा ० हा बिट असेल, पण त्यात मध्येच एकच १ हा बिट असेल तर त्याचा ० केल्यानं जे चित्र उमटेल, ते जवळपास मूळच्यासारखंच दिसेल. म्हणजेच कमीत कमी बिट्समध्ये जास्तीत जास्त बिट्स माहिती ही वेगवेगळ्या कॉंम्प्रेशनची पध्दती वापरून साठवता येते. यात किंचितशी अचूकता गेली तरी कॉंम्प्रेशन झकास करता आल्यानं मग काही फॉरमॅट्स तो बिट बदलतात. या वेगवेगळ्या कॉम्प्रेशनच्या फॉरमॅट्सनाच आपण ' जिफ ' , ' जेपेग ' , ' एमपेग ' , ' एमपीथ्री ' , ' एमपीफोर ' , ' बीएमपी ' , ' एव्हीआय ' वगैरे नावांनी ओळखतो.
जेव्हा आपण पेंट, विंडोज, मीडिया प्लेअर, रिअलप्लेअर वगैरे सॉफ्टवेअर वापरून चित्रं, फोटो, गाणी, सिनेमे वगैरे ऐकतो/बघतो/तयार करतो तेव्हा ही सारी सॉफ्टवेअर्स काय करतात? समजा, आपण एक एमपीथ्रीची तबकडी कम्प्युटरमध्ये लावली तर एमपीथ्री पध्दतीत बिट्स कोणत्या पध्दतीने 'कोंबलेली' असणार हे त्या रिअलप्लेअर वगैरेला माहीत असतं. त्यावरून तो एमपीथ्रीच्या तबकडीवरची आकुंचन पावलेली बिट्स वाचतो आणि त्यांचं रूपांतर मूळच्या बिट्समध्ये करतो. मग त्या 'विस्तारलेल्या' बिट्सचं रूपांतर प्रथम विद्युत आणि ध्वनीलहरींमध्ये करून ते कम्प्युटरच्या स्पीकर्सकडे पाठवलं जातं. हेच तत्त्व सीडी/डीव्हीडीमध्ये वापरलं जातं. पण यामुळेच साध्या सीडी प्लेअरवर एमपीथ्रीची सीडी चालत नाही. कारण त्या प्लेअरला या कोंबलेल्या बिट्सचं मूळ विस्तारित बिट्समध्ये रूपांतर कसं करायचं हे माहीतच नसतं. याच धतीर्वर चित्रं, फोटो वगैरंसाठी 'जिफ', 'जेपेग', 'बीएमपी' वगैरे विविध प्रकारचे बिट्सच्या कोंबाकोंबीचे प्रकार आहेत. त्यांचंही मूळ स्वरुप तेच.
माहितीची अचूकता कमीत कमी घालवून जितक्या कमी बिट्समध्ये जास्तीत जास्त माहिती 'कोंबता' येईल, तितकं उत्तमच! त्यामुळे भविष्यातही असे विविध फॉरमॅट्स आणि त्यांचे प्लेअर्स येतच राहतील!
कोणत्याही टिप्पण्या नाहीत:
टिप्पणी पोस्ट करा