电镜软件文件存储格式的解析
2010-10-09罗永强
罗永强,林 芳
(1.华南农业大学 理学院,广东 广州 510642;2.广州市汉和信息技术有限公司,广东 广州 510663)
电镜软件文件存储格式的解析
罗永强1,2,林 芳1
(1.华南农业大学 理学院,广东 广州 510642;2.广州市汉和信息技术有限公司,广东 广州 510663)
扩展名为DM3的电子显微镜图像具有规范的数据存储结构,具有规范的数据存储规则.本文从计算机存储的角度解析DM3文件的存储结构、信息记录方式.充分了解DM3文件的存储方式,有助于自编程序直接读取二进制的电镜图像文件;另外,理解DM3文件的存储规则有助于计算机工作者设计规范的数据存储格式.
数据存储结构;电子显微镜;DM3文件
计算机的磁盘存储是目前数据存储的最重要方式之一,在当今数字化时代,运用计算机可方便地实现数据维护、储存与调用处理等.数字图像是计算机存储的重要类型,不同图像软件的数据存储格式都有所不同,其存储规则保证了图像数据能够在不同计算机上实现读取、处理.电子显微镜采集的图像是利用DigitalMicrograph软件获得的,该软件是由Gatan公司开发的控制电镜的软件,存储的文件具有固定的数据格式,通常以DM3为扩展名进行存储,也有DM2等其他格式,这些文件运用一定规范来存储图像数据以及成像、图像显示时的重要信息.
目前可以直接读取DM3文件的软件还有ImageJ及EMAN软件.ImageJ是一个基于java的公共的图像处理软件,具有强大的像处理功能,如能够进行图片的像素统计,能由图像创建柱状图和剖面图,进行傅里叶变换等[1].EMAN是一套基于C++的公开源码的图像处理工具,它主要针对在透镜领域上的应用,特别是在生物电子显微学方面,例如应用于生物大分子的三维重建处理[2].有关DM3的存储方式可在ImageJ和EMAN的网站上获得部分信息[3,4],较为详细的信息可在Dr.Boothroyd的网站找到[5].
为了清晰的给出DM3文件的存储结构,并给出数据信息之间的结构关系,我们整理了现有的资料并对实验照片进行分析.本文我们将以实验照片的DM3文件为实例,给出DM3文件存储信息以及各信息之间的基本关系.在正确的分析图像的文件格式后,有助于我们不需要借助其他软件,直接读取DM3文件内的重要数据.另一方面,DM3文件是一种成熟的数据文件,理解它的数据格式有助于计算机工作者设计数据存储格式.
1 DM3图像的存储结构
DM3为扩展名的文件与TIF、BMP等计算机常用图像数据一样,具有固定的存储结构.总体来说,计算机的图像结构可以分为文件头、中间数据、文件尾三个部分.用Ultraedit软件打开DM3文件,可以观察并分析二进制数据.
1.1 DM3图像文件头
文件开始的前12字节是图像的文件头,分别以4字节存储,存储内容如表1.图1为Ultraedit软件打开后的DM3文件的真实头文件.
表1 DM3图像的文件头
图1 DM3图像的头文件。00000000h以及0-f标识出字节存储的地址,右边标识了每个字节(8位)所对应的字符,其中点表示无法显示的字符
图1结合表1可做如下分析:(1)00000003=3,文件版本即DM3图像的版本号,值总为3.(2)00205F 29=2121513,整个图像文件的字节大小应为此值加上16.(3)00000001=1,如果该值为0,即为big-endian,表示Motorola结构,数据区的字节按照从最高位到最低位的顺序存储;如为1,即为little-endian,表示该文件是用Intel体系建立,数据区的字节顺序按照从最低位到最高位的顺序存储(逆序).该字节标识的是数据区的字节的存储类型,这个字节顺序的不同是因为Intel和Motorola处理器(分别对应PC机与Mac机的处理方式)所使用的字节顺序不同;而其他所有区域必定是以big-endian储存的.
1.2 DM3标签目录(Tag Directory)与图像标签(Tag)
1.2.1 DM3根标签目录(RootTag Directory)
文件头接下来是根标签目录(简称根目录),内容包括根目录下各标签的状态,以及标签与目录的总个数:
表2 根标签目录
图2 DM3图像的根标签目录
图2对应表2中的三个信息分别为:(1)01=1为排序;(2)00=0为关闭情况;(3)0000000E=14表示根目录下标签以及标签目录的总数目.
1.2.2 DM3标签目录
DM3文件里更多的是标签目录(简称目录),标签目录下可包含下一级的目录以及标签的个数与状态.标签目录的形式如表3.
表3 DM3图像标签目录
由表3可知,根标签目录实质上是标签目录的一种特殊形式.图3显示的是DM3文件中截取的某三个标签目录.
图3 DM3图像标签目录示例,包含3个标签目录。
三个标签的说明如下:(1)14h=20,标签目录的标志;0000=0,标签目录名的字节大小;01=1表示排序;00=0表示目录状态为关闭;0000000D=13表示该标签目录包含13个子目录与标签.(2)14h=20为标签目录的标志;0013=19,标签目录名的字节大小;416E 636F 746174696F 6347726F 75704C 697374=AnnotationGroupList为标签目录名,长度恰好是19;00=0不排序;00=0目录关闭;00000001=1表示该标签目录包含1个子目录或者1个标签.(3)同(1)字节内容完全一致.图4显示了以上三层目录之间的关系.
图4 图3中的3个标签目录的关系。
1.2.3 DM3标签
标签是存储图像信息的重要区域,例如电镜图像的强度值就是由标签来存储的.标签内最重要的数据是存储的数据值,例如图像中每个像素的强度值、图像的尺寸(如1024×1024).这些数据值可用计算机的不同数据类型来存储,由4个字节来标识,有12种存储形式:short、long、ushort、ulong、float、double、boolean、char、octet、struct、string.
在获知数据值可能存在的类型,我们需要知道DM3如何以标签的形式存储数据.表4说明了文件里标签的基本结构.
表4 DM3图像的标签形式
标签中的编码类型与存储的数据值前的信息字节长度有关,分为三种情况:如果值为1,则此标签为单入口的标签类型;如果值为3,则为一般的数组类型;如果值为1+2k,则为Struct类型,其中k为Struct结构数据的个数(注意,在我们研究中发现并不存在等于2的情况,字符型的数据可使用数组array来表现).如下我们将举例不同编码类型时的数据类型与数据区所占的字节与包含的信息.
①单入口的标签类型:
图5 标签的一般类型示例
图5中标签的各信息说明如下:(1)15h=21,标签的标志,值总为21;(2)0008=8,标签名的字节大小;(3)46696C 6C 4D 6F 6465为标签名,即“FillMode”;(4)25252525即“%%%%”,在标签里才有的;(5)00000001=1,此标签编码类型为1,则为单入口的标签类型,即紧接下来有1组4字节的信息标识数据的类型,再之后的信息即为数据值;(6)00000002=2,表明数据区的数据类型为short型;(7)0200为此标签的数据值,short型数据类型,为2字节长度,因为这幅图像数据区是以little-endian储存的,所以此数值应为2.
②数组类型:
图6 标签的数组类型示例
图6为数组类型的标签,其说明如下:(1)15h=21,标签标志;(2)000A=10,标签名的字节长度;(3)46616D 69 6C 794E 616D为标签名“FamilyName”;(4)25252525即“%%%%”;(5)00000003=3,此标签编码类型为数组类型,且在此接下来有3组4字节的信息;(6)00000014=20,此标签的数据区为数组;00000004=4,数据区的数据类型,换算后数值为4表示ushort类型;0000000F=15,数组大小,因此此标签数据区以长度为2字节的ushort型15组数据组成;(7)5400……6E 00为数据值,共15组.
③Struct类型:
图7 标签的Struct类型
图7各部分字节信息说明如下:(1)15h=21,标签标志;(2)0009=9,标签名的字节大小;(3)52656374616E 676C 65为标签名,即“Rectangle”;(4)25252525即“% %%%”;(5)0000000B=11,即1+2*5,表示数据区前有五组有关struct的信息,且紧接下来有11组4字节的信息;(6)0000000F=15,此标签的数据域为struct;00000000,为该组struct的名称,数值总为0;00000004为struct的数目,表示共有4个struct变量;接下来,共有4组的00000000与00000006,分别为第一、二、三、四个struct变量的名称与存储的数据类型;(7)4个struct变量的数据值,可采用单精度的方式读取.
1.3 DM3的文件尾标识
0000000000000000,8组空值标记文件的结束.
2 DM3图像的重要信息解析
在位于存储图像数组数据的存储区后有一些信息,可以供计算机查询数据的尺寸、数据类型以及每个像素的字节数.在一个DM3文件中,共有两个较大数据区,分别是微缩后的图像数据以及图像强度数据,在它们之后都有如图9所示相似的数据信息,其中图像的强度数据是DM3文件的核心数据.
图9 图像数据的重要信息
一、DataType:
DataType为图像数据存储的类型,利用标签存之.其中:DataType的数据值的类型00000005=5,表示DataType的数据是采用ulong存储的;DataType的数据值01000000=1(little-endian的存储类型),该数值对应的图像数据类型为short型.
二、Dimensions:
Dimensions表明了DM3图像的尺寸,即width和height. Dimensions是采用标签目录的形式来存储,该目录下包含了两个标签分别存储图像的宽和高.从数据区,我们可以读取图像的宽和高分别为 00040000=1024和 00040000=1024,即这幅图像的尺寸是1024×1024.
三、PixelDepth:
像素深度,单位为bytes/pixel,数值区为02000000=2,可知此图像的像素深度为每像素2字节,恰与short字型的数据类型一致.
3 结论
DM3为扩展名的电镜图像文件,其二进制存储数据是由文件头、中间数据与文件尾三部分组成,其中中间数据是以目录与标签的形式存储,是DM3文件的核心部分.目录与标签的关系主要表现为:目录与标签具有明确的标识字节区分,分别为14h=20与15h=21;任一级目录下可再包含子目录与标签数据,目录也可为空;标签是存储各类数据的唯一方式,标签内的数据可具不同类型,其类型由本标签中的标识字节给出.
根据本文对DM3文件的分析,可以在自编程序中方便地读取DM3的数据.另一方面,DM3文件作为一种成熟软件的存储格式,其规范的数据存储规则也可作为其他数据存储的一种参考.
〔1〕Sheffield J B.ImageJ,a useful tool for biological image processing and analysis[J].Microscmicroanal,2007,13(Suppl 2):200-201.
〔2〕Ludtke S J,Chiu W,Baldwin P R.EMAN:semiautomated software for high-resolution single-particle reconstructions [J].Journal of Structural Biology,1999,128(1):82-97.
〔3〕Jefferis G.DM3Reader Plugin for ImageJ[EB/OL]. http://rsbweb.nih.gov/ij/plugins/DM3_Reader.html,2010-02-22.
〔4〕Jefferis G.DM3Image Format[EB/OL].http://rsbweb. nih.gov/ij/plugins/DM3Format.gj.html, 2004-05-17/ 2010-02-22.
〔5〕Boothroyd C.Digital Micrograph File Format[EB/OL]. http://www.microscopy.cen.dtu.dk/~cbb/info/dmformat/, 2010-02-22.
TG115.21+5.3
A
1673-260X(2010)06-0038-03
本文是国家自然科学基金(No.60802003)以及华南农业大学校长基金(No.4900-K07417)的资助项目