पोर्टेबल ग्रेमैप (.pgm)
Netpbm मानकपोर्टेबल ग्रेमैप प्रारूप (PGM) नेटपबम परिवार का ग्रेस्केल इमेज विनिर्देश है, जिसका व्यापक रूप से कंप्यूटर विज़न, रोबोटिक्स, ऑप्टिकल निरीक्षण और डिजिटल इमेज प्रोसेसिंग एल्गोरिदम में उपयोग किया जाता है।
इंस्पेक्ट और मेटाडेटा
ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके PGM फ़ाइलों की पहचान करते हैं:
बाइट-स्तरीय हेडर हस्ताक्षर (मैजिक बाइट्स)
ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके PGM फ़ाइलों की पहचान करते हैं:
HEX हस्ताक्षर (ऑफ़सेट 0):
50 32 / 50 35ASCII निरूपण: P2 / P5
मानकीकरण: Netpbm Library Standard
तकनीकी विनिर्देश
| कंटेनर आर्किटेक्चर | ASCII (P2) or binary (P5) Netpbm format with width, height, maximum gray value, and pixel stream |
| कंप्रेशन | Uncompressed raw binary bytes or human-readable ASCII text numbers |
| बाइट एंडियानेस | Big-Endian (for 16-bit binary samples in P5 mode) |
| कलर स्पेस | Linear Grayscale or sRGB Grayscale |
| चैनल और संरचना | 1 channel grayscale (8-bit or 16-bit precision) |
| अधिकतम आयाम | Practically unlimited (supports arbitrary 64-bit coordinate space) |
| पारदर्शिता (Transparency) | None |
| स्ट्रीमिंग और प्रोग्रेसिव | Sequential row-by-row streaming playback |
तकनीकी तुलना मैट्रिक्स: PGM बनाम प्रतियोगी
| तकनीकी विशेषता | PGM (वर्तमान) | PBM | PPM | PNG |
|---|---|---|---|---|
| रंग मोड (Color Mode) | ग्रेस्केल (8-बिट / 16-बिट) | 1-bit Monochrome | RGB ट्रू कलर (24-बिट / 48-बिट) | ग्रेस्केल, RGB, RGBA |
| नेटपबम सिबलिंग (Netpbm Sibling) | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | नॉन-नेटpbm W3C मानक |
| मैजिक बाइट्स (Magic Bytes) | P2 (ASCII) / P5 (बाइनरी) | P1 (ASCII) / P4 (बाइनरी) | P3 (ASCII) / P6 (बाइनरी) | ‰PNG.... |
| संपीड़न (Compression) | असम्पीडित | असम्पीडित | असम्पीडित | लॉसलेस डिफ्लेट |
सामान्य करप्शन मोड और हेक्स रिकवरी गाइड
इमेज उल्टी या पूरी तरह से सफेद प्रदर्शित होती है।
मूल कारण: हेडर में बेमेल 'maxval' पैरामीटर (उदा. maxval 255 के बजाय 1 के रूप में घोषित)।
रिकवरी: maxval हेडर लाइन को सुधारें या File2File Netpbm कन्वर्टर के साथ ट्रांसकोड करें।
सुरक्षा विश्लेषण और पार्सर अटैक वेक्टर्स
PGM डिकोडर्स को सावधानीपूर्वक यह सत्यापित करना चाहिए कि बफर ओवररन को रोकने के लिए पार्स किए गए पिक्सेल गिनती घोषित आयामों से मेल खाते हैं।
ज्ञात अटैक वेक्टर्स
- चौड़ाई * ऊँचाई * (maxval > 255 ? 2 : 1) बफर आवंटन के दौरान पूर्णांक ओवरफ़्लो।
- विकृत ASCII नंबर टोकन पढ़ते समय बफर ओवर-रीड।
- गढ़े हुए हेडर आयामों द्वारा शुरू किए गए बड़े पैमाने पर मेमोरी आवंटन के माध्यम से सेवा से इनकार।
सुरक्षात्मक सर्वोत्तम प्रथाएँ:
ऐतिहासिक मूल और मील के पत्थर
मुख्य लाभ और खूबियाँ
- शून्य जटिलता: बाहरी पुस्तकालयों के बिना C, Python या WebAssembly में पार्स और लिखना बेहद आसान है।
- मूल 16-बिट ग्रेस्केल समर्थन इसे हाइटमैप, गहराई मानचित्र और थर्मल इमेजिंग के लिए आदर्श बनाता है।
- ASCII मोड (P2) मानक टेक्स्ट संपादकों में कच्चे पिक्सेल मानों के प्रत्यक्ष निरीक्षण और हेरफेर की अनुमति देता है।
तकनीकी सीमाएँ और कमियाँ
- कोई संपीड़न नहीं: PNG जैसे संपीड़ित प्रारूपों की तुलना में बड़ी फ़ाइल पदचिह्न।
- भौतिक आयामों, रंग स्थानों या भौगोलिक स्थिति के लिए मेटाडेटा का अभाव है।
- सख्त एकल-चैनल: रंग डेटा या अल्फा पारदर्शिता संग्रहीत नहीं कर सकता है।
रोचक तकनीकी जानकारी
- OpenCV, ROS (रोबोट ऑपरेटिंग सिस्टम), और मशीन विज़न सिस्टम SLAM नेविगेशन मैप्स के लिए अक्सर PGM का उपयोग करते हैं।
- गेम डेवलपर अक्सर भूभाग हाइटमैप के रूप में 16-बिट PGM फ़ाइलों का उपयोग करते हैं क्योंकि कच्चा ऊंचाई डेटा संपीड़ित नहीं होता है और लोड करने में आसान होता है।
- हेडर में 'maxval' पैरामीटर अधिकतम चमक मूल्य को परिभाषित करता है (आमतौर पर 8-बिट के लिए 255 या 16-बिट के लिए 65535)।
अक्सर पूछे جانے वाले तकनीकी प्रश्न
PGM फॉर्मेट का उपयोग किस लिए किया जाता है?
PGM का उपयोग मुख्य रूप से कंप्यूटर विजन (OpenCV), रोबोटिक्स (ROS मैप फ़ाइलें), वैज्ञानिक इमेजिंग और 3D टेरेन हाइटमैप जनरेशन में किया जाता है।
P2 और P5 PGM फ़ाइलों में क्या अंतर है?
P2 सादा ASCII टेक्स्ट है जहाँ प्रत्येक पिक्सेल एक लिखित संख्या होती है, जबकि P5 पिक्सेल को कॉम्पैक्ट बाइनरी बाइट्स के रूप में स्टोर करता है।
मैं PGM को JPG या PNG में कैसे बदल सकता हूँ?
पूर्ण गोपनीयता के साथ सीधे अपने ब्राउज़र में इसे PNG या JPG में बदलने के लिए अपनी PGM फ़ाइल को File2File.app पर अपलोड करें।