휴대용 그레이맵 (.pgm)
Netpbm 표준휴대용 그레이맵 형식(PGM)은 Netpbm 계열의 그레이스케일 이미지 형식으로, 컴퓨터 비전, 로보틱스, 광학 검사 및 디지털 이미지 처리 알고리즘에 널리 쓰입니다.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 PGM 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 PGM 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
50 32 / 50 35ASCII 표현: P2 / P5
표준화: Netpbm 라이브러리 표준
기술 사양
| 컨테이너 아키텍처 | 너비, 높이, 최대 회색값 및 픽셀 스트림을 지정하는 ASCII(P2) 또는 바이너리(P5) Netpbm 형식 |
| 압축 | 비압축 원시 바이너리 바이트 또는 사람이 읽을 수 있는 ASCII 숫자 |
| 바이트 엔디안 | 빅 엔디안(P5 모드의 16비트 바이너리 샘플) |
| 색 공간 | 선형 그레이스케일 또는 sRGB 그레이스케일 |
| 채널 및 구조 | 1채널 그레이스케일(8비트 또는 16비트 정밀도) |
| 최대 크기 | 사실상 무제한(임의의 64비트 좌표 공간 지원) |
| 투명도 | 없음 |
| 스트리밍 및 프로그레시브 | 행 단위로 순차 스트리밍 재생 |
기술 비교 매트릭스: 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.app Netpbm Converter로 변환하십시오.
보안 분석 및 파서 공격 벡터
버퍼 오버런을 방지하려면 PGM 디코더가 파싱한 픽셀 수가 선언된 크기와 일치하는지 검증해야 합니다.
알려진 공격 벡터
- 너비 * 높이 * (maxval > 255 ? 2 : 1) 버퍼 할당 중 정수 오버플로우.
- 잘못된 형식의 ASCII 숫자 토큰을 읽을 때의 버퍼 오버리드.
- 조작된 헤더의 크기 값으로 인해 발생하는 대규모 메모리 할당을 통한 서비스 거부.
방어적 모범 사례: 픽셀 스트림을 읽기 전에 최대 허용 크기 및 메모리 할당 제한을 설정하십시오.
역사적 배경 및 주요 이력
2000과학 영상 처리를 위해 바이너리 P5 모드에서 16비트 심도(최대값 65535)를 표준화했습니다.
1993PGM을 표준 중간 그레이스케일 형식으로 Netpbm 툴킷에 포함했습니다.
1989제프 포스칸저(Jef Poskanzer)가 256단계 그레이스케일을 지원해 PBM을 보완하는 PGM을 만들었습니다.
주요 장점
- PGM의 간결한 구조는 기본 판독기를 구현하는 데 도움이 되지만 샘플 깊이, 헤더 및 잘못된 입력을 다룰 때는 주의가 필요합니다.
- 16비트 그레이스케일을 기본 지원해 높이 맵, 깊이 맵 및 열화상 이미지에 적합합니다.
- ASCII 모드(P2)에서는 일반 텍스트 편집기에서 원시 픽셀 값을 직접 확인하고 수정할 수 있습니다.
기술적 제한 사항 및 단점
- 압축을 지원하지 않아 PNG 같은 압축 형식보다 파일이 큽니다.
- 물리적 크기, 색 공간 또는 지리적 위치에 관한 메타데이터가 없습니다.
- 단일 채널만 지원하므로 색상 데이터나 알파 투명도를 저장할 수 없습니다.
흥미로운 기술적 상식
- OpenCV, ROS (로봇 운영 체제) 및 머신 비전 시스템은 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에 파일을 업로드하십시오.