diff --git a/skimage/filter/rank/tests/test_histo.py b/skimage/filter/rank/tests/test_histo.py index b6a7bbca..a943176d 100644 --- a/skimage/filter/rank/tests/test_histo.py +++ b/skimage/filter/rank/tests/test_histo.py @@ -1,57 +1,100 @@ -import sys -print sys.path -import skimage -print skimage - -import unittest - import numpy as np -from skimage.filter import rank +from numpy.testing import run_module_suite, assert_array_equal -from skimage import data -from skimage.morphology import cmorph,disk from skimage.filter.rank import _crank8, _crank16 -from skimage.filter.rank import _crank16_percentiles -class TestSequenceFunctions(unittest.TestCase): +def test_trivial_selem8(): + # check that min, max and mean returns identity if structuring element + # contains only central pixel - def setUp(self): - pass + image = np.zeros((5, 5), dtype=np.uint8) + out = np.zeros_like(image) + mask = np.ones_like(image, dtype=np.uint8) + image[2,2] = 255 + image[2,3] = 128 + image[1,2] = 16 - def test_trivial_selem(self): - # check that min, max and mean returns identity if structuring element contains only central pixel - - a = np.zeros((5,5),dtype='uint8') - a[2,2] = 255 - a[2,3] = 128 - a[1,2] = 16 - elem = np.asarray([[0,0,0],[0,1,0],[0,0,0]],dtype='uint8') - f = _crank8.mean(image=a,selem = elem,shift_x=0,shift_y=0) - np.testing.assert_array_equal(a,f) - f = _crank8.minimum(image=a,selem = elem,shift_x=0,shift_y=0) - np.testing.assert_array_equal(a,f) - f = _crank8.maximum(image=a,selem = elem,shift_x=0,shift_y=0) - np.testing.assert_array_equal(a,f) - - def test_smallest_selem(self): - # check that min, max and mean returns identity if structuring element contains only central pixel - - a = np.zeros((5,5),dtype='uint8') - a[2,2] = 255 - a[2,3] = 128 - a[1,2] = 16 - elem = np.asarray([[1]],dtype='uint8') - f = _crank8.mean(image=a,selem = elem,shift_x=0,shift_y=0) - np.testing.assert_array_equal(a,f) - f = _crank8.minimum(image=a,selem = elem,shift_x=0,shift_y=0) - np.testing.assert_array_equal(a,f) - f = _crank8.maximum(image=a,selem = elem,shift_x=0,shift_y=0) - np.testing.assert_array_equal(a,f) + elem = np.array([[0, 0, 0], [0, 1, 0],[0, 0, 0]], dtype=np.uint8) + _crank8.mean(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + _crank8.minimum(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + _crank8.maximum(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) +def test_trivial_selem16(): + # check that min, max and mean returns identity if structuring element + # contains only central pixel -if __name__ == '__main__': + image = np.zeros((5, 5), dtype=np.uint16) + out = np.zeros_like(image) + mask = np.ones_like(image, dtype=np.uint8) + image[2,2] = 255 + image[2,3] = 128 + image[1,2] = 16 - suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions) - unittest.TextTestRunner(verbosity=2).run(suite) + elem = np.array([[0, 0, 0], [0, 1, 0],[0, 0, 0]], dtype=np.uint8) + _crank16.mean(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + _crank16.minimum(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + _crank16.maximum(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + + +def test_smallest_selem8(): + # check that min, max and mean returns identity if structuring element + # contains only central pixel + + image = np.zeros((5, 5), dtype=np.uint8) + out = np.zeros_like(image) + mask = np.ones_like(image, dtype=np.uint8) + image[2,2] = 255 + image[2,3] = 128 + image[1,2] = 16 + + elem = np.array([[1]], dtype=np.uint8) + _crank8.mean(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + _crank8.minimum(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + _crank8.maximum(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + + +def test_smallest_selem16(): + # check that min, max and mean returns identity if structuring element + # contains only central pixel + + image = np.zeros((5, 5), dtype=np.uint16) + out = np.zeros_like(image) + mask = np.ones_like(image, dtype=np.uint8) + image[2,2] = 255 + image[2,3] = 128 + image[1,2] = 16 + + elem = np.array([[1]], dtype=np.uint8) + _crank16.mean(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + _crank16.minimum(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + _crank16.maximum(image=image, selem=elem, out=out, mask=mask, + shift_x=0, shift_y=0) + assert_array_equal(image, out) + + +if __name__ == "__main__": + run_module_suite()