[多媒体] PGM格式图像详解

PPM / PGM / PBM 图像格式 【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) PBM / PGM / PPM 图像格式 0. 原图 1. PBM(Portable Bitmap Format)   只有白与黑, 没有灰. 2. PGM(Portable Greymap Format)   灰度图 3. PPM(Portable Pixmap Format)   RGB图像 4. 浅谈三种图像格式... 阅读详情

转自:PGM格式图像详解_aoanng的博客-优快云博客_pgm文件


1.PGM图像详解

PGM 是便携式灰度图像格式(portable graymap file format),在黑白超声图像系统中经常使用PGM格式的图像.文件的后缀名为".pgm",PGM格式图像格式分为两类:P2和P5类型.不管是P2还是P5类型的PGM文件,都由两部分组成,文件头部分和数据部分.

文件头部分

文件头包括的信息依次是:

1.PGM文件的格式类型(是P2还是P5);

2.图像的宽度;

3.图像的高度;

4.图像灰度值可能的最大值;

文件头的这四部分信息都是以ASCII码形式存储的,所以可以直接在将P2或P5格式的PGM文件在记事本中打开看到文件头的信息.

P5格式的PGM文件在记事本中打开(如下图)

P2格式的PGM文件在记事本中打开(如下图)

在P2或P5类型的PGM文件头的4个信息之间用分割符分开,PGM的合法分隔符包括:空格,TAB,回车符,换行符.PGM文件头的信息应该由合法分割符号分开,如上面两幅图所展.文件头的第4个信息,图像灰度值可能的最大值标明了文件数据部分可能出现的像素灰度值的最大值.上面两幅图都是指定的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个字节时,需要进行换行.

如下图所示,这是一个P2格式的PGM文件在Visual Studio中查看的效果.我们可以看到,每超过70个自己时候需要换行,在图像数据一行结束时候也需要换行(在0 1 1 1结束后,图像第一行数据结束换行).

每个像素都是用空格隔开的,某些像素的字符串如果超过1个ASCII字符,则这些字符会连在一起写,不能用空格隔开,那样就代表多个像素了。


其他参考:

刻意练习FFmpeg系列:最简单的图像格式PGM灰度图 - 知乎

可以使用 ffplay 显示 pgm 文件:

把下面的内容保存为  demo.pgm:

P2 # 表明文件类型的Magic Number
# 可以加注释,这张图就是现实 "KAMU"四个字母
25 7 # 宽度和高度
15 # 色彩范围
# 下面是图像的像素,每个数字是一个像素
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  9  0  0  9  0  0  0  7  7  0  0  0 11 11 11 11 11  0  0 15  0  0 15  0
0  9  0  9  0  0  0  7  0  0  7  0  0 11  0 11  0 11  0  0 15  0  0 15  0
0  9  9  0  0  0  0  7  7  7  7  0  0 11  0 11  0 11  0  0 15  0  0 15  0
0  9  0  9  0  0  0  7  0  0  7  0  0 11  0 11  0 11  0  0 15  0  0 15  0
0  9  0  0  9  0  0  7  0  0  7  0  0 11  0 11  0 11  0  0 15 15 15 15  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

使用命令:ffplay demo.pgm

 

ROS | PGM格式地图文件详解 ROS PGM格式文件详解   PGM,portable graymap file format,译为便携式灰度图像文件格式。由两部分组成,文件头部分和数据部分。此外,PGM还分为P2和P5两种不同的格式。 文件头包括如下信息: 1.PGM文件的格式类型; 2.图像的宽度; 3.图像的高度; 4.图像灰度值的可能的最大值;   文件头的这四部分信息都是以ASCII码形式存储的,所以可以直接将PGM格式的文件在记事本中打开看到文件头的信息。 数据部分   数据部分记录图像每个像素的灰度值,按照图像从上到下,从 阅读详情

相关推荐

12、Ubuntu系统下的图像、相机与光盘刻录使用指南

本文介绍了在Ubuntu系统下进行图像处理、屏幕截图、数码相机使用以及CD/DVD光盘刻录的完整指南。涵盖了pgm、pnm等图像格式特点与转换工具,GNOME环境下的截图快捷方式,相机连接自动导入照片设置及F-Spot照片管理应用的使用方法,并详细说明了通过图形界面(如Nautilus和GnomeBaker)和命令行工具(如mkisofs、cdrecord、growisofs)进行光盘刻录的操作流程与注意事项,帮助用户高效利用Ubuntu系统完成多媒体管理与数据存档任务。

motor的博客 35

pgm格式文件

PGM是Portable Gray Map的缩写,它是灰度图像格式中一种最简单的格式标准。PGM由两部分数据组成,分别是文件头部分和数据部分。 文件头部分 文件头包括的信息依次是: 1.PGM文件的格式类型(是P2还是P5); 2.图像的宽度; 3.图像的高度; 4.图像灰度值可能的最大值; 文件头的这四部分信息都是以ASCII码形式存储的,所以可以直接在将P2或P5格式的PGM文件在记事本中打开看到文件头的信息。 PGM文件头的4个信息之间用分割符分开,PGM的合法分隔符包括:空格,TAB

