◆李文霞 張玉 劉德樺 張坤 馬英婕 楊秀云
基于Python與OpenCV醫學圖像配準軟件的實現
◆李文霞1張玉1劉德樺1張坤1馬英婕1楊秀云2
(1.山東第一醫科大學(山東省醫學科學院)醫學信息工程學院 山東 271016;2.山東第一醫科大學(山東省醫學科學院)現代教育技術中心 山東 271016)
醫學圖像配準是醫學圖像分析的基礎課題,具有重要理論研究和臨床應用價值。Python和OpenCV提供了適合醫學圖像處理與分析的豐富開源工具包,本文采用Python和OpenCV兩種工具包的集成方式設計并實現了一套基于Python與OpenCV 醫學圖像配準軟件。配準算法采用自己提出的CNN-SIFT特征融合的配準策略,能夠完成醫學圖像的多模態配準任務,基本滿足實際應用的需求。
Python;OpenCV;多模態;醫學圖像配準
目前醫學圖像配準在臨床醫學界是研究的熱點,醫學圖像配準技術對臨床醫生輔助診斷病情具有很大的實用價值。采用合理的圖像配準算法可以將多模態的醫學圖像信息準確地集成到同一圖像中,使醫生更方便、更精確地從多個角度觀察器官的結構和病灶。同時,通過對不同設備、不同時間采集的器官圖像進行配準與融合,可以較準確地定量分析病灶和器官的變化情況,使得醫生制定放射治療計劃、手術計劃以及醫療診斷更準確可靠。
目前已有大量的應用系統軟件應用于醫學圖像處理和分析的生產環境中,在這些應用軟件中Python和OpenCV已投入使用,其中Python提供了很多醫學圖像配準的開源工具包,OpenCV也提供了大量用于醫學圖像配準的算法。本文聯合Python和OpenCV兩種開發工具設計開發了一套基于Python與OpenCV 醫學圖像配準軟件,可用于多模態的圖像配準工作。
Python是一門開源的高級計算機程序設計語言,應用于計算機視覺、云計算、人工智能等多個領域。Python自帶了很多可以免費獲取的強大而便捷的圖像處理工具包,如圖像處理工具包(PIL)、Matplotlib類庫、NumPy工具包等。
PIL提供了免費的通用的圖像處理算法,以及大量有用的基本圖像操作,比如圖像縮放、旋轉、裁剪、改變圖像大小、格式及顏色轉換、圖像增強、插值和濾波等。
Matplotlib是一個Python的2D繪圖庫,具有強大的繪制圖表、點線等功能,如可以生成繪制圖表或者直方圖,功率譜,以及在圖像上繪制點、直線和曲線等。
NumPy是Python科學計算工具包,可用來存儲和處理大型矩陣,可以實現矩陣轉置、乘積、向量乘積、解方程系統和歸一化等功能,為建模、圖像分類、圖像聚類、圖像變形等提供了基礎。
OpenCV是一個開源C++庫,用于處理計算機視覺問題。OpenCV自帶大量豐富的算法和函數,并提供了完善的Python接口,而且方便調用。OpenCV提供的一些圖像處理函數與Python形成了很好的互補。
Caffe是一種高效的基于C++架構的深度學習框架,支持Python、MATLAB接口以及命令行,模塊化設計,能使用Caffe提供的各層類型來自定義模型,并且自定義的模型在海量數據的情況下Caffe上運行速度快。
醫學圖像配準指將不同時間、不同成像設備或不同光照、攝像角度等條件下的兩個圖像坐標系之間的變換矩陣計算,可以分為剛性配準、非剛性配準、同模態圖像配準和多模態圖像配準等。本文重點研究了多模態醫學圖像配準,多模態醫學圖像配準是指將兩幅來源于不同成像設備的待配準的圖像經尋找一個對應的空間變換后完整地融合在一幅圖像中。本文采用常用的基于特征的圖像配準方法,主要分圖像預處理、特征提取、特征匹配、空間變換模型的確定與參數估計、圖像的插值與坐標變換等五個步驟。
AlexNet是卷積神經網絡(Convolutional Neural Networks,CNN)典型的網絡模型之一,包含5層卷積層、2層全連接層和1層分類器。由于醫學樣本數量有限,首先使用大量豐富的ImageNet圖像數據集在caffe框架中訓練,然后利用卷積神經網絡的遷移學習法設定初始化訓練參數,接著使用自己制作的腦部2000個樣本的訓練集和100個樣本的測試集進一步訓練AlexNet網絡模型,訓練批次為500次。
CNN提取的圖像特征在圖像分類和檢索方面表現出很好的性能,為圖像提供了大量的中高層信息。AlexNet模型的FC8階段的1000個神經元一般用來圖像檢索分類,因此在實驗中丟棄FC8層,直接采用FC6層輸出的4096個維度作為CNN圖像特征與SIFT特征融合,融合后的特征描述符作為特征匹配的對象。
SIFT算法是在圖像配準時的常用方法,但只使用了一些低層信息來進行圖像配準,丟失了許多中高層信息,對于多模態醫學圖像的配準效果并不可觀。本文提出的CNN-SIFT特征融合的基本思想是首先采用SIFT選定一批優質的候選特征點,然后從圖像中以候選特征點為中心提取64×64像素的圖像塊,分別計算SIFT描述子和提取CNN特征描述子,根據二者關聯關系,將兩個向量歸一化為一個向量來表示新的候選特征點。最后采用Lower提出的一種穩健的匹配準則進行新的候選特征點匹配,該匹配準則是使用這兩個特征距離和兩個最匹配特征距離的比率,使用該方法可以使錯誤的匹配數降低。
基于Python與OpenCV 醫學圖像配準基本流程如圖1所示。

圖1 基于CNN-SIFT特征融合的醫學圖像配準基本流程
(1)利用SIFT算法分別讀取參考圖像和待配準圖像的優質候選特征點;
(2)以每個優質特征點為中心分別提取參考圖像和待配準圖像的64×64像素的圖像塊;
(3)調用訓練好的卷積神經網絡模型讀取圖像塊的CNN特征描述子;
(4)將SIFT描述子和提取CNN特征描述子兩個向量歸一化為一個向量作為新的候選特征點;
(5)新的候選特征點匹配;
(6)空間變換模型的確定與參數估計,重復(3)~(5)步,直到取得最優值;
(7)采用三次樣條插值法圖像插值與坐標變換;
(8)配準結束,輸出配準后的圖像。
本文開發的醫學圖像配準軟件用于腦部MRI-PET圖像配準的效果如圖2所示。

圖2 MRI圖像 PET圖像 配準后圖像
利用Python與OpenCV的工具包,通過調用caffe訓練的AlexNet卷積神經網絡模型,設計并開發了一套醫學圖像配準軟件,配準過程采用了CNN-SIFT特征融合的多模態配準策略,并用于實現了腦部MRI-PET圖像的配準。
[1]鄭亞琴,田心. 一種射野圖像和參考圖像的自動配準方法[J]. 國醫學物理學雜志,2009,26(6):1481-1484.
[2]侯艷陽.基于OpenCV的醫學圖像處理軟件設計與實現[J].無線互聯科技,2020(7).
[3]李欽,游雄,李科,等. 圖像深度層次特征提取算法[J]. 模式識別與人工智能,2017,30(2):127-136.
[4]江彤彤,成金勇,鹿文鵬. 基于卷積神經網絡多層特征提取的目標識別[J].計算機系統應用,2017.
山東省級大學生創新創業訓練計劃項目(S201910439045)