skimage.exposure#

skimage.exposure.adjust_gamma

对输入图像执行伽马校正。

skimage.exposure.adjust_log

对输入图像执行对数校正。

skimage.exposure.adjust_sigmoid

对输入图像执行 Sigmoid 校正。

skimage.exposure.cumulative_distribution

返回给定图像的累积分布函数(cdf)。

skimage.exposure.equalize_adapthist

对比度受限的自适应直方图均衡化 (CLAHE)。

skimage.exposure.equalize_hist

返回直方图均衡化后的图像。

skimage.exposure.histogram

返回图像的直方图。

skimage.exposure.is_low_contrast

确定图像是否为低对比度。

skimage.exposure.match_histograms

调整一张图片,使其累积直方图与另一张图片的匹配。

skimage.exposure.rescale_intensity

在拉伸或收缩其强度级别后返回图像。


skimage.exposure.adjust_gamma(image, gamma=1, gain=1)[源代码][源代码]#

对输入图像执行伽马校正。

也称为幂律变换。此函数根据方程 O = I**gamma 对输入图像逐像素进行变换,在将每个像素缩放到 0 到 1 的范围之后。

参数:
图像ndarray

输入图像。

gammafloat, 可选

非负实数。默认值为 1。

增益float, 可选

常数乘数。默认值为1。

返回:
ndarray

伽马校正后的输出图像。

参见

adjust_log

注释

对于大于1的伽马值,直方图将向左偏移,输出图像将比输入图像更暗。

对于伽马值小于1的情况,直方图将向右偏移,输出图像将比输入图像更亮。

参考文献

示例

>>> from skimage import data, exposure, img_as_float
>>> image = img_as_float(data.moon())
>>> gamma_corrected = exposure.adjust_gamma(image, 2)
>>> # Output is darker for gamma > 1
>>> image.mean() > gamma_corrected.mean()
True

Gamma 和 对数对比度调整

Gamma and log contrast adjustment

探索3D图像(细胞)

Explore 3D images (of cells)

skimage.exposure.adjust_log(image, gain=1, inv=False)[源代码][源代码]#

对输入图像执行对数校正。

此函数根据方程 O = gain*log(1 + I) 逐像素转换输入图像,在将每个像素缩放到 0 到 1 的范围后。对于反向对数校正,方程为 O = gain*(2**I - 1)

参数:
图像ndarray

输入图像。

增益float, 可选

常数乘数。默认值为1。

invfloat, 可选

如果为 True,则执行反向对数校正,否则校正将为对数校正。默认为 False。

返回:
ndarray

对数校正后的输出图像。

参见

adjust_gamma

参考文献

Gamma 和 对数对比度调整

Gamma and log contrast adjustment

skimage.exposure.adjust_sigmoid(image, cutoff=0.5, gain=10, inv=False)[源代码][源代码]#

对输入图像执行 Sigmoid 校正。

也称为对比度调整。此功能根据方程 O = 1/(1 + exp*(gain*(cutoff - I))) 对输入图像进行逐像素变换,在将每个像素缩放到0到1的范围后。

参数:
图像ndarray

输入图像。

截止float, 可选

sigmoid 函数的截止点,用于在水平方向上移动特征曲线。默认值为 0.5。

增益float, 可选

sigmoid 函数指数幂中的常数乘数。默认值为 10。

invbool, 可选

如果为 True,则返回负的 sigmoid 修正。默认为 False。

返回:
ndarray

Sigmoid 校正输出图像。

参见

adjust_gamma

参考文献

[1]

Gustav J. Braun, “使用Sigmoidal对比度增强函数的图像亮度重缩放”, http://markfairchild.org/PDFs/PAP07.pdf


skimage.exposure.cumulative_distribution(image, nbins=256)[源代码][源代码]#

返回给定图像的累积分布函数(cdf)。

参数:
图像数组

图像数组。

nbinsint, 可选

图像直方图的箱数。

返回:
img_cdf数组

累积分布函数的值。

bin_centers数组

箱子的中心。

参见

histogram

参考文献

[1]

https://en.wikipedia.org/wiki/累积分布函数

示例

>>> from skimage import data, exposure, img_as_float
>>> image = img_as_float(data.camera())
>>> hi = exposure.histogram(image)
>>> cdf = exposure.cumulative_distribution(image)
>>> all(cdf[0] == np.cumsum(hi[0])/float(image.size))
True

直方图匹配

Histogram matching

Gamma 和 对数对比度调整

Gamma and log contrast adjustment

直方图均衡化

Histogram Equalization

局部直方图均衡化

Local Histogram Equalization

探索3D图像(细胞)

Explore 3D images (of cells)

skimage.exposure.equalize_adapthist(image, kernel_size=None, clip_limit=0.01, nbins=256)[源代码][源代码]#

