نقشه خاکستری قابل حمل (.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 |
|---|---|---|---|---|
| حالت رنگ | مقیاس خاکستری (۸ بیتی / ۱۶ بیتی) | تکرنگ ۱ بیتی | RGB Truecolor (۲۴ بیتی / ۴۸ بیتی) | مقیاس خاکستری، RGB، RGBA |
| فرمت همخانواده Netpbm | PGM (گریمپ قابل حمل) | PBM (بیتمپ قابل حمل) | PPM (پیکسمپ قابل حمل) | استاندارد W3C غیر Netpbm |
| بایتهای جادویی | P2 (متنی) / P5 (باینری) | P1 (متنی) / P4 (باینری) | P3 (متنی) / P6 (باینری) | ‰PNG.... |
| فشردهسازی | فشرده نشده | فشرده نشده | فشرده نشده | Deflate بدون افت کیفیت |
حالتهای رایج خرابی و راهنمای بازیابی هگز
تصویر به صورت معکوس یا کاملاً سفید و سوخته نمایش داده میشود.
علت ریشهای: پارامتر 'maxval' نامنطبق در هدر (به عنوان مثال maxval به جای ۲۵۵ به عنوان ۱ اعلام شده است).
بازیابی: خط هدر maxval را اصلاح کنید یا با مبدل File2File Netpbm تبدیل کنید.
تحلیل امنیتی و بردارهای حمله تجزیهکننده (Parser)
رمزگشاهای PGM باید به دقت اعتبارسنجی کنند که تعداد پیکسلهای تجزیه شده با ابعاد اعلام شده مطابقت دارد تا از سرریز بافر جلوگیری شود.
بردارهای حمله شناختهشده
- سرریز عدد صحیح در حین تخصیص بافر عرض * ارتفاع * (maxval > 255 ? 2 : 1).
- خواندن بیش از حد بافر هنگام خواندن توکنهای اعداد ASCII بدفرمت.
- حمله محرومیت از سرویس (DoS) از طریق تخصیص حافظه عظیم که توسط ابعاد هدر ساختگی ایجاد میشود.
بهترین روشهای پدافندی:
تاریخچه و نقاط عطف
مزایا و نقاط قوت کلیدی
- صفر پیچیدگی: تجزیه و نوشتن بسیار ساده در C، Python یا WebAssembly بدون کتابخانههای خارجی.
- پشتیبانی بومی از مقیاس خاکستری ۱۶ بیتی، آن را برای نقشههای ارتفاع، نقشههای عمق و تصویربرداری حرارتی ایدهآل میکند.
- حالت ASCII (P2) امکان بررسی و دستکاری مستقیم مقادیر خام پیکسل را در ویرایشگرهای متن استاندارد فراهم میکند.
محدودیتها و معایب فنی
- بدون فشردهسازی: ردپای فایلهای بزرگ در مقایسه با فرمتهای فشرده مانند PNG.
- فاقد متادیتا برای ابعاد فیزیکی، فضاهای رنگی یا موقعیت جغرافیایی.
- کاملاً تککاناله: نمیتواند دادههای رنگی یا شفافیت آلفا را ذخیره کند.
نکات فنی جالب
- OpenCV، ROS (سیستم عامل ربات) و سیستمهای بینایی ماشین اغلب از PGM برای نقشههای ناوبری SLAM استفاده میکنند.
- توسعهدهندگان بازی اغلب از فایلهای PGM ۱۶ بیتی به عنوان نقشههای ارتفاع زمین استفاده میکنند زیرا دادههای ارتفاع خام فشرده نشده و بارگذاری آنها آسان است.
- پارامتر 'maxval' در هدر، حداکثر مقدار روشنایی را تعریف میکند (معمولاً ۲۵۵ برای ۸ بیتی یا ۶۵۵۳۵ برای ۱۶ بیتی).
سوالات فنی متداول
فرمت PGM برای چه مواردی استفاده میشود؟
فرمت PGM عمدتاً در بینایی ماشین (OpenCV)، رباتیک (فایلهای نقشه ROS)، تصویربرداری علمی و تولید نقشههای ارتفاعی عوارض زمین سهبعدی استفاده میشود.
تفاوت بین فایلهای P2 و P5 PGM چیست؟
فرمت P2 متن ساده ASCII است که در آن هر پیکسل یک عدد مکتوب است، در حالی که P5 پیکسلها را به عنوان بایتهای باینری فشرده ذخیره میکند.
چگونه میتوانم PGM را به JPG یا PNG تبدیل کنم؟
فایل PGM خود را در File2File.app آپلود کنید تا آن را با حریم خصوصی کامل مستقیماً در مرورگر خود به PNG یا JPG تبدیل کنید.