ppm\pgm格式

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)

  1. 格式类型(P2/P5)---2字节
  2. \n---1字节
  3. 图像宽度---xW字节,如:1280每个数字占一个字节,即4个字节
  4. 空格(0x20)---1字节
  5. 图像高度---xH字节, 如: 720每个数字占一个字节,即3个字节
  6. \n---1个字节
  7. 图像灰度值的最大值---xV字节,如: 255占3个字节
  8. \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码,这个部分决定了图像的存储格式以及图像的特征;第二个部分就是图像的数据部分,图像就是由这个部分组成的。

文件头部:

  1. 格式类型(P3/P6)---2字节
  2. \n---1字节
  3. 图像宽度---xW字节,如:1280每个数字占一个字节,即4个字节
  4. 空格(0x20)---1字节
  5. 图像高度---xH字节, 如: 720每个数字占一个字节,即3个字节
  6. \n---1个字节
  7. 图像灰度值的最大值---xV字节,如: 255占3个字节,表示每一个像素的一个分量用几个比特表示

时间: 2024-11-09 04:48:42

ppm\pgm格式的相关文章

用Matlab将ORL人脸数据库的pgm格式批量转换为jpg格式

%{ 将ORL人脸数据库的pgm格式批量转换为jpg格式 %} clc;    % clear all; for i=1:40 for j=1:10 image=imread(strcat('E:\pic\att_faces\s',... int2str(i),'\',int2str(j),'.pgm')); imwrite(image,strcat('E:\pic\att_faces\s',... int2str(i),'\',int2str(j),'.jpg')); end disp(str

【图像格式】 PPM/PGM/PBM格式编码详解

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

初识PGM图片

1.PGM 是便携式灰度图像格式(portable graymap file format),在黑白超声图像系统中经常使用PGM格式的图像. 文件的后缀名为".pgm",PGM格式图像格式分为两类:P2和P5类型. 不管是P2还是P5类型的PGM文件,都由两部分组成,文件头部分和数据部分. P5格式 P5格式的文件,每个像素用可以用二进制表示. 比如有一幅P5格式图像,灰度值可能的最大值为255,它的第一行第一列像素值为100,那么该图像每个像素使用一个字节表示,第一行第一列为数值为1

计算机视觉:关于视觉算法源码中常出现的imageLib库的使用指南

1.ReadImage(CImage &im, char* path)/ WriteImage(CImage &im, char* path) (1)将im强制转换为CByteImage后赋值或存储 (2)仅支持.tga, .pgm, .ppm, .pmf格式 (3)最好传入的im为CByteImage类型 2.ReadFilePGM(CByteImage &im, char* path)/WriteFilePGM(CByteImage &im, char* path) (

输出图像到文件 imwrite()[OpenCV 笔记7]

bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>()); filename 待写入的文件名.保存图像的格式由扩展名决定. img 一般为一个Mat类型的图像 params 特定格式保存的参数编码: JPEG:params表示0到100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值为95: PNG:params表示压

OpenCV入门:(二:加载,显示,修改以及保存图片)

目标: 1.从图片文件打开图片(imread) 2.显示图片(namedWindow和imshow) 3.转换当前图片为灰色图片(cvtColor) 4.保存图片(imwrite) 代码: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <iostream> using namespac

【转】CxImage图像库的使用

CxImage下载地址:http://www.codeproject.com/KB/graphics/cximage/cximage600_full.zip 作者:Davide Pizzolato CxImage简介 CxImage 是一个可以简便而快速地打开.保存.显示和转换图像文件的 C++类库,它可以用于MFC,可以打开,保存,显示,转换各种常见格式的图像文件,比如BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG,

Python + OpenCV2 系列:2 - 图片操作

这些相当于我的学习笔记,所以并没有很强的结构性和很全的介绍,请见谅. 1 读取.写入图像 下面是一个简短的载入图像.打印尺寸.转换格式及保存图像为.png的例子: # -*- coding: utf-8 -*- import cv2 import numpy as np # 读入图像 im = cv2.imread('../data/empire.jpg') # 打印图像尺寸 h, w = im.shape[:2] print h, w # 保存原jpg格式的图像为png格式图像 cv2.imw

opnecv笔记(1)图像载入、显示、保存、变灰度图

图像载入.显示.保存函数: 1         图像载入函数:imread()   Mat imread(const string& filename, int flags=1); const string&类型的filename为载入图像的路径(绝对路径和相对路径) flags是int类型的变量,flags>0,返回一个3通道的彩色图像: flags = 0,返回灰度图像: flags < 0,返回包含Alpha通道的加载图像. flags默认值为1,可以省略对其赋值. 例如