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插件,右击文件打开即可进行编辑,如图所示
2.使用GIMP进行编辑
GIMP是一款类似PS的软件,可以对图片进行处理,PGM本身就是图片,是可以使用这个软件进行编辑的。这是GIMP软件的下载链接:https://www.gimp.org/downloads/
来自:九七的ROS(转载请注明出处)
参考:https://blog.csdn.net/colourful_sky/article/details/70244485
ROS PGM格式文件详解 | 九七的ROS相关推荐
- XML格式文件详解及Java解析XML文件内容方法
XML格式文件详解 1.概述 XML,即可扩展标记语言,XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者. ...
- Y4M(YUV4MPEG2) 格式文件详解
Y4M 格式详解 · 扩展名: .y4m · 格式样例: http://samples.mplayerhq.hu/yuv4mpeg2/ YUV4MPEG2 是一种简单的文件格式,它被设计用来保存原始的 ...
- Sat格式文件详解翻译
SAT Save File Format 7.0(Sat文件存储格式7.0) 译者:Mrzhu007 日期:2018年04月13日 博客地址:金色世界 ACIS can store modeling ...
- 点云ply格式文件详解
PLy多边形文件格式,又被称作斯坦福三角形格式,它是一种为了储存计算机多边形图形集对象的格式.它即简单执行又是一个通用程度较高的格式.Ply文件有两种子格式ASCII和二进制形式,ASCII具有简单易 ...
- 【音频】Wav格式文件详解
一,Windows支持两种RIFF(Resource Interchange File Format,"资源交互文件格式")格式的音频文件 MIDI的RMID文件和波形音频文件格式 ...
- Linux中/proc目录下文件详解
Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...
- linux /proc目录文件详解
Linux中/proc目录下文件详解(一) /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化.命令proc ...
- STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解
一:STM32(Cortex-M3)启动过程(入口地址) ARM7和ARM9启动时从绝对地址0X00000000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的. Corte ...
- /etc/passwd 文件详解
/etc/passwd 文件详解 /etc/passwd 保存了系统中每一个用户的信息 /etc/passwd 中每个用户的信息占用了一行,也就是说这个文件有多少行,系统就有多少个用户. 要查看系 ...
- Linux中/proc目录下文件详解(二)
Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...
最新文章
- 科普丨深度神经网络与生命的意义
- MATLAB批量实现dicom转换为bmp格式
- linux 协议栈之socket,Linux协议栈之BSD和INET socket层(一)
- C#中串口组件的使用方法总结及上位机制作方法
- JavaScrit学习笔记(1)
- c# MEF框架(四 MEF高级进阶)
- Mybatis_day3_Mybatis的动态SQL
- springmvc07 Json处理
- GlusterFS vs. CephFS性能对比研究(一)
- 计算机信息技术教程(笔记)
- OpenGL超级宝典(第7版)笔记7 细分曲面初介绍 清单3.7-3.8
- 苹果cms如何添加广告代码
- usb调试与adb调试
- mysql中日期相减_一篇文章,搞定Excel表格中日期计算,内含公式详解!
- 微信小程序 转发功能的实现
- itext7 java转pdf添加图片
- 【运筹学】线性规划数学模型 ( 求解基矩阵示例 | 矩阵的可逆性 | 线性规划表示为 基矩阵 基向量 非基矩阵 非基向量 形式 )
- 长城汽车携旗下哈弗、欧拉、长城皮卡及WEY登陆北京车展
- c语言公开课教案,9、祝福优质课一等奖教案
- marked is not a function问题解决