1. 程式人生 > 其它 >醫學影像實戰(一)--醫學影象格式(nii和dicom)

醫學影像實戰(一)--醫學影象格式(nii和dicom)

醫療影象是對解剖區域的內部結構和功能的一種表徵。它以二維畫素或者三維體素的形式呈現出來。對映到空間位置的數值是對取樣過程和重建過程的離散表徵。用來描述一個確定取樣模態視野的畫素數量是對解剖結構和功能的細節的表達。畫素表達的數值取決於成像模式、取樣協議、重建以及後續處理過程。

醫療資料的組成

醫療資料有四個關鍵的組成部分--畫素深度、光度解釋、元資料以及畫素資料。這幾部分決定了影象的大小和解析度

a. 畫素深度(Pixel Depth)或者位深度(Bit Depth)或者色深度(Color Depth)就是用來編碼每一畫素的資訊所用的位數。例如,一個 8 位的柵格會擁有從 0 到 255 這 256 種各不相同的數值。

b. 光度解釋具體化了畫素資料被解釋成正確的圖片展示的方式,如單色影象或者彩色影象。為了確定畫素值中是否儲存了彩色資訊,我們引入了每個畫素的樣本的概念,也就是大家都知道的通道數量。單色影象每個畫素只有一個樣本,圖片中並沒有儲存彩色資訊。我們使用從黑色到白色的灰度級別來展示這種圖片。灰度的數量明顯取決於用來儲存這個樣本的位數,在這種情況下,與畫素深度是一致的。像 X 光片、CT和磁共振這樣的放射醫療影像都有一個灰度光度解釋。核醫學影象都以彩色的形式展現,例如 PET 和 SPECT。

c. 元資料就是圖片中所描述的資訊。它看上去可能是很奇怪的,但是無論在什麼格式的檔案中,都存在一些超越畫素資料並且和影象相關的資訊。這類被稱作元資料的資訊通常都以頭部的形式儲在檔案的起始部分,它至少會包含以下資訊:影象矩陣的維度、空間精度、畫素深度以及光度解釋。

d. 畫素資料--這裡儲存的是畫素數值的大小。根據不同的資料型別,畫素資料可能以整型或者浮點型的型別儲存,使用表達資料所需的最少的資料位。

所以,影象的大小=頭部大小(包含元資料)+行×列×畫素深度×幀的數量

醫療影象的格式

放射生物影象中主要有六種格式--DICOM(醫療中的數字影象和通訊),NIFTI(神經影像學資訊科技計劃),PAR/REC(飛利浦 MRI 掃描格式),ANALYZE(Mayo 醫療成像)以及 NRRD(近乎原始光柵資料)和 MNIC 格式。
其中 DICOM 和 NIFTI 是最常用的格式。

DICOM 格式的基本知識

DICOM 代表的是醫療數字成像和通訊。DICOM 是由美國國家電氣製造商協會(NEMA)制定的標準。它定義了醫療成像領域中關於資訊處理、儲存、列印以及傳輸的標準。這些都是你在掃描器或者某家醫院的圖片歸檔和通訊系統(PACS)能夠立即得到的檔案格式。

它包括了檔案格式和能夠接收影象和 DICOM 格式的病人資料的實體之間使用 TCP/IP 進行通訊的協議。

一個 DICOM 檔案包含檔案頭部和同檔名的*.dcm 影象資料。檔案頭部的大小取決於它所提供的資訊的多少。檔案頭包含以下資訊:病人的 ID,病人的姓名,影象的模態以及其他資訊。它定義了幀的數量以及影象的精度。這些資訊會被影象瀏覽器在顯示影象時用到。對於一個單詞采樣,會有很多個 DICOM 檔案。

pydicom 是一個讀取 dicom 檔案的 python 庫

NIFTI 格式基本知識

Nifti 格式最初是為神經影像學發明的。神經影像資訊學技術計劃(NIFTI)將 NIfTI 格式預設為 ANALYZE7.5 格式的替代品。它最初的應用領域是神經影像,但是也被用在其他領域。這種格式的主要特點就是它包含兩個能夠將每個體素的索引(i,j,k)和它的空間位置(x,y,z)關聯起來的仿射座標。

