跳轉到內容

MINC/軟體開發/MINC 2.0 檔案格式參考

來自華夏公益教科書

MINC 2.0 檔案格式

[編輯 | 編輯原始碼]

MINC (醫學影像 NetCDF) 1.0 檔案格式被設計為醫學影像資料的檔案格式,它基於 NetCDF (網路通用資料格式) 標準 NETCDF。MINC 專為醫學影像研究界設計,提供了一種模態中立的方式來儲存醫學影像以及豐富且靈活的輔助資料集合。

雖然 MINC 1.0 檔案格式在過去十年中被證明既強大又實用,但其使用者也發現了一些侷限性。特別是,其中三個侷限性推動了 MINC 2.0 的設計,這是 MINC 演進的下一步。

第一個侷限性是當前版本的 NetCDF 不支援大於 2 GB 的檔案。這對於較新的高解析度功能和解剖影像應用來說是一個重要的侷限性。

第二個是需要允許單個醫學影像檔案包含多個解析度級別的資料。例如,這對網路影像檢視應用非常有用。HDF5 的 HDF5 層次結構組織和支援的更大檔案尺寸有助於實現此功能。

第三個動機是需要內部透明的資料壓縮。MINC 1.0 庫允許使用外部程式(如 gzip、bzip2 等)壓縮檔案。不幸的是,外部壓縮要求即使只檢查影像的一小部分,也要解壓縮整個檔案。此外,壓縮必須作為建立檔案後的顯式後處理步驟應用。這些問題的影響隨著檔案大小的增加而增加。

為了解決這些問題和其他問題,MINC 開發團隊選擇實現對 HDF5 (層次結構資料格式 5) 的支援。與 NetCDF 相比,HDF5 提供了對複雜檔案結構、層次結構名稱空間、結構化和列舉資料型別以及內部壓縮的增強支援。

本文件旨在透過定義這些檔案使用的特定變數、屬性、組織和約定,來描述 MINC 2.0 檔案格式的細節,這些約定作為通用 HDF5 格式的專門化實現。本文件中的許多資訊摘自 Peter Neelin 撰寫的《MINC 程式設計師參考手冊》。

注意:在本文件中,字面 MINC 變數名稱、屬性名稱和預定義值以固定寬度字型顯示。

座標和維度

[編輯 | 編輯原始碼]

MINC 2.0 將醫學影像的維度與助記文字名稱(如 xspacetime)相關聯。這種關聯既有助於闡明每個維度的解釋,也有助於指定共享相同座標空間的變數之間的關係。維度長度在檔案建立時定義,並且在檔案寫入儲存介質後無法更改。

MINC 2.0 座標系

[編輯 | 編輯原始碼]

與 MINC 1.0 一樣,MINC 2.0 定義了“體素”和“世界”空間座標系。體素座標類似於陣列索引:體素座標值是非負整數,範圍從零到沿軸的資料點數量減 1,原點固定在影像的一個角上。

相反,“世界”座標系反映了影像的真實世界單位和空間方向。MINC 世界座標是使用維度變數屬性 direction_cosinesstepstart 從體素座標派生的。方向餘弦向量是為每個空間維度定義的單位向量。使用 cij 表示軸在 j 方向上的分量 i,則軸 i 的餘弦向量 ci 可以寫成

ci =( cix, ciy, ciz)

使用 stepi 表示空間軸 istep 屬性的值,並類似地定義 starti 表示 start 屬性,則該軸上相鄰元素之間的向量 vi

vi = stepi * ci

體素座標中的原點 (0,0,0) 位於世界座標 (ox,oy,oz),如下所示:

體素空間中的任何齊次座標 (vx,vy,vz, 1) 可以使用以下縮放、旋轉和平移變換轉換為其在世界空間中的等效座標

將這些矩陣相乘,得到以下公式

從世界空間到體素空間的逆變換可以使用以下公式進行

雖然 MINC 2.0 檔案可以儲存任何方向的資料,但 MINC 2.0 遵循醫學成像的慣例,定義世界空間座標相對於患者的方向。慣例是,正的 x 軸從患者的左側向右側增加,正的 y 軸從患者的後方向前增加,正的 z 軸從患者的下部向上增加。

