Example #1
0
def test_lic_2D():
    from scipy.ndimage.filters import line_integral_convolution as lic
    # was used to generate results for test cases
    # np.set_printoptions(
    #     formatter={'float':lambda x:'%.15e' % x},
    #     threshold=np.nan,
    #     linewidth=200)
    image = np.zeros((4,5))
    image[1,3] = 2
    ones_ = np.ones_like(image)
    velocity = ones_[:,:,None] * [[[0,2]]]
    kernel = [1,0.5,0.1]
    assert_allclose(lic(image, velocity, kernel, order=1, origin=-1,
                        weighted='integral'),
                    [[0, 0, 0, 0, 0],
                     [0, 0.2, 1, 2, 0],
                     [0, 0, 0, 0, 0],
                     [0, 0, 0, 0, 0]])

    velocity = ones_[:,:,None] * [[[2,0]]]
    assert_allclose(lic(image, velocity, kernel, order=1, origin=-1,
                        weighted='integral'),
                    [[0, 0, 0, 1, 0],
                     [0, 0, 0, 2, 0],
                     [0, 0, 0, 0, 0],
                     [0, 0, 0, 0, 0]])

    velocity = (ones_[:,:,None] * [[[2,7]]])
    assert_allclose(lic(image, velocity, kernel, order=1, origin=-1,
                        weighted='integral'),
        [[0, 1.014323035580300e-01, 2.726070909971477e-01,
          1.057018450115160e-02, 0],
         [0, 8.317727549829940e-02, 7.043072775873462e-01,
          2.027905867858025e+00, 0],
         [0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0]])
    assert_allclose(lic(image, velocity, kernel, order=3, origin=-1,
                        weighted='integral'),
        [[-4.946647656636081e-03, 1.041909046074850e-01,
          1.765005843082361e-01, 6.998764796487109e-04, 0],
         [3.736874054193710e-04, 8.431107873364971e-02,
          8.935011111472939e-01, 2.003570754474494e+00, 0],
         [1.425762748747135e-04, -1.431941717202221e-02,
          -1.164110107604186e-01, -4.650116996736128e-04, 0],
         [0, 0, 0, 0, 0]])
Example #2
0
def test_lic_1D():
    from scipy.ndimage.filters import line_integral_convolution as lic
    image = np.zeros((5,))
    image[3] = 2
    ones_ = np.ones_like(image)
    velocity = 10 * ones_[:,None]
    kernel = np.array([1, 0.5, 0.1])
    assert_allclose(lic(image, velocity, kernel, order=1, origin=-1,
                        weighted='integral'), [0, 0.2, 1, 2, 0])
    assert_allclose(lic(image, velocity, kernel, order=1, origin=None,
                        weighted='integral'), [0, 0.2, 1, 2, 0])
    assert_allclose(lic(ones_, velocity, kernel, order=1, weighted='average'),
                    ones_)

    assert_allclose(lic(image, velocity, kernel, order=1, weighted='integral'),
                    [0, 0, 0.2, 1, 2])

    assert_allclose(lic(image.astype(bool), velocity, kernel, order=1,
                        weighted='integral'), [0, 0, 0.1, 0.5, 1])

    assert_equal(lic(image.astype(bool), velocity, kernel, order=1,
                     weighted='integral').dtype.type,
                 np.float64)

    assert_equal(lic(image.astype(bool), velocity.astype(np.float32),
                     kernel.astype(np.float32),
                     order=1, weighted='integral').dtype.type,
                 np.float32)

    assert_equal(lic(image.astype(bool), velocity,
                     kernel.astype(np.float32),
                     order=1, weighted='integral').dtype.type,
                 np.float64)

    assert_allclose(lic(image, velocity, kernel, order=1, origin=None,
                        weighted='integral', step_size='unit_time',
                        maximum_velocity=1.), [0, 0.2, 1, 2, 0])

    assert_allclose(lic(image, velocity, kernel, order=1, origin=None,
                        weighted='integral', step_size='unit_time',
                        maximum_velocity=0.5), [0, 0, 0.35, 1.25, 0])