使用深度學(xué)習(xí)進(jìn)行醫(yī)療影像分析:文件格式篇
今年 3 月,英偉達(dá)的 GTC 2017 大會(huì)上展示了很多深度學(xué)習(xí)技術(shù)在醫(yī)療領(lǐng)域中的卓越工作。Ian GoodFellow、Jeremy Howard 以及其他的深度學(xué)習(xí)專家都分享了他們對(duì)深度學(xué)習(xí)的見(jiàn)解。頂尖的醫(yī)科學(xué)校(例如西奈山醫(yī)院、紐約大學(xué)、麻省綜合醫(yī)院等)以及肺癌 BOWL 的獲獎(jiǎng)?wù)?Kaggle 一起解釋了他們的建模策略?;仡櫸覀兊南盗形恼拢谏弦黄恼轮?,我們討論了在文本和圖像數(shù)據(jù)上的基礎(chǔ)深度學(xué)習(xí)。在本文中,我們會(huì)聚焦于分析醫(yī)療圖像和它們的格式。
這篇文章由三部分組成–醫(yī)療圖像和組成、醫(yī)療圖像格式,以及醫(yī)療圖像格式的轉(zhuǎn)換。本文的目標(biāo)就是組織知識(shí)來(lái)幫助我們實(shí)現(xiàn)最終目標(biāo)–用深度學(xué)習(xí)進(jìn)行醫(yī)療圖形的分析。
醫(yī)療圖像和組成
與這個(gè)主題相關(guān)的一個(gè)很好的資源來(lái)自意大利生物組織和生物圖像研究所(IBB)的 Michele Larobina 和 Loredana Murino 發(fā)表的論文。這個(gè)研究所是意大利國(guó)家研究委員會(huì)(NCR)的一部分。它是意大利最大的公共研究機(jī)構(gòu)。另一個(gè)可供參考的資源是這篇論文:「Working with the DICOM and NIfTI Data Standards in R」
那么,醫(yī)療圖像是什么呢?醫(yī)療圖像是對(duì)解剖區(qū)域的內(nèi)部結(jié)構(gòu)和功能的一種表征。它以二維像素或者三維體素的形式呈現(xiàn)出來(lái)。映射到空間位置的數(shù)值是對(duì)采樣過(guò)程和重建過(guò)程的離散表征。用來(lái)描述一個(gè)確定采樣模態(tài)視野的像素?cái)?shù)量是對(duì)解剖結(jié)構(gòu)和功能的細(xì)節(jié)的表達(dá)。像素表達(dá)的數(shù)值取決于成像模式、采樣協(xié)議、重建以及后續(xù)處理過(guò)程。
醫(yī)療數(shù)據(jù)的組成
醫(yī)療數(shù)據(jù)的組成
如圖所示:醫(yī)療數(shù)據(jù)有四個(gè)關(guān)鍵的組成部分–像素深度、光度解釋、元數(shù)據(jù)以及像素?cái)?shù)據(jù)。這幾部分決定了圖像的大小和分辨率。
像素深度(Pixel Depth)或者位深度(Bit Depth)或者色深度(Color Depth)就是用來(lái)編碼每一像素的信息所用的位數(shù)。例如,一個(gè) 8 位的柵格會(huì)擁有從 0 到 255 這 256 種各不相同的數(shù)值。
參考:http://desktop.arcgis.com/en/arcmap/10.3/manage-data/raster-and-images/bit-depth-capacity-for-raster-dataset-cells.htm
光度解釋具體化了像素?cái)?shù)據(jù)被解釋成正確的圖片展示的方式,如單色圖像或者彩色圖像。為了確定像素值中是否存儲(chǔ)了彩色信息,我們引入了每個(gè)像素的樣本的概念,也就是大家都知道的通道數(shù)量。單色圖像每個(gè)像素只有一個(gè)樣本,圖片中并沒(méi)有存儲(chǔ)彩色信息。我們使用從黑色到白色的灰度級(jí)別來(lái)展示這種圖片?;叶鹊臄?shù)量明顯取決于用來(lái)存儲(chǔ)這個(gè)樣本的位數(shù),在這種情況下,與像素深度是一致的。像 X 光片、CT 和磁共振這樣的放射醫(yī)療影像都有一個(gè)灰度光度解釋。核醫(yī)學(xué)圖像都以彩色的形式展現(xiàn),例如 PET 和 SPECT。
元數(shù)據(jù)就是圖片中所描述的信息。它看上去可能是很奇怪的,但是無(wú)論在什么格式的文件中,都存在一些超越像素?cái)?shù)據(jù)并且和圖像相關(guān)的信息。這類被稱作元數(shù)據(jù)的信息通常都以頭部的形式儲(chǔ)在文件的起始部分,它至少會(huì)包含以下信息:圖像矩陣的維度、空間精度、像素深度以及光度解釋。
像素?cái)?shù)據(jù)–這里存儲(chǔ)的是像素?cái)?shù)值的大小。根據(jù)不同的數(shù)據(jù)類型,像素?cái)?shù)據(jù)可能以整型或者浮點(diǎn)型的類型存儲(chǔ),使用表達(dá)數(shù)據(jù)所需的最少的數(shù)據(jù)位。
所以,圖像的大小=頭部大小(包含元數(shù)據(jù))+行×列×像素深度×幀的數(shù)量
醫(yī)療圖像的格式
放射生物圖像中主要有六種格式–DICOM(醫(yī)療中的數(shù)字圖像和通信),NIFTI(神經(jīng)影像學(xué)信息技術(shù)計(jì)劃),PAR/REC(飛利浦 MRI 掃描格式),ANALYZE(Mayo 醫(yī)療成像)以及 NRRD(近乎原始光柵數(shù)據(jù))和 MNIC 格式。
截止 2017 年 5 月的醫(yī)療圖像格式
其中 DICOM 和 NIFTI 是最常用的格式。
DICOM 格式的基本知識(shí)
DICOM 代表的是醫(yī)療數(shù)字成像和通信。DICOM 是由美國(guó)國(guó)家電氣制造商協(xié)會(huì)(NEMA)制定的標(biāo)準(zhǔn)。它定義了醫(yī)療成像領(lǐng)域中關(guān)于信息處理、存儲(chǔ)、打印以及傳輸?shù)臉?biāo)準(zhǔn)。這些都是你在掃描儀或者某家醫(yī)院的圖片歸檔和通信系統(tǒng)(PACS)能夠立即得到的文件格式。
它包括了文件格式和能夠接收?qǐng)D像和 DICOM 格式的病人數(shù)據(jù)的實(shí)體之間使用 TCP/IP 進(jìn)行通信的協(xié)議。
一個(gè) DICOM 文件包含文件頭部和同文件名的*.dcm 圖像數(shù)據(jù)。文件頭部的大小取決于它所提供的信息的多少。文件頭包含以下信息:病人的 ID,病人的姓名,圖像的模態(tài)以及其他信息。它定義了幀的數(shù)量以及圖像的精度。這些信息會(huì)被圖像瀏覽器在顯示圖像時(shí)用到。對(duì)于一個(gè)單詞采樣,會(huì)有很多個(gè) DICOM 文件。
來(lái)源:https://www.leadtools.com/sdk/medical/dicom-spec1
pydicom 是一個(gè)讀取 dicom 文件的 python 庫(kù)??梢詤⒖急疚牡谝徊糠值氖纠a。
用深度學(xué)習(xí)的方法進(jìn)行醫(yī)療圖像分析
深度學(xué)習(xí)可以分析圖像和視頻,并將分析結(jié)果用于很多種應(yīng)用中,例如無(wú)人駕駛……
oro.dicom 是一個(gè)可以讀取 dicom 數(shù)據(jù)的 R 語(yǔ)言包。
上圖所示是用 oro.dicom 包來(lái)讀取一個(gè)已經(jīng)解壓了的 DICOM 文件。
NIFTI 格式基本知識(shí)
Nifti 格式最初是為神經(jīng)影像學(xué)發(fā)明的。神經(jīng)影像信息學(xué)技術(shù)計(jì)劃(NIFTI)將 NIfTI 格式預(yù)設(shè)為 ANALYZE7.5 格式的替代品。它最初的應(yīng)用領(lǐng)域是神經(jīng)影像,但是也被用在其他領(lǐng)域。這種格式的主要特點(diǎn)就是它包含兩個(gè)能夠?qū)⒚總€(gè)體素的索引(i,j,k)和它的空間位置(x,y,z)關(guān)聯(lián)起來(lái)的仿射坐標(biāo)。
nibabel 是一個(gè)能夠讀取 nifti 文件的 Python 庫(kù),oro.nifti 是一個(gè)能夠讀取 nifti 文件的 R 語(yǔ)言庫(kù)。
DICOM 和 NIFTI 的區(qū)別
DICOM 和 NIfTI 這兩種格式的主要區(qū)別是:NIfTI 中的圖像原始數(shù)據(jù)被存儲(chǔ)成了 3 維圖像,而 dicom 一些 2 維的圖層。這就使得 NIFTI 更加適合那些應(yīng)用在 DICOM 上的機(jī)器學(xué)習(xí)的方法,因?yàn)樗且?3D 圖像建模的。處理一個(gè)單獨(dú)的 NIFTI 文件要比處理成百上千個(gè) dicom 文件更加容易一些。與 DICOM 格式下的好多個(gè)文件相比,NIFTI 格式下,每個(gè) 3d 圖像只有兩個(gè)文件。
Nrrd 格式的基本知識(shí)
靈活的 Nrrd 格式包含一個(gè)單獨(dú)的頭文件和若干個(gè)可以被結(jié)合在一起或者分開(kāi)的圖像文件。Nrrd 頭文件為科學(xué)可視化和圖像處理準(zhǔn)確地表征了 N 維光柵信息。國(guó)家醫(yī)療圖像計(jì)算聯(lián)盟(NA-MIC)開(kāi)發(fā)了一種使用 NRRD 格式來(lái)表征擴(kuò)散加權(quán)圖像(DWI)體積和擴(kuò)散張量圖像(DTI)的方法。為了目視確認(rèn)張量的方向和期望的神經(jīng)解剖學(xué)的結(jié)構(gòu)一致,Nrrd DWI 和 Nrrd DTI 數(shù)據(jù)能夠被讀取為 3D 切片。
通用的 NRRD 文件格式(包括數(shù)據(jù)和文件頭):
參考: http://teem.sourceforge.net/nrrd/format.html#general.1
MINC 格式的基本知識(shí)
MINS 代表的是醫(yī)療圖像 NetCDF 工具包。
Minc2 從 NetCDF 變換成了 HDF5。HDF5 支持無(wú)限制多的數(shù)據(jù)類型,并且它就是為靈活高效的 I/O 和大容量的復(fù)雜數(shù)據(jù)而設(shè)計(jì)的。這些附加的特征有助于 Minc2 處理大量的復(fù)雜數(shù)據(jù)集。
從研究論文中得到的一些關(guān)于這幾個(gè)格式的對(duì)比:
參考:Medical Image Formats, Springer Publication 2014. 醫(yī)療圖像格式
格式轉(zhuǎn)換
dicom 轉(zhuǎn)換成 NIFTI
dicom2nii(https://www.nitrc.org/projects/dcm2nii/)是一個(gè)用來(lái)把 DICOM 轉(zhuǎn)換為 NIFTI 的工具。nibabel 是一個(gè)讀寫 nifiti 文件的 python 庫(kù)。如果你你想把 DICOM 轉(zhuǎn)換成 NIFTI,可以使用自動(dòng)轉(zhuǎn)換的工具(例如,dcm2nii)。python2 下的庫(kù) dcmstack 可以將一系列的 DICOM 文件堆疊成多維數(shù)組。這些數(shù)組能夠被寫成 NIFTI 的文件,同時(shí)還加上一個(gè)可選的頭部擴(kuò)展,這個(gè)頭文件包含原始 DICOM 文件的所有元數(shù)據(jù)。python3 提供了一個(gè)新的用來(lái)完成這個(gè)格式轉(zhuǎn)換的庫(kù)–dicom2nifti。我建議讀者去查看一下 nipy 這個(gè)項(xiàng)目。
DICOM 到 MINC 的轉(zhuǎn)換
腦成像中心(BIC)的 MINC 團(tuán)隊(duì)開(kāi)發(fā)了將 DICOM 轉(zhuǎn)換為 MINC 格式的工具。這個(gè)工具是用 C 語(yǔ)言開(kāi)發(fā)的,它在 GitHub 上的地址為:https://github.com/BIC-MNI/minc-tools/tree/master/conversion/dcm2mnc
NIfTI 或 ANALYZE 轉(zhuǎn)換成 MINC
腦成像中心(BIC)的 MINC 團(tuán)隊(duì)還開(kāi)發(fā)了將 NIfTI 或 ANALYZE 轉(zhuǎn)換成 MINC 格式圖像的工具。這個(gè)程序叫做 nii2mnc。包括 nii2mnc 的很多格式轉(zhuǎn)換工具在這里可以看到:https://github.com/BIC-MNI/minc-tools/tree/master/conversion。
總結(jié)
我們可以看到,目前已存在幾種用于存儲(chǔ)醫(yī)療圖像并且可以用在深度學(xué)習(xí)中的文件格式。我們的目標(biāo)是使用最佳的文件格式,該格式能夠讓我們得到卷積神經(jīng)網(wǎng)絡(luò)(CNN)所需的所有特征,以實(shí)現(xiàn)準(zhǔn)確的預(yù)測(cè)。