使用 sitk 获取偏差场

Get bias field using sitk

我正在尝试使用 sitk 库来清除有偏差的 Mr 图像 (MRI)。

我可以得到校正后的图像,但无法得到偏差图像。

设置以下参数:

shrink_factor=1,
mask_image=mask, 
number_of_iterations=100, 
number_of_fitting_levels=4

这是我试过的代码

corrected_image = corrector.Execute(image, maskImage)

log_bias_field = corrector.GetLogBiasFieldAsImage(inputImage)
bias_exp = sitk.Cast(sitk.Exp(log_bias_field), sitk.sitkFloat64)
bias = inputImage / bias_exp
bias = sitk.GetArrayFromImage(bias)
bias = bias / bias.max()

但我得到了这张图片:

你知道如何只得到偏差吗?

要获得偏置场函数,您需要决定全分辨率图像的分辨率:

bias_field_full_resolution = sitk.Exp(corrector.GetLogBiasFieldAsImage(biased_image_full_resolution))

调用 Execute 方法时,会估计偏差场,校正后的图像与输入具有相同的分辨率,通常是原始偏差图像的重采样版本。

如果我们真的想以原始分辨率校正图像:

bias_field_full_resolution = sitk.Exp(corrector.GetLogBiasFieldAsImage(biased_image_full_resolution))
corrected_image_full_resolution = biased_image_full_resolution / bias_field_full_resolution