PPM / PGM / PBM 图像文件格式


声明:引用请注明出处http://blog.csdn.net/lg1259156776/


说明:在进行图像压缩后传输,然后解压缩显示的过程中,通常会用到PPM / PGM / PBM 图像文件格式来对解压后的图像像素值进行存储,因为没有进行压缩,所以不丢失信息,但同时也文件比较大。本文就是对这种图像文件格式进行介绍。


总论

PPM(Portable PixMap)是portable像素图片,是由netpbm项目定义的一系列的portable图片格式中的一个。这些图片格式都相对比较容易处理,跟平台无关,所以称之为portable,就是比较直接的图片格式。比如PPM,其实就是把每一个点的RGB分别保存起来。所以,PPM格式的文件是没有压缩的,相对比较大,但是由于图片格式简单,一般作为图片处理的中间文件(不会丢失文件信息),或者作为简单的图片格式保存。

格式分析

netpbm的几种图片格式是通过其表示的颜色类型来区别的,PBM是单色图,只有黑色和白色,PGM是灰度图片PPM是代表完整的RGB颜色的图片,有时也统称为PNM格式。

(1) 文件头

文件头由三个部分组成:这几个部分之间用回车或换行分隔(但是PPM标准中要求是空格)。

第一部分是文件magic number

每一个netpbm图片由两个字节的magic number (ASCII)组成,来标识文件的类型(PBM/PGM/PPM)以及文件的编码(ASCII或binary)。

  • P1  单色图  ASSII  PBM
  • P2  灰度图  ASSII  PGM
  • P3  像素图  ASSII  PPM
  • P4  单色图  二进制  PBM
  • P5  灰度图  二进制  PGM
  • P6  像素图  二进制  PPM

第二部分是图像宽度和高度(空格隔开),用ASCII表示。

第三部分是描述像素的最大颜色组成,允许描述超过一个字节(0-255)的颜色值。

另外,在上面的三个部分里面,都可以使用”#”插入注释,注释是#到行尾(回车或换行)部分。

(2) 图像数据部分

对于ASCII格式,就是按照RGB的顺序排列,以ASCII存储,并且,RGB中间用空格隔开,图片每一行用回车隔开。

对于binary格式,就是每一个像素点的RGB值分别顺序存储并且按二进制写入文件,没有任何分隔。

例子

PPM

例子1:

P6 1024 778 255

例子2:

P6

1024 778

255

例子3:

P6#PPM文件格式

1024 778#宽度和高度

255

通常的习惯,图象从上到下,从左到右被存储。色彩成分按照通常的红-绿-蓝顺序存储。

PGM

该格式文件存储灰度图形,也就是这里每个像素使用一个值来表示而不是3个(R,G,B)。同PPM唯一不同的是头部用P2和P5,分别表示用ASCII和字节码来表示数据。

例如:

P2

24 7

15

PBM

使用ASCII的0或1方式来表示数据,0表示白色,1表示黑色。与PPM、PGM不同的头部是少了第三行,因为第三行的最大色彩值在这个模式下已经没有意义了。

如下:

P1# PBM example

24 7


2015-10-15 艺少

