基于深度學習的醫(yī)學圖像分析(一)

譯者簡介:ASCE1885抗楔, 《Android 高級進階》作者鲸湃。
原文鏈接:https://medium.com/@taposhdr/medical-image-analysis-with-deep-learning-i-23d518abf531

photo by 小蟲

基于深度學習技術對圖像和視頻進行分析讽坏,并將其應用到自動駕駛溃列,無人機等各種領域中,已經成為新的研究前沿履澳。最近的一篇研究論文 “A Neural Algorithm of Artistic Style”(https://arxiv.org/abs/1508.06576)嘶窄,展示了如何將一個藝術家的風格經過轉換后,應用到一張圖像中距贷,從而生成一張具備這個風格的新的圖像柄冲。其他的論文例如 “Generative Adversarial Networks”(GAN,生成式對抗網絡忠蝗,https://arxiv.org/abs/1406.2661) 和 “Wasserstein GAN”(https://arxiv.org/pdf/1701.07875) 為我們開發(fā)能夠基于輸入數(shù)據(jù)自我學習創(chuàng)造新數(shù)據(jù)的模型鋪平了道路现横。從而開啟了半監(jiān)督學習的時代并為未來的無監(jiān)督學習鋪平道路。

這些研究領域著重點仍然在通用圖像上阁最,而我們的目標是將這些研究成果應用到醫(yī)學圖像中戒祠,以幫助醫(yī)療保健行業(yè)。我們會從基礎知識開始介紹速种。本文首先以圖像處理的基礎知識為切入點姜盈,接著介紹醫(yī)學圖像數(shù)據(jù)格式,最后以可視化的方式對醫(yī)學數(shù)據(jù)進行展示配阵。在下一篇文章馏颂,我們將深入介紹一些卷積神經網絡算法并使用 Keras(https://keras.io/) 來預測肺癌。

圖像處理基礎(基于 Python)

雖然有很多圖像處理函數(shù)庫棋傍,但 OpenCV(open computer vision救拉,https://opencv.org/)以其龐大的社區(qū)支持和對 C++,Java 和 Python 的可用性支持瘫拣,已然成為主流的選擇亿絮。我個人喜歡在 Jupyter notebook(http://jupyter.org/index.html)中使用 OpenCV。

OpenCV 的安裝有兩種方式:

  • 命令行中執(zhí)行命令:pip install opencv-python
  • 從 opencv.org 下載源碼進行安裝
Installing opencv.png

現(xiàn)在打開 Jupyter notebook 并確定你導入了 cv2 函數(shù)庫,同時你還需要導入 numpy 和 matplotlib 函數(shù)庫從而在 Jupyter 中可以看到繪制出來的圖像派昧。

1-tW_9HZ6IQrLTbnPA3t-_CA.png

接著使用下面的代碼黔姜,讓我們來看看在 Jupyter 中是否可以打開一張圖片并顯示它。

Example image load through OpenCV.png

基本的人臉檢測

接下來讓我們做一些有趣的實驗斗锭,例如人臉檢測地淀。人臉檢測中我們將使用一個開源的 xml stump-based 20x20 的 gentle adaboost 正臉檢測器,它是由 Rainer Lienhart 所創(chuàng)建的岖是。關于 Haar 級聯(lián)檢測的細節(jié)可以參見這篇文章:https://docs.opencv.org/trunk/d7/d8b/tutorial_py_face_detection.html帮毁。

1--Fu-eV90aMfkqTIOgoKHYQ.png

關于更多使用 OpenCV 進行圖像處理的例子可以參見這份文檔:http://docs.opencv.org/trunk/d6/d00/tutorial_py_root.html。讀者可以自己嘗試其他的例子〔虺牛現(xiàn)在我們已經了解基本的圖像處理烈疚,接下來我們來認識下醫(yī)學圖像數(shù)據(jù)格式。

醫(yī)學圖像數(shù)據(jù)格式

醫(yī)學圖像遵循醫(yī)學數(shù)字成像和通信(DICOM)標準(https://en.wikipedia.org/wiki/DICOM)聪轿,實現(xiàn)圖像數(shù)據(jù)的存儲和交換爷肝。該標準的第一個版本發(fā)布于 1985 年,從那以后經歷了幾次改進陆错,這個標準使用了自定義的文件格式和通信協(xié)議灯抛。

  • 文件格式:所有患者的醫(yī)學圖像都以 DICOM 文件格式進行存儲。這個格式包含關于患者的 PHI(protected health information音瓷,https://en.wikipedia.org/wiki/Protected_health_information)信息对嚼,例如姓名,性別绳慎,年齡纵竖,以及其他圖像相關信息比如捕獲并生成圖像的設備信息,醫(yī)療的一些上下文相關信息等杏愤。醫(yī)學圖像設備生成 DICOM 文件靡砌,醫(yī)生使用 DICOM 閱讀器(能夠顯示 DICOM 圖像的計算機軟件)閱讀并對圖像中發(fā)現(xiàn)的問題進行診斷。
  • 通信協(xié)議:DICOM 通信協(xié)議用于檢索存檔中的包含檢查信息的圖像數(shù)據(jù)珊楼,并將這個數(shù)據(jù)還原到工作站上予以顯示通殃。所有連接到醫(yī)院網絡中的醫(yī)學圖像應用都使用 DICOM 協(xié)議來進行信息的交換,這些信息大部分是 DICOM 圖像數(shù)據(jù)厕宗,當然也會包含一些患者和流程相關的信息邓了。DICOM 通信協(xié)議還包含更高級的網絡命令,可以用來控制和跟蹤治療媳瞪,調度流程,報告狀態(tài)和分擔醫(yī)生和影像設備之間的工作量照宝。

關于 DICOM 標準細節(jié)可以參見這個博客:http://dicomiseasy.blogspot.com/蛇受。

解析 DICOM 文件

pydicom(https://pypi.python.org/pypi/pydicom) 是一個用來解析 DICOM 圖像的很棒的 python 函數(shù)庫。本節(jié)我們來看看如何利用它在 Jupyter notebook 中渲染 DICOM 圖像厕鹃。

使用命令 pip install pydicom 安裝 pydicom兢仰,安裝完成后乍丈,打開 Jupyter notebook,如下代碼所示導入 dicom 函數(shù)庫和其他需要的一些函數(shù)庫:

1-i53SlB3laMgXl5WqJZ-rJA.png

同時我們也需要用到像 pandas把将,scipy轻专,skimage,mpl_toolkit 等函數(shù)庫來進行數(shù)據(jù)的處理和解析察蹲。

1-dxp_yfg6cqS4ThlcEPRjQw.png

網上有大量免費可用的 DICOM 數(shù)據(jù)集请垛,但這里有一些可以幫助你入門的數(shù)據(jù)集:

從上面這些地方可以下載 DICOM 文件懒鉴,下載完成后可以使用 jupyter notebook 進行加載诡挂,代碼如下所示:

1-7qcA2uS6F7d6DhJ7aDdM3A.png

接著將 DICOM 圖像加載進一個列表中:

1-cmCmmsXOY_JI5j68yh7knA.png

步驟一:在 Jupyter 中進行 DICOM 圖像的基本閱讀

1-Xo7zQWzK_slqM4xu0Yy95A.png

第一行代碼我們加載數(shù)組中第一張 DICOM 文件,并將其引用保存在變量 RefDs 中临谱,進而利用它獲取元數(shù)據(jù)璃俗,它的文件名位于 lstFilesDCM 列表的開頭。

1-C9gmJeO1sTYYkpy7AO1b8Q.png

我們接著沿著 x悉默,y 和 z 笛卡爾坐標軸計算三維 NumPy 數(shù)組的總尺寸城豁,等于:(一張切片中像素行的數(shù)量)x (一張切片中像素列的數(shù)量)x(切片的數(shù)量)。最后使用 DICOM 文件中的 PixelSpacingSliceThickness 屬性計算三個坐標軸中像素的間距(spacing)抄课。我們將數(shù)組的尺寸存放在 ConstPixelDims 變量中唱星,將像素間距存放在 ConstPixelSpacing 中。

1-y0cDTlZL_0cnkM3CrcMZ8A.png
1-y2fdN31UKpKTW59kBiER1g.png
1-LsJa3-_iotHkAO_uHhswJg.png

步驟二:深入 DICOM 文件格式的細節(jié)

CT 掃描中的測量單位是亨氏單位(Hounsfield Unit跟磨,HU)间聊,它是用來衡量放射密度的。為了得到精確的測量結果抵拘,CT 掃描儀需要經過嚴格的校準哎榴。關于 CT 掃描測量的細節(jié)內容可以在這里找到:https://web.archive.org/web/20070926231241/http://www.intl.elsevierhealth.com/e-books/pdf/940.pdf

每一個像素都被賦予了一個數(shù)值(CT 值),它是包含在相應體素(voxel)中的所有衰減值的平均值尚蝌。這個數(shù)字是和水的衰減值相比較得到的迎变,并按比例進行顯示,單位是 Hounsfield units(HU)飘言,為紀念亨斯菲爾德爵士衣形,以他的名字命名。

這個測量方式將水的衰減值設定為零(HU)姿鸿。CT 取值范圍一般是 2000 HU谆吴,雖然一些現(xiàn)代掃描儀有更大的范圍能達到 4000 HU。每個數(shù)值代表一種灰度陰影般妙,這個光譜的兩端分別是 +1000(白色)和 -1000(黑色)纪铺。

1-HNn99mQnjnkgmbolXYZNVg.png

有些掃描儀有柱面掃描邊界,但輸出的圖像是正方形的碟渺。在這些邊界之外的像素將被設置為固定的值 -2000鲜锚。

1-KeJXyh0vPFOj_DxKBc1prA.jpeg

第一步通常是將這些值設置為 0。接下來苫拍,把這些值乘以重新調節(jié)過的斜率芜繁,再加上截距(通常方便的存儲在掃描得到的元數(shù)據(jù)中),就得到以 HU 為單位的取值绒极。

在下一篇文章中骏令,我們將使用 Kaggle 的肺癌數(shù)據(jù)集和并使用 Keras 提供的卷積神經網絡。我們將在本文介紹的知識基礎上進行下一篇文章的講解垄提。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末榔袋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子铡俐,更是在濱河造成了極大的恐慌凰兑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件审丘,死亡現(xiàn)場離奇詭異吏够,居然都是意外死亡,警方通過查閱死者的電腦和手機滩报,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門锅知,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脓钾,你說我怎么就攤上這事售睹。” “怎么了可训?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵昌妹,是天一觀的道長生真。 經常有香客問我,道長捺宗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任川蒙,我火速辦了婚禮蚜厉,結果婚禮上,老公的妹妹穿的比我還像新娘畜眨。我一直安慰自己昼牛,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布康聂。 她就那樣靜靜地躺著贰健,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恬汁。 梳的紋絲不亂的頭發(fā)上伶椿,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音氓侧,去河邊找鬼脊另。 笑死,一個胖子當著我的面吹牛约巷,可吹牛的內容都是我干的偎痛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼独郎,長吁一口氣:“原來是場噩夢啊……” “哼踩麦!你這毒婦竟也來了?” 一聲冷哼從身側響起氓癌,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谓谦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后顽铸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茁计,經...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年谓松,在試婚紗的時候發(fā)現(xiàn)自己被綠了星压。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鬼譬,死狀恐怖娜膘,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情优质,我是刑警寧澤竣贪,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布军洼,位于F島的核電站,受9級特大地震影響演怎,放射性物質發(fā)生泄漏匕争。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一爷耀、第九天 我趴在偏房一處隱蔽的房頂上張望甘桑。 院中可真熱鬧,春花似錦歹叮、人聲如沸跑杭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽德谅。三九已至,卻和暖如春萨螺,著一層夾襖步出監(jiān)牢的瞬間窄做,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工屑迂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浸策,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓惹盼,卻偏偏與公主長得像庸汗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子手报,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內容