Jat = resample(J, Av, reference=I, ref_voxel_coords=True)
save_image(Jat, 'affine_anubis_to_ammon.nii')

# Region matching
t0 = time.time()

##corners, size = get_blocks(I.shape, 3, 1, 0) #.5 size
##corners, size = get_blocks(I.shape, 6, 2, 0) #.75 size
##corners, size = get_blocks(I.shape, 6, 1, 0) # .5 size

corners, size = get_blocks(I.shape, 5, 2, 1)

affines = []
for corner in corners:
    print('Doing block: %s' % corner)
    Ar = A.copy()
    R.subsample(corner=corner, size=size)
    R.optimize(Ar)
    affines.append(Ar)

# Create polyaffine transform
t1 = time.time()
centers = np.array(corners) + (size - 1) / 2.
affines = [Ar.compose(Affine(I.affine)) for Ar in affines]
Tv = PolyAffine(centers, affines, .5 * size)

# Resample target image
t2 = time.time()
Jt = resample(J, Tv, reference=I, ref_voxel_coords=True)
###c = debug_resample(Tv, I, J)