PPM / PGM / PBM 图像文件格式的更多相关文章

  1. PPM / PGM / PBM 图像文件格式[转]

    下面将详细介绍ppm文件 ppm文件是一种图像文件,有其自己的文件格式.ppm文件由两个部分组成:第一个部分是三行ASCII码,这个部分决定了图像的存储格式以及图像的特征:第二个部分就是图像的数据部分 ...

  2. C# 如何将PDF转为多种图像文件格式(Png/Bmp/Emf/Tiff)

    PDF是一种在我们日常工作学习中最常用到的文档格式之一,但常常也会因为文档的不易编辑的特点,在遇到需要编辑PDF文档内容或者转换文件格式的情况时让人苦恼.通常对于开发者而言,可选择通过使用组件的方式来 ...

  3. 【转】PNG图像文件格式

    5.2  PNG图像文件格式 PNG是可携式网络图像(portable network graphics)的英文缩写.PNG是从网络上开始发展的,目的是替代GIF和JPG格式,PNG图像文件格式也是当 ...

  4. 【转】BMP图像文件格式

    5.1  BMP图像文件格式 BMP图像文件格式是游戏中常用的图像资源文件格式,BMP图像文件起源早,程序员对BMP都比较熟悉,再加上BMP格式简单,读取和写入非常容易实现,所以无论Windows的还 ...

  5. ppm\pgm格式

    PGM 是便携式灰度图像格式(portable graymap file format),在黑白超声图像系统中经常使用PGM格式的图像.文件的后缀名为".pgm". PGM格式图像 ...

  6. bmp图像文件格式说明

    bmp图片文件包含4个部分数据,位图文件头,位图信息头,颜色表和位图数据(即RGB值). 在看位图格式之前先看一个问题,如果每个像素都用前面的24位色去表示,那么一个像素值需要3个字节数据,24位色也 ...

  7. OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图

    图像载入.显示.保存函数: 1         图像载入函数:imread()   Mat imread(const string& filename, int flags=1); const ...

  8. OpenCV2:第四章 导出图像

    一.简介 一般我们用OpenCV来处理图像数据的时候,OpenCV已经把图像数据包装成一个图像数据类,我们只需要对类成员的像素值进行修改就行了. 但是在Windows开发的WinSDK/MFC中,对图 ...

  9. OpenCV入门学习笔记

    OpenCV入门学习笔记 参照OpenCV中文论坛相关文档(http://www.opencv.org.cn/) 一.简介 OpenCV(Open Source Computer Vision),开源 ...

随机推荐

  1. 使用jQuery快速高效制作网页交互特效--初始jQuery

    一.  jQuery基本概念介绍           1.1 什么是jQuery一个javascript库,把常用方法写到一个js文件中,需要的时候直接调用即可学习jQuery就是学习一些方法    ...

  2. Oracle 通过sqlnet.ora文件控制对Oracle数据库的访问

    一.通过sqlnet.ora文件控制对Oracle数据库的访问 出于数据安全考虑,对Oracle数据库的IP做一些限制,只有固定的IP才能访问.修改$JAVA_HOME/NETWORK/ADMIN/s ...

  3. bat批处理运用

    一.简单批处理内部命令简介 1.Echo 命令 –显示 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. 语法: echo [{on│off}] [mess ...

  4. Bzoj 3123: [Sdoi2013]森林(主席树+启发式合并)

    3123: [Sdoi2013]森林 Time Limit: 20 Sec Memory Limit: 512 MB Description Input 第一行包含一个正整数testcase,表示当前 ...

  5. C++类中静态数据成员MAP如何初始化

    conv_xxx.hpp class convolution { ... ... typedef std::map<int, std::string> ConvDtMap; static ...

  6. 基于评分的商品top-N推荐系统

    import io # needed because of weird encoding of u.item file import os from surprise import KNNBaseli ...

  7. DBUtils的最基本的使用

    背景 学习了如何连接数据库之后,发现里面进行查询的过程有点麻烦,因此使用DBUtils包来简化操作 配置环境 win10 jdk11 idea mysql8.0.13 jar包 连接数据库的包 c3p ...

  8. python生成二维码(简易)

    首先要的配置: pillow image qrcode zxing 然后直接上代码: import PIL import qrcode # 实例化二维码生成类 qr = qrcode.QRCode( ...

  9. linux 安装nginx(转)

    转自https://www.cnblogs.com/xiaochongc/p/11527492.html 步骤: 1. 安装所需环境 a)安装gcc:安装 nginx 需要先将官网下载的源码进行编译, ...

  10. 说出Servlet的生命周期,并说出Servlet和CGI的区别。

    说出Servlet的生命周期,并说出Servlet和CGI的区别. 山治ZHrx5 | 浏览 1377 次 推荐于2016-09-16 22:39:19 最佳答案 Servlet的生命周期分为5个阶段 ...