文件头: 软件ID、软件版本号、图像分辨率、图像尺寸、图像深度、彩 {MOD}类型、编码方式、压缩算法 文件体:图像数据、彩 {MOD}变换表 文件尾:用户名、注释、开发日期、工作时间 以上是一个大概的图像文件结构说明,实际的结构根据不同的格式其中的条目要细得多,结构也复杂得多,各个条目所占空间及条目间的排列顺序也大不相同。目前还没有非常统一的图像文件格式。但大多数图像处理软件都与数种图像文件格式相兼容,也即可读取多种不同格式的图像文件。这样,不同的图像格式间可相互转换。当然,还有专门的图像格式转换软件,用于各种图像格式间的转换。图像文件后缀一览表 文件格式是存储文本、图形或者图像数据的一种数据结构。在文字处理中,存储文本文件要使用文件格式。例如,使用微软公司的Word处理器编写的文件,可根据不同的应用环境用不同的格式存储。如果使用多信息文本格式(Rich Text Format,RTF)存储,这个文件就可在其他的平台(如Mac机)或者使用其他的字处理器进行处理。同样,存储图像也需要有存储格式,从20世纪70年代图像开始进入计算机以来,开发了许许多多的图像文件存储格式,而且互相不兼容,需要使用针对特定格式的处理软件。现在都意识到,不兼容的格式给用户造成很多的不便,因此有些格式也逐渐被淘汰。在计算机中,有两种类型的图:矢量图(vector graphics)和位映象图(bitmapped graphics)。矢量图是用数学方法描述的一系列点、线、弧和其他几何形状,如图6-17(a)所示。因此存放这种图使用的格式称为矢量图格式,存储的数据主要是绘制图形的数学描述;位映象图(bitmapped graphics)也称光栅图(raster graphics),这种图就像电视图像一样,由象点组成的,如图6-17(b),因此存放这种图使用的格式称为位映象图格式,经常简称为位图格式,存储的数据是描述像素的数值。图6-1 矢量图与位映象图除了本章介绍的4种常用格式之外,在我们的工作中还会遇到其他图像格式。为方便查阅,现将部分图形与图像文件的后缀和名称列在表6-11和表6-12中。如果编写程序需要很专业的图像格式资源,包括一些源程序(source code),可以访问站点:http://www.wotsit.org/,你可饱览多媒体世界中的各种媒体的存储格式。表6-11位映象图格式/光栅图光栅(bitmapped formats / raster graphics)后缀文件名称后缀文件名称AG4Access G4 document imagingJFFJPEG (JFIF)ATTAT&T Group IVJPGJPEGBMPWindows & OS/2KFXKofax Group IVCALCALS Group IVMACMacPaintCITIntergraph scanned imagesMILSame as GP4 extensionCLPWindows ClipboardMSPMicrosoft PaintCMPPhotomatrix G3/G4 scanner formatNIFNavy Image FileCMPLEAD TechnologiesPBMPortable bitmapCPRKnowledge AccessPCDPhotoCDCTScitex Continuous TonePCXPC PaintbrushCUTDr. HaloPIXInset Systems (HiJaak)DBXDATABEAMPNGPortable Network GraphicsDXAutotrol document imagingPSDPhotoshop native formatED6EDMICS (U.S. DOD)RASSunEPSEncapsulated PostScriptRGBSGIFAXFaxRIAAlpharel Group IV document imagingFMVFrameMakerRLCImage SystemsGEDArts & LettersRLEVarious RLE-compressed formatsGDFIBM GDDM formatRNLGTX RunlengthGIFCompuServeSBPIBM StoryBoardGP4CALS Group IV - ITU Group IVSGISilicon Graphics RGBGX1Show PartnerSUNSunGX2Show PartnerTGATargaICAIBM IOCA (see MO:DCA)TIFTIFFICOWindows iconWPGWordPerfect imageIFFAmiga ILBMXBMX Window bitmapIGFInset Systems (HiJaak)XPMX Window pixelmapIMGGEM PaintXWDX Window dump表6-12 矢量图格式(vector graphics formats)后缀文件名称后缀文件名称3DS3D StudioGEMGEM proprietary906Calcomp plotterG4GTX RasterCAD - scanned images into vectors for AutoCADAIAdobe IllustratorIGFInset Systems (HiJaak)CALCALS subset of CGMIGSIGESCDRCorelDRAWMCSMathCADCGMComputer Graphics MetafileMETOS/2 metafileCH3Harvard Graphics chartMRKInformative Graphics markup fileCLPWindows clipboardP10Tektronix plotter (PLOT10)CMXCorel Metafile ExchangePCLHP LaserJetDGAutotrolPCTMacintosh PICT drawingsDGNIntergraph drawing formatPDWHiJaakDRWMicrografx Designer 2.x, 3.xPGLHP plotterDS4Micrografx Designer 4.xPICVariety of picture formatsDSFMicrografx Designer 6.xPIXInset Systems (HiJaak)DXFAutoCADPLTHPGL Plot File (HPGL2 has raster format)DWGAutoCADPSPostScript Level 2EMFEnhanced metafileRLCImage Systems "CAD Overlay ESP" vector files overlaid onto raster imagesEPSEncapsulated PostScriptSSKSmartSketchESIEsri plot file (GIS mapping)WMFWindows MetafileFMVFrameMakerWPGWordPerfect graphicsGCAIBM GOCAWRLVRML 后缀文件名称 文件格式是存储文本、图形或者图像数据的一种数据结构。在文字处理中,存储文本文件要使用文件格式。例如,使用微软公司的Word处理器编写的文件,可根据不同的应用环境用不同的格式存储。如果使用多信息文本格式(Rich Text Format,RTF)存储,这个文件就可在其他的平台(如Mac机)或者使用其他的字处理器进行处理。同样,存储图像也需要有存储格式,从20世纪70年代图像开始进入计算机以来,开发了许许多多的图像文件存储格式,而且互相不兼容,需要使用针对特定格式的处理软件。现在都意识到,不兼容的格式给用户造成很多的不便,因此有些格式也逐渐被淘汰。在计算机中,有两种类型的图:矢量图(vector graphics)和位映象图(bitmapped graphics)。矢量图是用数学方法描述的一系列点、线、弧和其他几何形状,如图6-17(a)所示。因此存放这种图使用的格式称为矢量图格式,存储的数据主要是绘制图形的数学描述;位映象图(bitmapped graphics)也称光栅图(raster graphics),这种图就像电视图像一样,由象点组成的,如图6-17(b),因此存放这种图使用的格式称为位映象图格式,经常简称为位图格式,存储的数据是描述像素的数值。图6-1 矢量图与位映象图除了本章介绍的4种常用格式之外,在我们的工作中还会遇到其他图像格式。为方便查阅,现将部分图形与图像文件的后缀和名称列在表6-11和表6-12中。如果编写程序需要很专业的图像格式资源,包括一些源程序(source code),可以访问站点:http://www.wotsit.org/,你可饱览多媒体世界中的各种媒体的存储格式。表6-11位映象图格式/光栅图光栅(bitmapped formats / raster graphics)后缀文件名称后缀文件名称AG4Access G4 document imagingJFFJPEG (JFIF)ATTAT&T Group IVJPGJPEGBMPWindows & OS/2KFXKofax Group IVCALCALS Group IVMACMacPaintCITIntergraph scanned imagesMILSame as GP4 extensionCLPWindows ClipboardMSPMicrosoft PaintCMPPhotomatrix G3/G4 scanner formatNIFNavy Image FileCMPLEAD TechnologiesPBMPortable bitmapCPRKnowledge AccessPCDPhotoCDCTScitex Continuous TonePCXPC PaintbrushCUTDr. HaloPIXInset Systems (HiJaak)DBXDATABEAMPNGPortable Network GraphicsDXAutotrol document imagingPSDPhotoshop native formatED6EDMICS (U.S. DOD)RASSunEPSEncapsulated PostScriptRGBSGIFAXFaxRIAAlpharel Group IV document imagingFMVFrameMakerRLCImage SystemsGEDArts & LettersRLEVarious RLE-compressed formatsGDFIBM GDDM formatRNLGTX RunlengthGIFCompuServeSBPIBM StoryBoardGP4CALS Group IV - ITU Group IVSGISilicon Graphics RGBGX1Show PartnerSUNSunGX2Show PartnerTGATargaICAIBM IOCA (see MO:DCA)TIFTIFFICOWindows iconWPGWordPerfect imageIFFAmiga ILBMXBMX Window bitmapIGFInset Systems (HiJaak)XPMX Window pixelmapIMGGEM PaintXWDX Window dump表6-12 矢量图格式(vector graphics formats)后缀文件名称后缀文件名称3DS3D StudioGEMGEM proprietary906Calcomp plotterG4GTX RasterCAD - scanned images into vectors for AutoCADAIAdobe IllustratorIGFInset Systems (HiJaak)CALCALS subset of CGMIGSIGESCDRCorelDRAWMCSMathCADCGMComputer Graphics MetafileMETOS/2 metafileCH3Harvard Graphics chartMRKInformative Graphics markup fileCLPWindows clipboardP10Tektronix plotter (PLOT10)CMXCorel Metafile ExchangePCLHP LaserJetDGAutotrolPCTMacintosh PICT drawingsDGNIntergraph drawing formatPDWHiJaakDRWMicrografx Designer 2.x, 3.xPGLHP plotterDS4Micrografx Designer 4.xPICVariety of picture formatsDSFMicrografx Designer 6.xPIXInset Systems (HiJaak)DXFAutoCADPLTHPGL Plot File (HPGL2 has raster format)DWGAutoCADPSPostScript Level 2EMFEnhanced metafileRLCImage Systems "CAD Overlay ESP" vector files overlaid onto raster imagesEPSEncapsulated PostScriptSSKSmartSketchESIEsri plot file (GIS mapping)WMFWindows MetafileFMVFrameMakerWPGWordPerfect graphicsGCAIBM GOCAWRLVRML 后缀文件名称 几种常见的文件格式: 1>JPEG格式 微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分。正序存放就是高字节存放在前低字节在后,而逆序存放就是低字节在前高字节在后。例如,十六进制数为A02B,正序存放就是A02B,逆序存放就是2BA0。摩托罗拉(Motorola)公司的微处理器使用正序存放,而英特尔(Intel)公司的微处理器使用逆序。JPEG文件中的字节是按照正序排列的。JPEG委员会在制定JPEG标准时,定义了许多标记(marker)用来区分和识别图像数据及其相关信息,但笔者没有找到JPEG委员会对JPEG文件交换格式的明确定义。直到1998年12月从分析网上具体的JPG图像来看,使用比较广泛的还是JPEG文件交换格式(JPEG File Interchange Format,JFIF)版本号为1.02。这是1992年9月由在C-Cube Microsystems公司工作的Eric Hamilton提出的。此外还有TIFF JPEG等格式,但由于这种格式比较复杂,因此大多数应用程序都支持JFIF文件交换格式。 JPEG文件使用的颜 {MOD}空间是CCIR 601推荐标准进行的彩 {MOD}空间(参看第7章)。在这个彩 {MOD}空间中,每个分量、每个像素的电平规定为255级,用8位代码表示。从RGB转换成YCbCr空间时,使用下面的精确的转换关系: Y = 256 * E'y Cb = 256 * [E'Cb] + 128 Cr = 256 * [E'Cr] + 128 其中亮度电平E'y和 {MOD}差电平E'Cb和E'Cb分别是CCIR 601定义的参数。由于E'y的范围是0~1,E'Cb和E'Cb的范围是-0.5~+0.5,因此Y, Cb和Cr的最大值必须要箝到255。于是RGB和YCbCr之间的转换关系需要按照下面的方法计算。(1) 从RGB转换成YCbCrYCbCr(256级)分量可直接从用8位表示的RGB分量计算得到: Y = 0.299 R + 0.587 G + 0.114 B Cb = - 0.1687R - 0.3313G + 0.5 B + 128 Cr = 0.5 R - 0.4187G - 0.0813 B + 128需要注意的是不是所有图像文件格式都按照R0,G0,B0,…… Rn,Gn,Bn的次序存储样本数据,因此在RGB文件转换成JFIF文件时需要首先验证RGB的次序。(2) 从YCbCr转换成RGB RGB分量可直接从YCbCr(256级)分量计算得到: R = Y + 1.402 (Cr-128) G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128) B = Y + 1.772 (Cb-128)在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。这就是说JFIF文件中的第一个图像样本是图像左上角的样本。文件结构文件结构JPEG文件使用的颜 {MOD}空间是CCIR 601推荐标准进行的彩 {MOD}空间(参看第7章)。在这个彩 {MOD}空间中,每个分量、每个像素的电平规定为255级,用8位代码表示。从RGB转换成YCbCr空间时,使用下面的精确的转换关系: Y = 256 * E'y Cb = 256 * [E'Cb] + 128 Cr = 256 * [E'Cr] + 128 其中亮度电平E'y和 {MOD}差电平E'Cb和E'Cb分别是CCIR 601定义的参数。由于E'y的范围是0~1,E'Cb和E'Cb的范围是-0.5~+0.5,因此Y, Cb和Cr的最大值必须要箝到255。于是RGB和YCbCr之间的转换关系需要按照下面的方法计算。(1) 从RGB转换成YCbCrYCbCr(256级)分量可直接从用8位表示的RGB分量计算得到: Y = 0.299 R + 0.587 G + 0.114 B Cb = - 0.1687R - 0.3313G + 0.5 B + 128 Cr = 0.5 R - 0.4187G - 0.0813 B + 128需要注意的是不是所有图像文件格式都按照R0,G0,B0,…… Rn,Gn,Bn的次序存储样本数据,因此在RGB文件转换成JFIF文件时需要首先验证RGB的次序。(2) 从YCbCr转换成RGB RGB分量可直接从YCbCr(256级)分量计算得到: R = Y + 1.402 (Cr-128) G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128) B = Y + 1.772 (Cb-128)在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。这就是说JFIF文件中的第一个图像样本是图像左上角的样本。文件结构文件结构JFIF文件格式直接使用JPEG标准为应用程序定义的许多标记,因此JFIF格式成了事实上JPEG文件交换格式标准。JPEG的每个标记都是由2个字节组成,其前一个字节是固定值0xFF。每个标记之前还可以添加数目不限的0xFF填充字节(fill byte)。下面是其中的8个标记:
SOI 0xD8 图像开始
APP0 0xE0 JFIF应用数据块
APPn 0xE1 - 0xEF 其他的应用数据块(n, 1~15)
DQT 0xDB 量化表
SOF0 0xC0 帧开始
DHT 0xC4 霍夫曼(Huffman)表
SOS 0xDA 扫描线开始
EOI 0xD9 图像结束
为使读者对JPEG定义的标记一目了然,现将JPEG的标记码列于表6-05,并保留英文解释。表6-05 JPEG定义的标记Symbol (符号)Code Assignment(标记代码)Description(说明)Start Of Frame markers, non-hierarchical Huffman codingSOF00xFFC0Baseline DCTSOF10xFFC1Extended sequential DCTSOF20xFFC2Progressive DCTSOF30xFFC3Spatial (sequential) lossless Start Of Frame markers, hierarchical Huffman codingSOF50xFFC5Differential sequential DCTSOF60xFFC6Differential progressive DCTSOF70xFFC7Differential spatial losslessStart Of Frame markers, non-hierarchical arithmetic codingJPG0xFFC8Reserved for JPEG extensionsSOF90xFFC9Extended sequential DCTSOF100xFFCAProgressive DCTSOF110xFFCBSpatial (sequential) LosslessStart Of Frame markers, hierarchical arithmetic codingSOF130xFFCDDifferential sequential DCTSOF140xFFCEDifferential progressive DCTSOF150xFFCFDifferential spatial LosslessHuffman table specificationDHT0xFFC4Define Huffman table(s)arithmetic coding conditioning specificationDAC0xFFCCDefine arithmetic conditioning tableRestart interval terminationRSTm0xFFD0~0xFFD7Restart with modulo 8 counter mOther markerSOI0xFFD8Start of imageEOI0xFFD9End of imageSOS0xFFDAStart of scanDQT0xFFDBDefine quantization table(s)DNL0xFFDCDefine number of linesDRI0xFFDDDefine restart intervalDHP0xFFDEDefine hierarchical progressionEXP0xFFDFExpand reference image(s) APPn0xFFE0~0xFFEFReserved for application useJPGn0xFFF0~0xFFFDReserved for JPEG extensionCOM0xFFFECommentReserved markersTEM0xFF01For temporary use in arithmetic codingRES0xFF02~0xFFBFReservedJPEG文件由下面的8个部分组成:(1) 图像开始SOI(Start of Image)标记(2) APP0标记(Marker)① APP0长度(length)② 标识符(identifier)③ 版本号(version)④ X和Y的密度单位(units=0:无单位;units=1:点数/英寸;units=2:点数/厘米)⑤ X方向像素密度(X density)⑥ Y方向像素密度(Y density)⑦ 缩略图水平像素数目(thumbnail horizontal pixels)⑧ 缩略图垂直像素数目(thumbnail vertical pixels)⑨ 缩略图RGB位图(thumbnail RGB bitmap)(3) APPn标记(Markers),其中n=1~15(任选)① APPn长度(length)② 由于详细信息(application specific information)(4) 一个或者多个量化表DQT(difine quantization table)① 量化表长度(quantization table length)② 量化表数目(quantization table number)③ 量化表(quantization table)(5) 帧图像开始SOF0(Start of Frame)① 帧开始长度(start of frame length)② 精度(precision),每个颜 {MOD}分量每个像素的位数(bits per pixel per color component)③ 图像高度(image height)④ 图像宽度(image width)⑤ 颜 {MOD}分量数(number of color components)⑥ 对每个颜 {MOD}分量(for each component)
ID
垂直方向的样本因子(vertical sample factor)
水平方向的样本因子(horizontal sample factor)
量化表号(quantization table#)
(6) 一个或者多个霍夫曼表DHT(Difine Huffman Table)① 霍夫曼表的长度(Huffman table length)② 类型、AC或者DC(Type, AC or DC)③ 索引(Index)④ 位表(bits table)⑤ 值表(value table)(7) 扫描开始SOS(Start of Scan)① 扫描开始长度(start of scan length)② 颜 {MOD}分量数(number of color components)③ 每个颜 {MOD}分量