PGM 文件里有什么
PGM 是灰度图格式,不自带米制坐标,也没有“墙”或“可通行”的定义。文本版本以 P2 开头,二进制版本以 P5 开头。宽、高与最大灰度值写在头部;以 # 开头的注释可以出现在头部允许的位置。
P2 # 3 columns, 2 rows 3 2 255 0 205 254 254 205 0
这个示例有 3×2=6 个像素,按从上到下、从左到右排列。P2 的数字是文本;P5 的像素是二进制样本。maxval=255 时每像素 1 字节,所以同尺寸 P5 的数据段应是 6 字节,不能用“254”三个字符代替一个灰度字节。
为什么看起来正常却打不开
| 现象 | 核对项 | 处理方向 |
|---|---|---|
| 只显示一部分或报长度错误 | 头部宽高与数据段数量 | 重新导出,避免手工改变头部 |
| 二进制文件被文本软件损坏 | 换行、编码或字节被替换 | 回到原文件,用图像工具处理 |
| maxval 大于 255 | 每样本需要 2 字节,大端存储 | 先转为 8 位单通道再在本站测试 |
| 改名为 .pgm 仍失败 | 文件实际格式不是 PGM | 执行真正的格式转换 |
地图颜色与阈值
在常见 8 位、negate=0 的地图配置中,0 是黑色,254 是近白色。灰度 205 经常用来保存未知区域,但不是 PGM 的保留值,也不是所有配置都固定把它解释为未知。
trinary 地图按占用量与阈值生成 free=0、occupied=100、unknown=-1。中间灰度落在阈值之间时为未知;它不会自动变成代价地图里的某个连续概率。更改阈值或 negate 会改变相同像素的语义。
安全查看文件头
head -c 80 map.pgm | xxd # 查格式、尺寸和位深(需要 ImageMagick) identify map.pgm
查看二进制地图时不要把整个文件作为文本输出。P5 文件头后的第一个数据字节也可能恰好是空白字节,解析器不能无限跳过它。本站示例提供标准 8 位 P5;实际文件是否可处理应以导入结果为准。
将图片转为 PGM 前保留原图,避免抗锯齿、色彩调整或有损压缩引入新的灰度。导航地图的像素值是数据,外观“更平滑”并不代表语义更正确。