Added test for ball and octahedton selems.

Note that only the center slice (in each dimension is tested)
since there is no reference data available for these selems.
I did visualize the 3D shapes to see whether they look right.
This commit is contained in:
Almar
2013-03-28 10:03:02 +01:00
parent 77192b6e9a
commit 644ab324dd
+24 -1
View File
@@ -36,9 +36,32 @@ class TestSElem():
expected_mask = expected_mask[:, np.newaxis]
assert_equal(expected_mask, actual_mask)
k = k + 1
def strel_worker_3d(self, fn, func):
matlab_masks = np.load(os.path.join(data_dir, fn))
k = 0
for arrname in sorted(matlab_masks):
expected_mask = matlab_masks[arrname]
actual_mask = func(k)
if (expected_mask.shape == (1,)):
expected_mask = expected_mask[:, np.newaxis]
# Test center slice for each dimension. This gives a good
# indication of validity without the need for a 3D reference
# mask.
c = int(expected_mask.shape[0]/2)
assert_equal(expected_mask, actual_mask[c,:,:])
assert_equal(expected_mask, actual_mask[:,c,:])
assert_equal(expected_mask, actual_mask[:,:,c])
k = k + 1
def test_selem_disk(self):
self.strel_worker("disk-matlab-output.npz", selem.disk)
def test_selem_diamond(self):
self.strel_worker("diamond-matlab-output.npz", selem.diamond)
def test_selem_ball(self):
self.strel_worker_3d("disk-matlab-output.npz", selem.ball)
def test_selem_octahedron(self):
self.strel_worker_3d("diamond-matlab-output.npz", selem.octahedron)