휴대용 그레이맵 (.pgm)
Netpbm 표준휴대용 회색조 이미지 형식(Portable Graymap Format, PGM)은 Netpbm 제품군의 회색조 이미지 사양으로, 컴퓨터 비전, 로보틱스, 광학 검사 및 디지털 이미지 처리 알고리즘에 널리 사용됩니다.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 PGM 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 PGM 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
50 32 / 50 35ASCII 표현: 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 |
| 바이트 엔디안 | 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비트 / 16비트) | 1비트 단색 | RGB 트루컬러 (24비트 / 48비트) | 회색조, RGB, RGBA |
| Netpbm 계열 | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | 비 Netpbm W3C 표준 |
| 매직 바이트 | P2 (ASCII) / P5 (바이너리) | P1 (ASCII) / P4 (바이너리) | P3 (ASCII) / P6 (바이너리) | ‰PNG.... |
| 압축 | 비압축 | 비압축 | 비압축 | 무손실 Deflate |
일반적인 손상 모드 및 헥스 복구 가이드
이미지가 반전되거나 완전히 하얗게 날아간 상태로 표시됩니다.
근본 원인: 헤더의 잘못 일치된 'maxval' 파라미터 (예: maxval이 255 대신 1로 선언됨).
복구: maxval 헤더 라인을 수정하거나 File2File Netpbm 변환기로 트랜스코딩하세요.
보안 분석 및 파서 공격 벡터
PGM 디코더는 버퍼 오버런을 방지하기 위해 파싱된 픽셀 수가 선언된 차원과 일치하는지 신중하게 검증해야 합니다.
알려진 공격 벡터
- 너비 * 높이 * (maxval > 255 ? 2 : 1) 버퍼 할당 중 정수 오버플로우.
- 잘못된 형식의 ASCII 숫자 토큰을 읽을 때의 버퍼 오버리드.
- 조작된 헤더 차원에 의해 트리거되는 대규모 메모리 할당을 통한 서비스 거부.
방어적 모범 사례:
역사적 배경 및 주요 이력
주요 장점
- 제로 복잡성: 외부 라이브러리 없이 C, Python 또는 WebAssembly에서 파싱하고 작성하기 매우 간단합니다.
- 기본 16비트 회색조 지원으로 높이 맵, 깊이 맵 및 열화상 이미지에 이상적입니다.
- ASCII 모드(P2)를 사용하면 표준 텍스트 편집기에서 원시 픽셀 값을 직접 검사하고 조작할 수 있습니다.
기술적 제한 사항 및 단점
- 압축 없음: PNG와 같은 압축 형식에 비해 큰 파일 용량.
- 물리적 치수, 색상 공간 또는 지리적 위치에 대한 메타데이터가 부족합니다.
- 엄격한 단일 채널: 색상 데이터나 알파 투명도를 저장할 수 없습니다.
흥미로운 기술적 상식
- OpenCV, ROS (로봇 운영 체제) 및 머신 Vision 시스템은 SLAM 내비게이션 맵에 PGM을 자주 사용합니다.
- 게임 개발자들은 원시 고도 데이터가 압축되어 있지 않고 로드하기 쉽기 때문에 16비트 PGM 파일을 지형 높이 맵으로 자주 사용합니다.
- 헤더의 'maxval' 파라미터는 최대 밝기 값을 정의합니다(8비트의 경우 일반적으로 255, 16비트의 경우 65535).
자주 묻는 기술 질문
PGM 포맷은 주로 어디에 사용되나요?
PGM은 주로 컴퓨터 비전(OpenCV), 로보틱스(ROS 맵 파일), 과학적 이미징, 3D 지형 높이 맵 생성에 사용됩니다.
P2와 P5 PGM 파일의 차이점은 무엇인가요?
P2는 각 픽셀이 숫자로 기록된 일반 ASCII 텍스트인 반면, P5는 픽셀을 압축된 바이너리 바이트로 저장합니다.
PGM을 JPG 또는 PNG로 어떻게 변환할 수 있나요?
완벽한 프라이버시를 유지하며 브라우저에서 직접 PGM 파일을 PNG 또는 JPG로 변환하려면 File2File.app에 파일을 업로드하세요.