ROS PGM格式文件详解 | 九七的ROS
ROS PGM格式文件详解
一、定义介绍
PGM,portable graymap file format,译为便携式灰度图像文件格式。由两部分组成,文件头部分和数据部分。此外,PGM还分为P2和P5两种不同的格式。
文件头包括如下信息:
1.PGM文件的格式类型;
2.图像的宽度;
3.图像的高度;
4.图像灰度值的可能的最大值;
文件头的这四部分信息都是以ASCII码形式存储的,所以可以直接将PGM格式的文件在记事本中打开看到文件头的信息。如图所示:
数据部分 数据部分记录图像每个像素的灰度值,按照图像从上到下,从左到右的顺序依次存储每个像素的灰度值。对于像素灰度值的表示P2格式和P5格式有所不同,请看下面。
P5格式
P5格式的文件,每个像素用二进制表示,且没有行列的标识和区分,从开始第一个像素到最后一个像素都直接依次连续存储,中间没有空格,行与行直之间也没有空格。假设有一幅P5格式图像,灰度值可能的最大值为255,因此该图像每个像素使用一个字节表示即可。比如它的第一行第一列像素值为100,第一行第二列像素值为200,依次后面排即可。如下面所示的这样。
100200200100111222333001...
如果一副图灰度值可能的最大值是65535,因为表示到65535需要两个字节,因此,不管如何,哪怕你的灰度值是1,每一个像素的像素值都规定为两个字节表示。此外,因为是以二进制表示,所以数据部分在记事本中打开后看到的将会是乱码。
P2格式
P2格式的文件,每个像素使用字符串来表示。比如一副P2格式图像,灰度值可能的最大值为255,它的第一行第一列像素值为100,那么该图像图像每个像素使用3个ASCII字符表示。第一行第一列数据为ASII表示的”100”,即100的每一个数据位由一个字节表示,百位1用一个字节,十位0用一个字节,各位0用一个字节。如下面所示。
100 00101101 00101100 00101100 //ASCII中00101100表示0,00101101表示1
P2格式和P5格式不同,每个像素数据之间需要用一个空格符分开存储,在图像的每一行数据结束时需要换行。还有一点需要注意,P2格式文件数据部分当数据超过70个字节的时候,会自动换行。也就是说图像的每一行数据末尾,或者存储时超过70个字节时,需要进行换行。如下面所示。
100 200 100 200 100 100 200 100 200 100 100 200
二、使用方法
1.使用hexdump编辑PGM文件
在VSCode中下载hexdump插件,右击文件打开即可进行编辑,如图所示