DICOM 和 NIFTI 的區別

DICOM 和 NIfTI 這兩種格式的主要區別是:NIfTI 中的影象原始資料被儲存成了 3 維影象,而 dicom 一些 2 維的圖層。這就使得 NIFTI 更加適合那些應用在 DICOM 上的機器學習的方法,因為它是以 3D 影象建模的。處理一個單獨的 NIFTI 檔案要比處理成百上千個 dicom 檔案更加容易一些。與 DICOM 格式下的好多個檔案相比,NIFTI 格式下,每個 3d 影象只有兩個檔案。

格式轉換

dicom 轉換成 NIFTI

dicom2nii(https://www.nitrc.org/projects/dcm2nii/)是一個用來把 DICOM 轉換為 NIFTI 的工具。nibabel 是一個讀寫 nifiti 檔案的 python 庫。如果你你想把 DICOM 轉換成 NIFTI,可以使用自動轉換的工具(例如,dcm2nii)。python2 下的庫 dcmstack 可以將一系列的 DICOM 檔案堆疊成多維陣列。這些陣列能夠被寫成 NIFTI 的檔案,同時還加上一個可選的頭部擴充套件,這個標頭檔案包含原始 DICOM 檔案的所有元資料。python3 提供了一個新的用來完成這個格式轉換的庫--dicom2nifti。我建議讀者去檢視一下 nipy 這個專案。

其他格式相關內容可檢視引用文章

nii詳解

nii基礎

大部分醫學領域匯出dicom格式,但是太複雜了。很多時候,將dicom轉換為nifti格式也就是nii格式
一個NIFTI格式主要包含三部分:hdr, ext, img

hdr/header

這部分資料長度是固定的,當然不同版本可能規定的長度不同,但是同一版本的多個nii檔案是相同的。
header裡包含的資訊有:
--維度,x,y,z,單位是毫米。還有第四個維度,就是時間。這部分儲存的主要是四個數字。
--voxel size(體素大小):毫米單位的x,y,z大小。
--資料型別,一般是int16,這個精度不夠,最好使用double型別。
--Form和轉換矩陣,每一個Form都對應一個轉換矩陣。暫時不知道Form是什麼。

Extension

是自己可以隨意定義資料的部分,可以自己用。但是通用的軟體公司都無法使用這部分。

Image

儲存3D或者4D的影象資料

座標

dicom和nii格式定義了不同的方向,對於nii格式,座標原點在大腦中某個部位上,方向可以從圖上看出。

體素

轉換矩陣

轉換矩陣可以輕鬆分清影象的左右。轉換矩陣是一個4X4的矩陣,作用是將體素索引(i,j,k)轉換為空間位置(x,y,z)。具體使用方法是轉換矩陣乘以一個包含(i,j,k)的矩陣,就可以得到一個包含(x,y,z)的矩陣。
轉換矩陣用到了一些概念,在dicom格式上也是一樣的
詳情見引用文章

nii格式

字尾名為.nii的檔案格式又叫NIfTI-1,它改編自廣泛使用的ANALYZE™7.5格式。一些比NIfTI-1發展早的老軟體也可以相容NIfTI-1。
比ANALYZE 7.5新的特性如下:

--將體素索引(i,j,k)與空間位置(x,y,z)相關的仿射座標定義
--表示FMRI(核磁共振)的時空切片順序的程式碼;
--“完整”的8-128位資料型別集;
--在1-4維域上儲存向量值資料集的標準化方法;
--表示資料“含義”的程式碼;
--向標頭新增“擴充套件”資料的標準化方法;
--雙檔案(.hdr和.img)或單檔案(.nii)儲存;

還有很多。 目的是在FMRI資料分析軟體包之間的檔案交換級別上促進互操作性。
AFNI,BrainVoyager,FSL和SPM的作者都致力於支援這種格式的輸入和輸出。
注意:該規範現在稱為NIfTI-1.1。

使用深度學習進行醫療影像分析:檔案格式篇
nii格式和nii.gz格式詳解