astropy:docs

Source code for astropy.visualization.ui

# Licensed under a 3-clause BSD style license - see LICENSE.rst

import numpy as np

from .interval import (PercentileInterval, AsymmetricPercentileInterval,
                       ManualInterval, MinMaxInterval)

from .stretch import (LinearStretch, SqrtStretch, PowerStretch, LogStretch,
                      AsinhStretch)


[docs]def scale_image(image, scale='linear', power=1.0, asinh_a=0.1, min_cut=None, max_cut=None, min_percent=None, max_percent=None, percent=None, clip=True): """ Perform scaling/stretching of an image between minimum and maximum cut levels. Parameters ---------- image : array-like The array of values. scale : {{'linear', 'sqrt', 'power', log', 'asinh'}} The scaling/stretch function to apply to the image. The default is 'linear'. power : float, optional The power index for ``scale='power'`` image scaling. The default is 1.0. asinh_a : float, optional For ``scale='asinh'`` image scaling, the value where the asinh curve transitions from linear to logarithmic behavior, expressed as a fraction of the normalized image. Must be in the range between 0 and 1. min_cut : float, optional The pixel value of the minimum cut level. Data values less than ``min_cut`` will set to ``min_cut`` before scaling the image. The default is the image minimum. ``min_cut`` overrides ``min_percent``. max_cut : float, optional The pixel value of the maximum cut level. Data values greater than ``min_cut`` will set to ``min_cut`` before scaling the image. The default is the image maximum. ``max_cut`` overrides ``max_percent``. min_percent : float, optional The percentile value used to determine the pixel value of minimum cut level. The default is 0.0. ``min_percent`` overrides ``percent``. max_percent : float, optional The percentile value used to determine the pixel value of maximum cut level. The default is 100.0. ``max_percent`` overrides ``percent``. percent : float, optional The percentage of the image values used to determine the pixel values of the minimum and maximum cut levels. The lower cut level will set at the ``(100 - percent) / 2`` percentile, while the upper cut level will be set at the ``(100 + percent) / 2`` percentile. The default is 100.0. ``percent`` is ignored if either ``min_percent`` or ``max_percent`` is input. clip : bool, optional Whether to clip the result to the range [0:1]. Returns ------- image : ndarray The array of the scaled/stretched image with a minimum of 0.0 and a maximum of 1.0. """ if percent is not None: interval = PercentileInterval(percent) elif min_percent is not None or max_percent is not None: interval = AsymmetricPercentileInterval(min_percent or 0., max_percent or 100.) elif min_cut is not None or max_cut is not None: interval = ManualInterval(min_cut or np.min(image), max_cut or np.max(image)) else: interval = MinMaxInterval() if scale == 'linear': stretch = LinearStretch() elif scale == 'sqrt': stretch = SqrtStretch() elif scale == 'power': stretch = PowerStretch(power) elif scale == 'log': stretch = LogStretch() elif scale == 'asinh': stretch = AsinhStretch(asinh_a) else: raise ValueError('Unknown scale: {0}'.format(scale)) return (stretch + interval)(image, clip=clip)

Page Contents