skimage.exposure#

skimage.exposure.adjust_gamma

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

skimage.exposure.adjust_log

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

skimage.exposure.adjust_sigmoid

对输入图像执行S型校正。

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)[source]#

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

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

参数:
imagendarray

输入图像。

gammafloat,可选

非负实数。默认值为 1。

gainfloat,可选

常数乘数。默认值为 1。

返回值:
outndarray

伽马校正后的输出图像。

另请参阅

adjust_log

备注

对于大于 1 的 gamma,直方图将向左移动,输出图像将比输入图像更暗。

对于小于 1 的 gamma,直方图将向右移动,输出图像将比输入图像更亮。

参考文献

示例

>>> 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

伽马和对数对比度调整

伽马和对数对比度调整

探索 3D 图像(细胞)

探索 3D 图像(细胞)

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

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

此函数根据等式 O = gain*log(1 + I) 对输入图像进行逐像素变换,并在将每个像素缩放至 0 到 1 的范围内。对于逆对数校正,等式为 O = gain*(2**I - 1)

参数:
imagendarray

输入图像。

gainfloat,可选

常数乘数。默认值为 1。

invfloat,可选

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

返回值:
outndarray

对数校正后的输出图像。

另请参阅

adjust_gamma

参考文献

伽马和对数对比度调整

伽马和对数对比度调整

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

对输入图像执行S型校正。

也称为对比度调整。此函数根据等式 O = 1/(1 + exp*(gain*(cutoff - I))) 对输入图像进行逐像素变换,并在将每个像素缩放至 0 到 1 的范围内。

参数:
imagendarray

输入图像。

cutofffloat,可选

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

gainfloat,可选

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

invbool,可选

如果为 True,则返回负 S 型校正。默认为 False。

返回值:
outndarray

S型校正后的输出图像。

另请参阅

adjust_gamma

参考文献

[1]

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


skimage.exposure.cumulative_distribution(image, nbins=256)[source]#

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

参数:
image数组

图像数组。

nbinsint,可选

图像直方图的 bin 数。

返回值:
img_cdf数组

累积分布函数的值。

bin_centers数组

bin 的中心。

另请参阅

直方图

参考文献

示例

>>> 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

直方图匹配

直方图匹配

伽马和对数对比度调整

伽马和对数对比度调整

直方图均衡

直方图均衡

局部直方图均衡

局部直方图均衡

探索 3D 图像(细胞)

探索 3D 图像(细胞)

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

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

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

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

输入图像。

kernel_sizeint 或 array_like,可选

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

clip_limitfloat,可选

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

nbinsint,可选

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

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

具有 float64 数据类型的均衡图像。

备注

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

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

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

  • 对于 RGBA 图像,将删除原始 alpha 通道。

0.17 版中的更改: 由于内部舍入行为的更改,此函数返回的值略微向上移动。

参考文献

直方图均衡

直方图均衡

3D 自适应直方图均衡

3D 自适应直方图均衡

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

直方图均衡后返回图像。

参数:
image数组

图像数组。

nbinsint,可选

图像直方图的 bin 数。注意:此参数对于整数图像被忽略,对于整数图像,每个整数都是其自己的 bin。

maskbool 或 0 和 1 的 ndarray,可选

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

返回值:
outfloat 数组

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

备注

此函数在作者的许可下改编自 [1]

参考文献

直方图均衡

直方图均衡

局部直方图均衡

局部直方图均衡

3D 自适应直方图均衡

3D 自适应直方图均衡

视觉图像比较

视觉图像比较

探索 3D 图像(细胞)

探索 3D 图像(细胞)

排序滤波器

排序滤波器

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

返回图像的直方图。

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

如果未设置channel_axis,则在扁平化的图像上计算直方图。对于彩色或多通道图像,设置channel_axis以对所有通道使用公共binning。或者,可以分别对每个通道应用该函数,以获得每个颜色通道的具有单独binning的直方图。

参数:
image数组

输入图像。

nbinsint,可选

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

source_range字符串,可选

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

normalize布尔值,可选

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

channel_axis整数或None,可选

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

返回值:
hist数组

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

bin_centers数组

bin中心的数值。

另请参阅

累积分布

示例

>>> 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]))

直方图匹配

直方图匹配

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

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

排序滤波器

排序滤波器

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

确定图像是否对比度低。

参数:
image类数组

正在测试的图像。

fraction_threshold浮点数,可选

低对比度分数阈值。当图像的亮度范围小于其数据类型的完整范围的此分数时,图像被认为是低对比度的。 [1]

lower_percentile浮点数,可选

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

upper_percentile浮点数,可选

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

method字符串,可选

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

返回值:
out布尔值

当确定图像为低对比度时为True。

备注

对于布尔图像,仅当所有值都相同(方法、阈值和百分位数参数将被忽略)时,此函数才返回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)[source]#

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

对于每个通道,都会单独应用调整。

参数:
imagendarray

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

referencendarray

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

channel_axis整数或None,可选

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

返回值:
matchedndarray

变换后的输入图像。

引发:
ValueError

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

参考文献

直方图匹配

直方图匹配

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

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

输入和输出所需的强度范围,分别为in_rangeout_range,用于拉伸或收缩输入图像的强度范围。请参见下面的示例。

参数:
image数组

图像数组。

in_range, out_range字符串或2元组,可选

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

‘image’

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

‘dtype’

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

dtype-name

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

2元组

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

返回值:
out数组

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

另请参阅

直方图均衡化

备注

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 将其重新缩放为float dtype的正确范围

>>> 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参数。在这种情况下,输出dtype将为float

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

要获得具有特定dtype的所需范围,请使用.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图像

将灰度滤波器适配到RGB图像

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

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

直方图均衡

直方图均衡

使用RANSAC进行鲁棒匹配

使用RANSAC进行鲁棒匹配

相位展开

相位展开

方向梯度直方图

方向梯度直方图

填充孔洞和寻找峰值

填充孔洞和寻找峰值

随机游走分割

随机游走分割

极值

极值

探索 3D 图像(细胞)

探索 3D 图像(细胞)

排序滤波器

排序滤波器