維度變數

[編輯 | 編輯原始碼]

為了表示與 MINC 維度物件相關聯的完整屬性集,MINC 2.0 定義了一個“維度變數”,該變數與相應的維度物件具有相同的名稱。在 MINC 2.0 中,這些變數與所有其他變數一樣,都作為 HDF5“資料集”實現。

MINC 維度可以具有規則不規則間隔。規則取樣維度以恆定間隔取樣,而 不規則取樣維度以軸上的任意位置取樣。

由於規則維度以恆定間隔取樣,因此它們完全由它們的原點和步長大小定義。因此,規則維度的維度變數不包含任何有意義的資料。

對於不規則維度,維度變數的值必須是一個向量,其長度等於沿維度取樣的點數。向量在給定索引處的值給出該取樣點處的維度值。

將 HDF5 資料空間與 MINC 維度相關聯

[編輯 | 編輯原始碼]

NetCDF 定義了一個命名維度抽象,它允許將維度及其長度與文字符號相關聯。然後可以使用該維度來定義任意數量的 NetCDF 變數。MINC 1.0 依賴於此功能來連結相關物件的維度。不幸的是,HDF5 沒有實現可比的維度抽象。相反,所有 HDF5 資料物件(資料集和屬性)都與稱為“資料空間”的 HDF5 結構相關聯。HDF5 中的資料空間可以是兩種類別之一,“標量”或“簡單”。簡單資料空間由維度長度的有序列表組成。HDF5 中的資料空間不是全域性實體,不能分配符號名稱——每個資料物件都與其自己的資料空間相關聯。

由於資料空間的結構本身不足以允許軟體發現相關資料物件維度之間的關係,因此 MINC 2.0 定義了一個dimorder 屬性,該屬性使這些關係顯式。每個非標量資料物件都必須有一個關聯的dimorder 屬性。

dimorder 屬性的值是一個字串,它由與維度關聯的助記符名稱的有序、逗號分隔的列表組成。這為 NetCDF 的命名維度提供了一個足夠(儘管不完美)的替代品。


標準維度名稱

[編輯 | 編輯原始碼]

MINC 為以下維度名稱定義了標準解釋。專用應用程式可以隨意使用其他名稱定義替代或補充維度。


  • xspace - 空間軸,定義為從患者的左側向右側增加。
  • yspace - 空間軸,定義為從患者的後方向前增加。
  • zspace - 空間軸,定義為從患者的下部向上增加。
  • time - 時間軸。
  • xfrequency - 空間頻率軸。
  • yfrequency - 空間頻率軸。
  • zfrequency - 空間頻率軸。
  • tfrequency - 時間頻率軸。
  • vector_dimension - 用於向量或複數資料的軸。如果存在,則必須是最後一個(即變化最快的)維度。


變數

[edit | edit source]

MINC 變數分為四類。第一類是 group 類,它適用於那些用於儲存實際影像資料和支援資訊的資料物件和名稱。第二類是 var-attribute 類,它包含用於限定另一個變數的資料,例如,透過指定另一個變數資料的範圍。第三類和第四類是 dimension 類和 dimension-width 類,它們指定 MINC 檔案中維度的屬性。

為了保持一致性,所有 MINC 變數都作為 HDF5 資料集實現,包括那些可能不包含有用資料的變數。

在 MINC 2.0 中,imageimage-maximage-min 變數不再像 MINC 1.0 中那樣是單個物件。一個檔案可以包含任意數量的這三個變數的集合,對應於全解析度資料和可能與影像相關的任何低解析度“縮圖”資料。

標準 MINC 變數名稱

