ภาพระดับสีเทาแบบพกพา (.pgm)

Netpbm มาตรฐาน

Portable Graymap Format (PGM) คือข้อกำหนดภาพระดับสีเทาของตระกูล Netpbm ซึ่งใช้กันอย่างแพร่หลายในคอมพิวเตอร์วิทัศน์ วิทยาหุ่นยนต์ การตรวจสอบเชิงแสง และอัลกอริทึมการประมวลผลภาพดิจิทัล

ตรวจสอบไฟล์และข้อมูลเมตา

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ PGM โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวระดับไบต์

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ 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 (ปัจจุบัน)PBMPPMPNG
โหมดสีระดับสีเทา (8-bit / 16-bit)ขาวดำ 1-bitสีจริง RGB (24-bit / 48-bit)ระดับสีเทา, RGB, RGBA
ตระกูล NetpbmPGM (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 ที่ผิดรูปแบบ
  • การปฏิเสธการให้บริการผ่านการจัดสรรหน่วยความจำมหาศาลที่ถูกกระตุ้นโดยมิติข้อมูลส่วนหัวที่ถูกสร้างขึ้น

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: กำหนดขีดจำกัดขนาดสูงสุดและขีดจำกัดการจัดสรรหน่วยความจำก่อนอ่านสตรีมพิกเซล

ประวัติความเป็นมาและเหตุการณ์สำคัญ

2000มาตรฐานความลึก 16-bit (ค่าสูงสุดสูงถึง 65535) ในโหมดไบนารี P5 สำหรับการถ่ายภาพทางวิทยาศาสตร์
1993รวมเข้ากับชุดเครื่องมือ Netpbm เป็นรูปแบบระดับสีเทากลางมาตรฐาน
1989Jef Poskanzer สร้าง PGM ขึ้นมาเพื่อเสริม PBM ด้วยการรองรับระดับสีเทาเต็มรูปแบบ 256 ระดับ

ข้อได้เปรียบและจุดเด่นสำคัญ

  • โครงสร้าง 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 เมื่อต้องการไฟล์ภาพถ่ายที่เล็กกว่า ตัวแปลงนี้ทำงานในเบราว์เซอร์