gpt4 book ai didi

python - threshold_local 返回的结果与 scikit-image 中的 threshold_adaptive 不同

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:33 30 4
gpt4 key购买 nike

我正在复制这个 example来自文档:

import matplotlib.pyplot as plt

from skimage import data
from skimage.filters import threshold_otsu, threshold_adaptive


image = data.page()

global_thresh = threshold_otsu(image)
binary_global = image > global_thresh

block_size = 35
binary_adaptive = threshold_adaptive(image, block_size, offset=10)

fig, axes = plt.subplots(nrows=3, figsize=(7, 8))
ax0, ax1, ax2 = axes
plt.gray()

ax0.imshow(image)
ax0.set_title('Image')

ax1.imshow(binary_global)
ax1.set_title('Global thresholding')

ax2.imshow(binary_adaptive)
ax2.set_title('Adaptive thresholding')

for ax in axes:
ax.axis('off')

plt.show()

有 threshold_adaptive,但它会引发警告:

enter image description here

“用户警告:threshold_local 的返回值是一个阈值图像,而 threshold_adaptive 返回了thresholded 图像”

但是当我使用 threshold_adaptive 时,结果是不同的:

enter image description here

最佳答案

如果我们看一下 documentation for threshold_adaptive ,我们看到它已被弃用,取而代之的是新函数 threshold_local。不幸的是,那个似乎没有记录在案。

我们还可以看看older documentation找出 threshold_adaptive 的作用:它应用自适应阈值,产生二进制输出图像。

相反,未记录的 threshold_local 不会返回二进制图像,正如您发现的那样。 Here is an example如何使用它:

block_size = 35
adaptive_thresh = threshold_local(image, block_size, offset=10)
binary_adaptive = image > adaptive_thresh

发生了什么事?

该函数为每个像素计算一个阈值。但它不是直接应用该阈值,而是返回包含所有这些阈值的图像。将原始图像与阈值图像进行比较是应用阈值的方式,产生二值图像。

关于python - threshold_local 返回的结果与 scikit-image 中的 threshold_adaptive 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49459459/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com