对比度受限的自适应直方图均衡化 (CLAHE)。

一种用于局部对比度增强的算法,该算法使用在图像的不同瓦片区域上计算的直方图。因此,即使在比图像大部分区域更暗或更亮的区域中,局部细节也可以得到增强。

参数:
图像(M[, …][, C]) ndarray

输入图像。

kernel_sizeint 或 array_like, 可选

定义算法中使用的上下文区域的形状。如果传递了可迭代对象,则它必须具有与 image.ndim (不包括颜色通道)相同数量的元素。如果是整数,则它会被广播到每个 image 维度。默认情况下,kernel_sizeimage 高度的 1/8 乘以其宽度的 1/8。

clip_limitfloat, 可选

剪切限制,在0到1之间归一化(较高的值提供更多对比度)。

nbinsint, 可选

直方图的灰度箱数量(“数据范围”)。

返回:
(M[, …][, C]) ndarray

类型为 float64 的均衡化图像。

注释

  • 对于彩色图像,执行以下步骤:
    • 图像被转换为 HSV 色彩空间

    • CLAHE 算法在 V(Value)通道上运行

    • 图像被转换回RGB空间并返回

  • 对于RGBA图像,原始的alpha通道将被移除。

在 0.17 版本发生变更: 由于内部舍入行为的改变,此函数返回的值略有上移。

参考文献

直方图均衡化

Histogram Equalization

3D 自适应直方图均衡化

3D adaptive histogram equalization

skimage.exposure.equalize_hist(image, nbins=256, mask=None)[源代码][源代码]#

返回直方图均衡化后的图像。

参数:
图像数组

图像数组。

nbinsint, 可选

图像直方图的箱数。注意:此参数对于整数图像将被忽略,因为每个整数本身就是自己的箱。

掩码布尔值或0和1的ndarray,可选

image 形状相同的数组。只有在 mask == True 的点才会用于均衡化,均衡化应用于整个图像。

返回:
浮点数数组

直方图均衡化后的图像数组。

注释

此函数改编自 [1] ,并获得了作者的许可。

参考文献

直方图均衡化

Histogram Equalization

局部直方图均衡化

Local Histogram Equalization

3D 自适应直方图均衡化

3D adaptive histogram equalization

视觉图像比较

Visual image comparison

探索3D图像(细胞)

Explore 3D images (of cells)

排序过滤器

Rank filters

skimage.exposure.histogram(image, nbins=256, source_range='image', normalize=False, *, channel_axis=None)[源代码][源代码]#

返回图像的直方图。

numpy.histogram 不同,此函数返回箱子的中心,并且不对整数数组重新分箱。对于整数数组,每个整数值都有自己的箱子,这提高了速度和强度分辨率。

如果 channel_axis 未设置,直方图将在展平的图像上计算。对于彩色或多通道图像,设置 channel_axis 以对所有通道使用共同的区间。或者,可以分别对每个通道应用该函数,以获得每个颜色通道的直方图,并使用单独的区间。

参数:
图像数组

输入图像。

nbinsint, 可选

用于计算直方图的箱数。此值对整数数组忽略。

source_range字符串,可选

‘image’(默认)确定从输入图像的范围。’dtype’ 根据该数据类型的图像的预期范围确定范围。

规范化bool, 可选

如果为真,则通过直方图值的总和对其进行归一化。

channel_axisint 或 None, 可选

如果为 None,则假定图像是灰度图像(单通道)。否则,此参数指示数组的哪个轴对应于通道。

返回:
hist数组

直方图的值。当 channel_axis 不是 None 时,hist 将是一个二维数组,其中第一个轴对应于通道。

bin_centers数组

各箱子中心的值。

示例

>>> from skimage import data, exposure, img_as_float
>>> image = img_as_float(data.camera())
>>> np.histogram(image, bins=2)
(array([ 93585, 168559]), array([0. , 0.5, 1. ]))
>>> exposure.histogram(image, nbins=2)
(array([ 93585, 168559]), array([0.25, 0.75]))

直方图匹配

Histogram matching

基于边缘和基于区域的分割比较

Comparing edge-based and region-based segmentation

排序过滤器

Rank filters

skimage.exposure.is_low_contrast(image, fraction_threshold=0.05, lower_percentile=1, upper_percentile=99, method='linear')[源代码][源代码]#

确定图像是否为低对比度。

参数:
图像类似数组

被测试的图像。

fraction_thresholdfloat, 可选

低对比度分数阈值。当图像的亮度范围小于其数据类型全范围的这一部分时,该图像被认为是低对比度的。[1]

lower_percentilefloat, 可选

在计算图像对比度时忽略低于此百分位的值。

upper_percentilefloat, 可选

计算图像对比度时忽略高于此百分位的值。

