SciPy

scipy.misc.bytescale

scipy.misc.bytescale(data, cmin=None, cmax=None, high=255, low=0)[source]

Byte scales an array (image).

Byte scaling means converting the input image to uint8 dtype and scaling the range to (low, high) (default 0-255). If the input image already has dtype uint8, no scaling is done.

This function is only available if Python Imaging Library (PIL) is installed.

Parameters:

data : ndarray

PIL image data array.

cmin : scalar, optional

Bias scaling of small values. Default is data.min().

cmax : scalar, optional

Bias scaling of large values. Default is data.max().

high : scalar, optional

Scale max value to high. Default is 255.

low : scalar, optional

Scale min value to low. Default is 0.

Returns:

img_array : uint8 ndarray

The byte-scaled array.

Examples

>>> from scipy.misc import bytescale
>>> img = np.array([[ 91.06794177,   3.39058326,  84.4221549 ],
...                 [ 73.88003259,  80.91433048,   4.88878881],
...                 [ 51.53875334,  34.45808177,  27.5873488 ]])
>>> bytescale(img)
array([[255,   0, 236],
       [205, 225,   4],
       [140,  90,  70]], dtype=uint8)
>>> bytescale(img, high=200, low=100)
array([[200, 100, 192],
       [180, 188, 102],
       [155, 135, 128]], dtype=uint8)
>>> bytescale(img, cmin=0, cmax=255)
array([[91,  3, 84],
       [74, 81,  5],
       [52, 34, 28]], dtype=uint8)