45 lines
2.1 KiB
Python
45 lines
2.1 KiB
Python
import numpy as np
|
|
import skimage.graph.mcp as mcp
|
|
|
|
from skimage._shared.testing import assert_array_equal
|
|
|
|
|
|
a = np.ones((8, 8), dtype=np.float32)
|
|
|
|
horizontal_ramp = np.array([[ 0., 1., 2., 3., 4., 5., 6., 7.,],
|
|
[ 0., 1., 2., 3., 4., 5., 6., 7.,],
|
|
[ 0., 1., 2., 3., 4., 5., 6., 7.,],
|
|
[ 0., 1., 2., 3., 4., 5., 6., 7.,],
|
|
[ 0., 1., 2., 3., 4., 5., 6., 7.,],
|
|
[ 0., 1., 2., 3., 4., 5., 6., 7.,],
|
|
[ 0., 1., 2., 3., 4., 5., 6., 7.,],
|
|
[ 0., 1., 2., 3., 4., 5., 6., 7.,]])
|
|
|
|
vertical_ramp = np.array( [[ 0., 0., 0., 0., 0., 0., 0., 0.,],
|
|
[ 1., 1., 1., 1., 1., 1., 1., 1.,],
|
|
[ 2., 2., 2., 2., 2., 2., 2., 2.,],
|
|
[ 3., 3., 3., 3., 3., 3., 3., 3.,],
|
|
[ 4., 4., 4., 4., 4., 4., 4., 4.,],
|
|
[ 5., 5., 5., 5., 5., 5., 5., 5.,],
|
|
[ 6., 6., 6., 6., 6., 6., 6., 6.,],
|
|
[ 7., 7., 7., 7., 7., 7., 7., 7.,]])
|
|
|
|
|
|
def test_anisotropy():
|
|
# Create seeds; vertical seeds create a horizonral ramp
|
|
seeds_for_horizontal = [(i, 0) for i in range(8)]
|
|
seeds_for_vertcal = [(0, i) for i in range(8)]
|
|
|
|
for sy in range(1, 5):
|
|
for sx in range(1, 5):
|
|
sampling = sy, sx
|
|
# Trace horizontally
|
|
m1 = mcp.MCP_Geometric(a, sampling=sampling, fully_connected=True)
|
|
costs1, traceback = m1.find_costs(seeds_for_horizontal)
|
|
# Trace vertically
|
|
m2 = mcp.MCP_Geometric(a, sampling=sampling, fully_connected=True)
|
|
costs2, traceback = m2.find_costs(seeds_for_vertcal)
|
|
|
|
# Check
|
|
assert_array_equal(costs1, horizontal_ramp * sx)
|
|
assert_array_equal(costs2, vertical_ramp * sy)
|