STIR散射校正使用說(shuō)明
STIR(Software for Tomographic Image Reconstruction)是一款受業(yè)界認(rèn)可的開(kāi)源醫(yī)學(xué)圖像重建軟件,使用C++編寫(xiě),在linux平臺(tái)下可實(shí)現(xiàn)PET圖像重建、數(shù)據(jù)校正等功能。(源代碼:https://github.com/tokkot/STIR)
為驗(yàn)證自己的散射校正算法正確性,就想使用STIR來(lái)測(cè)試一下,但發(fā)現(xiàn)STIR使用的正弦圖存儲(chǔ)格式,圖像存儲(chǔ)方式與我現(xiàn)在用的不同,而且修改腳本后總是報(bào)錯(cuò)且結(jié)果總是不正確。為此我閱讀了STIR散射校正部分的代碼,并在此記錄一下STIR散射校正算法的使用方法。

1、? STIR安裝
(1)??? 在STIR官網(wǎng)上(http://stir.sourceforge.net/)下載.zip壓縮包,解壓后發(fā)送到linux虛擬機(jī)中
(2)??? /STIR/src/CMakeLists.txt中設(shè)置"Compile with OpenMP" 為ON,使能openmp功能
(3)??? STIR使用boost庫(kù),所以在編譯之前要先安裝boost。安裝指令:”sudo apt-get install libboost-dev”
(4)??? 在STIR/下新建build文件夾,在build/中依次執(zhí)行”sudo cmake ..”, “sudo make -j5”, “sudo make install”. 其中j5表示使用5個(gè)線程進(jìn)行make,可以大大加快速度。
(5)??? 安裝完成后會(huì)在/usr/local/bin中生成大量可執(zhí)行文件,若”echo $PATH”后發(fā)現(xiàn)該目錄在PATH下,則可以直接調(diào)用STIR中命令,即安裝完成。STIR使用示例:”simulate_scatter xxx.par”、”estimate_scatter xxx.par”

2、? STIR數(shù)據(jù)輸入
(1)??? 投影數(shù)據(jù)
a)?????有關(guān)投影數(shù)據(jù)的專業(yè)術(shù)語(yǔ)(詳見(jiàn)STIR-glossary)
Michelogram:即我們常說(shuō)的4D正弦圖數(shù)據(jù)
Sinogram: 即我們常說(shuō)的2D正弦圖數(shù)據(jù),在STIR中slice表示圖像橫截面
Segment: 具有相同環(huán)差的一組sinogram為一個(gè)segment,在下圖中傾斜的黑色直線表示環(huán)差相同的一組sinogram
Span: 軸向壓縮(Axial compression),將具有相同平均環(huán)差((ring1+ring2)/2)的sinogram相加,從而減少sinogram的數(shù)目,一般對(duì)奇數(shù)個(gè)segment進(jìn)行span,如下圖,7個(gè)segment融合成一個(gè)segment。融合后的每個(gè)segment包含的sinogram是不同的,具體計(jì)算公式現(xiàn)在不清楚。若span=1,即不做軸向壓縮,michelogram中包含環(huán)差從-ringNum+1 : ringNum -1共2*ringNum-1個(gè)segment。
下圖中rdmin和rdmax分別為最小和最大環(huán)差,表示哪些環(huán)差范圍的sinogram進(jìn)行了融合;average_delta表示平均環(huán)差,即((ring1+ring2)/2)。

b)????STIR的投影數(shù)據(jù)格式
STIR使用修改過(guò)的INTERFILE數(shù)據(jù)格式(STIR專用-_-)讀入投影數(shù)據(jù),包含2個(gè)文件,頭文件(.hs)和數(shù)據(jù)文件(.s)
可以使用”create_projdata_template”命令生成頭文件
投影數(shù)據(jù)頭文件中包含3部分?jǐn)?shù)據(jù):實(shí)驗(yàn)數(shù)據(jù)(設(shè)備名稱、患者姿態(tài)、掃描時(shí)間、能窗信息),投影數(shù)據(jù)信息(數(shù)據(jù)格式、segment, view, bin的數(shù)目)和探測(cè)器結(jié)構(gòu)(環(huán)數(shù),每環(huán)晶體數(shù),能量分辨率等)
STIR以segment為單位管理投影數(shù)據(jù)。讀取數(shù)據(jù)時(shí),segment默認(rèn)存儲(chǔ)順序由頭文件中的”minimum ring difference per segment”和”maximum ring difference per segment”決定
一個(gè)segment中包含多個(gè)sinogram,sinogram個(gè)數(shù)由頭文件的”axial coordinate”決定,STIR默認(rèn)sinogram根據(jù)所在環(huán)的位置從小到大排列,所以存儲(chǔ)數(shù)據(jù)時(shí)要注意順序
Sinogram中的view數(shù)目一般為CrystalNumPerRing/2;bin的數(shù)目最大為CrystalNumPerRing-1,但一般根據(jù)FOV大小在兩邊減去部分(最好減去,可以減少計(jì)算量;不減的話可能會(huì)報(bào)錯(cuò))
STIR支持的segment的實(shí)際物理存儲(chǔ)順序有兩種:Segment_View_AxialPos_TangPos和Segment_AxialPos_View_TangPos。例如,一個(gè)segment中包含10個(gè)sinogram,1個(gè)sinogram包含20view和39bin。前一種方式先存儲(chǔ)這10個(gè)sinogram中view=0的所有bin,再存儲(chǔ)view1…view10;后一種方式先存儲(chǔ)第1個(gè)sinogram,再存儲(chǔ)第2個(gè)sinogram,依次類推。在InterfilePDFSHeader::find_storage_order()中說(shuō)明了,投影數(shù)據(jù)的存儲(chǔ)順序是由interfile的頭文件確定的。matrix axis label [3] := view; matrix axis label [2] := axial coordinate對(duì)應(yīng)Segment_View_AxialPos_TangPos。matrix axis label [3] := axial coordinate; matrix axis label [2] := view對(duì)應(yīng)Segment_AxialPos_View_TangPos。
在Scanner.h中有crystal, block等探測(cè)器模塊的介紹。crystal: 最小探測(cè)單元;block: 多個(gè)晶體組成block;layer: DOI探測(cè)器中有多個(gè)layer;bucket: 多個(gè)block探測(cè)到數(shù)據(jù)會(huì)由同一個(gè)bucket發(fā)送;singles_unit: 絕大多數(shù)探測(cè)器可探測(cè)到單光子,有的探測(cè)器每個(gè)晶體可以輸出單光子,有的是每bucket輸出,singles_units就是可以輸出單光子計(jì)數(shù)率的晶體模塊
注意:頭文件以”;”作為注釋符號(hào),必須在單獨(dú)行中進(jìn)行注釋,不能在實(shí)際參數(shù)后進(jìn)行注釋,否則讀取參數(shù)錯(cuò)誤
c)????投影數(shù)據(jù)頭文件部分參數(shù)說(shuō)明
示例頭文件見(jiàn)附件,下面只介紹部分需要設(shè)置的參數(shù)
name of data file := AttnCoff_STIR.s???? ;數(shù)據(jù)文件名
!number format := float???????? ;數(shù)據(jù)類型
!number of bytes per pixel := 4???? ;每個(gè)數(shù)據(jù)所占字節(jié)數(shù)
number of dimensions := 4?? ;數(shù)據(jù)維數(shù),一般是4維,segment, segment, view, axial coordinate
matrix axis label [4] := segment? ;第4維的名稱,不能改變,順序檢索投影數(shù)據(jù)時(shí),該維度變化最慢
!matrix size [4] := 95???? ;第4維的數(shù)目,若不進(jìn)行span,對(duì)48環(huán)的腦PET,三維投影數(shù)據(jù)包含2*48-1=95個(gè)環(huán)差,也即有95個(gè)segment
matrix axis label [3] := view ;第3D為view,說(shuō)明存儲(chǔ)順序是Segment_View_AxialPos_TangPos
!matrix size [3] := 132?? ;共有132個(gè)view
matrix axis label [2] := axial coordinate????? ;第2D為軸向坐標(biāo)
!matrix size [2] := {1, 2, 3, … , 45, 46, 47, 48, 47,46, 45, … ,3, 2, 1}???? ;每個(gè)segment包含的sinogram數(shù)目,如有95個(gè)segment,則該數(shù)組的長(zhǎng)度為95
matrix axis label [1] := tangential coordinate???? ;第1維為bin,順序檢索投影數(shù)據(jù)時(shí),該維度變化最快
!matrix size [1] := 191?? ;每個(gè)view包含191個(gè)bin
minimum ring difference per segment := { -47,-46,-45, … , 45,46,47 }
maximum ring difference per segment := { -47,-46,-45, … , 45,46,47 }??? ;與上式共同表示每個(gè)segment中包含的最大和最小環(huán)差,若沒(méi)有span,則這兩項(xiàng)是相同的。如有95個(gè)segment,則該數(shù)組的長(zhǎng)度為95
number of energy windows:=1
energy window lower level[1]:=410
energy window upper level[1]:=700? ;設(shè)置能窗
Energy resolution := 0.19
Reference energy (in keV) := 511???????? ;設(shè)置能量分辨率
Number of rings := 48?? ;探測(cè)環(huán)數(shù)目
Number of detectors per ring := 264?? ;每環(huán)晶體數(shù)
Inner ring diameter (cm) := 37.7????????? ;探測(cè)環(huán)內(nèi)徑
Average depth of interaction (cm) := 1.0???? ;平均探測(cè)深度
Distance between rings (cm) := 0.42?? ;每環(huán)的間隔
Maximum number of non-arc-corrected bins := 191????????? ;隨便設(shè)?
Default number of arc-corrected bins := 191????? ;隨便設(shè)?
Number of blocks per bucket in transaxial direction := 1 ;下面這些參數(shù)在散射校正中沒(méi)有使用
Number of blocks per bucket in axial direction := 2
Number of crystals per block in axial direction := 6
Number of crystals per block in transaxial direction := 6
Number of detector layers := 1
Number of crystals per singles unit in axial direction := 1
Number of crystals per singles unit in transaxial direction := 1
(2)??? 圖像數(shù)據(jù)
a)????STIR的圖像數(shù)據(jù)格式
STIR同樣使用修改過(guò)的INTERFILE數(shù)據(jù)格式(STIR專用-_-)讀入圖像數(shù)據(jù),包含2個(gè)文件,頭文件(.hv)和數(shù)據(jù)文件(.v)
STIR只考慮環(huán)形探測(cè)器,坐標(biāo)系與探測(cè)器相關(guān),以探測(cè)器軸向?yàn)閦軸,縱向y軸,橫向x軸。探測(cè)器坐標(biāo)軸原點(diǎn)位于探測(cè)器中心。圖像坐標(biāo)原點(diǎn)默認(rèn)為第一個(gè)平面中心體素的中心,以遠(yuǎn)離床的那一邊的xy平面作為第一個(gè)平面
STIR中默認(rèn)圖像X和Y方向的體素?cái)?shù)目為奇數(shù);Z方向的體素?cái)?shù)目為2*ringNum-1,Z方向體素尺寸為晶體尺寸的一半。若XY方向體素?cái)?shù)目為偶數(shù),圖像原點(diǎn)位于XY軸正方向第一個(gè)體素的中心,不建議設(shè)置為偶數(shù)。Z方向體素?cái)?shù)目最好設(shè)置為默認(rèn)值,這樣可以使用代碼中的對(duì)稱,且不會(huì)報(bào)錯(cuò)。
對(duì)圖像進(jìn)行下采樣時(shí)(例如將尺寸為(127,127,95)的衰減圖像下采樣為(17,17,13)的圖像以用于獲取散射點(diǎn)),需要保證邊緣體素中心到圖像中心距離一致,而不是圖像邊緣到圖像中心一致,即:
(image_size1-1)*voxel_size1/2 = (image_size2-1)*voxel_size2/2
可以使用AMIDE直接讀入.hv文件
注意:使用SimpleITK重采樣圖像時(shí),可能會(huì)有Y軸鏡像翻轉(zhuǎn)的情況,目前還不清楚具體原因,轉(zhuǎn)換后應(yīng)檢查圖像!
b)????圖像數(shù)據(jù)頭文件部分參數(shù)說(shuō)明
示例頭文件見(jiàn)附件,下面只介紹部分需要設(shè)置的參數(shù)
name of data file := Zubal_Umap_17_17_13.v???? ;圖像數(shù)據(jù)文件名
!number format := float???????? ;數(shù)據(jù)存儲(chǔ)格式
!number of bytes per pixel := 4???? ;每個(gè)數(shù)據(jù)所占字節(jié)數(shù)
number of dimensions := 3?? ;數(shù)據(jù)維度
matrix axis label [1] := x??????? ;第1維為x
!matrix size [1] := 17???? ;x軸有17個(gè)體素
scaling factor (mm/pixel) [1] := 16.5375??? ;x軸體素尺寸
matrix axis label [2] := y??????? ;第2D為y
!matrix size [2] := 17???? ;y軸有17個(gè)體素
scaling factor (mm/pixel) [2] := 16.5375??? ;y軸體素尺寸
matrix axis label [3] := z??????? ;第3D為z軸
!matrix size [3] := 13???? ; z軸有13個(gè)體素
scaling factor (mm/pixel) [3] := 16.45???????? ; z軸體素尺寸
first pixel offset (mm) [1] := -132.3???? ;索引值為0的體素中心距圖像中心的距離
first pixel offset (mm) [2] := -132.3
first pixel offset (mm) [3] := 0
number of energy windows := 1
energy window lower level[1] := 410
energy window upper level[1] :=? 700????? ;設(shè)置能窗

