From 998be36c2d916c77080ad20cb2fd6005e9702964 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 15 Jun 2015 21:35:30 -0500 Subject: [PATCH] Update equalize_adapthist to use new view_as_windows Update equalize_adapthist to use new view_as_windows Try rbase again Update equalize_adapthist to use new view_as_windows Fix relative imports Style fixes Add a deprecation warning and add to api_changes.txt Update TODO and switch to 0.13 deprecation Preserve the current API as much as possible and defer to 0.14 Move the new kwarg to the very end Clarify deprecation warning Update to use row/col in clahe Update docstring Use optimal_step to set up view_as_windows Update equalize_adapthist to use new view_as_windows Try rbase again Update equalize_adapthist to use new view_as_windows Fix relative imports --- skimage/exposure/_adapthist.py | 23 +++++++++++++++++++++++ skimage/exposure/tests/test_exposure.py | 9 +++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/skimage/exposure/_adapthist.py b/skimage/exposure/_adapthist.py index 7d79dc5e..9f7cadf9 100644 --- a/skimage/exposure/_adapthist.py +++ b/skimage/exposure/_adapthist.py @@ -20,15 +20,23 @@ from .. import img_as_float, img_as_uint from ..color.adapt_rgb import adapt_rgb, hsv_value from ..exposure import rescale_intensity from ..util import view_as_windows +<<<<<<< HEAD from .._shared.utils import skimage_deprecation, warnings +======= +>>>>>>> 3bcbbc0... Update equalize_adapthist to use new view_as_windows NR_OF_GREY = 2 ** 14 # number of grayscale levels to use in CLAHE algorithm @adapt_rgb(hsv_value) +<<<<<<< HEAD def equalize_adapthist(image, ntiles_x=8, ntiles_y=8, clip_limit=0.01, nbins=256, kernel_size=None): +======= +def equalize_adapthist(image, kernel_size=64, ntiles_x=None, ntiles_y=None, + clip_limit=0.01, nbins=256): +>>>>>>> 3bcbbc0... Update equalize_adapthist to use new view_as_windows """Contrast Limited Adaptive Histogram Equalization (CLAHE). An algorithm for local contrast enhancement, that uses histograms computed @@ -42,11 +50,19 @@ def equalize_adapthist(image, ntiles_x=8, ntiles_y=8, clip_limit=0.01, kernel_size: integer or 2-tuple Defines the shape of contextual regions used in the algorithm. If an integer is given, the shape will be a square of +<<<<<<< HEAD sidelength given by this value. ntiles_x : int, optional (deprecated in favor of ``kernel_size``) Number of tile regions in the X direction (horizontal). ntiles_y : int, optional (deprecated if favor of ``kernel_size``) Number of tile regions in the Y direction (vertical). +======= + sidelength given by its value. + ntiles_x : int, optional + Number of tile regions in the X direction. + ntiles_y : int, optional + Number of tile regions in the Y direction. +>>>>>>> 3bcbbc0... Update equalize_adapthist to use new view_as_windows clip_limit : float: optional Clipping limit, normalized between 0 and 1 (higher values give more contrast). @@ -77,6 +93,7 @@ def equalize_adapthist(image, ntiles_x=8, ntiles_y=8, clip_limit=0.01, """ image = img_as_uint(image) image = rescale_intensity(image, out_range=(0, NR_OF_GREY - 1)) +<<<<<<< HEAD if kernel_size is None: warnings.warn('`ntiles_*` have been deprecated in favor of ' '`kernel_size`. The `ntiles_*` keyword arguments ' @@ -85,6 +102,12 @@ def equalize_adapthist(image, ntiles_x=8, ntiles_y=8, clip_limit=0.01, ntiles_y = ntiles_y or 8 kernel_size = (np.round(image.shape[0] / ntiles_y), np.round(image.shape[1] / ntiles_x)) +======= + if ntiles_x or ntiles_y: + ntiles_x = ntiles_x or 8 + ntiles_y = ntiles_y or 8 + kernel_size = (image.shape[0] / ntiles_y, image.shape[1] / ntiles_x) +>>>>>>> 3bcbbc0... Update equalize_adapthist to use new view_as_windows if isinstance(kernel_size, numbers.Number): kernel_size = (kernel_size, kernel_size) diff --git a/skimage/exposure/tests/test_exposure.py b/skimage/exposure/tests/test_exposure.py index 6b2d0a2e..3d684445 100644 --- a/skimage/exposure/tests/test_exposure.py +++ b/skimage/exposure/tests/test_exposure.py @@ -211,17 +211,14 @@ def test_adapthist_grayscale(): img = skimage.img_as_float(data.astronaut()) img = rgb2gray(img) img = np.dstack((img, img, img)) - with expected_warnings(['precision loss|non-contiguous input', 'deprecated']): + with expected_warnings(['precision loss|non-contiguous input', + 'deprecated']): adapted_old = exposure.equalize_adapthist(img, 10, 9, clip_limit=0.01, - nbins=128) - adapted = exposure.equalize_adapthist(img, kernel_size=(57, 51), clip_limit=0.01, - nbins=128) - np.testing.assert_allclose(adapted, adapted_old) + adapted = exposure.equalize_adapthist(img, kernel_size=(57, 51), clip_limit=0.01, nbins=128) assert_almost_equal = np.testing.assert_almost_equal assert img.shape == adapted.shape assert_almost_equal(peak_snr(img, adapted), 90.669, 3) assert_almost_equal(norm_brightness_err(img, adapted), 0.084, 3) - return data, adapted