white_nights的博客 1万+

图像隐写分析实战:从数据构造到SRNet模型训练与避坑指南

图像隐写分析是多媒体取证与数据防泄漏中的关键技术,其核心在于检测图像最低有效位等微弱信号中是否隐藏额外信息。由于隐写信号极弱且对抗性强,传统CNN直接套用往往效果不佳,需结合高通滤波与残差学习。本文围绕数据构造、SRNet模型搭建、训练调参及常见问题排查展开,涵盖LSB与WOW嵌入、KV核初始化、类别不均衡处理等工程实践,帮助安全侧图像取证工程师快速构建高准确率检测模型。

weixin_29058331的博客 138

PGM格式图像详解

本文转自这里 NET framework框架类库中的Image类和Bitmap类提供了常用图像格式的解析读取和存储,这些常用格式包括BMP,JEPG,GIF,PNG,EXIF,TIFF。但是可惜的是不支持PGM格式,但是只要知道了PGM格式的文件的组织结构,相信要解析他也不是难事了。 PGM图像详解 PGM 是便携式灰度图像格式(portable graymap file format),在黑白超声图像系统中经常使用PGM格式的图像。文件的后缀名为”.pgm”,PGM格式图像格式分为两类:P2和P5

EmbeddedCoder 的优快云博客 4160

ROS map 包含pgm 和yaml文件

ROS map 包含pgm 和yaml文件

神州数码防火墙(DCN)NAT SSL-VPN配置

SSL-VPN是基于应用层的VPN,采用SSL协议来实现远程接入的一种新型VPN技术,比L2TP更加灵活的VPN方案。是天然的安全远程接入方案。用户可以通过浏览器的HTTPSs登录VPN的网址。SSL-VPN的认证方式包括LDAP,radius,CA,USB Key等方式。 SSL VPN的主要应用场景是保证远程用户能够在企业外部安全\高效的访问企业内部的网络资源

qq_50966485的博客 4554

【Python】读取显示pgm图像文件

这学期要学多媒体信息隐藏对抗,发现其中的图像数据集文件都是pgm文件形式的。虽然是图像文件,但是却不能直接通过图像查看器来打开,上网一搜:”如何打开pgm文件?“多半是使用第三方软件photoshop之类的。都是能写代码的人了,难道为了看几张图片还要下一个几G软件吗?至此,我就开始考虑如何使用python读取pgm(Portable Gray Map)文件并显示出来。

HYY的博客 3931

手把手教你用AD9834 DDS模块DIY一个可调信号源(附AD原理图/PCB/程序)

本文详细介绍了如何使用AD9834 DDS模块DIY一个高精度可调信号源,涵盖硬件搭建、原理图解读、PCB优化和程序烧录等关键步骤。通过STM32控制实现0-10MHz频率范围输出,特别适合电子设计与射频实验,提供完整的AD原理图、PCB设计和程序代码参考。

weixin_31854867的博客 406

unsigned long输出格式_刻意练习FFmpeg系列:最简单的图像格式PGM灰度图

前言本专题之所以说是「整体性学习」,是因为最好的学习的过程,是先看到大体的轮廓,再逐步探索细节。就像渐进式jpeg图像加载,从模糊的全局图到清晰的全局图。先有个简单的全局认知,再有深入细致的认知前面两篇文章都是概念性的解释,这篇文章,我们要下场翻代码了,Let's Do it!kamuel:刻意练习FFmpeg系列:音视频基础概念格式和编码​zhuanlan.zhihu.comkamuel:刻意练...

weixin_39916511的博客 592

GD32F103VBT6串口OTA升级保姆级教程:当硬件没留Boot0引脚时,我是如何用Keil和Ymodem搞定的

本文详细介绍了GD32F103VBT6在无Boot0引脚情况下的串口OTA升级方案,通过Keil工程改造和Ymodem协议实现可靠固件更新。文章涵盖Bootloader配置、APP工程调整、Ymodem传输优化等关键步骤,为嵌入式开发者提供了一套完整的解决方案,特别适用于封闭式设备的远程更新需求。

weixin_28744613的博客 183

STM32F407 FSMC并口读取AD7606

先贴一下最终效果图.这个是AD7606并口读取数据一个周期后的数据结果. 原始波形用示波器看是很平滑的. AD7606不知为何就会出现干扰, 我猜测可能是数字信号干扰导致的. 因为干扰的波形很有规律. 这种现象基本上可以排除是程序问题. 应该是干扰或者数字信号干扰,或者是数字和模拟共地导致的.是一个宏,实际上是指向的一个内存地址, 这个内存地址是FSMC指定的地址. 使用FSMC接口, 可免于控制引脚, 直接读取某个地址即可, FSMC会自动产生操作时序. 具体请见FSMC相关知识.

走错路的程序员 5496

ch00(b) JuliaImages支持的图像或视频格式

Images.load或FileIO.load支持的图像或视频格式。 格式名称 扩展名 IO library detection or magic number JLD .jld loads and saves on allplatforms with JLD Julia data file (HDF5) PBMBinary .pbm loads and saves on al...