[edit | edit source]
  • image - image 變數屬於 group 類。它是實際包含 MINC 檔案中影像資料的變數,因此它使用任何型別和維度來表示影像。按照慣例,MINC 將 image 變數的第一個空間維度視為“切片”維度,任何其他空間維度都被視為“影像”維度。image 變數是唯一一個必須出現在 MINC 檔案中的變數。
  • image-min - image-min 變數屬於 var-attribute 類。如果啟用每個切片的影像資料縮放,則此變數必須包含 64 位浮點資料,這些資料提供每個切片的實際範圍的最低值。image-minimage-max 變數的維度對應於 image 變數的前一到兩個維度。例如,在一個維度順序為 timezspaceyspacexspace 的 fMRI 資料集中,image-min 變數可能是一個具有 timezspace 維度的二維陣列。image-min 的維度更低是可以接受的。例如,該變數可以是沿 time 維度的一維陣列,或者它可以是一個標量來指定全域性最小實際值。
  • image-max - image-maximage-min 變數的對應變數,只是它包含每個資料切片的實際資料範圍的最大值。
  • study - 此變數屬於 group 類。它不包含任何有用資料,只用於對包含有關此影像所屬研究的資訊的那些屬性進行分組。由於該變數不包含任何資料,因此型別無關緊要。
  • patient - 與 study 變數一樣,此變數屬於 group 類並且不包含任何資料。它用於對指定患者身份和特徵的屬性進行分組。
  • acquisition - acquisition 變數屬於 group 類。與 studypatient 變數一樣,acquisition 變數從不包含有用資料,只用於對包含有關影像採集引數、模態等的資訊的那些屬性進行分組。
  • xspace - 屬於 dimension 類,它對指定 X 軸的屬性進行分組。
  • yspace - 屬於 dimension 類,它對指定 Y 軸的屬性進行分組。
  • zspace - 屬於 dimension 類,它對指定 Z 軸的屬性進行分組。
  • time - 屬於 dimension 類,它對指定時間軸的屬性進行分組。
  • xfrequency - 屬於 dimension 類,它對指定空間頻率軸的屬性進行分組。
  • yfrequency - 屬於 dimension 類,它對指定空間頻率軸的屬性進行分組。
  • zfrequency - 屬於 dimension 類,它對指定空間頻率軸的屬性進行分組。
  • tfrequency - 屬於 dimension 類,它對指定時間頻率軸的屬性進行分組。
  • xspace-width - 屬於 dimension-width 類,它對指定沿 X 軸樣本寬度的屬性進行分組。
  • yspace-width - 屬於 dimension-width 類,它對指定沿 Y 軸樣本寬度的屬性進行分組。
  • zspace-width - 屬於 dimension-width 類,它對指定沿 Z 軸樣本寬度的屬性進行分組。
  • time-width - 屬於 dimension-width 類,它對指定沿時間軸樣本寬度的屬性進行分組。
  • xfrequency-width - 屬於 dimension-width 類,它對指定沿空間頻率軸樣本寬度的屬性進行分組。
  • yfrequency-width - 屬於 dimension-width 類,它對指定沿空間頻率軸樣本寬度的屬性進行分組。
  • zfrequency-width - 屬於 dimension-width 類,它對指定沿空間頻率軸樣本寬度的屬性進行分組。
  • tfrequency-width - 屬於 dimension-width 類,它對指定沿時間頻率軸樣本寬度的屬性進行分組。


層次結構

[edit | edit source]

MINC 2.0 廣泛使用 HDF5 的層次結構功能。HDF5 允許建立“組”,這大致對應於 UNIX 目錄,以及“資料集”,這大致對應於 UNIX 檔案。HDF5 組是一個容器,它可以包含任意數量的其他組或資料集。

檔案中的所有 HDF5 物件都被視為“根”組的子物件,類似於 UNIX 檔案系統中的根目錄。

為了允許 MINC 2.0 資料與單個 HDF5 檔案中的其他資料結構共存,並幫助將 MINC 2.0 檔案與其他 HDF5 檔案區分開來,在 HDF5 根組中建立了一個名為 minc-2.0 的 MINC 組。此組應該是 MINC 程式在 HDF5 根組中建立的唯一條目。所有其他 MINC 物件都在 minc-2.0 組內(或“下方”)建立。

