醫療圖像是對解剖區域的內部結構和功能的一種表征。它以二維像素或者三維體素的形式呈現出來。映射到空間位置的數值是對采樣過程和重建過程的離散表征。用來描述一個確定采樣模態視野的像素數量是對解剖結構和功能的細節的表達。像素表達的數值取決於成像模式、采樣協議、重建以及后續處理過程。
醫療數據的組成
醫療數據有四個關鍵的組成部分--像素深度、光度解釋、元數據以及像素數據。這幾部分決定了圖像的大小和分辨率
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是一個用來把 DICOM 轉換為 NIFTI 的工具。nibabel 是一個讀寫 nifiti 文件的 python 庫。如果你你想把 DICOM 轉換成 NIFTI,可以使用自動轉換的工具(例如,dcm2nii)。python2 下的庫 dcmstack 可以將一系列的 DICOM 文件堆疊成多維數組。這些數組能夠被寫成 NIFTI 的文件,同時還加上一個可選的頭部擴展,這個頭文件包含原始 DICOM 文件的所有元數據。python3 提供了一個新的用來完成這個格式轉換的庫--dicom2nifti。我建議讀者去查看一下 nipy 這個項目。
也可以使用python讀取dicom文件后轉換為nii文件
其他格式相關內容可查看引用文章
nii詳解
nii基礎
大部分醫學領域導出dicom格式,但是太復雜了。很多時候,將dicom轉換為nifti格式也就是nii格式
一個NIFTI格式主要包含三部分:hdr, ext, img
hdr/header
這部分數據長度是固定的,當然不同版本可能規定的長度不同,但是同一版本的多個nii文件是相同的。
header里包含的信息有:
--維度,x,y,z,單位是毫米。還有第四個維度,就是時間。這部分儲存的主要是四個數字。
--voxel size(體素大小):毫米單位的x,y,z大小。(也就是spacing)
--數據類型,一般是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。