IDE(Integrated Development Environment )集成開發環境一般是指程序員在進行軟體開發時,需要使用的一整套環境和應用程序,一般包括代碼編輯器、編譯器、調試器和圖形用戶界面等。大家比較熟悉的IDE有Microsoft Visual Studio、Eclipse、PyCharm等。IDE的選擇通常和開發語言和應用領域密切相關。例如,如果做Windows C++/C#應用開發,基本都會優先選擇Visual Studio;如果做Java開發,則傾向首選Eclipse;PyCharm則是很多Python開發程序員的首選。

在醫學影像演算法開發領域,大家是否注意到近年來的兩個趨勢。第一,越來越多的人喜歡用Python做為開發語言,進行快速原型開發和驗證。正所謂,「人生苦短,我用Python」。第二個趨勢,為了進一步加快原型開發的速度,尤其是避免重複「造輪子」,大家通常會選擇ITK、VTK、QT這個「三劍客」組合,來作為圖像處理、可視化和圖形界面的三大基石。並且,這兩大趨勢正在融合形成一個匯總趨勢:使用Python作為開發語言,調用ITK、VTK、QT這三大基礎庫,進行醫學影像演算法原型的開發。

分析到這裡,終於要引出我們這篇小文章要討論的主要問題了。想要用Python調用ITK、VTK和QT進行開發,有哪些好的IDE可供選擇?

對於高手來講,直接從Python安裝包開始,然後逐個安裝SimpleITK、VTK、PyQt,就可以了。也可以藉助Anaconda來建立多版本開發環境。但對於新手和小白,這個過程並不簡單。需要解決安裝包下載、版本選擇、PIP安裝命令等一系列問題,才能夠入門,建立起真正能夠開始編程的環境。

那麼,有沒有更省事一步到位的解決辦法?答案是,有。這個一步到位的解決方法就是本文要介紹的3D Slicer。

3D Slicer是一個開源的跨平台醫學影像可視化和處理分析軟體,由美國國家衛生研究院(National Institutes of Health)支持開發,迄今已經有超過20年的開發歷史,但仍然保持著一個活躍的開發群體。關於3D Slicer的詳細介紹,可以參考官方網站:https://www.slicer.org/。

本文重點介紹3D Slicer中集成的Python開發環境。假定大家已經從網站下載最新的4.8.1版本,完成了安裝。軟體啟動後,將顯示下面的界面:

注意到紅色箭頭指向的右上方按鈕圖標了嗎?這不就是Python的代表性Logo嗎?沒錯,只要安裝好3D Slicer,內部就會直接準備好了Python 2.7的開發環境。點擊這個按鈕,就會在軟體的下方啟動Python的互動式開發環境。如下圖紅色箭頭指向所示。

是不是有些小小的驚喜和意外?這還遠不是全部。在這個開發環境中,你可以直接調用SimpleITK、VTK和PyQt的函數和功能。關於如何在Slicer中進行Python編程,大家可以參考官方網站介紹,(slicer.org/wiki/Documen),非常詳細。

在真正入坑,開始折騰之前,大家可能都會先思考一個問題。我用這個工具能夠做什麼事情,達到什麼樣的效果?回答這個問題的最佳方式就是,舉個例子。

下面介紹一個基於3D Slicer環境,採用Python開發的椎弓根螺釘手術規劃和模擬擴展應用:PedicleScrewSimulator。

PedicalScrewSimulator為開源軟體(github.com/smclach/Pedi)。整個工程,如果不統計資源和模型文件,一共包含了10個Python文件。其中最長的文件,代碼行數為919行。大多數文件的代碼行數,都在300行以內。這與Python編程,「少寫代碼,多半實事」的追求目標非常一致啊。

PedicleScrewSimulator非常「友好」,在左側面板中,提供了操作嚮導,指導和提示用戶逐步操作。包含下述步驟。

  1. 載入DICOM影像

上方是軟體整體界面。在界面左側,顯示的是嚮導面板,具體如下圖。

可以看到提供了多種載入方式。整個數據載入步驟,包括上面的圖形用戶界面,由LoadDataStep.py文件實現,一共168行代碼。其中載入影像的核心功能是通過調用Slicer內部已經集成的輔助功能模塊來實現的。核心代碼只有一句話,代碼如下:

slicer.util.openAddDataDialog()

  1. 裁剪感興趣區域

在第二步中,軟體會在三個正交切面圖像(MPR)上顯示感興趣區域裁剪框,讓用戶手工拖拽調節,選擇感興趣區域。其中左側的操作面板(如下圖所示),都是採用PyQt搭建出來的。

右上方的Volume Rendering繪製窗口則基於Slicer中內置的下述module來實現。

slicer.modules.volumerendering

  1. 標記植入點

在這一步中需要指定植入點的位置。可以直接在VR窗口中點擊確定。

  1. 植入過程模擬

在這一步中,可以先選擇要植入的骨釘型號,然後選擇要植入的深度。之後,點擊「Insert Screw」按鈕,就可以看到藍色的骨釘動態的鑽入骨骼中。還可以點擊「Backout Screw」來撤回骨釘。

  1. 術後效果模擬

在最後一步中,可以採用在上方VR窗口以半透明骨骼效果,觀察骨釘植入效果。還可以在3個MPR窗口中,觀察骨釘出現在哪些切面層面和輪廓。如下圖所示。

至此,對於PedicScrewSimulator「蜻蜓點水」式介紹完成。沒有深入技術細節和代碼,只是想通過圖片分享的方式,讓大家初步了解和感受在Slicer這個IDE進行開發,可以完成哪些工作,達到什麼樣的效果。

用3D Slicer作為醫學影像演算法快速開發的IDE,突出優勢是已經集成好了ITK、VTK和QT常用「三大件」,並且可以使用Slicer內部若干已經開發完成的Module,來加快開發進程。但是所有的餡餅都不是白來的,要想能夠在Slicer中進行開發,學習和熟悉Slicer的設計理念、軟體架構仍然是必須的。友提,真正入坑之前,還是把官方指導網頁大致看一遍,才能更好決定,這是不是適合自己的那盤菜。

官方指導網頁:slicer.org/wiki/Documen


推薦閱讀:
相关文章