3、? STIR散射校正
(1)??? STIR散射校正整體說(shuō)明及注意事項(xiàng)
STIR散射校正分為2部分,simulate scatter和estimate scatter
simulate scatter是實(shí)際使用SSS估計(jì)散射事件的代碼,輸入活度圖像、衰減圖像和模板投影數(shù)據(jù)頭文件,輸出散射估計(jì)Michelogram,輸出格式由模板投影數(shù)據(jù)頭文件決定。
simulate scatter使用2種方法減少計(jì)算量。首先是下采樣探測(cè)器和使用放大的衰減圖像設(shè)置散射點(diǎn)
可以自定義下采樣探測(cè)器結(jié)構(gòu),默認(rèn)每環(huán)64個(gè)晶體,軸向20mm設(shè)置一環(huán)晶體,從而減少LOR數(shù)目。該方法需與estimate scatter中的upsample_and_fit_single_scatter結(jié)合使用,由于上采樣函數(shù)只能對(duì)segment = 0的投影數(shù)據(jù)(直層投影數(shù)據(jù))上采樣,所以為了下采樣探測(cè)器,3D投影數(shù)據(jù)要先SSRB為2D數(shù)據(jù)后才能進(jìn)行散射估計(jì)
STIR是在衰減圖像的每個(gè)體素中采集一個(gè)散射點(diǎn),所以使用放大的衰減圖像可以減少散射點(diǎn)。若不設(shè)置放大的衰減圖像,STIR根據(jù)下采樣探測(cè)器(若設(shè)置了)的結(jié)構(gòu),放大衰減圖像(XY方向的體素尺寸約為bin的間距,Z方向體素尺寸為晶體尺寸的一半);還可以通過(guò)設(shè)置放大參數(shù)(參數(shù)文件中的4個(gè)zoom參數(shù))放大衰減圖像(建議不使用);還可以直接輸入放大后的衰減圖像文件名
只使用simulate scatter是可以進(jìn)行3D散射估計(jì)的,但不能下采樣探測(cè)器,而且由于使用3D投影數(shù)據(jù),計(jì)算時(shí)間大大增加;另外simulate scatter不包含尾部擬合
estimate scatter在simulate scatter的基礎(chǔ)上規(guī)定了一套估計(jì)散射事件的流程,包含SSRB,上采樣等操作
對(duì)輸入的3D投影數(shù)據(jù)進(jìn)行SSRB,轉(zhuǎn)化為2D投影數(shù)據(jù)
設(shè)置圖像重建輸入,設(shè)置2D投影數(shù)據(jù)作為輸入?yún)?shù),將衰減校正因子(>1),歸一化校正因子,隨機(jī)校正因子SSRB后加入到圖像重建中
下采樣探測(cè)器,如果設(shè)置了
設(shè)置尾部擬合掩膜。依據(jù)衰減圖像計(jì)算mask_image(通過(guò)閾值設(shè)置0-1圖像);對(duì)mask_image進(jìn)行濾波后,正投影得到mask_projdata,并加1(create_tail_mask_from_ACFs是處理衰減校正因子的,加1模擬衰減校正因子);對(duì)mask_projdata中每個(gè)view兩端小于閾值(默認(rèn)1.1)的bin置1,中間部分置0,用于尾部擬合
計(jì)算初始活度圖像(無(wú)法在參數(shù)文件中設(shè)置),使用SSRB后的2D投影數(shù)據(jù)作為輸入,全1圖像作為初始值
對(duì)2D投影數(shù)據(jù)進(jìn)行simulate scatter
進(jìn)行上采樣,將下采樣探測(cè)器后得到的投影數(shù)據(jù)上采樣為SSRB后的2D投影數(shù)據(jù)格式,使用二次B樣條采樣方法,將投影數(shù)據(jù)看作圖像,確定新投影數(shù)據(jù)中的bin在原數(shù)據(jù)中的位置,然后進(jìn)行插值
對(duì)2D投影數(shù)據(jù)進(jìn)行尾部擬合,每個(gè)直層采用實(shí)際數(shù)據(jù)與估計(jì)數(shù)據(jù)直接相除的方式計(jì)算一個(gè)縮放因子,再使用一個(gè)算術(shù)平均濾波器進(jìn)行平滑,縮放因子的范圍由minimum /maximum scatter scaling factor決定
將2D投影數(shù)據(jù)inverseSSRB為3D投影數(shù)據(jù),直接將平均軸向位置相同的直層數(shù)據(jù)賦值給斜層
3D投影數(shù)據(jù)除以歸一化因子,即散射校正考慮探測(cè)器效率因素
estimate scatter會(huì)覆蓋simulate scatter參數(shù)文件中定義的衰減圖像和模板投影數(shù)據(jù),其中模板投影數(shù)據(jù)由SSRB后的2D投影數(shù)據(jù)決定;而且simulate scatter參數(shù)文件中放大衰減圖像也無(wú)法使用,只能通過(guò)下采樣探測(cè)器減少LOR和放大衰減圖像尺寸
使用estimate scatter時(shí),simulate scatter參數(shù)文件中的” downsample scanner”不能同時(shí)置1,不然程序會(huì)報(bào)錯(cuò)
只能通過(guò)參數(shù)文件來(lái)定義重建方式和散射估計(jì)方式,而不能像用戶指南里說(shuō)的只輸入一個(gè)重建類型名或散射估計(jì)類型名
參數(shù)文件中不輸入歸一化校正因子,只輸入衰減校正因子的寫(xiě)法:
Bin Normalisation type := from projdata
Bin Normalisation From ProjData :=
normalisation projdata filename:= AttnCoff_STIR.hs
End Bin Normalisation From ProjData:=
若沒(méi)有歸一化因子,可以自己創(chuàng)建一個(gè)全1歸一化校正因子,需要在邊緣處設(shè)置一個(gè)不為1的數(shù)。因?yàn)榇a會(huì)判斷全1歸一化因子,會(huì)報(bào)錯(cuò)
若第一次散射迭代的散射估計(jì)很大,那做散射校正時(shí),由于prmp – scat < 0時(shí),會(huì)直接置0,相當(dāng)于沒(méi)做散射,每次迭代的變化很小。這時(shí),尾部擬合最大縮放限制可以設(shè)小一點(diǎn),不讓散射估計(jì)變得太大,從而讓散射估計(jì)的變化加快?,F(xiàn)在嘗試的是第3次迭代效果最好
(2)??? simulate scatter參數(shù)文件部分參數(shù)說(shuō)明
示例頭文件見(jiàn)附件,下面只介紹部分需要設(shè)置的參數(shù)
attenuation_threshold :=.01???????? ;選取散射點(diǎn)的閾值,單位為cm-1,輸入衰減圖像單位也是cm-1
randomly_place_scatter_points := 1???? ;在衰減圖像內(nèi)隨機(jī)取點(diǎn)
use_cache := 1???????? ;緩存散射點(diǎn)到晶體的積分
activity_image_filename := BrainZubal_Emap_STIR.hv????? ;活度圖像文件名
attenuation_image_filename := BrainZubal_Umap_STIR.hv????? ;衰減圖像文件名
template_projdata_filename :=? ZubalPrmp_STIR.hs??????? ;模板投影數(shù)據(jù)頭文件
output_filename_prefix := Scat_Coarse_STIR????? ;輸出文件名
downsample scanner := 0???? ;下采樣探測(cè)器
downsampled scanner number of detectors per ring := 64?????? ;下采樣探測(cè)器每環(huán)晶體數(shù)
downsampled scanner number of rings := 11??? ;下采樣探測(cè)器環(huán)數(shù)
attenuation_image_for_scatter_points_filename := Zubal_Umap_17_17_13.hv??????? ;計(jì)算散射點(diǎn)的衰減圖像
zoom XY for attenuation image for scatter points := -1????? ;原圖像體素尺寸/新圖像體素尺寸,應(yīng)該小于1
zoom Z for attenuation image for scatter points := -1??????? ;
XY size of downsampled image for scatter points := -1????? ;新圖像體素?cái)?shù)目
Z size of downsampled image for scatter points := -1??????? ;
attenuation image for scatter points output filename := zoomed_atten_image?????? ;放大后圖像輸出文件名
(3)??? estimate scatter參數(shù)文件部分參數(shù)說(shuō)明
示例頭文件見(jiàn)附件,下面只介紹部分需要設(shè)置的參數(shù)
run in debug mode := 1 ;輸出中間變量到extras文件夾中,輸出初始活度圖像,未上采樣的2D散射估計(jì)結(jié)果,上采樣后的2D散射估計(jì)結(jié)果,重建結(jié)果和生成的中間投影數(shù)據(jù)
input file := ZubalPrmp_STIR.hs? ;輸入3D投影數(shù)據(jù)
attenuation image filename := BrainZubal_Umap_STIR.hv??????? ;輸入衰減圖像
recompute mask image := 1 ;重計(jì)算掩膜圖像
mask image filename := mask_image.hv????? ;掩膜圖像文件名
mask attenuation image filter filename := postfilter_Gaussian_for_mask.par ;掩膜圖像正投影前的濾波器
mask attenuation image min threshold := 0.003??????? ;計(jì)算掩膜圖像時(shí),大于閾值置1,否則置0
recompute mask projdata := 1????? ;重新正投影掩膜圖像
mask projdata filename := mask_projdata.hs???? ;掩膜正投影文件名
tail fitting parameter filename := tail_fitting.par??????? ;尾部擬合參數(shù)文件名
background projdata filename := ${randoms3d}??????? ;隨機(jī)校正因子
Bin Normalisation type := Chained????? ;第一個(gè)文件默認(rèn)歸一化因子,第二個(gè)默認(rèn)衰減校正因子
Chained Bin Normalisation Parameters:=? ;只輸入一個(gè)文件則默認(rèn)是衰減校正因子
????Bin Normalisation to apply first:= from ProjData
????????Bin Normalisation From ProjData :=
????????normalisation projdata filename:= norm.hs
????End Bin Normalisation From ProjData:=
Bin Normalisation to apply second:= From ProjData
????Bin Normalisation From ProjData :=
????????normalisation projdata filename:= AttnCoff_STIR.hs
? ? End Bin Normalisation From ProjData:=
END Chained Bin Normalisation Parameters:=
reconstruction parameter filename := run_reconstruction.par??????? ;重建參數(shù)文件
number of scatter iterations := 2 ;散射估計(jì)次數(shù),每次改變的是活度圖像
scatter simulation parameter filename := scatter_simulation.par?? ;散射估計(jì)參數(shù)文件
use scanner downsampling in scatter simulation := 0?????? ;下采樣探測(cè)器
export scatter estimates of each iteration := 1??? ;每次迭代輸出結(jié)果
output scatter estimate name prefix := scatter_temp???????? ;輸出文件名
output additive estimate name prefix:= total_additive_temp?? ;散射加隨機(jī)
do average at 2 := 1??????? ;第2次迭代的活度圖像是初始活度圖像和第一次散射校正后重建圖像的平均
maximum scatter scaling factor := 2??? ;尾部擬合時(shí),每個(gè)直層的縮放因子范圍
minimum scatter scaling factor := 0.4 ;
upsampling half filter width := 3 ;尾部擬合縮放因子平均濾波器長(zhǎng)度,這里是2*3+1=7,每個(gè)參數(shù)為1/7
remove interleaving before upsampling := 0????? ;上采樣插值時(shí),解耦view中bin的Z字型排列,view翻倍
run in 2d projdata := 1? ;固定,現(xiàn)在只能對(duì)2D投影數(shù)據(jù)進(jìn)行散射估計(jì)

4、? 附件 使用STIR進(jìn)行散射估計(jì)的流程
(1)??? 實(shí)驗(yàn)室投影數(shù)據(jù)轉(zhuǎn)化為STIR類型
a)????數(shù)據(jù)文件處理如下,更改類型為”.s”
b)????設(shè)置投影文件頭文件”.hs”
(2)??? 設(shè)置圖像,讓XY方向有奇數(shù)個(gè)體素,Z方向有2*ringNum-1個(gè)體素
a)????使用simpleITK重采樣圖像,更改類型為”.v”
b)????設(shè)置圖像頭文件”.v”
(3)??? 設(shè)置simulate scatter參數(shù)文件scatter_simulation.par
(4)??? 設(shè)置estimate scatter參數(shù)文件scatter_estimate.par
(5)??? 設(shè)置用于mask_image的濾波器參數(shù)文件postfilter_Gaussian_for_mask.par
(6)??? 設(shè)置尾部擬合參數(shù)文件tail_fitting.par
(7)??? 設(shè)置圖像重建參數(shù)文件run_reconstruction.par
(8)??? 執(zhí)行散射估計(jì)指令