예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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))
예제 #5
0
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)