diff --git a/skimage/rank/_crank16.pyx b/skimage/rank/_crank16.pyx index 573db50f..90a7e8bb 100644 --- a/skimage/rank/_crank16.pyx +++ b/skimage/rank/_crank16.pyx @@ -35,7 +35,7 @@ cdef inline np.uint16_t kernel_autolevel(int* histo, float pop, np.uint16_t g,in break delta = imax-imin if delta>0: - return (maxbin*1.*(g-imin)/delta) + return (1.*(maxbin-1)*(g-imin)/delta) else: return (imax-imin) @@ -59,7 +59,7 @@ cdef inline np.uint16_t kernel_equalize(int* histo, float pop, np.uint16_t g,int if i>=g: break - return ((maxbin*1.*sum)/pop) + return (((maxbin-1)*sum)/pop) else: return (0) @@ -107,7 +107,7 @@ cdef inline np.uint16_t kernel_meansubstraction(int* histo, float pop, np.uint16 if pop: for i in range(maxbin): mean += histo[i]*i - return ((g-mean/pop)/2.+midbin) + return ((g-mean/pop)/2.+(midbin-1)) else: return (0) diff --git a/skimage/rank/tests/test_suite.py b/skimage/rank/tests/test_suite.py index 97345f4f..0887fa8f 100644 --- a/skimage/rank/tests/test_suite.py +++ b/skimage/rank/tests/test_suite.py @@ -108,19 +108,16 @@ class TestSequenceFunctions(unittest.TestCase): # filters applied on 8bit image ore 16bit image (having only real 8bit of dynamic) should be identical i8 = data.camera() i16 = i8.astype(np.uint16) + assert (i8==i16).all() + methods = ['autolevel','bottomhat','equalize','gradient','maximum','mean' ,'meansubstraction','median','minimum','modal','morph_contr_enh','pop','threshold', 'tophat'] + for method in methods: func = eval('rank.%s'%method) - print func f8 = func(i8,disk(3)) f16 = func(i16,disk(3)) -# if (f8==f16).all() is False: - if not (f8==f16).all(): - - print f8 - print f16 - + assert (f8==f16).all() if __name__ == '__main__':