所有 MINC 2.0 維度變數都放置在一個名為 dimensions 的子組中。這些維度變數被認為是對檔案中的所有 MINC 物件全域性的。

MINC 2.0 資訊變數(studypatient 等)放置在一個名為 info 的子組中。此子組旨在作為與掃描、模態、研究等相關的所有輔助資料的儲存庫。

MINC 2.0 影像變數放置在一個名為 image 的子組中。對於檔案中儲存的每個解析度,必須有一個名為 012 等等的子組。全解析度資料儲存在組 0 中,並且每個連續整數對應於所有影像維度的 2 倍縮減。在這些子組中的每一箇中,都有三個資料集:imageimage-minimage-max

這種層次結構的主要理由是為了預測 MINC 檔案格式的未來擴充套件。其他類別的 資料可以儲存在一個與 image 組並列的組中。例如,可以新增一個 geometryobjects 組來包含與影像相關聯或從影像派生的幾何資料。這些幾何物件可能與影像共享維度。 圖 1:MINC2.0 層次結構

屬性

[edit | edit source]

屬性是輔助資料物件,通常大小有限,與 MINC 2.0 檔案中的另一個物件相關聯。這些屬性通常由文字或數字資料組成。在 MINC 中,屬性用於指定有關變數或檔案的附加資訊。

MINC 屬性可以被認為屬於三類:應用於整個 MINC 檔案本身的屬性,在定義 MINC 檔案組織方面起結構作用的屬性,以及包含與特定組或資料物件相關聯的資料或引數的屬性。

某些字串屬性是“自由格式”,可以包含任何值,而不會對格式和長度有任何限制。其他字串屬性被認為具有特定的格式。仍然其他字串屬性必須包含多個眾所周知的 值之一。在這種情況下,眾所周知的字串使用下劃線字元填充到最長合法值的長度。採用此約定是為了避免 NetCDF 對增加現有屬性長度施加的限制。由於 HDF5 中取消了此限制,因此未來的屬性無需遵循此約定。

數值屬性可以是整數或浮點格式。MINC 庫提供屬性訪問例程,這些例程在檢索時會自動將值轉換為所需的型別。

HDF5 屬性可以附加到任何組或資料集。在 MINC 2.0 中,兩個屬性,historytitle,附加到 minc-2.0 組。所有其他 MINC 屬性都是特定變數的區域性屬性。

MINC 2.0 全域性屬性

[edit | edit source]

這兩個屬性,每個屬性都由一個文字字串組成,適用於整個 MINC 檔案。因此,它們附加到 minc-2.0 組。

  • history - 一個 全域性 字串屬性,用於實現審計跟蹤。這是一個字元陣列,對修改過資料集的每個程式呼叫都有一個行。所有 MINC 應用程式都應該為每個處理步驟追加包含以下內容的行:日期、時間、使用者名稱、程式名稱和命令引數。此屬性應被視為強制性的。
  • title - 一個 全域性 字串屬性,它提供對 MINC 檔案內容的描述。實際上,這是可選的,並且很少使用。


MINC 2.0 結構屬性

[編輯 | 編輯原始碼]

多個 MINC 屬性用於描述變數型別以及變數之間的關係。

這些變數被認為是“結構性”的,因為它們不傳達有關 MINC 檔案中儲存的醫學影像的任何有用資訊,而是用於支援 MINC 格式本身。

comments 外,每個屬性都應被視為任何 MINC 標準變數的必需屬性。

  • comments - 字串,提供有關變數或組的描述性資訊,僅供參考。
  • dimorder - 字串,標識與資料物件關聯的符號維度。此屬性是一個有序的、用逗號分隔的這些維度名稱列表。所有非標量 MINC 變數都必須定義此屬性。
  • vartype - 字串,標識變數的類別,為 group________dimension____dim-width____var_attribute 之一。
  • varid - 字串,標識變數與 MINC 規範的關係。所有 MINC 標準變數都應將其設定為“MINC standard variable”。非標準變數可以忽略此屬性或將其設定為其他字串值。
  • version - 字串,標識此變數的版本。這指的是變數的格式,而不是檔案的格式本身。在 MINC 2.0 中,此字串始終設定為 MINC Version 1.0,用於 MINC 標準變數。此值用於與 MINC 1.0 軟體向後相容。

