ภาพระดับสีเทาแบบพกพา (.pgm)
Netpbm มาตรฐานPortable Graymap Format (PGM) คือข้อกำหนดภาพระดับสีเทาของตระกูล Netpbm ซึ่งใช้กันอย่างแพร่หลายในคอมพิวเตอร์วิทัศน์ วิทยาหุ่นยนต์ การตรวจสอบเชิงแสง และอัลกอริทึมการประมวลผลภาพดิจิทัล
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ PGM โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ PGM โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
50 32 / 50 35การแสดงผลรูปแบบ ASCII: P2 / P5
มาตรฐาน: Netpbm Library Standard
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | รูปแบบ Netpbm แบบ ASCII (P2) หรือไบนารี (P5) ที่ระบุความกว้าง ความสูง ค่าสีเทาสูงสุด และสตรีมพิกเซล |
| การบีบอัด | ไบต์ไบนารีดิบแบบไม่บีบอัด หรือตัวเลขข้อความ ASCII ที่อ่านได้ |
| การจัดลำดับไบต์ | ลำดับไบต์แบบ Big-Endian (สำหรับตัวอย่างไบนารี 16 บิตในโหมด P5) |
| พื้นที่สี | ระดับเทาเชิงเส้นหรือระดับเทา sRGB |
| ช่องสัญญาณและโครงสร้าง | ภาพระดับเทา 1 ช่องสัญญาณ (ความละเอียด 8 บิตหรือ 16 บิต) |
| ขนาดสูงสุด | แทบไม่จำกัด (รองรับพื้นที่พิกัด 64 บิตได้ตามต้องการ) |
| ความโปร่งใส | ไม่มี |
| การสตรีมและแบบโปรเกรสซีฟ | เล่นสตรีมตามลำดับทีละแถว |
ตารางเปรียบเทียบทางเทคนิค: PGM กับคู่แข่ง
| คุณลักษณะทางเทคนิค | PGM (ปัจจุบัน) | PBM | PPM | PNG |
|---|---|---|---|---|
| โหมดสี | ระดับสีเทา (8-bit / 16-bit) | ขาวดำ 1-bit | สีจริง RGB (24-bit / 48-bit) | ระดับสีเทา, RGB, RGBA |
| ตระกูล Netpbm | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | มาตรฐาน W3C ที่ไม่ใช่ Netpbm |
| ลายเซ็นไฟล์ | P2 (แอสกี) / P5 (ไบนารี) | P1 (แอสกี) / P4 (ไบนารี) | P3 (แอสกี) / P6 (ไบนารี) | ‰PNG.... |
| การบีบอัด | ไม่ได้บีบอัด | ไม่ได้บีบอัด | ไม่ได้บีบอัด | การบีบอัดแบบไม่สูญเสียข้อมูลดีเฟลต |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
ภาพแสดงผลกลับหัวหรือเป็นสีขาวโพลนจนมองไม่เห็น
สาเหตุหลัก: พารามิเตอร์ 'maxval' ในส่วนหัวไม่ตรงกัน (เช่น maxval ถูกประกาศเป็น 1 แทนที่จะเป็น 255)
การกู้คืน: แก้ไขบรรทัดส่วนหัว maxval หรือแปลงรหัสด้วย File2File.app Netpbm Converter
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัวถอดรหัส PGM จะต้องตรวจสอบอย่างระมัดระวังว่าจำนวนพิกเซลที่แยกวิเคราะห์ตรงกับมิติข้อมูลที่ประกาศไว้ เพื่อป้องกันการล้นของบัฟเฟอร์
เวกเตอร์การโจมตีที่ทราบ
- ความล้นของจำนวนเต็มระหว่างการจัดสรรบัฟเฟอร์ความกว้างคูณความสูงคูณ (maxval > 255 ? 2 : 1)
- การอ่านบัฟเฟอร์เกินขอบเขตเมื่ออ่านโทเค็นตัวเลข ASCII ที่ผิดรูปแบบ
- การปฏิเสธการให้บริการผ่านการจัดสรรหน่วยความจำมหาศาลที่ถูกกระตุ้นโดยมิติข้อมูลส่วนหัวที่ถูกสร้างขึ้น
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: กำหนดขีดจำกัดขนาดสูงสุดและขีดจำกัดการจัดสรรหน่วยความจำก่อนอ่านสตรีมพิกเซล
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- โครงสร้าง PGM ที่กะทัดรัดช่วยให้สร้างโปรแกรมอ่านพื้นฐานได้ง่าย แต่ยังต้องจัดการความลึกของตัวอย่าง ส่วนหัว และอินพุตที่ผิดรูปแบบอย่างระมัดระวัง
- การรองรับระดับสีเทา 16-bit ในตัวทำให้เหมาะอย่างยิ่งสำหรับแผนที่ความสูง แผนที่ความลึก และการถ่ายภาพความร้อน
- โหมด ASCII (P2) ช่วยให้สามารถตรวจสอบและจัดการค่าพิกเซลดิบได้โดยตรงในโปรแกรมแก้ไขข้อความมาตรฐาน
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ไม่มีการบีบอัด: ขนาดไฟล์ใหญ่เมื่อเทียบกับรูปแบบที่บีบอัดอย่าง PNG
- ขาดเมทาเดตาสำหรับมิติทางกายภาพ พื้นที่สี หรือพิกัดภูมิศาสตร์
- ช่องสัญญาณเดี่ยวอย่างเคร่งครัด: ไม่สามารถจัดเก็บข้อมูลสีหรือความโปร่งใสแบบอัลฟาได้
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- OpenCV, ROS (Robot Operating System) และระบบแมชชีนวิทัศน์มักใช้ PGM สำหรับแผนที่นำทาง SLAM
- นักพัฒนาเกมมักใช้ไฟล์ PGM 16-bit เป็นแผนที่ความสูงของภูมิประเทศ เนื่องจากข้อมูลความสูงดิบไม่มีการบีบอัดและโหลดได้ง่าย
- พารามิเตอร์ 'maxval' ในส่วนหัวกำหนดค่าความสว่างสูงสุด (โดยทั่วไปคือ 255 สำหรับ 8-bit หรือ 65535 สำหรับ 16-bit)
คำถามทางเทคนิคที่พบบ่อย
รูปแบบ PGM ใช้สำหรับอะไร?
PGM ส่วนใหญ่ใช้ในงานคอมพิวเตอร์วิทัศน์ (OpenCV), วิทยาการหุ่นยนต์ (ไฟล์แผนที่ ROS), การถ่ายภาพทางวิทยาศาสตร์ และการสร้างแผนที่ความสูงของภูมิประเทศ 3 มิติ
ไฟล์ PGM แบบ P2 และ P5 แตกต่างกันอย่างไร?
P2 คือข้อความ ASCII ธรรมดาที่แต่ละพิกเซลเป็นตัวเลขที่เขียนขึ้น ในขณะที่ P5 จะเก็บพิกเซลเป็นไบต์ไบนารีขนาดกะทัดรัด
แปลง PGM เป็น JPG หรือ PNG ได้อย่างไร
PGM จัดเก็บค่าตัวอย่างระดับสีเทา แปลงเป็น PNG เพื่อได้ภาพไม่สูญเสียข้อมูลที่โปรแกรมดูหลายตัวรองรับ หรือเลือก JPEG เมื่อต้องการไฟล์ภาพถ่ายที่เล็กกว่า ตัวแปลงนี้ทำงานในเบราว์เซอร์