MINC/軟體開發/MINC1 檔案格式參考
MINC(醫學影像 NetCDF)1.0 檔案格式被設計為醫學影像資料的規範,建立在 NetCDF(網路通用資料格式)標準之上。
本文件旨在透過定義 MINC 檔案使用的基本變數、屬性和約定來描述這種分層結構的細節。雖然此資訊專門適用於 MINC 1.0 的實現,但其中大部分資訊預計將適用於 MINC 2.0。主要的改變將是由於從 NetCDF 到 HDF5(分層資料格式)的轉變而導致的結構化物件的適應或消除。MINC 2.0 可能需要對此規範進行大量的擴充套件和澄清。
本文件中的大部分資訊摘自 Peter Neelin 的《MINC 程式設計師參考手冊》。
注意:在本文件中,文字 MINC 變數名、屬性名和預定義值將使用固定寬度字型。
MINC 將醫學影像的維度與標準文字名稱相關聯,例如 'xspace' 或 'time'。這種關聯既有助於澄清對每個維度的解釋,也用於指定共享同一座標空間的變數之間的關係。維度的長度在檔案建立時定義。
NetCDF 對維度的模型非常簡單,每個維度只與一個名稱、一個數字識別符號和一個長度相關聯。為了擴充套件此模型以表示與 MINC 維度物件相關聯的全部屬性集,MINC 依賴於“維度變數”的概念,即與相應維度物件具有相同名稱的變數。
雖然專用應用程式可以並且偶爾確實定義額外的維度,但 MINC 定義了以下標準維度名稱
xspace- 空間軸,定義為從患者左側增加到患者右側。yspace- 空間軸,定義為從患者後部增加到患者前部。zspace- 空間軸,定義為從患者下部增加到患者上部。time- 時間軸。xfrequency- 空間頻率軸。yfrequency- 空間頻率軸。zfrequency- 空間頻率軸。tfrequency- 時間頻率軸。vector_dimension- 用於向量場分量的軸。如果存在,此維度應是image變數變化最快的維度。與其他維度不同,此維度不與維度變數相關聯。
MINC 變數分為四類。第一類是組類,它定義用於儲存實際影像資料和支援資訊的資料物件和名稱。第二類是變數屬性類,它包含限定另一個變數的資料,例如,透過指定另一個變數資料的範圍。第三類和第四類分別是維度類和維度寬度類,它們用於指定 MINC 檔案中維度的屬性。
rootvariable- 此變數屬於組類,僅用於結構目的。它構成 MINC 變數層次結構的基礎。image-image變數屬於組類。它是實際包含 MINC 檔案中影像資料的變數,因此它是使用任何型別和維度來定義的,以表示影像。按照慣例,MINC 認為image變數的第一個空間維度是“切片”維度,任何其他空間維度都被認為是“影像”維度。影像變數是 MINC 檔案中唯一強制存在的變數。
image-min-image-min變數屬於變數屬性類。如果啟用按切片縮放影像資料,則此變數將包含 64 位浮點資料,它提供每個切片的實際範圍的最低值。此變數和image-max變數的維數將對應於image變數的維數,省略“影像”維度和向量維度(如果使用)。例如,對於典型的 fMRI 資料,image-min變數將是一個 2D 陣列,其維度為time和第一個宣告的空間維度。請注意,image-min具有較低的維數是合法的。例如,該變數可以是一個標量,用於指定單個全域性最大實際值。image-max-image-max是image-min變數的對應變數。它的用法和結構直接類似,但它包含每個資料切片的實際資料範圍的最大值。study- 此變數屬於組類。它不包含任何有用的資料,僅用於對包含有關此影像所屬研究的資訊的屬性進行分組。由於該變數不包含資料,因此型別無關緊要。patient- 與study變數類似,此變數屬於組類,也不包含任何資料。它用於對指定患者識別和特徵的屬性進行分組。acquisition-acquisition變數屬於組類。與study和patient變數類似,acquisition變數從不包含有用的資料,僅用於對包含有關影像採集引數、模態等資訊屬性進行分組。xspace- 屬於維度類的變數,它對指定 X 軸的屬性進行分組。yspace- 屬於維度類的變數,它對指定 Y 軸的屬性進行分組。zspace- 屬於維度類的變數,它對指定 Z 軸的屬性進行分組。time- 屬於維度類的變數,它對指定時間軸的屬性進行分組。xfrequency- 屬於維度類的變數,它對指定空間頻率軸的屬性進行分組。yfrequency- 屬於維度類的變數,它對指定空間頻率軸的屬性進行分組。zfrequency- 屬於維度類的變數,它對指定空間頻率軸的屬性進行分組。tfrequency- 屬於維度類的變數,它對指定時間頻率軸的屬性進行分組。xspace-width- 屬於維度寬度類的變數,它對指定沿 X 軸的樣本寬度的屬性進行分組。yspace-width- 屬於維度寬度類的變數,它對指定沿 Y 軸的樣本寬度的屬性進行分組。zspace-width- 屬於維度寬度類的變數,它對指定沿 Z 軸的樣本寬度的屬性進行分組。time-width- 屬於維度寬度類的變數,它對指定沿時間軸的樣本寬度的屬性進行分組。xfrequency-width- 屬於維度寬度類的變數,它對指定沿空間頻率軸的樣本寬度的屬性進行分組。yfrequency-width- 屬於維度寬度類的變數,它對指定沿空間頻率軸的樣本寬度的屬性進行分組。zfrequency-width- 屬於維度寬度類的變數,它對指定沿空間頻率軸的樣本寬度的屬性進行分組。tfrequency-width- 類別為dimension的變數,它對指定樣本沿時間頻率軸的寬度進行分組。
層次結構
[edit | edit source]在 MINC 1.0 中,group 和 var-attribute 變數可以被認為存在於一個樹狀結構的層次結構中。層次結構的底部位於 rootvariable。這個變數僅僅存在於構成層次結構樹的根節點。image、acquisition、patient 和 study 變數形成了層次結構的下一層。在 image 變數之下是 image-min 和 image-max 變數。
可以根據需要在此層次結構中新增其他非標準變數。
因為 NetCDF 是一種非層次格式,所以 MINC 使用 {\tt parent} 和 children 屬性來實現此層次結構。在實際應用中,MINC 1.0 格式非常鬆散地依賴此層次結構,如果有的話。但是,MINC 2.0 基於一種本質上是層次化的格式 (HDF5),它將使用並擴充套件此層次結構。
屬性
[edit | edit source]在 MINC 中,屬性用於指定有關物件的附加資訊。這些屬性可以被認為屬於三大類:由 NetCDF 標準本身定義的屬性、在定義 MINC 檔案組織中起結構性作用的屬性以及包含與檔案關聯的實際資料或引數的屬性。
NetCDF 屬性可以是全域性的(針對檔案)或區域性的(針對特定變數)。MINC 規範中僅使用兩個全域性屬性,history 和 title。這兩個字串屬性都是 NetCDF 規範的一部分。所有其他 MINC 屬性都屬於特定變數。
標準 NetCDF 屬性使用
[edit | edit source]這些屬性由 NetCDF 標準本身定義。
units- 指定變數資料的單位(如果適用)的字串。單位應與 UCAR udunits 庫相容。在 MINC 1.0 中,此屬性通常僅出於資訊目的而包含,不會被 MINC 庫程式碼解釋。long_name- 提供變數的可讀文字描述的字串。包含在內是為了提供資訊。valid_range- 包含兩個數字的向量,它指定了此變數的最小值和最大值。超出此範圍的值必須視為丟失或未初始化。在 MINC 中,向量中兩個值的順序並不重要。
如果定義了 valid_min 或 valid_max 屬性,則不得定義此屬性。
這些屬性應被認為是 MINC image 變數的強制性屬性,除非變數使用預設範圍,該範圍被定義為(可能是帶符號或無符號的)整數型別的完整範圍,或者對於浮點型別,該範圍被定義為 [0.0, 1.0] 區間。它們不是其他任何 MINC 變數所必需的。
valid_max- 標量數字,它給出變數允許的最大值。請注意,valid_max和valid_range的存在是互斥的。
valid_min- 標量數字,它給出變數允許的最小值。請注意,valid_max和valid_range的存在是互斥的。
_FillValue這是一個標量數值,它給出用於填充任何未顯式寫入或超出定義的資料有效範圍的值的值。
history- 全域性字串屬性,用於審計跟蹤。這是一個字元陣列,其中包含每個修改資料集的程式呼叫的行。所有 MINC 和 NetCDF 應用程式應為每個處理步驟附加一行,包含:日期、時間、使用者名稱、程式名稱和命令引數。此屬性應被認為是強制性的。
title- 一個全域性字串屬性,它提供了對 MINC 檔案內容的描述。在實踐中,這是可選的,並且很少使用。
MINC 結構屬性
[edit | edit source]許多 MINC 屬性用於描述變數的型別以及變數之間的關係。
從某種意義上說,這些變數被認為是“結構性的”,因為它們不會傳達有關儲存在 MINC 檔案中的醫學影像的任何有用資訊,而是用於支援 MINC 格式本身。
每個屬性都應被認為是任何 MINC 標準變數的強制性屬性,以下情況除外:{\tt signtype} 屬性僅對整數型別變數是必需的,parent 和 children 屬性僅對類別為 group 或 var-attribute 的變數是必需的。它們不用於類別為 dimension 或 dimension-width 的變數。
vartype- 標識變數型別(或類別)的字串。它必須是 'group________'、'{\tt dimension____}'、'dim-width____或 'var_attribute' 之一。varid- 標識變數與 MINC 規範之間關係的字串。所有 MINC 標準變數都應將此屬性設定為 'MINC standard variable'。非標準變數可以忽略此屬性或將其設定為其他字串值。signtype- 由於 MINC 與 NetCDF 不同,它區分帶符號和無符號整數型別,因此此屬性是定義儲存整數型別資料的變數的格式所必需的。唯一合法的值為字串 '{\tt signed__}' 或字串 'unsigned'。對於 8 位整數,預設值為unsigned,對於所有其他整數型別,預設值為signed__。parent- 用名稱標識此變數的父變數的字串。如果字串為空(長度為零),則該變數位於層次結構的根部。children- 被視為此變數的子變數的名稱列表。該列表以換行符分隔。version- 標識此變數的版本的字串。在 MINC 1.0 中,此字串始終針對 MINC 標準變數設定為 'MINC Version\ \ \ \ 1.0'。
MINC 資訊屬性
[edit | edit source]MINC 中的資訊屬性可以是文字字串或數字。
一些字串屬性是“自由格式的”,可以包含任何值,而不對格式和長度施加限制。其他字串屬性假定具有特定格式。還有一些其他字串屬性必須包含多個知名值中的一個。在這種情況下,知名字串將用下劃線字元填充到最長合法值的長度。
另一種型別的字串屬性是“指標”或“變數”屬性。這些屬性採用 '{\tt --->{\it var-name}}' 的形式。一個典型的例子是 image 變數的 '{\tt image-max}' 屬性,它在大多數 MINC 檔案中包含的值是 '--->image-max',表示 image-max 屬性值儲存在同名變數中。
數值屬性可以是整數格式或浮點格式。MINC 包含屬性訪問例程,這些例程將在檢索時自動將值轉換為所需型別。
image 變數屬性
[edit | edit source]image-max- 包含儲存影像實際值最大值的變數名稱的字串“指標”屬性。在大多數情況下,變數的名稱與屬性的名稱相同。
image-min- 與image-max相似,但指向影像的 {\tt image-min} 變數。
complete- 一個布林屬性(值為 'true_' 或 'false'),指示變數是否已完整寫入。這可以用於檢測在處理影像時寫入影像時發生的程式故障:在開始時將complete設定為 {\tt false},並在所有資料都已處理並寫入檔案後將其設定為true_。
study 變數屬性
[edit | edit source]這些屬性與 study 變數分組,以實現名稱空間組織。它們是根據 ACR-NEMA 約定建模的。所有這些屬性都是可選的,並且沒有定義預設值。
start_time- 以 'YYYYMMDD HHMMSS.FFFFFF' 格式給出研究開始時間和日期的字串,其中 'FFFFFF' 是分數秒的字串表示形式。如果不需要,可以省略整個時間表示形式或分數秒。start_year- 給出研究開始日期的年份的數字。start_month- 給出研究開始日期的月份(1-12)的數字。start_day- 給出研究開始日期的日期(1-31)的數字。start_hour- 給出研究開始時間的時數(0-23)的數字。start_minute- 給出研究開始時間的分鐘數(0-59)的數字。start_seconds- 給出研究開始時間的秒數(如果需要,包括分數秒)的數字。modality- 表示所用成像模式的字串,其中之一:PET__、SPECT、GAMMA、MRI__、MRS__、MRA__、CT___、DSA__、DR___或label。manufacturer- 指定成像裝置製造商名稱的字串。device_model- 指定成像裝置型號的字串。institution- 標識進行研究的機構的字串。department- 標識進行研究的部門的字串。station_id- 標識生成影像的特定成像系統的字串。referring_physician- 給出患者主治醫師姓名的字串。attending_physician- 給出執行檢查的醫師姓名的字串。radiologist- 給出解釋檢查的放射科醫師姓名的字串。operator- 給出成像裝置操作員姓名的字串。admitting_diagnosis- 接受診斷的字串描述。procedure- 所用程式的字串描述。study_id- 標識研究的字串。
這些屬性出於名稱空間組織的目的與 patient 變數分組。它們以 ACR-NEMA 患者識別約定為模型。所有這些屬性都是可選的,並且沒有定義預設值。
full_name- 指定患者全名的字串。other_names- 給出患者其他姓名的字串。identification- 指定患者識別資訊的字串。other_ids- 給出患者其他識別資訊的字串。birthdate- 以 'YYYYMMDD' 格式指定患者出生日期的字串。sex- 指定患者性別的字串:'male__'、'female' 或 'other_'。age- 給出患者年齡(以年計)的數字。weight- 給出患者體重(以公斤計)的數字。size- 給出患者身高或身長(以米計)的數字。address- 給出患者地址的字串。insurance_id- 給出患者保險計劃 ID 的字串。
這些屬性儲存有關採集的引數。所有這些屬性都是可選的,並且沒有定義預設值。
protocol- 影像採集協議的字串描述。scanning_sequence- 獲取資料型別的字串描述(例如,對於 MR - IR、SE、PS 等)。repetition_time- 給出脈衝序列之間時間(以秒計)的數字。echo_time- 給出 90 度脈衝的中心和自旋迴波產生的中心之間的時間(以秒計)。inversion_time- 倒置 RF 脈衝的中心到檢測縱向磁化量的 90 度脈衝的中心之間的時間(以秒計)。num_averages- 在更改任何引數之前,重複給定脈衝序列的次數。imaging_frequency- 成像核的進動頻率(以赫茲計)。imaged_nucleus- 指定在成像頻率下共振的核的字串。radionuclide- 指定給藥同位素的字串。contrast_agent- 標識造影劑或推注劑的字串。radionuclide_halflife放射性核素的半衰期(以秒計)。tracer- 標識用注射的放射性核素標記的示蹤劑的字串。injection_time- 給出注射時間(和日期)的字串。injection_year- 給出注射年份的整數。injection_month- 給出注射月份(1-12)的整數。injection_day- 給出注射日期(1-31)的整數。injection_hour- 給出注射小時(0-23)的整數。injection_minute給出注射分鐘(0-59)的整數。injection_seconds- 給出注射秒的浮點數。injection_length- 給出注射持續時間的數字(以秒計)。injection_dose- 注射的放射性核素或造影劑的總劑量(以dose_units指定的單位計)。dose_units- 給出劑量單位的字串。injection_volume- 給出注射體積(以毫升計)的數字。injection_route- 標識注射給藥途徑的字串。
本節介紹與維度或維度寬度變數相關的屬性。
spacing- 字串,其值為 'regular__' 表示規則間隔的網格,或 'irregular' 表示樣本的間隔不規則。如果該屬性的值為 'irregular,則維度變數必須是隨同名維度的向量變化的向量。如果該屬性缺失,應假定其值為regular__。可用於維度和維度寬度變數。
step- 表示規則間隔樣本之間步長的數字。該值可以為負數以反轉方向(例如,指定xspace從患者右側執行到左側)。如果間隔為irregular,則該值可以是平均步長。如果該屬性缺失,應假定其值為 1.0。僅適用於維度變數。
start- 指定維度索引 0 的座標的數字。如果該屬性缺失,應假定其值為 0.0。僅適用於維度變數。
spacetype- 標識座標空間型別的字串。目前是 'native___'(掃描器的座標系)、'talairach_'(大腦影像的標準化座標系)或 'callosal__'(另一個標準化座標系)之一。如果該屬性缺失,應假定 {\tt spacetype} 為原生。僅適用於維度變數。
alignment- 指示座標相對於每個樣本的位置的字串,其中之一為 'start_'、'{\tt centre}' 或 'end___'。如果該屬性缺失,則假定它對於time維度為start_,對於空間維度為centre。僅適用於維度變數。
direction_cosines- 包含 3 個元素的數字向量,給出軸的方向餘弦。儘管軸被標記為 x、y 和 z,但它們實際上可能具有顯著不同的方向 - 此屬性允許精確指定相對於真實軸的方向。向量應該是歸一化的單位向量。
如果這些屬性不存在,則假定它們具有以下預設值
對於 xspace:[1, 0, 0],對於 yspace:[0, 1, 0],對於 zspace:[0, 0, 1]
direction_cosines 屬性僅適用於維度變數。
width- 數字屬性,給出規則取樣維度的所有樣本的全寬半最大寬度。它可以用於不規則寬度以指定平均寬度。如果該屬性缺失,應假定其值為 1.0。僅適用於維度寬度變數。
filtertype- 指定卷積濾波器形狀的字串。目前,可以是 'square____'、'{\tt gaussian__}' 或 'triangular' 之一。如果該屬性缺失,應假定其值為square____。僅適用於維度寬度變數。
在所有此處描述的變數、維度和屬性中,只有 'image' 變數及其關聯的維度是定義有效 MINC 檔案所必需的。
任何缺失的屬性都假定具有預設值或未定義。
雖然 MINC 指定了許多物件的結構和解釋,但典型的 MINC 程式將能夠優雅地處理包含非標準結構的 MINC 檔案。這給 MINC 程式帶來了兩項要求。首先,MINC 程式必須能夠在包含非標準變數和屬性的檔案上正常執行。其次,MINC 程式必須將非標準屬性和變數從輸入檔案複製到結果輸出檔案,而無需更改。
此行為允許新增任意變數和/或屬性以用於擴充套件標準 MINC 名稱空間的資訊目的。
Russell K.~Rew et al, 'NetCDF User's Guide for C' [online], Unidata Program Center, Boulder, CO, 1997 (http://www.unidata.ucar.edu/packages/netcdf/guidec/). 'HDF5: A New Generation of HDF' [online], National Center for Supercomputing Applications, University of Illinois, Urbana-Champaign, IL 2003 (http://hdf.ncsa.uiuc.edu/HDF5/). Peter Neelin, 'MINC Programmer's Reference Manual' [online], Montreal Neurological Institute, Montreal, QC, 1993 American College of Radiology, National Electrical Manufacturers Association (ACR-NEMA) Standards Publication Number 300-1985, {\bf Digital Imaging and Communications}, National Electrical Manufacturers Association (NEMA), Washington, DC, 1986.
Robert D. Vincent