PPM / PGM / PBM 图像文件格式
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 图像文件格式的更多相关文章
- PPM / PGM / PBM 图像文件格式[转]
下面将详细介绍ppm文件 ppm文件是一种图像文件,有其自己的文件格式.ppm文件由两个部分组成:第一个部分是三行ASCII码,这个部分决定了图像的存储格式以及图像的特征:第二个部分就是图像的数据部分 ...
- C# 如何将PDF转为多种图像文件格式(Png/Bmp/Emf/Tiff)
PDF是一种在我们日常工作学习中最常用到的文档格式之一,但常常也会因为文档的不易编辑的特点,在遇到需要编辑PDF文档内容或者转换文件格式的情况时让人苦恼.通常对于开发者而言,可选择通过使用组件的方式来 ...
- 【转】PNG图像文件格式
5.2 PNG图像文件格式 PNG是可携式网络图像(portable network graphics)的英文缩写.PNG是从网络上开始发展的,目的是替代GIF和JPG格式,PNG图像文件格式也是当 ...
- 【转】BMP图像文件格式
5.1 BMP图像文件格式 BMP图像文件格式是游戏中常用的图像资源文件格式,BMP图像文件起源早,程序员对BMP都比较熟悉,再加上BMP格式简单,读取和写入非常容易实现,所以无论Windows的还 ...
- ppm\pgm格式
PGM 是便携式灰度图像格式(portable graymap file format),在黑白超声图像系统中经常使用PGM格式的图像.文件的后缀名为".pgm". PGM格式图像 ...
- bmp图像文件格式说明
bmp图片文件包含4个部分数据,位图文件头,位图信息头,颜色表和位图数据(即RGB值). 在看位图格式之前先看一个问题,如果每个像素都用前面的24位色去表示,那么一个像素值需要3个字节数据,24位色也 ...
- OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图
图像载入.显示.保存函数: 1 图像载入函数:imread() Mat imread(const string& filename, int flags=1); const ...
- OpenCV2:第四章 导出图像
一.简介 一般我们用OpenCV来处理图像数据的时候,OpenCV已经把图像数据包装成一个图像数据类,我们只需要对类成员的像素值进行修改就行了. 但是在Windows开发的WinSDK/MFC中,对图 ...
- OpenCV入门学习笔记
OpenCV入门学习笔记 参照OpenCV中文论坛相关文档(http://www.opencv.org.cn/) 一.简介 OpenCV(Open Source Computer Vision),开源 ...
随机推荐
- PostgreSQL 慢查询SQL语句跟踪
示例:启用 SQL 跟踪PostgreSQL 日志支持的输出格式有 stderr(默认), csvlog , syslog 一般的错误跟踪,只需在配置文件 [postgresql.conf]简单设置几 ...
- 动态menu导航条以及treeview树
1.menu表数据 2.在后台生成html内容后,前台利用nav-h.css生成menu导航条,利用Jquery的treeview插件生成menu树 前台coding: <!DOCTYPE ht ...
- b/s利用webuploader实现超大文件分片上传、断点续传
本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...
- The Preliminary Contest for ICPC China Nanchang National Invitational
目录 Contest Info Solutions A. PERFECT NUMBER PROBLEM D. Match Stick Game G. tsy's number H. Coloring ...
- Cogs 731. [网络流24题] 最长递增子序列(最大流)
[网络流24题] 最长递增子序列 ★★★☆ 输入文件:alis.in 输出文件:alis.out 简单对比 时间限制:1 s 内存限制:128 MB «问题描述: 给定正整数序列x1,-, xn. ( ...
- linux系列(五):rm命令
rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf).所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西 ...
- Excel表格内容导出到页面
引入org.apache.poi.ss.usermodel public void addExcelBooks() throws Exception { HttpServletRequest re ...
- Radix Heap ---Dijkstra算法的优化 BY Gremount
Radix Heap 算法是在Dijkstra的Dial实现的基础上,通过减少对桶的使用,来优化算法的时间复杂度: Dial 时间复杂度是O(m+nC) -------C是最长的链路 Radi ...
- Linux fdisk命令创建逻辑分区
[root@localhost ~]# fdisk /dev/sdb …省略部分输出… Command (m for help): n #建立新分区 Command action l logical ...
- 解决GitHub上传大于100M文件失败
目录 问题 解决 参考 问题 push的时候遇到以下问题: remote: error: GH001: Large files detected. You may want to try Git La ...