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)
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()
#%% 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'])