羅永強,林 芳
(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文件是一種成熟的數據文件,理解它的數據格式有助于計算機工作者設計數據存儲格式.
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組空值標記文件的結束.
在位于存儲圖像數組數據的存儲區后有一些信息,可以供計算機查詢數據的尺寸、數據類型以及每個像素的字節數.在一個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字型的數據類型一致.
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)的資助項目