PGM 是便携式灰度图像格式(portable graymap file format),在黑白超声图像系统中经常使用PGM格式的图像.文件的后缀名为".pgm".
PGM格式图像格式分为两类:P2和P5类型.不管是P2还是P5类型的PGM文件,都由两部分组成,文件头部分和数据部分.
文件头部:(2+1+sizeof(width)+1+sizeof(height)+1+3+1=9+sizeof(width)+sizeof(height)=headlenght)
- 格式类型(P2/P5)---2字节
- \n---1字节
- 图像宽度---xW字节,如:1280每个数字占一个字节,即4个字节
- 空格(0x20)---1字节
- 图像高度---xH字节, 如: 720每个数字占一个字节,即3个字节
- \n---1个字节
- 图像灰度值的最大值---xV字节,如: 255占3个字节
- \n---1个字节
文件头部的1、3、5、7这四部分信息都是以ASCII码形式存储的,所以可以直接将P2或P5格式的PGM文件在记事本中打开看到文件头的信息.
在P2或P5类型的PGM文件头的4个信息(1、3、5、7)之间用分隔符分开,PGM的合法分隔符包括:空格,TAB,回车符,换行符.
PGM文件头的信息应该由合法分隔符号分开,如上图所展示.文件头的第7个信息,图像灰度值可能的最大值标明了文件数据部分可能出现的像素灰度值的最大值.上图指定的255,所以在数据区的像素数据取值范围在0到255.
数据部分:
数据部分记录图像每个像素的灰度值,按照图像从上到下,从左到右的顺序依次存储每个像素的灰度值.对于像素灰度值的表示P2格式和P5格式有所不同.
P5格式:
P5格式的文件,每个像素用可以用二进制表示.比如有一幅P5格式图像,灰度值可能的最大值为255,它的第一行第一列像素值为100,那么该图像每个像素使用一个字节表示;第一行第一列为数值为100的二进制一个字节表示.如果这副图灰度值可能的最大值是65535,那么它的第一行第一列为数值为100的二进制两个字节表示(因为表示到65535需要两个字节).每个像素数据之间没有间隔的连续存储,图像一行信息结束后从下一行第一列继续,两行图像数据之间也没有间隔的连续存储,直到将图像的所有信息表示完.因为是以二进制表示,所以数据部分在记事本中打开后看到的将会是乱码.
P2格式:
P2格式的文件,每个像素使用字符串来表示,比如一幅P2格式图像,灰度值可能的最大值为255,它的第一行第一列像素值为100,那么该图像每个像素使用3个ASCII字符表示,第一行第一列数据为ASII表示的"100".不同于P5格式,每个像素数据之间需要用一个空格符分开存储,在图像的每一行数据结束时需要换行.还有一点需要注意,P2格式文件数据部分当数据超过70个字节的时候,会自动换行.也就是说图像的每一行数据末尾,或者存储时超过70个字节时,需要进行换行.
ppm文件是一种图像文件,有其自己的文件格式。ppm文件由两个部分组成:第一个部分是三行ASCII码,这个部分决定了图像的存储格式以及图像的特征;第二个部分就是图像的数据部分,图像就是由这个部分组成的。
文件头部:
- 格式类型(P3/P6)---2字节
- \n---1字节
- 图像宽度---xW字节,如:1280每个数字占一个字节,即4个字节
- 空格(0x20)---1字节
- 图像高度---xH字节, 如: 720每个数字占一个字节,即3个字节
- \n---1个字节
- 图像灰度值的最大值---xV字节,如: 255占3个字节,表示每一个像素的一个分量用几个比特表示