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 藝少
轉載于:https://www.cnblogs.com/huty/p/8519013.html
總結
以上是生活随笔為你收集整理的PPM / PGM / PBM 图像文件格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下的动态链接库和静态链接库到底
- 下一篇: linux 上传带宽限速