方法str, 可选

对比度确定方法。目前唯一可用的选项是“线性”。

返回:
布尔

当图像被判定为低对比度时为真。

注释

对于布尔图像,此函数仅在所有值相同时返回 False(方法、阈值和百分位参数被忽略)。

参考文献

示例

>>> image = np.linspace(0, 0.04, 100)
>>> is_low_contrast(image)
True
>>> image[-1] = 1
>>> is_low_contrast(image)
True
>>> is_low_contrast(image, upper_percentile=100)
False

skimage.exposure.match_histograms(image, reference, *, channel_axis=None)[源代码][源代码]#

调整一张图片,使其累积直方图与另一张图片的匹配。

调整是分别应用于每个通道的。

参数:
图像ndarray

输入图像。可以是灰度图像或彩色图像。

参考ndarray

要匹配直方图的图像。必须与图像具有相同数量的通道。

channel_axisint 或 None, 可选

如果为 None,则假定图像是灰度图像(单通道)。否则,此参数指示数组的哪个轴对应于通道。

返回:
匹配的ndarray

转换后的输入图像。

Raises:
ValueError

当输入图像和参考图像的通道数不同时抛出。

参考文献

直方图匹配

Histogram matching

skimage.exposure.rescale_intensity(image, in_range='image', out_range='dtype')[源代码][源代码]#

在拉伸或收缩其强度级别后返回图像。

输入和输出的期望强度范围,分别是 in_rangeout_range,用于拉伸或压缩输入图像的强度范围。请参见下面的示例。

参数:
图像数组

图像数组。

in_range, out_rangestr 或 2-元组,可选

输入和输出图像的最小和最大强度值。此参数的可能值如下所列。

‘图像’

使用图像的最小/最大值作为强度范围。

‘dtype’

使用图像的dtype的最小值/最大值作为强度范围。

dtype-名称

使用基于所需 dtype 的强度范围。必须是 DTYPE_RANGE 中的有效键。

2元组

使用 range_values 作为显式的最小/最大强度。

返回:
数组

重缩放强度后的图像数组。此图像与输入图像具有相同的 dtype。

参见

equalize_hist

注释

在 0.17 版本发生变更: 输出数组的 dtype 已更改为与输入 dtype 匹配,或者如果输出范围由一对值指定,则为 float。

示例

默认情况下,输入图像的最小/最大强度会被拉伸到图像的dtype所允许的极限,因为 in_range 默认设置为 ‘image’,而 out_range 默认设置为 ‘dtype’:

>>> image = np.array([51, 102, 153], dtype=np.uint8)
>>> rescale_intensity(image)
array([  0, 127, 255], dtype=uint8)

不小心将图像的 dtype 从 uint8 转换为 float 很容易:

>>> 1.0 * image
array([ 51., 102., 153.])

使用 rescale_intensity 来调整浮点型数据类型的适当范围:

>>> image_float = 1.0 * image
>>> rescale_intensity(image_float)
array([0. , 0.5, 1. ])

为了保持原始的低对比度,使用 in_range 参数:

>>> rescale_intensity(image_float, in_range=(0, 255))
array([0.2, 0.4, 0.6])

如果 in_range 的最小/最大值大于/小于图像的最小/最大强度值,那么强度级别将被裁剪:

>>> rescale_intensity(image_float, in_range=(0, 102))
array([0.5, 1. , 1. ])

如果你有一张带有符号整数的图像,但想将其缩放到仅正数范围,请使用 out_range 参数。在这种情况下,输出数据类型将是浮点数:

>>> image = np.array([-10, 0, 10], dtype=np.int8)
>>> rescale_intensity(image, out_range=(0, 127))
array([  0. ,  63.5, 127. ])

要获取具有特定数据类型的所需范围,请使用 .astype()

>>> rescale_intensity(image, out_range=(0, 127)).astype(np.int8)
array([  0,  63, 127], dtype=int8)

如果输入图像是恒定的,输出将直接被裁剪到输出范围: >>> image = np.array([130, 130, 130], dtype=np.int32) >>> rescale_intensity(image, out_range=(0, 127)).astype(np.int32) array([127, 127, 127], dtype=int32)

将灰度滤镜适应于RGB图像

Adapting gray-scale filters to RGB images

免疫组织化学染色中的颜色分离

Separate colors in immunohistochemical staining

直方图均衡化

Histogram Equalization

使用 RANSAC 进行鲁棒匹配

Robust matching using RANSAC

相位解包裹

Phase Unwrapping

方向梯度直方图

Histogram of Oriented Gradients

填补空洞与寻找峰值

Filling holes and finding peaks

随机游走分割

Random walker segmentation

极值

Extrema

探索3D图像(细胞)

Explore 3D images (of cells)

排序过滤器

Rank filters