MINC 2.0 資訊屬性

[編輯 | 編輯原始碼]

這些屬性在提供有關影像資料的支援資訊方面發揮資訊作用。

MINC 中的資訊屬性可以是文字字串或數字。

image 變數屬性

[編輯 | 編輯原始碼]

這些屬性提供有關 MINC 2.0 檔案中包含的影像資料的狀態和型別的其他資訊。

  • complete - 布林屬性(值為 true_false),指示變數是否已完整寫入。這可用於在寫入影像時檢測程式故障,因為在處理時 complete 被設定為 false,並且在所有資料都被處理並寫入檔案後被設定為 true_
  • valid_range - 包含兩個數字的向量,指定此變數的最小值和最大有效值。此範圍之外的值必須被視為缺失或未初始化。在 MINC 中,向量中兩個值的順序無關緊要。此屬性應被視為 MINC image 變數的必需屬性,除非變數使用預設範圍,預設範圍被定義為(可能為有符號或無符號)整數型別的完整範圍,或浮點型別的區間 (0.0, 1.0)。對於任何其他 MINC 變數,它不是必需的。

study 變數屬性

[編輯 | 編輯原始碼]

這些屬性提供有關收集影像的研究的輔助資訊。這些屬性與 study 變數分組,用於名稱空間組織目的,並且基於 ACR-NEMA 約定 ACRNEMA88。所有這些屬性都是可選的,並且沒有定義預設值。


  • admitting_diagnosis - 收治診斷的字串描述。
  • attending_physician - 字串,給出執行檢查的醫生的姓名。
  • department - 字串,標識進行研究的部門。
  • device_model - 字串,指定成像裝置的型號。
  • institution - 字串,標識進行研究的機構。
  • manufacturer - 字串,指定成像裝置製造商的名稱。
  • modality - 字串,表示使用的成像方式,通常為:PET__SPECTGAMMAMRI__MRS__MRA__CT___DSA__DR___label 之一。
  • operator - 字串,給出成像裝置操作員的姓名。
  • procedure - 字串,描述所採用的程式。
  • radiologist - 字串,給出解釋檢查的放射科醫生的姓名。
  • referring_physician - 字串,給出患者的主治醫生的姓名。
  • start_year - 數字,給出研究開始日期的年份。
  • start_day - 數字,給出研究開始日期的日(1-31)。
  • start_hour - 數字,給出研究開始時間的時(0-23)。
  • start_minute - 數字,給出研究開始時間的分(0-59)。
  • start_month - 數字,給出研究開始日期的月(1-12)。
  • start_seconds - 數字,給出研究開始時間的秒(如果需要,包括秒的幾分之一)。如果不需要,可以省略整個時間表示或秒的幾分之一。
  • start_time - 字串,給出研究開始的時間和日期,格式為 YYYYMMDD HHMMSS.FFFFFF,其中 FFFFFF 是秒的幾分之一的字串表示。如果不需要,可以省略整個時間表示或秒的幾分之一。
  • station_id - 字串,標識生成影像的特定成像系統。
  • study_id - 字串,標識研究。


patient 變數屬性

[編輯 | 編輯原始碼]

這些屬性提供有關患者或受試者的識別資訊,與 patient 變數分組,用於名稱空間組織目的。它們基於 ACR-NEMA ACRNEMA88 約定,用於患者識別。所有這些屬性都是可選的,並且沒有定義預設值。

  • address - 字串,給出患者的地址。
  • age - 數字,給出患者的年齡(以年為單位)。
  • birthdate - 字串,以 YYYYMMDD 格式指定患者的出生日期。
  • full_name - 字串,指定患者的全名。
  • identification - 字串,指定患者的識別資訊。
  • insurance_id - 字串,給出患者的保險計劃 ID。
  • other_ids - 字串,給出患者的其他識別資訊。
  • other_names - 字串,給出患者的其他姓名。
  • sex - 字串,指定患者的性別:male__femaleother_
  • size - 數字,給出患者的身高或長度(以米為單位)。
  • weight - 數字,給出患者的體重(以公斤為單位)。


