def transl_op_fixed_im(self, im): if isinstance(self.image_space, odl.ProductSpace): deform_op = odl.BroadcastOperator(defm.LinDeformFixedTempl(im[0]), defm.LinDeformFixedTempl(im[1])) else: deform_op = defm.LinDeformFixedTempl(im) return deform_op * self.embedding
x, y = X_plot.meshgrid u = disp_func[0]([x, y]) v = disp_func[1]([x, y]) plt.quiver(x, y, u, v, color='yellow') plt.axis('equal'), plt.axis([-1.3, 1.3, -1.3, 1.3]), plt.gca().set_aspect('equal', adjustable='box'), plt.savefig(folder_out + '/deformation_field.png', bbox_inches='tight', pad_inches=0, transparent=True, dpi=600, format='png') deform_op = defm.LinDeformFixedTempl(gt) # Create data angle_partition = odl.uniform_partition(0, np.pi, num_angles) detector_partition = odl.uniform_partition( -1.5, 1.5, int(1.6 * sinfo.shape[0])) geometry = odl.tomo.Parallel2dGeometry(angle_partition, detector_partition) A = odl.tomo.RayTransform(X, geometry, impl=impl) FBP = odl.tomo.fbp_op(A, filter_type='Hann') deformed_gt = deform_op(vf) deformed_sino = A(deformed_gt) aligned_sino = A(gt) poisson_factor = 100 / np.max(aligned_sino)
def transl_op_fixed_im_rest(self, im, rest): rest_deform = defm.LinDeformFixedDisp(rest) deformed_im = rest_deform(im) transl_operator = defm.LinDeformFixedTempl( deformed_im) * self.embedding_affine return transl_operator
def transl_op_fixed_im_aff(self, im, aff): affine_deform = defm.LinDeformFixedDisp(self.embedding_affine(aff)) deform_op = defm.LinDeformFixedTempl(affine_deform(im)) transl_operator = deform_op return transl_operator