מפת גווני אפור ניידת (.pgm)
תקן תקןפורמט מפת גווני האפור הניידת (PGM) הוא מפרט תמונות גווני האפור של משפחת Netpbm, הנמצא בשימוש נרחב בראייה ממוחשבת, רובוטיקה, בקרת איכות אופטית ואלגוריתמים לעיבוד תמונה דיגיטלית.
בדיקה ומטא-נתונים
מערכות הפעלה ומנתחי קבצים מזהים קבצי PGM על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי PGM על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
50 32 / 50 35ייצוג ASCII: P2 / P5
תקינה: תקן ספריית Netpbm
מפרט טכני
| מבנה המכולה | פורמט Netpbm בטקסט ASCII (P2) או בינארי (P5), עם רוחב, גובה, ערך אפור מרבי וזרם פיקסלים |
| דחיסה | בייטים בינאריים גולמיים או מספרים בטקסט ASCII קריא לאדם, ללא דחיסה |
| סדר בתים (Endianness) | Big-Endian (לדגימות בינאריות של 16 סיביות במצב P5) |
| מרחבי צבע | גווני אפור ליניאריים או גווני אפור sRGB |
| ערוצים ומבנה | ערוץ אחד של גווני אפור (דיוק של 8 או 16 סיביות) |
| ממדים מרביים | מגבלות מעשיות כמעט שאינן קיימות (תומך במרחב קואורדינטות שרירותי של 64 סיביות) |
| שקיפות | ללא |
| הזרמה ופרוגרסיביות | הפעלה רציפה בהזרמה, שורה אחר שורה |
מטריצת השוואה טכנית: 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.app.
ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)
מפענחי PGM חייבים לוודא היטב שספירות הפיקסלים המפוענחות תואמות למימדים המוצהרים כדי למנוע דריסת חוצץ.
ווקטורי תקיפה ידועים
- גלישת מספר שלם במהלך הקצאת חוצץ בחישוב רוחב * גובה * (maxval > 255 ? 2 : 1).
- קריאת יתר של חוצץ בעת קריאת אסימוני מספרי ASCII פגומים.
- מניעת שירות (DoS) באמצעות הקצאת זיכרון עצומה המופעלת על ידי מימדי כותרת מומצאים.
שיטות מומלצות להגנה: הגבל את ממדי המקסימום המותרים ואת מגבלות הקצאת הזיכרון לפני קריאת זרמי פיקסלים.
היסטוריה ואבני דרך
יתרונות מרכזיים
- המבנה הקומפקטי של PGM עשוי להקל על מימוש קוראים בסיסיים, אך עדיין יש לטפל בעומקי דגימה, בכותרות ובקלט פגום.
- תמיכה מולדת בגווני אפור של 16-bit הופכת אותו לאידיאלי עבור מפות גובה, מפות עומק והדמיה תרמית.
- מצב ASCII (P2) מאפשר בדיקה ומניפולציה ישירה של ערכי פיקסלים גולמיים בעורכי טקסט תקניים.
מגבלות טכניות וחסרונות
- ללא דחיסה: נפחי קבצים גדולים בהשוואה לפורמטים דחוסים כמו PNG.
- חסר מטא-דאטה עבור מימדים פיזיים, מרחבי צבע או מידע גיאוגרפי.
- ערוץ יחיד בלבד: אינו יכול לאחסן נתוני צבע או שקיפות אלפא.
עובדות טכניות מעניינות
- OpenCV, ROS (מערכת הפעלה לרובוטים) ומערכות ראייה ממוחשבת משתמשים לעתים קרובות ב-PGM עבור מפות ניווט למיפוי ומיקום בו-זמני (SLAM).
- מפתחי משחקים משתמשים לעתים קרובות בקבצי PGM ברזולוציית 16-bit כמפות גובה של פני השטח משום שנתוני הגובה הגולמיים אינם דחוסים וקלים לטעינה.
- פרמטר ה-'maxval' בכותרת מגדיר את ערך הבהירות המקסימלי (בדרך כלל 255 עבור 8-bit או 65535 עבור 16-bit).
שאלות טכניות נפוצות
למה משמש פורמט PGM?
PGM משמש בעיקר בראייה ממוחשבת (OpenCV), ברובוטיקה (קובצי מפות של ROS), בהדמיה מדעית וביצירת מפות גובה לתוואי שטח תלת-ממדי.
מה ההבדל בין קובצי PGM מסוג P2 לבין P5?
P2 הוא טקסט ASCII רגיל שבו כל פיקסל הוא מספר כתוב, בעוד ש-P5 מאחסן פיקסלים כבייטים בינאריים קומפקטיים.
כיצד אוכל להמיר PGM ל-JPG או ל-PNG?
PGM מאחסן דגימות בגווני אפור. המר אותו ל-PNG כדי לקבל תמונה ללא אובדן נתונים שנתמכת במגוון רחב של מציגים, או ל-JPEG אם חשוב לך קובץ קטן יותר בסגנון צילום; הממיר פועל בדפדפן שלך.