acquisition 變數屬性

[編輯 | 編輯原始碼]

這些屬性儲存有關採集的引數。所有這些屬性都是可選的,並且沒有定義預設值。


  • contrast_agent - 字串,標識對比劑或推動劑。
  • dose_units - 字串,給出劑量單位。
  • echo_time - 數字,給出 90 度脈衝的中間與自旋迴波產生的中間之間的時間(以秒為單位)。
  • imaged_nucleus - 字串,指定在成像頻率下產生共振的原子核。
  • imaging_frequency - 成像原子核的進動頻率(以赫茲為單位)。
  • injection_day - 整數,給出注射的日(1-31)。
  • injection_hour - 整數,給出注射的時(0-23)。
  • injection_length - 數字,給出注射的時間持續時間(以秒為單位)。
  • injection_minute 整數,給出注射的分(0-59)。
  • injection_month - 整數,給出注射的月(1-12)。
  • injection_seconds - 浮點數,給出注射的秒。
  • injection_time - 字串,給出注射的時間(和日期)。
  • injection_year - 整數,給出注射的年。
  • injection_dose - 注射的放射性核素或對比劑的總劑量(以 dose_units 指定的單位為單位)。
  • injection_route - 字串,標識注射的給藥途徑。
  • injection_volume - 數字,給出注射的體積(以毫升為單位)。
  • inversion_time - 從反轉射頻脈衝的中間到檢測縱向磁化量的 90 度脈衝的中間之間的時間(以秒為單位)。
  • num_averages - 在更改任何引數之前重複給定脈衝序列的次數。
  • protocol - 字串,描述影像採集的協議。
  • radionuclide - 字串,指定給藥的同位素。
  • radionuclide_halflife - 放射性核素的半衰期(以秒為單位)。
  • repetition_time - 數字,給出脈衝序列之間的時間(以秒為單位)。
  • scanning_sequence - 字串,描述採集的資料型別(例如,對於 MR - IR、SE、PS 等)。
  • tracer - 字串,標識注射的用放射性核素標記的示蹤劑。


維度變數屬性

[編輯 | 編輯原始碼]

本節介紹與維度或維度寬度變數相關的屬性。


  • alignment - 字串,指示座標相對於每個樣本的位置,為 start_centreend___ 之一。當第一次建立變數時,此屬性對於 time 維度設定為 start_,對於空間維度設定為 centre。僅適用於維度變數。注意: 此屬性不會被 MINC 工具或庫使用,因此應被視為僅用於資訊目的。
  • direction_cosines - 包含 3 個元素的數字向量,給出軸的指向餘弦。雖然軸被標記為 x、y 和 z,但它們實際上可能具有顯著不同的方向 - 此屬性允許精確地指定相對於真實軸的方向。向量應為歸一化單位向量。

如果這些屬性不存在,則假定它們具有以下預設值

對於 xspace:(1, 0, 0),對於 yspace:(0, 1, 0),對於 zspace:(0, 0, 1)

