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相关推荐

  1. XML格式文件详解及Java解析XML文件内容方法

    XML格式文件详解 1.概述 XML,即可扩展标记语言,XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者. ...

  2. Y4M(YUV4MPEG2) 格式文件详解

    Y4M 格式详解 · 扩展名: .y4m · 格式样例: http://samples.mplayerhq.hu/yuv4mpeg2/ YUV4MPEG2 是一种简单的文件格式,它被设计用来保存原始的 ...

  3. Sat格式文件详解翻译

    SAT Save File Format 7.0(Sat文件存储格式7.0) 译者:Mrzhu007 日期:2018年04月13日 博客地址:金色世界 ACIS can store modeling ...

  4. 点云ply格式文件详解

    PLy多边形文件格式,又被称作斯坦福三角形格式,它是一种为了储存计算机多边形图形集对象的格式.它即简单执行又是一个通用程度较高的格式.Ply文件有两种子格式ASCII和二进制形式,ASCII具有简单易 ...

  5. 【音频】Wav格式文件详解

    一,Windows支持两种RIFF(Resource Interchange File Format,"资源交互文件格式")格式的音频文件 MIDI的RMID文件和波形音频文件格式 ...

  6. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  7. linux /proc目录文件详解

    Linux中/proc目录下文件详解(一) /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化.命令proc ...

  8. STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解

    一:STM32(Cortex-M3)启动过程(入口地址) ARM7和ARM9启动时从绝对地址0X00000000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的. Corte ...

  9. /etc/passwd 文件详解

    /etc/passwd  文件详解 /etc/passwd  保存了系统中每一个用户的信息 /etc/passwd 中每个用户的信息占用了一行,也就是说这个文件有多少行,系统就有多少个用户. 要查看系 ...

  10. Linux中/proc目录下文件详解(二)

    Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...

最新文章

  1. 科普丨深度神经网络与生命的意义
  2. MATLAB批量实现dicom转换为bmp格式
  3. linux 协议栈之socket,Linux协议栈之BSD和INET socket层(一)
  4. C#中串口组件的使用方法总结及上位机制作方法
  5. JavaScrit学习笔记(1)
  6. c# MEF框架(四 MEF高级进阶)
  7. Mybatis_day3_Mybatis的动态SQL
  8. springmvc07 Json处理
  9. GlusterFS vs. CephFS性能对比研究(一)
  10. 计算机信息技术教程(笔记)
  11. OpenGL超级宝典(第7版)笔记7 细分曲面初介绍 清单3.7-3.8
  12. 苹果cms如何添加广告代码
  13. usb调试与adb调试
  14. mysql中日期相减_一篇文章,搞定Excel表格中日期计算,内含公式详解!
  15. 微信小程序 转发功能的实现
  16. itext7 java转pdf添加图片
  17. 【运筹学】线性规划数学模型 ( 求解基矩阵示例 | 矩阵的可逆性 | 线性规划表示为 基矩阵 基向量 非基矩阵 非基向量 形式 )
  18. 长城汽车携旗下哈弗、欧拉、长城皮卡及WEY登陆北京车展
  19. c语言公开课教案,9、祝福优质课一等奖教案
  20. marked is not a function问题解决

热门文章

  1. Dx unsupported class file version 52.0
  2. 超详细|一篇搞定操作系统——设备管理
  3. Panda3D双面渲染和3D法线的概念学习
  4. NEO智能合约开发(二)再续不可能的任务
  5. IDEA Error occurred during initialization of VM
  6. Idea报错: A JNI error has occurred
  7. 牛牛的旅游纪念品 动态规划背包问题
  8. 苹果官方mfi认证名单_苹果入驻抖音,完成官方认证
  9. 收到offer不想去,如何优雅拒绝?
  10. 很好用的博客文章编辑器!!!!!