예제 #1
0
def test_structure_tensor_3d_rc_only():
    cube = cp.zeros((5, 5, 5))
    with pytest.raises(ValueError):
        structure_tensor(cube, sigma=0.1, order='xy')
    A_elems_rc = structure_tensor(cube, sigma=0.1, order='rc')
    A_elems_none = structure_tensor(cube, sigma=0.1)
    for a_rc, a_none in zip(A_elems_rc, A_elems_none):
        assert_array_equal(a_rc, a_none)
예제 #2
0
def test_structure_tensor_orders():
    square = cp.zeros((5, 5))
    square[2, 2] = 1
    with expected_warnings(['the default order of the structure']):
        A_elems_default = structure_tensor(square, sigma=0.1)
    A_elems_xy = structure_tensor(square, sigma=0.1, order='xy')
    A_elems_rc = structure_tensor(square, sigma=0.1, order='rc')
    for elem_xy, elem_def in zip(A_elems_xy, A_elems_default):
        assert_array_equal(elem_xy, elem_def)
    for elem_xy, elem_rc in zip(A_elems_xy, A_elems_rc[::-1]):
        assert_array_equal(elem_xy, elem_rc)
예제 #3
0
def test_structure_tensor_eigenvalues_3d():
    image = cp.pad(cube(9), 5, mode='constant') * 1000
    boundary = (cp.pad(cube(9), 5, mode='constant') -
                cp.pad(cube(7), 6, mode='constant')).astype(bool)
    A_elems = structure_tensor(image, sigma=0.1)
    e0, e1, e2 = structure_tensor_eigenvalues(A_elems)
    # e0 should detect facets
    assert np.all(e0[boundary] != 0)
예제 #4
0
def test_structure_tensor_eigvals():
    square = cp.zeros((5, 5))
    square[2, 2] = 1
    A_elems = structure_tensor(square, sigma=0.1, order='rc')
    with expected_warnings(['structure_tensor_eigvals is deprecated']):
        eigvals = structure_tensor_eigvals(*A_elems)
    eigenvalues = structure_tensor_eigenvalues(A_elems)
    for ev1, ev2 in zip(eigvals, eigenvalues):
        assert_array_equal(ev1, ev2)
예제 #5
0
def test_structure_tensor_eigenvalues():
    square = cp.zeros((5, 5))
    square[2, 2] = 1
    A_elems = structure_tensor(square, sigma=0.1, order='rc')
    l1, l2 = structure_tensor_eigenvalues(A_elems)
    assert_array_equal(
        l1,
        cp.asarray([[0, 0, 0, 0, 0], [0, 2, 4, 2, 0], [0, 4, 0, 4, 0],
                    [0, 2, 4, 2, 0], [0, 0, 0, 0, 0]]))
    assert_array_equal(
        l2,
        cp.asarray([[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0],
                    [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]))
예제 #6
0
def test_structure_tensor():
    square = cp.zeros((5, 5))
    square[2, 2] = 1
    Arr, Arc, Acc = structure_tensor(square, sigma=0.1, order='rc')
    # fmt: off
    assert_array_equal(
        Acc,
        cp.asarray([[0, 0, 0, 0, 0], [0, 1, 0, 1, 0], [0, 4, 0, 4, 0],
                    [0, 1, 0, 1, 0], [0, 0, 0, 0, 0]]))
    assert_array_equal(
        Arc,
        cp.asarray([[0, 0, 0, 0, 0], [0, 1, 0, -1, 0], [0, 0, 0, -0, 0],
                    [0, -1, -0, 1, 0], [0, 0, 0, 0, 0]]))
    assert_array_equal(
        Arr,
        cp.asarray([[0, 0, 0, 0, 0], [0, 1, 4, 1, 0], [0, 0, 0, 0, 0],
                    [0, 1, 4, 1, 0], [0, 0, 0, 0, 0]]))
예제 #7
0
def test_structure_tensor_3d():
    cube = cp.zeros((5, 5, 5))
    cube[2, 2, 2] = 1
    A_elems = structure_tensor(cube, sigma=0.1)
    assert_equal(len(A_elems), 6)
    # fmt: off
    assert_array_equal(
        A_elems[0][:, 1, :],
        cp.asarray([[0, 0, 0, 0, 0], [0, 1, 4, 1, 0], [0, 0, 0, 0, 0],
                    [0, 1, 4, 1, 0], [0, 0, 0, 0, 0]]))
    assert_array_equal(
        A_elems[0][1],
        cp.asarray([[0, 0, 0, 0, 0], [0, 1, 4, 1, 0], [0, 4, 16, 4, 0],
                    [0, 1, 4, 1, 0], [0, 0, 0, 0, 0]]))
    assert_array_equal(
        A_elems[3][2],
        cp.asarray([[0, 0, 0, 0, 0], [0, 4, 16, 4, 0], [0, 0, 0, 0, 0],
                    [0, 4, 16, 4, 0], [0, 0, 0, 0, 0]]))