李珣 王曉東
【摘 要】本文主要介紹在腦手術(shù)醫(yī)學(xué)圖像軟件的二次開(kāi)發(fā)中,關(guān)于醫(yī)學(xué)圖像配準(zhǔn)相關(guān)幾何變換算法的實(shí)現(xiàn),開(kāi)發(fā)工具為Visual C++6.0。
【關(guān)鍵詞】二次開(kāi)發(fā);醫(yī)學(xué)圖像配準(zhǔn);幾何變換;
一、引言
近兩個(gè)世紀(jì)以來(lái)隨著醫(yī)學(xué)成像技術(shù)不斷成熟,臨床醫(yī)學(xué)逐漸具備兩大類圖像信息,一類是解剖結(jié)構(gòu)圖像,包括計(jì)算機(jī)斷層成像(CT)、磁共振成像(MRI)和B超等;另一類是功能圖像,包括單光子發(fā)射斷層成像(SPECT)和正電子發(fā)射斷層成像(PET)等。這兩類圖像各有優(yōu)勢(shì),但是由于成像原理不同,造成圖像信息的局限性。如果單獨(dú)使用某一類圖像,其效果往往并不理想。而多種圖像的利用,又必須借助醫(yī)生的空間構(gòu)想和推測(cè),去綜合判斷他們所要的信息,其準(zhǔn)確性受主觀影響,而且可能會(huì)忽略某些重要信息。解決這個(gè)問(wèn)題的最有效方法就是以醫(yī)學(xué)圖像配準(zhǔn)技術(shù)為基礎(chǔ),利用信息融合技術(shù),將這兩種圖像結(jié)合起來(lái),利用各自的信息優(yōu)勢(shì),在一幅圖像上同時(shí)表達(dá)來(lái)自人體的多方面信息。
目前在傳統(tǒng)的腦手術(shù)醫(yī)學(xué)圖像軟件中,其前端探測(cè)點(diǎn)的坐標(biāo)是由醫(yī)生借助工具得到的。在進(jìn)行醫(yī)學(xué)圖像軟件的二次開(kāi)發(fā)時(shí),可以采用機(jī)械手自動(dòng)獲取探測(cè)點(diǎn)的坐標(biāo)。但是由于醫(yī)學(xué)圖像配準(zhǔn)的圖像坐標(biāo)系發(fā)生了改變,需要設(shè)計(jì)新的幾何變換算法。
二、類的設(shè)計(jì)
空間映射T描述了一幅圖像中的位置與另一幅圖像中的相應(yīng)位置之間的關(guān)系。這種映射有可能是二維(2D)和三維(3D)之間的相互轉(zhuǎn)換。由于醫(yī)學(xué)圖像中的數(shù)據(jù)通常為各自異性,即切片間距與切片上像素間距不同,因此配準(zhǔn)過(guò)程中的幾何變換需要在物理空間進(jìn)行。相關(guān)公式可以描述為:物理坐標(biāo)=像素坐標(biāo)×像素間距+圖像原點(diǎn)坐標(biāo)
幾何變換的主要作用是,將參考圖像空間中像素點(diǎn)映射到浮動(dòng)圖像空間中。其類型一般有縮放變換(mitkSacaleTransform)、平移變換(mitkTranslationTransform)、剛體變換(mitkRigidTransform)、相似性變換(mitkSimilarityTransform)和仿射變換(mitkAffineTransform)等。各種變換都是由一組變換參數(shù)t來(lái)表示,例如剛性變換可以用3個(gè)坐標(biāo)軸方向上的平移參數(shù),和3個(gè)繞坐標(biāo)軸旋轉(zhuǎn)角度共6個(gè)參數(shù)來(lái)表示。具體的變換算法由派生類Transform實(shí)現(xiàn),其抽象類的框架圖如圖1所示。
三、算法實(shí)現(xiàn)
對(duì)于各種變換算法,其用戶接口都是一致的。設(shè)置變換參數(shù)的成員函數(shù)為GetJacobian,其函數(shù)原型是:
virtual const MatrixType & GetJacobian(const VectorIndexType& inPoint);
設(shè)置變換圖像數(shù)據(jù)大小的成員函數(shù)為SetRegion,其函數(shù)原型是:
void SetRegion(const VectorIndexType& r);
獲取像素(x,y,z)變換后的Jacobian矩陣的成員函數(shù)為GetJacobian,其函數(shù)原型是:
virtual const MatrixType & GetJacobian(const VectorParameterType& inPoint);
獲取4×4的變換矩陣的成員函數(shù)為GetTransformMatrix,其函數(shù)原型是:
mitkMatrixType * GetTransformMatrix();
計(jì)算(x,y,z)經(jīng)幾何變換后的坐標(biāo)的成員函數(shù)為TransformPoint,其函數(shù)原型是:
virtual void TransformPoint(const VectorIndexType & inPoint,VectorIndexType & outPoint);
具體的變換算法實(shí)現(xiàn)將在派生類中,由virtual bool Excute的重載函數(shù)實(shí)現(xiàn)。在變換參數(shù)和圖像數(shù)據(jù)大小設(shè)置完成之后,即可通過(guò)Run函數(shù)調(diào)用Excute函數(shù),從而完成相關(guān)的變換工作。變換結(jié)果可以通過(guò)成員函數(shù)GetOutput得到。變換核心函數(shù)的實(shí)現(xiàn)代碼如下:
if(!m_FlagComputeTransform)
this->ComputeTransformMatrix();
mitkMatrixScalarType *m=*m_TransformMatrix;
if(m_SpaceDimension==2)
…………
在基于特征的圖像配準(zhǔn)過(guò)程中,當(dāng)?shù)玫搅它c(diǎn)集間的對(duì)應(yīng)關(guān)系并確定了幾何變換模型之后,下一步是要知道兩個(gè)點(diǎn)集所在的子空間的映射關(guān)系函數(shù),這可以利用解線性方程組或者線性回歸等數(shù)學(xué)方法得到。在大多數(shù)情況下,更應(yīng)該關(guān)心兩個(gè)圖像子空間的旋轉(zhuǎn)關(guān)系,例如剛性配準(zhǔn)可以利用奇異值分解(SVD)或者單位四元數(shù)的方法來(lái)計(jì)算旋轉(zhuǎn)變換矩陣。對(duì)于這類問(wèn)題,Umeyama利用拉格朗日乘子法給出了一個(gè)嚴(yán)格的閉形解法。具體步驟為以下三步:(1)計(jì)算正交矩陣。(2)對(duì)所得矩陣進(jìn)行SVD分解。(3)計(jì)算點(diǎn)集間的旋轉(zhuǎn)矩陣,以及平移參數(shù)和縮放參數(shù)。在MITK中實(shí)現(xiàn)了兩種點(diǎn)集變換估計(jì)器,它們分別是mitkPointSetSVDEstimator和mitkPointSetQuaternionEstimator。
四、結(jié)語(yǔ)
在數(shù)字醫(yī)學(xué)影像時(shí)代,無(wú)論是哪一種醫(yī)學(xué)影像,想要在臨床診斷和治療中發(fā)揮作用,都離不開(kāi)成像算法和相關(guān)處理軟件的支持。醫(yī)學(xué)圖像處理與分析主要包括醫(yī)學(xué)圖像的分割、配準(zhǔn)、融合和可視化等技術(shù),其意義在于發(fā)掘圖像中的有用信息并進(jìn)行展現(xiàn)。在醫(yī)學(xué)圖像處理方面目前已經(jīng)有了非常多的成熟的算法,而且還在不斷涌現(xiàn)新的算法。自改革開(kāi)放以來(lái),我國(guó)從國(guó)外進(jìn)口大量高精密的醫(yī)療設(shè)備,并在臨床醫(yī)療上廣泛使用。然而由于缺乏配套的開(kāi)發(fā)設(shè)備,也沒(méi)有形成系統(tǒng)的跨學(xué)科開(kāi)發(fā)研究的機(jī)制。這就使得我國(guó)對(duì)高精密度醫(yī)療設(shè)備的利用率不足,以及研發(fā)升級(jí)的速度緩慢。軟件的編制依賴于對(duì)科學(xué)問(wèn)題的數(shù)學(xué)描述和計(jì)算方法,目前對(duì)計(jì)算模型和計(jì)算方法的研究和設(shè)計(jì),已成為制約醫(yī)學(xué)影像處理技術(shù)進(jìn)步的首要因素。
【參考文獻(xiàn)】
[1] 田捷. 醫(yī)學(xué)成像與醫(yī)學(xué)圖像處理教程[M].北京:清華大學(xué)出版社, 2018.
[2] S Umeyama. Least-squares estimation of transformation parameters between two point atterns. IEEE Transactions on Pattern Analysis and Machine Intelligece,1991,13(4): 376-380.