羅永強,林 芳
(1.華南農(nóng)業(yè)大學(xué) 理學(xué)院,廣東 廣州 510642;2.廣州市漢和信息技術(shù)有限公司,廣東 廣州 510663)
電鏡軟件文件存儲格式的解析
羅永強1,2,林 芳1
(1.華南農(nóng)業(yè)大學(xué) 理學(xué)院,廣東 廣州 510642;2.廣州市漢和信息技術(shù)有限公司,廣東 廣州 510663)
擴展名為DM3的電子顯微鏡圖像具有規(guī)范的數(shù)據(jù)存儲結(jié)構(gòu),具有規(guī)范的數(shù)據(jù)存儲規(guī)則.本文從計算機存儲的角度解析DM3文件的存儲結(jié)構(gòu)、信息記錄方式.充分了解DM3文件的存儲方式,有助于自編程序直接讀取二進制的電鏡圖像文件;另外,理解DM3文件的存儲規(guī)則有助于計算機工作者設(shè)計規(guī)范的數(shù)據(jù)存儲格式.
數(shù)據(jù)存儲結(jié)構(gòu);電子顯微鏡;DM3文件
計算機的磁盤存儲是目前數(shù)據(jù)存儲的最重要方式之一,在當(dāng)今數(shù)字化時代,運用計算機可方便地實現(xiàn)數(shù)據(jù)維護、儲存與調(diào)用處理等.數(shù)字圖像是計算機存儲的重要類型,不同圖像軟件的數(shù)據(jù)存儲格式都有所不同,其存儲規(guī)則保證了圖像數(shù)據(jù)能夠在不同計算機上實現(xiàn)讀取、處理.電子顯微鏡采集的圖像是利用DigitalMicrograph軟件獲得的,該軟件是由Gatan公司開發(fā)的控制電鏡的軟件,存儲的文件具有固定的數(shù)據(jù)格式,通常以DM3為擴展名進行存儲,也有DM2等其他格式,這些文件運用一定規(guī)范來存儲圖像數(shù)據(jù)以及成像、圖像顯示時的重要信息.
目前可以直接讀取DM3文件的軟件還有ImageJ及EMAN軟件.ImageJ是一個基于java的公共的圖像處理軟件,具有強大的像處理功能,如能夠進行圖片的像素統(tǒng)計,能由圖像創(chuàng)建柱狀圖和剖面圖,進行傅里葉變換等[1].EMAN是一套基于C++的公開源碼的圖像處理工具,它主要針對在透鏡領(lǐng)域上的應(yīng)用,特別是在生物電子顯微學(xué)方面,例如應(yīng)用于生物大分子的三維重建處理[2].有關(guān)DM3的存儲方式可在ImageJ和EMAN的網(wǎng)站上獲得部分信息[3,4],較為詳細的信息可在Dr.Boothroyd的網(wǎng)站找到[5].
為了清晰的給出DM3文件的存儲結(jié)構(gòu),并給出數(shù)據(jù)信息之間的結(jié)構(gòu)關(guān)系,我們整理了現(xiàn)有的資料并對實驗照片進行分析.本文我們將以實驗照片的DM3文件為實例,給出DM3文件存儲信息以及各信息之間的基本關(guān)系.在正確的分析圖像的文件格式后,有助于我們不需要借助其他軟件,直接讀取DM3文件內(nèi)的重要數(shù)據(jù).另一方面,DM3文件是一種成熟的數(shù)據(jù)文件,理解它的數(shù)據(jù)格式有助于計算機工作者設(shè)計數(shù)據(jù)存儲格式.
DM3為擴展名的文件與TIF、BMP等計算機常用圖像數(shù)據(jù)一樣,具有固定的存儲結(jié)構(gòu).總體來說,計算機的圖像結(jié)構(gòu)可以分為文件頭、中間數(shù)據(jù)、文件尾三個部分.用Ultraedit軟件打開DM3文件,可以觀察并分析二進制數(shù)據(jù).
1.1 DM3圖像文件頭
文件開始的前12字節(jié)是圖像的文件頭,分別以4字節(jié)存儲,存儲內(nèi)容如表1.圖1為Ultraedit軟件打開后的DM3文件的真實頭文件.
表1 DM3圖像的文件頭
圖1 DM3圖像的頭文件。00000000h以及0-f標(biāo)識出字節(jié)存儲的地址,右邊標(biāo)識了每個字節(jié)(8位)所對應(yīng)的字符,其中點表示無法顯示的字符
圖1結(jié)合表1可做如下分析:(1)00000003=3,文件版本即DM3圖像的版本號,值總為3.(2)00205F 29=2121513,整個圖像文件的字節(jié)大小應(yīng)為此值加上16.(3)00000001=1,如果該值為0,即為big-endian,表示Motorola結(jié)構(gòu),數(shù)據(jù)區(qū)的字節(jié)按照從最高位到最低位的順序存儲;如為1,即為little-endian,表示該文件是用Intel體系建立,數(shù)據(jù)區(qū)的字節(jié)順序按照從最低位到最高位的順序存儲(逆序).該字節(jié)標(biāo)識的是數(shù)據(jù)區(qū)的字節(jié)的存儲類型,這個字節(jié)順序的不同是因為Intel和Motorola處理器(分別對應(yīng)PC機與Mac機的處理方式)所使用的字節(jié)順序不同;而其他所有區(qū)域必定是以big-endian儲存的.
1.2 DM3標(biāo)簽?zāi)夸?Tag Directory)與圖像標(biāo)簽(Tag)
1.2.1 DM3根標(biāo)簽?zāi)夸?RootTag Directory)
文件頭接下來是根標(biāo)簽?zāi)夸洠ê喎Q根目錄),內(nèi)容包括根目錄下各標(biāo)簽的狀態(tài),以及標(biāo)簽與目錄的總個數(shù):
表2 根標(biāo)簽?zāi)夸?/p>
圖2 DM3圖像的根標(biāo)簽?zāi)夸?/p>
圖2對應(yīng)表2中的三個信息分別為:(1)01=1為排序;(2)00=0為關(guān)閉情況;(3)0000000E=14表示根目錄下標(biāo)簽以及標(biāo)簽?zāi)夸浀目倲?shù)目.
1.2.2 DM3標(biāo)簽?zāi)夸?/p>
DM3文件里更多的是標(biāo)簽?zāi)夸洠ê喎Q目錄),標(biāo)簽?zāi)夸浵驴砂乱患壍哪夸浺约皹?biāo)簽的個數(shù)與狀態(tài).標(biāo)簽?zāi)夸浀男问饺绫?.
表3 DM3圖像標(biāo)簽?zāi)夸?/p>
由表3可知,根標(biāo)簽?zāi)夸泴嵸|(zhì)上是標(biāo)簽?zāi)夸浀囊环N特殊形式.圖3顯示的是DM3文件中截取的某三個標(biāo)簽?zāi)夸?
圖3 DM3圖像標(biāo)簽?zāi)夸浭纠?,包?個標(biāo)簽?zāi)夸洝?/p>
三個標(biāo)簽的說明如下:(1)14h=20,標(biāo)簽?zāi)夸浀臉?biāo)志;0000=0,標(biāo)簽?zāi)夸浢淖止?jié)大小;01=1表示排序;00=0表示目錄狀態(tài)為關(guān)閉;0000000D=13表示該標(biāo)簽?zāi)夸洶?3個子目錄與標(biāo)簽.(2)14h=20為標(biāo)簽?zāi)夸浀臉?biāo)志;0013=19,標(biāo)簽?zāi)夸浢淖止?jié)大?。?16E 636F 746174696F 6347726F 75704C 697374=AnnotationGroupList為標(biāo)簽?zāi)夸浢?,長度恰好是19;00=0不排序;00=0目錄關(guān)閉;00000001=1表示該標(biāo)簽?zāi)夸洶?個子目錄或者1個標(biāo)簽.(3)同(1)字節(jié)內(nèi)容完全一致.圖4顯示了以上三層目錄之間的關(guān)系.
圖4 圖3中的3個標(biāo)簽?zāi)夸浀年P(guān)系。
1.2.3 DM3標(biāo)簽
標(biāo)簽是存儲圖像信息的重要區(qū)域,例如電鏡圖像的強度值就是由標(biāo)簽來存儲的.標(biāo)簽內(nèi)最重要的數(shù)據(jù)是存儲的數(shù)據(jù)值,例如圖像中每個像素的強度值、圖像的尺寸(如1024×1024).這些數(shù)據(jù)值可用計算機的不同數(shù)據(jù)類型來存儲,由4個字節(jié)來標(biāo)識,有12種存儲形式:short、long、ushort、ulong、float、double、boolean、char、octet、struct、string.
在獲知數(shù)據(jù)值可能存在的類型,我們需要知道DM3如何以標(biāo)簽的形式存儲數(shù)據(jù).表4說明了文件里標(biāo)簽的基本結(jié)構(gòu).
表4 DM3圖像的標(biāo)簽形式
標(biāo)簽中的編碼類型與存儲的數(shù)據(jù)值前的信息字節(jié)長度有關(guān),分為三種情況:如果值為1,則此標(biāo)簽為單入口的標(biāo)簽類型;如果值為3,則為一般的數(shù)組類型;如果值為1+2k,則為Struct類型,其中k為Struct結(jié)構(gòu)數(shù)據(jù)的個數(shù)(注意,在我們研究中發(fā)現(xiàn)并不存在等于2的情況,字符型的數(shù)據(jù)可使用數(shù)組array來表現(xiàn)).如下我們將舉例不同編碼類型時的數(shù)據(jù)類型與數(shù)據(jù)區(qū)所占的字節(jié)與包含的信息.
①單入口的標(biāo)簽類型:
圖5 標(biāo)簽的一般類型示例
圖5中標(biāo)簽的各信息說明如下:(1)15h=21,標(biāo)簽的標(biāo)志,值總為21;(2)0008=8,標(biāo)簽名的字節(jié)大?。唬?)46696C 6C 4D 6F 6465為標(biāo)簽名,即“FillMode”;(4)25252525即“%%%%”,在標(biāo)簽里才有的;(5)00000001=1,此標(biāo)簽編碼類型為1,則為單入口的標(biāo)簽類型,即緊接下來有1組4字節(jié)的信息標(biāo)識數(shù)據(jù)的類型,再之后的信息即為數(shù)據(jù)值;(6)00000002=2,表明數(shù)據(jù)區(qū)的數(shù)據(jù)類型為short型;(7)0200為此標(biāo)簽的數(shù)據(jù)值,short型數(shù)據(jù)類型,為2字節(jié)長度,因為這幅圖像數(shù)據(jù)區(qū)是以little-endian儲存的,所以此數(shù)值應(yīng)為2.
②數(shù)組類型:
圖6 標(biāo)簽的數(shù)組類型示例
圖6為數(shù)組類型的標(biāo)簽,其說明如下:(1)15h=21,標(biāo)簽標(biāo)志;(2)000A=10,標(biāo)簽名的字節(jié)長度;(3)46616D 69 6C 794E 616D為標(biāo)簽名“FamilyName”;(4)25252525即“%%%%”;(5)00000003=3,此標(biāo)簽編碼類型為數(shù)組類型,且在此接下來有3組4字節(jié)的信息;(6)00000014=20,此標(biāo)簽的數(shù)據(jù)區(qū)為數(shù)組;00000004=4,數(shù)據(jù)區(qū)的數(shù)據(jù)類型,換算后數(shù)值為4表示ushort類型;0000000F=15,數(shù)組大小,因此此標(biāo)簽數(shù)據(jù)區(qū)以長度為2字節(jié)的ushort型15組數(shù)據(jù)組成;(7)5400……6E 00為數(shù)據(jù)值,共15組.
③Struct類型:
圖7 標(biāo)簽的Struct類型
圖7各部分字節(jié)信息說明如下:(1)15h=21,標(biāo)簽標(biāo)志;(2)0009=9,標(biāo)簽名的字節(jié)大?。唬?)52656374616E 676C 65為標(biāo)簽名,即“Rectangle”;(4)25252525即“% %%%”;(5)0000000B=11,即1+2*5,表示數(shù)據(jù)區(qū)前有五組有關(guān)struct的信息,且緊接下來有11組4字節(jié)的信息;(6)0000000F=15,此標(biāo)簽的數(shù)據(jù)域為struct;00000000,為該組struct的名稱,數(shù)值總為0;00000004為struct的數(shù)目,表示共有4個struct變量;接下來,共有4組的00000000與00000006,分別為第一、二、三、四個struct變量的名稱與存儲的數(shù)據(jù)類型;(7)4個struct變量的數(shù)據(jù)值,可采用單精度的方式讀取.
1.3 DM3的文件尾標(biāo)識
0000000000000000,8組空值標(biāo)記文件的結(jié)束.
在位于存儲圖像數(shù)組數(shù)據(jù)的存儲區(qū)后有一些信息,可以供計算機查詢數(shù)據(jù)的尺寸、數(shù)據(jù)類型以及每個像素的字節(jié)數(shù).在一個DM3文件中,共有兩個較大數(shù)據(jù)區(qū),分別是微縮后的圖像數(shù)據(jù)以及圖像強度數(shù)據(jù),在它們之后都有如圖9所示相似的數(shù)據(jù)信息,其中圖像的強度數(shù)據(jù)是DM3文件的核心數(shù)據(jù).
圖9 圖像數(shù)據(jù)的重要信息
一、DataType:
DataType為圖像數(shù)據(jù)存儲的類型,利用標(biāo)簽存之.其中:DataType的數(shù)據(jù)值的類型00000005=5,表示DataType的數(shù)據(jù)是采用ulong存儲的;DataType的數(shù)據(jù)值01000000=1(little-endian的存儲類型),該數(shù)值對應(yīng)的圖像數(shù)據(jù)類型為short型.
二、Dimensions:
Dimensions表明了DM3圖像的尺寸,即width和height. Dimensions是采用標(biāo)簽?zāi)夸浀男问絹泶鎯?,該目錄下包含了兩個標(biāo)簽分別存儲圖像的寬和高.從數(shù)據(jù)區(qū),我們可以讀取圖像的寬和高分別為 00040000=1024和 00040000=1024,即這幅圖像的尺寸是1024×1024.
三、PixelDepth:
像素深度,單位為bytes/pixel,數(shù)值區(qū)為02000000=2,可知此圖像的像素深度為每像素2字節(jié),恰與short字型的數(shù)據(jù)類型一致.
DM3為擴展名的電鏡圖像文件,其二進制存儲數(shù)據(jù)是由文件頭、中間數(shù)據(jù)與文件尾三部分組成,其中中間數(shù)據(jù)是以目錄與標(biāo)簽的形式存儲,是DM3文件的核心部分.目錄與標(biāo)簽的關(guān)系主要表現(xiàn)為:目錄與標(biāo)簽具有明確的標(biāo)識字節(jié)區(qū)分,分別為14h=20與15h=21;任一級目錄下可再包含子目錄與標(biāo)簽數(shù)據(jù),目錄也可為空;標(biāo)簽是存儲各類數(shù)據(jù)的唯一方式,標(biāo)簽內(nèi)的數(shù)據(jù)可具不同類型,其類型由本標(biāo)簽中的標(biāo)識字節(jié)給出.
根據(jù)本文對DM3文件的分析,可以在自編程序中方便地讀取DM3的數(shù)據(jù).另一方面,DM3文件作為一種成熟軟件的存儲格式,其規(guī)范的數(shù)據(jù)存儲規(guī)則也可作為其他數(shù)據(jù)存儲的一種參考.
〔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
本文是國家自然科學(xué)基金(No.60802003)以及華南農(nóng)業(yè)大學(xué)校長基金(No.4900-K07417)的資助項目