direction_cosines 屬性僅適用於維度變數。

  • length - 指定此維度長度(以樣本數計)的整數。
  • filtertype - 指定卷積濾波器形狀的字串。目前,可以是 square____gaussian__triangular 之一。如果缺少此屬性,則應假定值為 square____。僅適用於維度寬度變數。
  • spacetype - 識別座標空間型別的字串。目前為 native___(掃描器的座標系)、talairach_(腦影像的標準化座標系)或 callosal__(另一個標準化座標系)之一。如果缺少此屬性,則應假定 spacetypenative___。僅適用於維度變數。
  • spacing - 字串,值為 regular__ 表示規則間隔網格,值為 irregular 表示樣本間隔不規則。如果此屬性的值為 irregular,則維度變數必須是隨同名維度的向量變化。如果缺少此屬性,則應假定值為 regular__。可用於維度和維度寬度變數。
  • start - 指定維度索引 0 的世界座標的數字(在應用餘弦變換後)。如果缺少此屬性,則應假定值為 0.0。僅適用於維度變數。
  • step - 表示規則間隔樣本間步長的數字。此值可能為負數以反轉方向(例如,指定 xspace 從病人右側執行到左側)。如果間隔為 irregular,則該值應為平均步長。如果缺少此屬性,則應假定值為 1.0。僅適用於維度變數。
  • units - 指定維度的單位的字串(如果適用)。單位應與 UCAR udunits 庫相容。在 MINC 2.0 中,此屬性通常僅用於提供資訊,不會被 MINC 庫程式碼解釋。
  • width - 數值屬性,用於給出規則取樣維度的所有樣本的半峰全寬。它可以用於不規則寬度以指定平均寬度。如果缺少此屬性,則應假定值為 1.0。僅適用於維度寬度變數。


功能細節

[編輯 | 編輯原始碼]

資料型別

[編輯 | 編輯原始碼]

與當前可用的 NetCDF 版本不同,HDF5 支援結構化(記錄)和列舉資料型別。

結構化和複雜資料型別

[編輯 | 編輯原始碼]

在此版本規範中,MINC 2.0 支援的唯一結構化資料型別是多維陣列。這允許 MINC 2.0 應用程式實現向量或張量資料型別,並反過來允許將這些資料型別作為“額外”維度訪問,如果需要的話。

此規範定義了四種“複雜”資料型別:16 位有符號整數、32 位有符號整數、32 位浮點數和 64 位浮點數。在所有情況下,實數值都位於給定體素中的虛數值之前。

任何可能發生的整數到實數的縮放都將針對複雜或結構化資料型別的每個成員進行統一計算。縮放不適用於浮點複數。

此規範沒有定義任何向量和張量實現的細節,這些結構對於當前目的而言是特定於應用程式的。

MINC 2.0 繼續支援透過使用 vector_dimension 維度來支援向量和複雜資料的另一種機制。

列舉資料型別

[編輯 | 編輯原始碼]

列舉資料型別將符號名稱分配給資料型別所取的每個合法值。此功能最明顯的應用是針對所謂的“帶標籤”影像,例如,組織分類演算法的輸出。

此功能將使用 HDF5 庫對列舉資料型別的本機支援來實現。HDF5 庫允許任何整數型別(有符號或無符號)用作列舉的基本型別。

MINC 2.0 庫僅對標準整數和自定義列舉資料型別之間的範圍檢查和轉換提供最小的支援。

目前,此規範沒有定義任何標準列舉資料型別。程式設計師可以以最適合應用程式的方式定義自定義列舉。在規範的未來版本中,我們可能會定義一些常見列舉的實現和解釋(例如,對於組織型別)。


壓縮和塊結構

[編輯 | 編輯原始碼]

MINC 檔案可以自由使用 HDF5 1.6.0 庫支援的任何形式的壓縮。這包括兩種無失真壓縮方法:“gzip”壓縮(一種修改後的 Lempel-Ziv 方法)和“szip”(一種由 R.F.Rice 開發的無失真壓縮方法 Rice79)。壓縮通常對應用程式程式設計師不可見,儘管程式設計師可以查詢檔案的壓縮狀態。

壓縮在 HDF5 檔案中以每個資料集為基礎應用,因此可以壓縮某些資料集,而將其他資料集保持為未壓縮狀態。為了簡化,MINC 2.0 庫將對檔案中的所有影像資料應用相同的壓縮演算法,並且不會支援其他資料集的壓縮。

在 HDF5 中啟用壓縮時,壓縮資料集必須使用 chunked 佈局儲存。分塊資料集儲存在一系列塊中,這些塊具有與資料集相同的維度。這種儲存方法可能會提高某些影像處理演算法的平均資料訪問時間,因此 MINC 2.0 庫允許指定分塊,而無需壓縮。

多解析度影像

[編輯 | 編輯原始碼]

