From e618c1d4548977efa17cc6d6353dde456a7d4f92 Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Thu, 18 Oct 2012 10:00:10 +0200 Subject: [PATCH] move rank/ into filter/ --- doc/__init__.py | 1 + .../{ => applications}/plot_benchmark_rank.py | 19 +++++----- doc/examples/plot_16bitbilateral.py | 8 ++-- doc/examples/plot_lena_bilateral_denoise.py | 2 +- doc/examples/plot_local_autolevels.py | 2 +- doc/examples/plot_local_equalize.py | 2 +- doc/examples/plot_local_threshold.py | 2 +- doc/examples/plot_marked_watershed.py | 5 +-- skimage/{ => filter}/rank/README.rst | 0 skimage/{ => filter}/rank/__init__.py | 0 skimage/{ => filter}/rank/_core16.pxd | 0 skimage/{ => filter}/rank/_core16.pyx | 0 skimage/{ => filter}/rank/_core8.pxd | 0 skimage/{ => filter}/rank/_core8.pyx | 0 skimage/{ => filter}/rank/_crank16.pyx | 2 +- .../{ => filter}/rank/_crank16_bilateral.pyx | 2 +- .../rank/_crank16_percentiles.pyx | 2 +- skimage/{ => filter}/rank/_crank8.pyx | 2 +- .../{ => filter}/rank/_crank8_percentiles.pyx | 2 +- skimage/{ => filter}/rank/bilateral_rank.py | 31 ++++++++++++---- skimage/{ => filter}/rank/generic.py | 0 skimage/{ => filter}/rank/local/demo_all.py | 3 +- .../{ => filter}/rank/local/demo_single.py | 3 +- skimage/filter/rank/local/iko_pan_Ja1.tif | Bin 0 -> 129176 bytes .../rank/local/test_morph_contr_enh.py | 2 +- skimage/{ => filter}/rank/local/test_rank.py | 2 +- skimage/{ => filter}/rank/percentile_rank.py | 23 +++++------- skimage/{ => filter}/rank/rank.py | 35 ++++++++---------- skimage/{ => filter}/rank/setup.py | 0 skimage/{ => filter}/rank/tests/test_suite.py | 8 ++-- skimage/rank/local/__init__.py | 0 31 files changed, 83 insertions(+), 75 deletions(-) create mode 100644 doc/__init__.py rename doc/examples/{ => applications}/plot_benchmark_rank.py (96%) rename skimage/{ => filter}/rank/README.rst (100%) rename skimage/{ => filter}/rank/__init__.py (100%) rename skimage/{ => filter}/rank/_core16.pxd (100%) rename skimage/{ => filter}/rank/_core16.pyx (100%) rename skimage/{ => filter}/rank/_core8.pxd (100%) rename skimage/{ => filter}/rank/_core8.pyx (100%) rename skimage/{ => filter}/rank/_crank16.pyx (99%) rename skimage/{ => filter}/rank/_crank16_bilateral.pyx (98%) rename skimage/{ => filter}/rank/_crank16_percentiles.pyx (99%) rename skimage/{ => filter}/rank/_crank8.pyx (99%) rename skimage/{ => filter}/rank/_crank8_percentiles.pyx (99%) rename skimage/{ => filter}/rank/bilateral_rank.py (85%) rename skimage/{ => filter}/rank/generic.py (100%) rename skimage/{ => filter}/rank/local/demo_all.py (98%) rename skimage/{ => filter}/rank/local/demo_single.py (92%) create mode 100644 skimage/filter/rank/local/iko_pan_Ja1.tif rename skimage/{ => filter}/rank/local/test_morph_contr_enh.py (93%) rename skimage/{ => filter}/rank/local/test_rank.py (95%) rename skimage/{ => filter}/rank/percentile_rank.py (98%) rename skimage/{ => filter}/rank/rank.py (98%) rename skimage/{ => filter}/rank/setup.py (100%) rename skimage/{ => filter}/rank/tests/test_suite.py (97%) delete mode 100644 skimage/rank/local/__init__.py diff --git a/doc/__init__.py b/doc/__init__.py new file mode 100644 index 00000000..10b6fb15 --- /dev/null +++ b/doc/__init__.py @@ -0,0 +1 @@ +__author__ = 'olivier' diff --git a/doc/examples/plot_benchmark_rank.py b/doc/examples/applications/plot_benchmark_rank.py similarity index 96% rename from doc/examples/plot_benchmark_rank.py rename to doc/examples/applications/plot_benchmark_rank.py index dab2f8d4..79357768 100644 --- a/doc/examples/plot_benchmark_rank.py +++ b/doc/examples/applications/plot_benchmark_rank.py @@ -19,13 +19,14 @@ import numpy as np import matplotlib.pyplot as plt import time +from scipy.ndimage.filters import percentile_filter + from skimage import data from skimage.morphology import dilation,disk from skimage.filter import median_filter -from scipy.ndimage.filters import percentile_filter -import skimage.rank as rank +import skimage.filter.rank as rank -def log_timing(func): +def exec_and_timeit(func): """ Decorator that returns both function results and execution time (result, ms) """ @@ -38,23 +39,23 @@ def log_timing(func): return wrapper -@log_timing +@exec_and_timeit def cr_med(image,selem): return rank.median(image=image,selem = selem) -@log_timing +@exec_and_timeit def cr_max(image,selem): return rank.maximum(image=image,selem = selem) -@log_timing +@exec_and_timeit def cm_dil(image,selem): return dilation(image=image,selem = selem) -@log_timing +@exec_and_timeit def ctmf_med(image,radius): return median_filter(image=image,radius=radius) -@log_timing +@exec_and_timeit def ndi_med(image,n): return percentile_filter(image,50,size=n*2-1) @@ -84,8 +85,6 @@ def compare_dilate(): plt.title('increasing element size') plt.plot(e_range,rec) plt.legend(['crank.maximum','cmorph.dilate']) - plt.figure() - plt.imshow(np.hstack((rc,rcm))) r = 9 elem = disk(r+1) diff --git a/doc/examples/plot_16bitbilateral.py b/doc/examples/plot_16bitbilateral.py index f61f3c55..076d03c4 100644 --- a/doc/examples/plot_16bitbilateral.py +++ b/doc/examples/plot_16bitbilateral.py @@ -11,7 +11,7 @@ import matplotlib.pyplot as plt from skimage import data from skimage.morphology import disk -import skimage.rank as rank +import skimage.filter.rank as rank a8 = (data.coins()).astype('uint8') @@ -23,11 +23,13 @@ selem = disk(50) f3 = rank.equalize(a16,selem = selem) # display results -fig, axes = plt.subplots(nrows=3, figsize=(15,5)) +fig, axes = plt.subplots(nrows=3, figsize=(15,15)) ax0, ax1, ax2 = axes ax0.imshow(np.hstack((a8,f1))) +ax0.set_title('percentile mean') ax1.imshow(np.hstack((a16,f2))) +ax1.set_title('bilateral mean') ax2.imshow(np.hstack((a16,f3))) - +ax2.set_title('local equalization') plt.show() diff --git a/doc/examples/plot_lena_bilateral_denoise.py b/doc/examples/plot_lena_bilateral_denoise.py index 57593867..969403d0 100644 --- a/doc/examples/plot_lena_bilateral_denoise.py +++ b/doc/examples/plot_lena_bilateral_denoise.py @@ -18,7 +18,7 @@ import numpy as np import matplotlib.pyplot as plt from skimage import data, color, img_as_ubyte -from skimage.rank import bilateral_mean +from skimage.filter.rank import bilateral_mean from skimage.morphology import disk l = img_as_ubyte(color.rgb2gray(data.lena())) diff --git a/doc/examples/plot_local_autolevels.py b/doc/examples/plot_local_autolevels.py index 842215d5..7c750141 100644 --- a/doc/examples/plot_local_autolevels.py +++ b/doc/examples/plot_local_autolevels.py @@ -13,7 +13,7 @@ import numpy as np from skimage import data -from skimage.rank import percentile_autolevel,autolevel +from skimage.filter.rank import percentile_autolevel,autolevel from skimage.morphology import disk diff --git a/doc/examples/plot_local_equalize.py b/doc/examples/plot_local_equalize.py index 897989f0..1a431f5c 100644 --- a/doc/examples/plot_local_equalize.py +++ b/doc/examples/plot_local_equalize.py @@ -17,12 +17,12 @@ The local version [2]_ of the histogram equalization emphasized every local gray from skimage import data from skimage.util.dtype import dtype_range from skimage import exposure -from skimage import rank from skimage.morphology import disk import matplotlib.pyplot as plt import numpy as np +from skimage.filter import rank def plot_img_and_hist(img, axes, bins=256): """Plot an image along with its histogram and cumulative histogram. diff --git a/doc/examples/plot_local_threshold.py b/doc/examples/plot_local_threshold.py index c5810156..8bc79b30 100644 --- a/doc/examples/plot_local_threshold.py +++ b/doc/examples/plot_local_threshold.py @@ -27,7 +27,7 @@ import matplotlib.pyplot as plt from skimage import data from skimage.filter import threshold_otsu, threshold_adaptive -from skimage.rank import threshold,morph_contr_enh +from skimage.filter.rank import threshold,morph_contr_enh from skimage.morphology import disk diff --git a/doc/examples/plot_marked_watershed.py b/doc/examples/plot_marked_watershed.py index 0be25007..738a3d24 100644 --- a/doc/examples/plot_marked_watershed.py +++ b/doc/examples/plot_marked_watershed.py @@ -14,15 +14,14 @@ See Wikipedia_ for more details on the algorithm. """ -import numpy as np from scipy import ndimage import matplotlib.pyplot as plt from skimage.morphology import watershed,disk -from skimage import rank from skimage import data -from scipy import ndimage # original data +from skimage.filter import rank + image = data.camera() # denoise image diff --git a/skimage/rank/README.rst b/skimage/filter/rank/README.rst similarity index 100% rename from skimage/rank/README.rst rename to skimage/filter/rank/README.rst diff --git a/skimage/rank/__init__.py b/skimage/filter/rank/__init__.py similarity index 100% rename from skimage/rank/__init__.py rename to skimage/filter/rank/__init__.py diff --git a/skimage/rank/_core16.pxd b/skimage/filter/rank/_core16.pxd similarity index 100% rename from skimage/rank/_core16.pxd rename to skimage/filter/rank/_core16.pxd diff --git a/skimage/rank/_core16.pyx b/skimage/filter/rank/_core16.pyx similarity index 100% rename from skimage/rank/_core16.pyx rename to skimage/filter/rank/_core16.pyx diff --git a/skimage/rank/_core8.pxd b/skimage/filter/rank/_core8.pxd similarity index 100% rename from skimage/rank/_core8.pxd rename to skimage/filter/rank/_core8.pxd diff --git a/skimage/rank/_core8.pyx b/skimage/filter/rank/_core8.pyx similarity index 100% rename from skimage/rank/_core8.pyx rename to skimage/filter/rank/_core8.pyx diff --git a/skimage/rank/_crank16.pyx b/skimage/filter/rank/_crank16.pyx similarity index 99% rename from skimage/rank/_crank16.pyx rename to skimage/filter/rank/_crank16.pyx index ce8510db..57d41563 100644 --- a/skimage/rank/_crank16.pyx +++ b/skimage/filter/rank/_crank16.pyx @@ -15,7 +15,7 @@ import numpy as np cimport numpy as np # import main loop -from _core16 cimport _core16 +from skimage.filter.rank._core16 cimport _core16 # ----------------------------------------------------------------- # kernels uint16 take extra parameter for defining the bitdepth diff --git a/skimage/rank/_crank16_bilateral.pyx b/skimage/filter/rank/_crank16_bilateral.pyx similarity index 98% rename from skimage/rank/_crank16_bilateral.pyx rename to skimage/filter/rank/_crank16_bilateral.pyx index b5103be4..24016bbf 100644 --- a/skimage/rank/_crank16_bilateral.pyx +++ b/skimage/filter/rank/_crank16_bilateral.pyx @@ -15,7 +15,7 @@ import numpy as np cimport numpy as np # import main loop -from _core16 cimport _core16 +from skimage.filter.rank._core16 cimport _core16 # ----------------------------------------------------------------- # kernels uint16 take extra parameter for defining the bitdepth diff --git a/skimage/rank/_crank16_percentiles.pyx b/skimage/filter/rank/_crank16_percentiles.pyx similarity index 99% rename from skimage/rank/_crank16_percentiles.pyx rename to skimage/filter/rank/_crank16_percentiles.pyx index 527d2aed..73ccde68 100644 --- a/skimage/rank/_crank16_percentiles.pyx +++ b/skimage/filter/rank/_crank16_percentiles.pyx @@ -7,7 +7,7 @@ import numpy as np cimport numpy as np # import main loop -from _core16 cimport _core16, int_min, int_max +from skimage.filter.rank._core16 cimport _core16, int_min, int_max # ----------------------------------------------------------------- # kernels uint16 (SOFT version using percentiles) diff --git a/skimage/rank/_crank8.pyx b/skimage/filter/rank/_crank8.pyx similarity index 99% rename from skimage/rank/_crank8.pyx rename to skimage/filter/rank/_crank8.pyx index 94124cf7..045e3645 100644 --- a/skimage/rank/_crank8.pyx +++ b/skimage/filter/rank/_crank8.pyx @@ -15,7 +15,7 @@ import numpy as np cimport numpy as np # import main loop -from _core8 cimport _core8 +from skimage.filter.rank._core8 cimport _core8 # ----------------------------------------------------------------- # kernels uint8 diff --git a/skimage/rank/_crank8_percentiles.pyx b/skimage/filter/rank/_crank8_percentiles.pyx similarity index 99% rename from skimage/rank/_crank8_percentiles.pyx rename to skimage/filter/rank/_crank8_percentiles.pyx index 5441eac7..f882961a 100644 --- a/skimage/rank/_crank8_percentiles.pyx +++ b/skimage/filter/rank/_crank8_percentiles.pyx @@ -7,7 +7,7 @@ import numpy as np cimport numpy as np # import main loop -from _core8 cimport _core8, uint8_max, uint8_min +from skimage.filter.rank._core8 cimport _core8, uint8_max, uint8_min # ----------------------------------------------------------------- # kernels uint8 (SOFT version using percentiles) diff --git a/skimage/rank/bilateral_rank.py b/skimage/filter/rank/bilateral_rank.py similarity index 85% rename from skimage/rank/bilateral_rank.py rename to skimage/filter/rank/bilateral_rank.py index 24ccbcd0..1dc7552d 100644 --- a/skimage/rank/bilateral_rank.py +++ b/skimage/filter/rank/bilateral_rank.py @@ -1,17 +1,32 @@ -""" +"""bilateral_rank.py - approximate bilateral rankfilter for local (custom kernel) mean -note: 8 bit images are casted into 16 bit image here +The local histogram is computed using a sliding window similar to the method described in + +Reference: Huang, T. ,Yang, G. ; Tang, G.. "A fast two-dimensional median filtering algorithm", +IEEE Transactions on Acoustics, Speech and Signal Processing, Feb 1979. Volume: 27 , Issue: 1, Page(s): 13 - 18. + +input image can be 8 bit or 16 bit with a value < 4096 (i.e. 12 bit), +8 bit images are casted in 16 bit +the number of histogram bins is determined from the maximum value present in the image + +The pixel neighborhood is defined by: + +* the given structuring element + +* an interval [g-s0,g+s1] in gray level around g the processed pixel gray level + +The kernel is flat (i.e. each pixel belonging to the neighborhood contributes equally) + +result image is 16 bit with respect to the input image """ - -import warnings from skimage import img_as_ubyte import numpy as np +from skimage.filter.rank import _crank16_bilateral -from generic import find_bitdepth -import _crank16_bilateral +from skimage.filter.rank.generic import find_bitdepth __all__ = ['bilateral_mean', 'bilateral_pop'] @@ -67,7 +82,7 @@ def bilateral_mean(image, selem, out=None, mask=None, shift_x=False, shift_y=Fal to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -131,7 +146,7 @@ def bilateral_pop(image, selem, out=None, mask=None, shift_x=False, shift_y=Fals to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], diff --git a/skimage/rank/generic.py b/skimage/filter/rank/generic.py similarity index 100% rename from skimage/rank/generic.py rename to skimage/filter/rank/generic.py diff --git a/skimage/rank/local/demo_all.py b/skimage/filter/rank/local/demo_all.py similarity index 98% rename from skimage/rank/local/demo_all.py rename to skimage/filter/rank/local/demo_all.py index 8df5c3e7..038c749b 100644 --- a/skimage/rank/local/demo_all.py +++ b/skimage/filter/rank/local/demo_all.py @@ -1,10 +1,9 @@ -import numpy as np import matplotlib.pyplot as plt from pprint import pprint from skimage import data from skimage.morphology.selem import disk -import skimage.rank as rank +import skimage.filter.rank as rank def plot_all(): a8 = data.camera() diff --git a/skimage/rank/local/demo_single.py b/skimage/filter/rank/local/demo_single.py similarity index 92% rename from skimage/rank/local/demo_single.py rename to skimage/filter/rank/local/demo_single.py index b601b226..39b9acc0 100644 --- a/skimage/rank/local/demo_single.py +++ b/skimage/filter/rank/local/demo_single.py @@ -1,10 +1,9 @@ import numpy as np import matplotlib.pyplot as plt -from pprint import pprint from skimage import data from skimage.morphology.selem import disk -import skimage.rank as rank +import skimage.filter.rank as rank if __name__ == '__main__': diff --git a/skimage/filter/rank/local/iko_pan_Ja1.tif b/skimage/filter/rank/local/iko_pan_Ja1.tif new file mode 100644 index 0000000000000000000000000000000000000000..47201695755a73086ba6d598f3441063ecdf1068 GIT binary patch literal 129176 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 *mQA#EEoq#Nt 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%0Ac@@8_lndnsVMOKql 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%0Dj>cHoCdbk<7Z)+88SP*ZboD)IzS=a1>L$W7t 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 L&V3s<8XWu!riJvI literal 0 HcmV?d00001 diff --git a/skimage/rank/local/test_morph_contr_enh.py b/skimage/filter/rank/local/test_morph_contr_enh.py similarity index 93% rename from skimage/rank/local/test_morph_contr_enh.py rename to skimage/filter/rank/local/test_morph_contr_enh.py index 812e81c5..f2f0f7c9 100644 --- a/skimage/rank/local/test_morph_contr_enh.py +++ b/skimage/filter/rank/local/test_morph_contr_enh.py @@ -3,7 +3,7 @@ import matplotlib.pyplot as plt import gdal from skimage.morphology import disk -import skimage.rank as rank +import skimage.filter.rank as rank filename = 'iko_pan_Ja1.tif' im16 = gdal.Open(filename).ReadAsArray().astype(np.uint16) diff --git a/skimage/rank/local/test_rank.py b/skimage/filter/rank/local/test_rank.py similarity index 95% rename from skimage/rank/local/test_rank.py rename to skimage/filter/rank/local/test_rank.py index 75dd7f65..09cfdcd5 100644 --- a/skimage/rank/local/test_rank.py +++ b/skimage/filter/rank/local/test_rank.py @@ -3,7 +3,7 @@ import matplotlib.pyplot as plt from skimage import data from skimage.morphology.selem import disk -import skimage.rank as rank +import skimage.filter.rank as rank print dir(rank) diff --git a/skimage/rank/percentile_rank.py b/skimage/filter/rank/percentile_rank.py similarity index 98% rename from skimage/rank/percentile_rank.py rename to skimage/filter/rank/percentile_rank.py index ac19ccd6..7908f5ac 100644 --- a/skimage/rank/percentile_rank.py +++ b/skimage/filter/rank/percentile_rank.py @@ -14,14 +14,11 @@ result image is 8 or 16 bit with respect to the input image """ - -import warnings from skimage import img_as_ubyte import numpy as np -from generic import find_bitdepth -import _crank16_percentiles -import _crank8_percentiles +from skimage.filter.rank.generic import find_bitdepth +from skimage.filter.rank import _crank16_percentiles, _crank8_percentiles __all__ = ['percentile_autolevel', 'percentile_gradient', 'percentile_mean', 'percentile_mean_substraction', @@ -77,7 +74,7 @@ def percentile_autolevel(image, selem, out=None, mask=None, shift_x=False, shift to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -141,7 +138,7 @@ def percentile_gradient(image, selem, out=None, mask=None, shift_x=False, shift_ to be updated >>> # Local gradient >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -205,7 +202,7 @@ def percentile_mean(image, selem, out=None, mask=None, shift_x=False, shift_y=Fa to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -269,7 +266,7 @@ def percentile_mean_substraction(image, selem, out=None, mask=None, shift_x=Fals to be updated >>> # Local mean_substraction >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -333,7 +330,7 @@ def percentile_morph_contr_enh(image, selem, out=None, mask=None, shift_x=False, to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -397,7 +394,7 @@ def percentile(image, selem, out=None, mask=None, shift_x=False, shift_y=False, to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 128*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -462,7 +459,7 @@ def percentile_pop(image, selem, out=None, mask=None, shift_x=False, shift_y=Fal to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -526,7 +523,7 @@ def percentile_threshold(image, selem, out=None, mask=None, shift_x=False, shift to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], diff --git a/skimage/rank/rank.py b/skimage/filter/rank/rank.py similarity index 98% rename from skimage/rank/rank.py rename to skimage/filter/rank/rank.py index 51854128..0a9dee27 100644 --- a/skimage/rank/rank.py +++ b/skimage/filter/rank/rank.py @@ -12,14 +12,11 @@ result image is 8 or 16 bit with respect to the input image """ - -import warnings from skimage import img_as_ubyte import numpy as np +from skimage.filter.rank import _crank8, _crank16 -from generic import find_bitdepth -import _crank16 -import _crank8 +from skimage.filter.rank.generic import find_bitdepth __all__ = ['autolevel', 'bottomhat', 'equalize', 'gradient', 'maximum', 'mean', 'meansubstraction', 'median', 'minimum', 'modal', 'morph_contr_enh', 'pop', 'threshold', 'tophat'] @@ -71,7 +68,7 @@ def autolevel(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -133,7 +130,7 @@ def bottomhat(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -194,7 +191,7 @@ def equalize(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -255,7 +252,7 @@ def gradient(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local gradient >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -317,7 +314,7 @@ def maximum(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local maximum >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 0, 0, 0, 0], ... [0, 0, 1, 0, 0], @@ -379,7 +376,7 @@ def mean(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -441,7 +438,7 @@ def meansubstraction(image, selem, out=None, mask=None, shift_x=False, shift_y=F to be updated >>> # Local meansubstraction >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -503,7 +500,7 @@ def median(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local median >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 0, 1, 0], @@ -565,7 +562,7 @@ def minimum(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local minimum >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -628,7 +625,7 @@ def modal(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local modal >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 5, 6, 0], @@ -691,7 +688,7 @@ def morph_contr_enh(image, selem, out=None, mask=None, shift_x=False, shift_y=Fa to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -753,7 +750,7 @@ def pop(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -815,7 +812,7 @@ def threshold(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], @@ -878,7 +875,7 @@ def tophat(image, selem, out=None, mask=None, shift_x=False, shift_y=False): to be updated >>> # Local mean >>> from skimage.morphology import square - >>> import skimage.rank as rank + >>> import skimage.filter.rank as rank >>> ima8 = 255*np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], diff --git a/skimage/rank/setup.py b/skimage/filter/rank/setup.py similarity index 100% rename from skimage/rank/setup.py rename to skimage/filter/rank/setup.py diff --git a/skimage/rank/tests/test_suite.py b/skimage/filter/rank/tests/test_suite.py similarity index 97% rename from skimage/rank/tests/test_suite.py rename to skimage/filter/rank/tests/test_suite.py index 9d2bcfea..4f1e6f81 100644 --- a/skimage/rank/tests/test_suite.py +++ b/skimage/filter/rank/tests/test_suite.py @@ -1,12 +1,12 @@ import unittest import numpy as np +from skimage.filter import rank -from skimage.rank import _crank8,_crank8_percentiles -from skimage.rank import _crank16,_crank16_bilateral,_crank16_percentiles -from skimage.morphology import cmorph,disk from skimage import data -from skimage import rank +from skimage.morphology import cmorph,disk +from skimage.filter.rank import _crank8, _crank16 +from skimage.filter.rank import _crank16_percentiles class TestSequenceFunctions(unittest.TestCase): diff --git a/skimage/rank/local/__init__.py b/skimage/rank/local/__init__.py deleted file mode 100644 index e69de29b..00000000