Beispiel #1
0
def BSplineOnly(f, m, p, path, elastix_path, output, plot=False):
    "Peforms BSpline transformation, using the fixed image, moving image, provided parameter file"
    E = elastix.ElastixInterface(elastix_path)
    E.register(fixed_image=f,
               moving_image=m,
               parameters=[p],
               output_dir=output)
    if plot == True:
        for i in range(4):
            L = elastix.logfile('{}\IterationInfo.0.R{}.txt'.format(path, i))
            # Plot the 'metric' against the iteration number 'itnr'
            plt.figure()
            plt.plot(L['itnr'], L['metric'])
            plt.tight_layout()
            plt.xlabel('Iteration Number', size=16)
            plt.ylabel('Mattes Mutual Information', size=16)
            plt.xticks(size=14)
            plt.yticks(size=14)
Beispiel #2
0
    transform_path0 = os.path.join(result_path, 'TransformParameters.0.txt')
    transform_path1 = os.path.join(result_path, 'TransformParameters.1.txt')
    final_transform_path = os.path.join(result_path, 'transform_pathfinal.txt')

    # Change FinalBSplineInterpolationOrder to 0 for binary mask transformation
    TransformParameterFileEditor(transform_path1, transform_path0, final_transform_path).modify_transform_parameter_file()

    # Make a new transformix object tr with the CORRECT PATH to transformix
    tr = elastix.TransformixInterface(parameters=final_transform_path,
                                      transformix_path=TRANSFORMIX_PATH)

    transformed_pr_path = tr.transform_image(pr_image_path, output_dir=result_path)
    image_array_tpr = sitk.GetArrayFromImage(sitk.ReadImage(transformed_pr_path))

    log_path = os.path.join(result_path, 'IterationInfo.1.R3.txt')
    log = elastix.logfile(log_path)

    DSC.append(dice_coef(image_array_opr, image_array_tpr))
    SNS.append(sensitivity(image_array_opr, image_array_tpr))
    SPC.append(specificity(image_array_opr, image_array_tpr))
    finalMI.append(statistics.mean(log['metric'][-50:-1]))

fig, (ax1,ax2,ax3) = plt.subplots(1, 3, figsize=(15, 5))
ax1.scatter(finalMI,DSC)
ax1.set_title("DSC")
ax2.scatter(finalMI,SNS)
ax2.set_title("SNS")
ax3.scatter(finalMI,SPC)
ax3.set_title("SPC")
plt.show()
Beispiel #3
0
#%% Excercise 3b multiresolution registration.
#E.register(
#    fixed_image=im1,
#    moving_image=im2,
#    parameters=['MR/parameters_samplespace2_MR.txt'],
#    output_dir='results')

#%% 3D registration

E.register(fixed_image=im1,
           moving_image=im2,
           parameters=[r'MR/Parameters_Rigid.txt'],
           output_dir='results')
#Parameters_Affine.txt
# Open the logfile into the dictionary L
L = elastix.logfile('results/IterationInfo.0.R0.txt')
plt.figure()
plt.plot(L['itnr'], L['metric'])
plt.show()
#%%
E.register(fixed_image=im1,
           moving_image=im2,
           parameters=[r'MR/Parameters_BSpline.txt'],
           initial_transform=r'results/TransformParameters.0.txt',
           output_dir='results')
#%%
L = elastix.logfile('results/IterationInfo.0.R0.txt')

# Plot the 'metric' against the iteration number 'itnr'
plt.figure()
plt.plot(L['itnr'], L['metric'])