MINC 2.0 中的多解析度影像使用“多縮圖”方法實現,其中一個或多個低解析度影像派生自全解析度影像。每個連續縮圖影像的尺寸將相對於下一高解析度影像減少一半。這意味著,忽略儲存開銷,縮圖影像最多應增加全解析度資料的 14.29%(1/7)。

如前所述,多解析度影像儲存在一系列單獨的 imageimage-maximage-min 變數中,稱為 resolution groups。全解析度資料儲存在路徑 /minc-2.0/image/0/image 下,半解析度資料儲存在路徑 /minc-2.0/image/1/image 下,依此類推。

只有全解析度影像可以被應用程式直接修改。庫將重新計算 MINC 2.0 檔案中定義的所有解析度組的降解析度資料,無論是顯式地響應程式設計師的請求,還是隱式地響應檔案關閉操作。

在 MINC 2.0 的初始實現中,縮圖影像體素將使用下一高解析度影像的體素的簡單平均值來計算。但是,MINC 2.0 庫將提供擴充套件機制,供程式設計師實現和使用更復雜的縮圖計算(如果需要)。

使用多種解析度完全是可選的。MINC 庫僅重新計算已定義解析度組條目的低解析度影像。並非所有中間解析度組都需要存在才能使檔案有效。除了強制性的全解析度資料之外,MINC 2.0 檔案還可以定義路徑 /minc-2.0/image/3/image 下的單個 1/8 解析度縮圖,庫必須僅重新計算並存儲該解析度。

所有縮圖影像必須具有與全解析度影像相同的資料型別和維度順序。

必須對定義的所有解析度使用和遵守 complete 屬性。此屬性用於確定每個影像的有效性。

最小 MINC 2.0 檔案

[編輯 | 編輯原始碼]

在所有這裡描述的變數、維度和屬性中,只有 image 變數及其關聯的維度是定義有效 MINC 檔案所必需的。

但是,所有 MINC 2.0 檔案都應至少包含一個空組框架,該框架包含 minc-2.0 組和三個主要子組 imageinfodimensions

任何缺失的屬性都假定具有預設值或未定義。

非標準物件

[編輯 | 編輯原始碼]

雖然 MINC 指定了許多物件的結構和解釋,但 MINC 程式必須以優雅的方式處理包含非標準結構的 MINC 檔案。這對 MINC 程式提出了兩項要求。首先,MINC 程式必須在包含非標準變數和屬性的檔案上正確執行。其次,MINC 程式必須將非標準屬性和變數從輸入檔案複製到結果輸出檔案,而不進行更改。

這種行為允許新增任意變數和/或屬性,這些變數和/或屬性擴充套件了標準 MINC 名稱空間。作為一個小例子,這在資料庫應用程式中已經證明非常有用,在資料庫應用程式中,數字簽名被新增到 MINC 檔案中,以對資料提供冗餘檢查。

強烈建議將任何其他或非標準資訊屬性放在層次結構的 info 分支下。存在特定程式設計介面來支援此約定。

已棄用關鍵字

[編輯 | 編輯原始碼]

MINC 1.0 規範中定義的一些物件名稱在 MINC 2.0 規範中不再使用。但是,為了避免潛在的錯誤或混淆,這些名稱應被視為“保留”名稱,並且在未來的應用程式中不得重新定義。在某些情況下,庫可能會解釋或模擬這些關鍵字,以提供與 MINC 1.0 的向後相容性。

  • rootvariable - 被 HDF5 層次結構取代。
  • parent - 被 HDF5 層次結構取代。
  • children - 被 HDF5 層次結構取代。
  • signtype - HDF5 定義了有符號和無符號型別。
  • _FillValue - HDF5 定義了用於控制資料集“填充值”的顯式機制。


Robert D. Vincent

Leila Baghdadi(修復了損壞的連結並在 2012/10/19 上傳了修改後的層次結構影像)

Vladimir S. FONOV(修復了之前修復者遺留的未修復問題)

Tarek Sherif(修復了座標轉換方程)

華夏公益教科書