def test_4d_input_subpixel(): phantom = img_as_float(cp.asarray(binary_blobs(length=32, n_dim=4))) reference_image = fft.fftn(phantom) subpixel_shift = (-2.3, 1.7, 5.4, -3.2) shifted_image = fourier_shift(reference_image, subpixel_shift) result, error, diffphase = phase_cross_correlation( reference_image, shifted_image, upsample_factor=10, space="fourier" ) assert_allclose(result, -cp.asarray(subpixel_shift), atol=0.05)
def test_subpixel_precision(): reference_image = fft.fftn(cp.asarray(camera())) subpixel_shift = (-2.4, 1.32) shifted_image = fourier_shift(reference_image, subpixel_shift) # subpixel precision result, error, diffphase = phase_cross_correlation( reference_image, shifted_image, upsample_factor=100, space="fourier" ) assert_allclose(result[:2], -cp.asarray(subpixel_shift), atol=0.05)
def test_size_one_dimension_input(): # take a strip of the input image reference_image = fft.fftn(cp.asarray(camera())[:, 15]).reshape((-1, 1)) subpixel_shift = (-2.4, 4) shifted_image = fourier_shift(reference_image, subpixel_shift) # subpixel precision result, error, diffphase = phase_cross_correlation( reference_image, shifted_image, upsample_factor=20, space="fourier" ) assert_allclose(result[:2], -cp.asarray((-2.4, 0)), atol=0.05)
def test_correlation(): reference_image = fft.fftn(cp.asarray(camera())) shift = (-7, 12) shifted_image = fourier_shift( reference_image, shift ) # TODO: replace with CUDA fourier_shift # pixel precision result, error, diffphase = phase_cross_correlation( reference_image, shifted_image, space="fourier" ) assert_allclose(result[:2], -cp.asarray(shift))
def test_3d_input(): phantom = img_as_float(cp.asarray(binary_blobs(length=32, n_dim=3))) reference_image = fft.fftn(phantom) shift = (-2.0, 1.0, 5.0) shifted_image = fourier_shift(reference_image, shift) result, error, diffphase = phase_cross_correlation( reference_image, shifted_image, space="fourier" ) assert_allclose(result, -cp.asarray(shift), atol=0.05) # subpixel precision now available for 3-D data subpixel_shift = (-2.3, 1.7, 5.4) shifted_image = fourier_shift(reference_image, subpixel_shift) result, error, diffphase = phase_cross_correlation( reference_image, shifted_image, upsample_factor=100, space="fourier" ) assert_allclose(result, -cp.asarray(subpixel_shift), atol=0.05)