מפת גווני אפור ניידת (.pgm)
Netpbm תקןפורמט מפת גווני האפור הניידת (PGM) הוא מפרט תמונות גווני האפור של משפחת Netpbm, הנמצא בשימוש נרחב בראייה ממוחשבת, רובוטיקה, בקרת איכות אופטית ואלגוריתמים לעיבוד תמונה דיגיטלית.
בדיקה ומטא-דאטה
מערכות הפעלה ומנתחי קבצים מזהים קבצי PGM על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי PGM על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
50 32 / 50 35ייצוג ASCII: 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 |
| סדר בתים (Endianness) | 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) |
| שקיפות | None |
| הזרמה ופרוגרסיביות | Sequential row-by-row streaming playback |
מטריצת השוואה טכנית: PGM מול מתחרים
| תכונה טכנית | PGM (נוכחי) | PBM | PPM | PNG |
|---|---|---|---|---|
| מצב צבע | גווני אפור (8-bit / 16-bit) | מונוכרום 1-bit | צבע אמיתי RGB (24-bit / 48-bit) | גווני אפור, RGB, RGBA |
| בן משפחת Netpbm | PGM (מפת גווני אפור ניידת) | PBM (מפת סיביות ניידת) | PPM (מפת פיקסלים ניידת) | תקן W3C שאינו מבית Netpbm |
| בתי קסדה (Magic Bytes) | P2 (ASCII) / P5 (בינארי) | P1 (ASCII) / P4 (בינארי) | P3 (ASCII) / P6 (בינארי) | ‰PNG.... |
| דחיסה | ללא דחיסה | ללא דחיסה | ללא דחיסה | Deflate ללא אובדן |
מצבי שיחשות נפוצים ומדריך שחזור הקסדצימלי (Hex)
התמונה מוצגת הפוכה או לבנה לחלוטין (נשרפה לחלוטין).
גורם שורש: פרמטר 'maxval' לא תואם בכותרת (לדוגמה, maxval הוגדר כ-1 במקום 255).
התאוששות: תקנו את שורת הכותרת של maxval או בצעו המרה באמצעות ממיר ה-Netpbm של File2File.
ניתוח אבטחה ווקטורי התקפה על מנתחים (Parsers)
מפענחי PGM חייבים לוודא היטב שספירות הפיקסלים המפוענحات תואמות למימדים המוצהרים כדי למנוע דריסת חוצץ.
ווקטורי תקיפה ידועים
- גלישת מספר שלם במהלך הקצאת חוצץ בחישוב רוחב * גובה * (maxval > 255 ? 2 : 1).
- קריאת יתר של חוצץ בעת קריאת אסימוני מספרי ASCII פגומים.
- מניעת שירות (DoS) באמצעות הקצאת זיכרון עצומה המופעלת על ידי מימדי כותרת מומצאים.
השיטות המומלצות להגנה:
היסטוריה ואבני דרך
יתרונות מרכזיים
- אפס מורכבות: פשוט ביותר לפענוח ולכתיבה בשפות C, Python או WebAssembly ללא צורך בספריות חיצוניות.
- תמיכה מולדת בגווני אפור של 16-bit הופכת אותו לאידיאלי עבור מפות גובה, מפות עומק והדמיה תרמית.
- מצב ASCII (P2) מאפשר בדיקה ומניפולציה ישירה של ערכי פיקסלים גולמיים בעורכי טקסט תקניים.
מגבלות טכניות וחסרונות
- ללא דחיסה: נפחי קבצים גדולים בהשוואה לפורמטים דחוסים כמו PNG.
- חסר מטא-דאטה עבור מימדים פיזיים, מרחבי צבע או מידע גיאוגרפי.
- ערוץ יחיד בלבד: אינו יכול לאחסן נתוני צבע או שקיפות אלפא.
עובדות טכניות מעניינות
- OpenCV, ROS (מערכת הפעלה לרובוטים) ומערכות ראייה ממוחשבת משתמשים לעתים קרובות ב-PGM עבור מפות ניווט למיפוי ומיקום בו-זמני (SLAM).
- מפתחי משחקים משתמשים לעתים קרובות בקבצי PGM ברזולוציית 16-bit כמפות גובה של פני השטח משום שנתוני הגובה הגולמיים אינם דחוסים וקלים לטעינה.
- פרמטר ה-'maxval' בכותרת מגדיר את ערך הבהירות המקסימלי (בדרך כלל 255 עבור 8-bit או 65535 עבור 16-bit).
שאלות טכניות נפוצות
למה משמש פורמט PGM?
PGM משמש בעיקר בראייה ממוחשבת (OpenCV), רובוטיקה (קובצי מפות ROS), הדמיה מדעית ויצירת מפות גובה של פני השטח (terrain heightmap) בתלת-ממד.
מה ההבדל בין קובצי PGM מסוג P2 לבין P5?
P2 הוא טקסט ASCII רגיל שבו כל פיקסל הוא מספר כתוב, בעוד ש-P5 מאחסן פיקסלים כבייטים בינאריים קומפקטיים.
כיצד אוכל להמיר PGM ל-JPG או ל-PNG?
העלה את קובץ ה-PGM שלך ל-File2File.app כדי להמיר אותו ל-PNG או ל-JPG ישירות בדפדפן שלך בפרטיות מלאה.