掩码
对掩码程序进行make编译后会生成一个
main
的可执行文件,执行该文件是需要传递3个参数,传递方式如下:./main 原始灰度图像.nrrd 对应的二至图像.nrrd 掩码后文件名.nrrd
如果需要掩码的图像数量较多,可以写一个脚本批量处理,执行脚本前需要主要脚本的执行权限。
图像对齐建立图谱
该部分是进行图像分割的核心代码,代码量比较多,需要有很多细节需要注意。
程序通过调用
Traditional_Regi_Elastix
函数建立图谱,共有4个参数,参数列表如下:iterIndex //当前的迭代次数,迭代次数在main函数中设置
numSamples //数据集的个数
USE_HEALTHY_ATLAS_AS_REF //USE_HEALTHY_ATLAS_AS_REF=false
ofstream &ofs //记录程序执行时间等信息
为了方便程序的阅读,有些参数的默认值需要记住:
int Index_Atlas = 0;
bool use_Index_Atlas = true;
numTrainData = numSamples //数据集的个数
FixedAsMoving = false;
FirstIterationAffine = false;
NON_GREEDY = true;
char * movingIm_Affine //存放将要对齐的图像集名
fixedIm //存放平均模板名
char *EXE_REGISTER = "./elastix"; //elastix是一个可执行文件,程序中通过system调用,对齐的作用。
程序运行说明
将所有掩码后的数据集放到
training
文件夹中,命名格式为liver-mask_#.nrrd
,#
从0开始,且liver-mask_0.nrrd
是初始的平均图像模板。初始模板的选择是通过手动挑选最接近平均目标分割图像的数据集。创建
REG_UAB
文件夹,用于存放每次Ii对齐到平均图像模板之后所产生的变换矩阵T和刚性与非刚性变换后的图片数据以及平均模板。每次迭代后产生的平均图形模板命名为:
Average_UAB_iter#-0.nrrd
NON_GREEDY
用来控制要对齐的数据源,NON_GREEDY=true
时,每一次迭代都是将原始的掩码图像(liver-mask_#.nrrd)
对齐到平均图像模板上;NON_GREEDY=false
时,第一次迭代是将原始的掩码图像(liver-mask_#.nrrd)
对齐到初始的平均图像模板(liver-mask_0.nrrd)
上,之后得迭代过程是将非刚性变换的数据集(Iter%d_%d_Warped.nrrd)
对齐到平均图像模板上;本程序中是第二种情况:NON_GREEDY=true
。刚性变换得到的数据集:
Affine_Iter%d_%d_Warped.nrrd
;非刚性变换得到的数据集:Iter%d_%d_Warped.nrrd
;刚性变换得到的T:Affine_Iter%d_%d.txt
;非刚性变换得到的T:BSpline_Iter%d_%d.txt
。第一个%d
是迭代的次数,第二个%d
是第几个数据集。程序先求刚性再求非刚性。关于第0组数据,需要注意的:
Average_UAB_iter0-0.nrrd = liver-mask_0.nrrd
Average_UAB_iter0-0.nrrd = Affine_Iter0_0_Warped.nrrd
Average_UAB_iter0-0.nrrd = Iter0_0_Warped.nrrd
Average_UAB_iter#-0.nrrd
由每一组数据非刚性对齐后的数据集(Iter%d_%d_Warped.nrrd)
叠加求和再求平均得到的。
新的肝脏初始化方法
- 上图的执行流程如下:
- 先将灰度图谱对齐到测试灰度图像上,得到一个刚性变换矩阵和一个非刚性变换矩阵;
- 将变换矩阵作用到二值图谱中得到变换后的二值图像;
- 将测试的灰度图像做似然运算,得到最大似然图像;
- 似然图像与变换后的二值图像做与运算,得到最终的分割结果。
分割参数调节
在做图像分割是,需要调节
MAS_Elastix.cpp
文件中如下三个参数:bool TUMOR_CASE_USE_PA_EQUAL_ONE = false; //true/false
bool Use_Process_Ori_mask_9par = false; //true/false
double PAThreshold = 0.2; //PAThreshold = 0.2/0.9
- 每个参数都有两个取值,排列组合共有八中可能,所以最后分割数据需要测试八次,取其中结果最好的一次。
训练图谱
需要将灰度图像和二值图像作掩码之后才能开始训练图谱;
掩码的结果又4种可能,因此对应的图谱也有4中结果,情况如下:
1.灰度图像与二值图像都不插值作掩码,训练得到图谱;
2.灰度图像插值、二值图像不插值,再作掩码,训练得到图谱;
3.灰度图像不插值、二值图像插值,再作掩码,训练得到图谱;
4.灰度图像与二值图像都插值,再作掩码,训练得到图谱。分别测试上述4种图谱,对比分割结果,取其中分割结果最好的图谱。