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)
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)
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)
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)
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]]))
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]]))
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]]))