mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-06 05:16:40 +08:00
Fix, improve and extend histogram test cases
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user