陨星落云的博客 1292

VT System故障排查指南:从License验证到硬件连接全解析

本文详细解析VT System故障排查全流程,从License验证、Real Bus模式设置到硬件连接与VT6000组网配置。针对VT7900板卡等特殊设备提供专业解决方案,并分享系统级故障的二分法排查技巧,帮助工程师快速定位和解决CANoe环境下的各类硬件识别问题。

weixin_29269441的博客 255

【Python】从零解析PGM:手写读取器与OpenCV/PIL方案对比

本文详细解析了PGM(Portable Gray Map)文件格式,并对比了手动解析、OpenCV和Pillow三种读取方案。通过Python代码示例,展示了如何高效读取和处理PGM图像文件,特别适合计算机视觉和图像处理领域的开发者。文章还提供了性能优化技巧和实战案例,帮助读者快速掌握PGM文件处理的核心技术。

427

Cadence17.2 > OrCAD Capture CIS > 设计规则检查(Design Rule Check)DRC学习记录详解

选中设计完成的DSN文件,选择Tool->Design Rule Check,弹出下面对话框,详解如下。 一、Design Rule Check对话框选项详解 Design Rules Options tab Set the scope, mode and type of design rule (electrical and / or physical) test options for the design rules check. 为

DL_62532的专栏 1万+

JAVA:Spring Boot 集成 LibreOffice 实现文档在线转换服务

本文介绍了在企业级应用开发中使用LibreOffice实现文档格式转换的技术方案。通过对比分析商业库、纯Java方案和云服务API的优缺点,重点阐述了LibreOffice在格式兼容性、转换质量和零成本方面的优势。文章详细说明了环境准备步骤,包括Windows/Linux系统安装LibreOffice、解决中文乱码问题以及Docker部署方案。最后提供了Spring Boot项目的基本配置,包括Maven依赖和application.yml配置文件,为构建稳定高效的文档转换服务奠定基础。

木头 519

多媒体测试需收集的文件格式大全

25 种文件格式

riccij的博客 464

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Matlab中支持的导入和导出文件格式

目录 支持的导入和导出文件格式 支持的导入和导出文件格式 下表显示了可以从 MATLAB®应用程序导入和导出的文件格式。 除了表中的函数以外,还可以使用导入工具,以交互方式导入文本或电子表格文件格式。 文件内容 扩展名 说明 导入函数 导出函数 MATLAB 格式化数据 MAT 保存的 MATLAB 工作区 load .

jk_101的博客 2820

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

5分钟搞定:用S-UNIWARD在Ubuntu上生成你的第一张Stego Image(附残差对比图)

本文提供了一份在Ubuntu系统上使用S-UNIWARD算法生成隐写图像的详细实践指南。从环境配置、工具编译到参数调整,手把手教你如何将秘密信息嵌入载体图像,并通过残差对比图直观展示不同嵌入率下的隐藏效果,帮助你快速掌握生成含密图像的核心技能。

o4p5q6r7s的博客 456

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

3.11 庐山派图像处理API手册:从OpenMV移植到嵌入式视觉开发实战

本文详细介绍了庐山派图像处理API从OpenMV移植到嵌入式视觉开发的实战经验。重点解析了庐山派在OpenMV基础上新增的ARGB8888、RGB888等图像格式支持,以及灵活的内存管理策略(如ALLOC_MMZ、ALLOC_VB等),帮助开发者高效管理嵌入式系统资源,并提升视觉应用性能。

weixin_35414260的博客 221

ffmpeg必知道的知识点

ffmpegFFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、

WangShuo的专栏 1万+

【FFmpeg 3.x API应用一】视频解码

摘要 这篇文章介绍怎么实现视频解码,具体步骤为读取Sample.mkv视频文件,从中提取视频流,然后解码为YUV图像数据,把YUV数据存储为PGM灰度图像,或者存储为YUV420p RAW格式视频。 初始化FFmepg和FormatContext 使用FFmpeg API第一个操作就是执行初始化函数:av_register_all注册所有相关组件,然后使用avformat_open_in...

彼此当年少,莫负好时光 827

Http 协议 :Content-Type一览

 Multipart Internet Mail Extensions (MIME) http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.htmlDescription of Data ContentTypical Filename ExtensionsMIME type/s

蜡笔小光 907

QImage与AVFrame互转

先是AVFrame转QImage #pragma execution_character_set("utf-8") /*! @file 重庆予乔 @author 陈强灵 @date 2018/9 @brief 软硬件定制开发 Q.Q:609162385 @https https://blog.youkuaiyun.com/cqltbe131421 @verbati...

cqltbe131421的博客 1430

Android 常用 mimeType 表

参考:http://www.littledai.com/20110408/112443/791 http://www.cnblogs.com/newcj/archive/2011/08/10/2134305.html 一、MIME TYPE描述 多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它

ljchlx的专栏 853
上一篇: [modern c++] c++ 11 实现 Windows 下的信号量
下一篇: [多媒体] YUV相关知识
SleepyPat
博客等级 码龄9年 654粉丝 545原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值