4.1 介紹
到目前為止瘪板,您至少可以通過正確調(diào)用elasticix來進(jìn)行配準(zhǔn)甸陌。 將配準(zhǔn)發(fā)現(xiàn)的轉(zhuǎn)換應(yīng)用于另一個圖像通常也是有用的疗韵。 也許您想將轉(zhuǎn)換應(yīng)用于原始(較大)圖像以獲得分辨率权薯。 或者您可能需要轉(zhuǎn)換以將其應(yīng)用于標(biāo)簽圖像(細(xì)分)嗓化。 為了這些目的,可以使用一個名為transformix的程序搅方。 它與elastix同時開發(fā)比吭。
4.2 如何調(diào)用transformix
像elastix一樣,transformix是一個命令行驅(qū)動的程序姨涡。 您可以通過以下方式獲得有關(guān)如何調(diào)用的基本幫助:transformix --help
這將給出一個強(qiáng)制和可選參數(shù)的列表衩藤。
最基本的命令如下:
transformix -in inputImage.ext -out outputDirectory -tp TransformParameters.txt
此調(diào)用將轉(zhuǎn)換輸入圖像并將其與日志文件transformix.log一起寫入輸出目錄。 您要應(yīng)用的轉(zhuǎn)換在transform參數(shù)文件中定義绣溜。 轉(zhuǎn)換參數(shù)文件可能是以前運(yùn)行elastix的結(jié)果(見第3.3節(jié))慷彤,但也可以由您自己編寫。 第4.3節(jié)說明了轉(zhuǎn)換參數(shù)文件應(yīng)具有的結(jié)構(gòu)和內(nèi)容怖喻。
除了使用transformix進(jìn)行圖像變形外底哗,還可以使用transformix來評估某些點x∈ΩF的變換Tμ(x)。 這意味著輸入點在固定的圖像區(qū)域(C小)中被指定跋选,因為變換方向是從固定到運(yùn)動圖像,如第2.6節(jié)所述哗蜈。 如果要變形一組用戶指定的點前标,則相應(yīng)的調(diào)用是:
transformix -def inputPoints.txt -out outputDirectory -tp TransformParameters.txt
這將創(chuàng)建一個文件outputpoints.txt坠韩,其中包含輸入點x和變換點Tμ(x)(給定為固定圖像的體素索引,另外作為物理坐標(biāo))炼列,位移矢量Tμ(x)-x(物理坐標(biāo)) 只搁,并且如果還指定了-in inputImage.ext,則轉(zhuǎn)換后的輸出將作為輸入圖像的索引俭尖。 inputPoints.txt文件應(yīng)具有以下結(jié)構(gòu):
<index, point>
<number of points>
point1 x point1 y [point1 z]
point2 x point2 y [point2 z]
. . .
```
第一行表示是否將點作為固定圖像的“索引”氢惋,或作為“點”(物理坐標(biāo))給出。 第二行存儲要指定的點數(shù)稽犁。 之后給出點數(shù)據(jù)焰望。
而不是輸入點的自定義.txt格式,transformix還支持.vtk文件:
`transformix -def inputPoints.vtk -out outputDirectory -tp TransformParameters.txt`
輸出然后保存為outputpoints.vtk已亥。 對.vtk文件的支持仍然有限熊赖。 目前,僅支持ASCII文件虑椎,帶有三角形網(wǎng)格震鹉。 任何元數(shù)據(jù)在輸出文件中丟失。
如果您想知道固定圖像的所有體素的變形绣檬,只需使用-def all:
`transformix -def all -out outputDirectory -tp TransformParameters.txt`
變形字段存儲為矢量圖像deformField.mhd足陨。 每個體素在物理坐標(biāo)中包含位移向量Tμ(x) - x嫂粟。 向量的元素存儲為浮點值娇未。
除了計算變形場外,transformix還具有計算變換空間雅可比的能力星虹。 空間Jacobian的決定因素識別局部壓縮或擴(kuò)張的量零抬,并且可能是非常有用的,例如在肺通氣研究中宽涌。 可以在整個圖像上計算空間雅可比的行列式:
`transformix -jac all -out outputDirectory -tp TransformParameters.txt`
也可以計算完整的空間雅可比矩陣:
`transformix -jacmat all -out outputDirectory -tp TransformParameters.txt`
其中每個體素填充有d×d矩陣平夜,其中d是圖像維度,而不是簡單的標(biāo)量值卸亮。
使用命令行選項-threads unsigned int忽妒,用戶可以指定transformix將使用的最大線程數(shù)。
# 4.3 轉(zhuǎn)換參數(shù)文件
配準(zhǔn)的結(jié)果是與固定和運(yùn)動圖像相關(guān)的變換Tμ兼贸。 此變換的參數(shù)存儲在TransformParameters.?.txt-file中段直。 2D剛體變換的結(jié)構(gòu)示例在附錄B中給出。文本文件包含將輸入圖像(運(yùn)動圖像)重新取樣到文件中指定的區(qū)域(默認(rèn)為固定圖像區(qū)域)所需的所有信息溶诞。
轉(zhuǎn)換參數(shù)文件可以手動編輯或創(chuàng)建鸯檬,方便用戶使用。 通過迭代提供另一個轉(zhuǎn)換參數(shù)文件與InitialTransformParametersFileName標(biāo)簽組成多個轉(zhuǎn)換螺垢。 最后的轉(zhuǎn)換將是初始轉(zhuǎn)換參數(shù)文件名設(shè)置為“NoInitialTransform”的轉(zhuǎn)換喧务。
轉(zhuǎn)換參數(shù)文件中的一個重要參數(shù)是FinalBSplineInterpolationOrder赖歌。 通常設(shè)置為3,因為在配準(zhǔn)后產(chǎn)生最佳質(zhì)量的結(jié)果圖像功茴,請參見第5.3.4節(jié)庐冯。 但是,如果您使用transformix來變形運(yùn)動圖像的分割(因此坎穿,二進(jìn)制圖像)肄扎,則需要手動將FinalBSplineInterpolationOrder更改為0。這將確保變形分割仍是二進(jìn)制標(biāo)簽圖像赁酝。 如果使用三階插值犯祠,則變形的分割圖像將包含垃圾。 這與高階B樣條插值的“過沖屬性”有關(guān)酌呆。
# 4.4 一些細(xì)節(jié)
### 4.4.1 運(yùn)行
transformix的運(yùn)行時間由以下部分組成:
1. 計算輸入圖像的B樣條分解(如果您選擇了FinalBSplineInterpolator);
2. 計算每個體素的變換;
3. 插入每個體素的輸入圖像衡载。
我們從未進(jìn)行過測試來測量每個步驟的計算復(fù)雜度,但是我們認(rèn)為第1步是最耗時的任務(wù)隙袁。 顯然可以通過使用最近鄰或線性內(nèi)插器來避免這一步驟痰娱。 步驟2取決于變換的選擇,其中線性變換(例如剛性和仿射變換)比非線性變換(例如B樣條變換)快得多菩收。 步驟3取決于具體的內(nèi)插器梨睁。 按照復(fù)雜度順序,最近鄰娜饵,線性坡贺,一階B樣條,二階B樣條等箱舞。
### 4.4.2 內(nèi)存消耗
有關(guān)內(nèi)存消耗的更多信息遍坟,請參見第5.5.3節(jié),并且:`http://elastix.bigr.nl/wiki/index.php/Memory_consumption_transformix`