def test_masked_registration_random_masks_non_equal_sizes(): """masked_register_translation should be able to register translations between images that are not the same size even with random masks.""" # See random number generator for reproducible results np.random.seed(23) reference_image = camera() shift = (-7, 12) shifted = np.real( fft.ifft2(fourier_shift(fft.fft2(reference_image), shift))) # Crop the shifted image shifted = shifted[64:-64, 64:-64] # Random masks with 75% of pixels being valid ref_mask = np.random.choice([True, False], reference_image.shape, p=[3 / 4, 1 / 4]) shifted_mask = np.random.choice([True, False], shifted.shape, p=[3 / 4, 1 / 4]) measured_shift = masked_register_translation( reference_image, shifted, reference_mask=np.ones_like(ref_mask), moving_mask=np.ones_like(shifted_mask)) assert_equal(measured_shift, -np.array(shift))
def test_masked_registration_vs_register_translation(): """masked_register_translation should give the same results as register_translation in the case of trivial masks.""" reference_image = camera() shift = (-7, 12) shifted = np.real(fft.ifft2(fourier_shift( fft.fft2(reference_image), shift))) trivial_mask = np.ones_like(reference_image) nonmasked_result, *_ = register_translation(reference_image, shifted) masked_result = masked_register_translation( reference_image, shifted, trivial_mask, overlap_ratio=1 / 10) assert_equal(nonmasked_result, masked_result)