threshold_local returns 与 scikit-image 中的 threshold_adaptive 不同的结果
threshold_local returns a different result than threshold_adaptive in scikit-image
我正在从文档中复制此 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,但它引发警告:
"UserWarning: The return value of threshold_local
is a threshold image, while threshold_adaptive
returned the thresholded image"
但是当我使用threshold_adaptive时,结果是不同的:
如果我们查看 documentation for threshold_adaptive
,我们会发现它已被弃用,取而代之的是新功能 threshold_local
。不幸的是,那个似乎没有记录。
我们仍然可以查看 older documentation 以找出 threshold_adaptive
的作用:它应用自适应阈值,产生二进制输出图像。
相比之下,未记录的 threshold_local
不是 return 二进制图像,正如您所发现的那样。 Here is an example 使用方法:
block_size = 35
adaptive_thresh = threshold_local(image, block_size, offset=10)
binary_adaptive = image > adaptive_thresh
发生了什么事?
该函数为每个像素计算一个阈值。但它不是直接应用该阈值,而是 return 包含所有这些阈值的图像。将原始图像与阈值图像进行比较是应用阈值的方式,产生二值图像。
我正在从文档中复制此 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,但它引发警告:
"UserWarning: The return value of threshold_local
is a threshold image, while threshold_adaptive
returned the thresholded image"
但是当我使用threshold_adaptive时,结果是不同的:
如果我们查看 documentation for threshold_adaptive
,我们会发现它已被弃用,取而代之的是新功能 threshold_local
。不幸的是,那个似乎没有记录。
我们仍然可以查看 older documentation 以找出 threshold_adaptive
的作用:它应用自适应阈值,产生二进制输出图像。
相比之下,未记录的 threshold_local
不是 return 二进制图像,正如您所发现的那样。 Here is an example 使用方法:
block_size = 35
adaptive_thresh = threshold_local(image, block_size, offset=10)
binary_adaptive = image > adaptive_thresh
发生了什么事?
该函数为每个像素计算一个阈值。但它不是直接应用该阈值,而是 return 包含所有这些阈值的图像。将原始图像与阈值图像进行比较是应用阈值的方式,产生二值图像。