非常教程

Scikit image参考手册

过滤器 | filters

filters

skimage.filters.copy_func(f,name)

创建一个函数的副本。

skimage.filters.frangi(image,scale_range,...)

使用Frangi过滤器过滤图像。

skimage.filters.gabor(图片,频率,...)

返回Gabor滤波器的实部和虚部响应。

skimage.filters.gabor_filter(图片,频率)

弃用功能。改为使用skimage.filters.gabor。

skimage.filters.gabor_kernel(频率,...)

返回复杂的2D Gabor滤波器内核。

skimage.filters.gaussian(图片,西格玛,...)

多维高斯滤波器。

skimage.filters.gaussian_filter(image,...)

弃用功能。改为使用skimage.filters.gaussian。

skimage.filters.hessian(image,...)

用Hessian过滤器过滤图像。

skimage.filters.inverse(数据,...)

将过滤器反向应用于给定的数据。

skimage.filters.laplace(image,ksize,mask)

使用拉普拉斯算子查找图像的边缘。

skimage.filters.median(image,selem,out,...)

返回图像的当地中位数。

skimage.filters.prewitt(图像,面具)

使用Prewitt变换找到边缘量值。

skimage.filters.prewitt_h(图像,面具)

使用Prewitt变换查找图像的水平边缘。

skimage.filters.prewitt_v(图片,面具)

使用Prewitt变换查找图像的垂直边缘。

skimage.filters.rank_order(图像)

按照图像的唯一值的升序(也就是排序值),返回每个像素都是像素值索引的相同形状的图像。

skimage.filters.roberts(图像,面具)

使用罗伯茨的交叉算子找出边缘量值。

skimage.filters.roberts_neg_diag(图片,面具)

使用Roberts的Cross运算符查找图像的交叉边缘。

skimage.filters.roberts_pos_diag(图像,面具)

使用Roberts的交叉算子找出图像的交叉边缘。

skimage.filters.scharr(图片,掩码)

使用Scharr变换查找边缘量值。

skimage.filters.scharr_h(图片,掩码)

使用Scharr变换查找图像的水平边缘。

skimage.filters.scharr_v(图片,蒙版)

使用Scharr变换查找图像的垂直边缘。

skimage.filters.sobel(图像,面具)

使用Sobel变换查找边缘量值。

skimage.filters.sobel_h(图片,面具)

使用Sobel变换查找图像的水平边缘。

skimage.filters.sobel_v(图像,面具)

使用Sobel变换查找图像的垂直边缘。

skimage.filters.threshold_adaptive(image,...)

弃用功能。改用threshold_local。

skimage.filters.threshold_isodata(image,...)

根据ISODATA方法返回阈值(s)。

skimage.filters.threshold_li(图像)

基于李氏最小交叉熵方法的自适应阈值返回。

skimage.filters.threshold_local(图片,...)

基于局部像素邻域计算阈值掩模图像。

skimage.filters.threshold_mean(图像)

根据灰度值的平均值返回阈值。

skimage.filters.threshold_minimum(image,...)

基于最小方法返回阈值。

skimage.filters.threshold_niblack(image,...)

将Niblack本地阈值应用于阵列。

skimage.filters.threshold_otsu(image,nbins)

根据大津方法返回阈值。

skimage.filters.threshold_sauvola(image,...)

将Sauvola局部阈值应用于数组。

skimage.filters.threshold_triangle(图片,...)

基于三角算法返回阈值。

skimage.filters.threshold_yen(image,nbins)

基于日元的方法返回阈值。

skimage.filters.try_all_threshold(image,...)

返回比较不同阈值方法输出的图。

skimage.filters.wiener(数据,...)

最小均方误差(维纳)逆滤波器。

skimage.filters.LPIFilter2D(...)

线性位置不变滤波器(2维)

skimage.filters.deprecated(alt_func,...)

装饰者用警告标记弃用的功能。

skimage.filters.edges

Sobel和Prewitt过滤器最初是CellProfiler的一部分,代码使用GPL和BSD许可证授权。

skimage.filters.lpi_filter

作者:Stefan van der Walt,2008

作者:

Stefan van der Walt,2008

作者:

Stefan van der Walt,2008

skimage.filters.rank

skimage.filters.thresholding

copy_func

skimage.filters.copy_func(f, name=None)[source]

创建一个函数的副本。

Parameters:

f : function Function to copy. name : str, optional Name of new function.

frangi

skimage.filters.frangi(image, scale_range=(1, 10), scale_step=2, beta1=0.5, beta2=15, black_ridges=True)[source]

使用Frangi过滤器过滤图像。

该过滤器可用于检测连续的边缘,例如血管,皱纹和河流。它可以用来计算包含这些对象的整个图像的分数。

根据_1中描述的方法计算Hessian的特征向量以计算图像区域与血管的相似度。

参数:

图像:(N,M)ndarray Array与输入图像数据。scale_range:浮点数的2元组,可选使用的sigma范围。scale_step:float,可选步长在sigma之间。beta1:float,可选的Frangi校正常数,用于调整滤波器对类似Blob结构的偏差的灵敏度。beta2:float,可选的Frangi校正常数,用于调整滤波器对高方差/纹理/结构区域的灵敏度。black_ridges:布尔值,可选当True(默认值)时,过滤器检测到黑色隆起; 当假时,它检测到白色的脊。

返回:

out:(N,M)ndarray已过滤的图像(所有比例中的最大像素数)。

注意

参考

R242

A. Frangi, W. Niessen, K. Vincken, and M. Viergever. “Multiscale vessel enhancement filtering,” In LNCS, vol. 1496, pages 130-137, Germany, 1998. Springer-Verlag.

R243

Kroon, D.J.: Hessian based Frangi vesselness filter.

R244

http://mplab.ucsd.edu/tutorials/gabor.pdf.

gabor

skimage.filters.gabor(image, frequency, theta=0, bandwidth=1, sigma_x=None, sigma_y=None, n_stds=3, offset=0, mode='reflect', cval=0)[source]

返回Gabor滤波器的实部和虚部响应。

Gabor滤波器内核的实部和虚部应用于图像,响应作为一对数组返回。

Gabor滤波器是一个线性滤波器,具有一个由正弦平面波调制的高斯核。Gabor滤波器的频率和方向表示与人类视觉系统的频率和方向表示类似。Gabor滤波器组通常用于计算机视觉和图像处理。它们特别适用于边缘检测和纹理分类。

参数:

图像:二维数组输入图像。频率:浮点谐波函数的空间频率。以像素为单位指定。theta:float,可选的弧度方向。如果为0,则谐波处于x方向。带宽:浮点,可选由过滤器捕获的带宽。对于固定带宽,sigma_x和sigma_y将随着频率的增加而降低。如果用户设置了sigma_x和sigma_y,则该值将被忽略。sigma_x,sigma_y:float,x和y方向上的可选标准偏差。这些方向在旋转之前适用于内核。如果theta = pi / 2,那么内核旋转90度,以便sigma_x控制垂直方向。n_stds:标量,可选内核的线性大小为n_stds(默认为3)标准偏差。偏移量:浮点数,可选项以弧度表示的谐波函数的相位偏移。模式:{'constant','near','reflect','mirror','wrap'},可选用于将图像与内核进行卷积的模式,传递给ndi.convolve cval:标量,可选值如果卷积模式为'不变'。该参数被传递给ndi.convolve。

返回:

real,imag:array使用Gabor滤波器内核的实部和虚部来过滤图像。图像与输入图像尺寸相同。

参考

R245

http://en.wikipedia.org/wiki/Gabor_filter

R246

http://mplab.ucsd.edu/tutorials/gabor.pdf

例子

>>> from skimage.filters import gabor
>>> from skimage import data, io
>>> from matplotlib import pyplot as plt  
>>> image = data.coins()
>>> # detecting edges in a coin image
>>> filt_real, filt_imag = gabor(image, frequency=0.6)
>>> plt.figure()            
>>> io.imshow(filt_real)    
>>> io.show()               
>>> # less sensitivity to finer details with the lower frequency kernel
>>> filt_real, filt_imag = gabor(image, frequency=0.1)
>>> plt.figure()            
>>> io.imshow(filt_real)    
>>> io.show()               

gabor_filter

skimage.filters.gabor_filter(image, frequency, theta=0, bandwidth=1, sigma_x=None, sigma_y=None, n_stds=3, offset=0, mode='reflect', cval=0)[source]

弃用功能skimage.filters.gabor改为使用。

返回Gabor滤波器的实部和虚部响应。

Gabor滤波器内核的实部和虚部应用于图像,响应作为一对数组返回。

Gabor滤波器是一个线性滤波器,具有一个由正弦平面波调制的高斯核。Gabor滤波器的频率和方向表示与人类视觉系统的频率和方向表示类似。Gabor滤波器组通常用于计算机视觉和图像处理。它们特别适用于边缘检测和纹理分类。

参数:

图像:二维数组输入图像。频率:浮点谐波函数的空间频率。以像素为单位指定。theta:float,可选的弧度方向。如果为0,则谐波处于x方向。带宽:浮点,可选由过滤器捕获的带宽。对于固定带宽,sigma_x和sigma_y将随着频率的增加而降低。如果用户设置了sigma_x和sigma_y,则该值将被忽略。sigma_x,sigma_y:float,x和y方向上的可选标准偏差。这些方向在旋转之前适用于内核。如果theta = pi / 2,那么内核旋转90度,以便sigma_x控制垂直方向。n_stds:标量,可选内核的线性大小为n_stds(默认为3)标准偏差。偏移量:浮点数,可选项以弧度表示的谐波函数的相位偏移。模式:{'constant','near','reflect','mirror','wrap'},可选用于将图像与内核进行卷积的模式,传递给ndi.convolve cval:标量,可选值如果卷积模式为'不变'。该参数被传递给ndi.convolve。

返回:

real,imag:array使用Gabor滤波器内核的实部和虚部来过滤图像。图像与输入图像尺寸相同。

参考

R247

http://en.wikipedia.org/wiki/Gabor_filter

R248

http://mplab.ucsd.edu/tutorials/gabor.pdf

例子

>>> from skimage.filters import gabor
>>> from skimage import data, io
>>> from matplotlib import pyplot as plt  
>>> image = data.coins()
>>> # detecting edges in a coin image
>>> filt_real, filt_imag = gabor(image, frequency=0.6)
>>> plt.figure()            
>>> io.imshow(filt_real)    
>>> io.show()               
>>> # less sensitivity to finer details with the lower frequency kernel
>>> filt_real, filt_imag = gabor(image, frequency=0.1)
>>> plt.figure()            
>>> io.imshow(filt_real)    
>>> io.show()               

gabor_kernel

skimage.filters.gabor_kernel(frequency, theta=0, bandwidth=1, sigma_x=None, sigma_y=None, n_stds=3, offset=0)[source]

返回复杂的2D Gabor滤波器内核。

Gabor核是由复调和函数调制的高斯核。谐波函数由一个虚构的正弦函数和一个真正的余弦函数组成。空间频率与谐波的波长和高斯核的标准偏差成反比。带宽也与标准偏差成反比。

参数:

频率:浮点谐波函数的空间频率。以像素为单位指定。theta:float,可选的弧度方向。如果为0,则谐波处于x方向。带宽:浮点,可选由过滤器捕获的带宽。对于固定带宽,sigma_x和sigma_y将随着频率的增加而降低。如果用户设置了sigma_x和sigma_y,则该值将被忽略。sigma_x,sigma_y:float,x和y方向上的可选标准偏差。这些方向在旋转之前适用于内核。如果theta = pi / 2,那么内核旋转90度,以便sigma_x控制垂直方向。n_stds:标量,可选内核的线性大小为n_stds(默认为3)标准偏差offset:float,可选项以弧度表示的谐波函数的相位偏移。

返回:

g:复杂阵列复杂滤波器内核。

参考

R249

http://en.wikipedia.org/wiki/Gabor_filter

R250

http://mplab.ucsd.edu/tutorials/gabor.pdf

例子

>>> from skimage.filters import gabor_kernel
>>> from skimage import io
>>> from matplotlib import pyplot as plt  
>>> gk = gabor_kernel(frequency=0.2)
>>> plt.figure()        
>>> io.imshow(gk.real)  
>>> io.show()           
>>> # more ripples (equivalent to increasing the size of the
>>> # Gaussian spread)
>>> gk = gabor_kernel(frequency=0.2, bandwidth=0.1)
>>> plt.figure()        
>>> io.imshow(gk.real)  
>>> io.show()           

gaussian

skimage.filters.gaussian(image, sigma=1, output=None, mode='nearest', cval=0, multichannel=None, preserve_range=False, truncate=4.0)[source]

多维高斯滤波器。

参数:

image:类似数组的输入图像(灰度或颜色)进行过滤。sigma:标量或标量序列,可选用于高斯核的标准偏差。高斯滤波器的标准偏差是作为一个序列给出的,或者作为一个单独的数字给出,在这种情况下,所有轴都是相同的。输出:数组,可选输出参数传递一个数组,用于存储过滤器输出。模式:{'reflect','constant','nearest','mirror','wrap'},可选模式参数确定如何处理数组边界,其中cval是mode等于'constant'时的值。默认值是'最接近'的。cval:标量,可选值如果模式为“常量”,则填充输入的边界。默认值为0.0 multichannel:bool,可选(默认值:无)图像的最后一个轴是否被解释为多个通道。如果属实,每个通道都单独过滤(通道不混合在一起)。仅支持3个频道。如果没有,函数将尝试猜测这个,并且如果模糊,当数组有形状(M,N,3)时会引发警告。preserve_range:bool,可选是否保留原始值的范围。否则,输入图像将根据img_as_float的惯例进行转换。truncate:float,可选在这许多标准偏差处截断滤波器。

返回:

filtered_image:ndarray过滤的数组

注意

这个函数是一个包装器scipy.ndi.gaussian_filter()

整数数组被转换为浮点数。

多维滤波器被实现为一维卷积滤波器的序列。中间数组与输出存储在相同的数据类型中。因此,对于精度有限的输出类型,结果可能不准确,因为中间结果可能存储精度不够。

例子

>>> a = np.zeros((3, 3))
>>> a[1, 1] = 1
>>> a
array([[ 0.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  0.]])
>>> gaussian(a, sigma=0.4)  # mild smoothing
array([[ 0.00163116,  0.03712502,  0.00163116],
       [ 0.03712502,  0.84496158,  0.03712502],
       [ 0.00163116,  0.03712502,  0.00163116]])
>>> gaussian(a, sigma=1)  # more smoothing
array([[ 0.05855018,  0.09653293,  0.05855018],
       [ 0.09653293,  0.15915589,  0.09653293],
       [ 0.05855018,  0.09653293,  0.05855018]])
>>> # Several modes are possible for handling boundaries
>>> gaussian(a, sigma=1, mode='reflect')
array([[ 0.08767308,  0.12075024,  0.08767308],
       [ 0.12075024,  0.16630671,  0.12075024],
       [ 0.08767308,  0.12075024,  0.08767308]])
>>> # For RGB images, each is filtered separately
>>> from skimage.data import astronaut
>>> image = astronaut()
>>> filtered_img = gaussian(image, sigma=1, multichannel=True)

gaussian_filter

skimage.filters.gaussian_filter(image, sigma=1, output=None, mode='nearest', cval=0, multichannel=None, preserve_range=False, truncate=4.0)[source]

弃用功能skimage.filters.gaussian改为使用。

多维高斯滤波器。

参数:

image:类似数组的输入图像(灰度或颜色)进行过滤。sigma:标量或标量序列,可选用于高斯核的标准偏差。高斯滤波器的标准偏差是作为一个序列给出的,或者作为一个单独的数字给出,在这种情况下,所有轴都是相同的。输出:数组,可选输出参数传递一个数组,用于存储过滤器输出。模式:{'reflect','constant','nearest','mirror','wrap'},可选模式参数确定如何处理数组边界,其中cval是mode等于'constant'时的值。默认值是'最接近'的。cval:标量,可选值如果模式为“常量”,则填充输入的边界。默认值为0.0 multichannel:bool,可选(默认值:无)图像的最后一个轴是否被解释为多个通道。如果属实,每个通道都单独过滤(通道不混合在一起)。仅支持3个频道。如果没有,函数将尝试猜测这个,并且如果模糊,当数组有形状(M,N,3)时会引发警告。preserve_range:bool,可选是否保留原始值的范围。否则,输入图像将根据img_as_float的惯例进行转换。truncate:float,可选在这许多标准偏差处截断滤波器。

返回:

filtered_image:ndarray过滤的数组

注意

这个函数是一个包装器scipy.ndi.gaussian_filter()

整数数组被转换为浮点数。

多维滤波器被实现为一维卷积滤波器的序列。中间数组与输出存储在相同的数据类型中。因此,对于精度有限的输出类型,结果可能不准确,因为中间结果可能存储精度不够。

例子

>>> a = np.zeros((3, 3))
>>> a[1, 1] = 1
>>> a
array([[ 0.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  0.]])
>>> gaussian(a, sigma=0.4)  # mild smoothing
array([[ 0.00163116,  0.03712502,  0.00163116],
       [ 0.03712502,  0.84496158,  0.03712502],
       [ 0.00163116,  0.03712502,  0.00163116]])
>>> gaussian(a, sigma=1)  # more smoothing
array([[ 0.05855018,  0.09653293,  0.05855018],
       [ 0.09653293,  0.15915589,  0.09653293],
       [ 0.05855018,  0.09653293,  0.05855018]])
>>> # Several modes are possible for handling boundaries
>>> gaussian(a, sigma=1, mode='reflect')
array([[ 0.08767308,  0.12075024,  0.08767308],
       [ 0.12075024,  0.16630671,  0.12075024],
       [ 0.08767308,  0.12075024,  0.08767308]])
>>> # For RGB images, each is filtered separately
>>> from skimage.data import astronaut
>>> image = astronaut()
>>> filtered_img = gaussian(image, sigma=1, multichannel=True)

hessian

skimage.filters.hessian(image, scale_range=(1, 10), scale_step=2, beta1=0.5, beta2=15)[source]

用Hessian过滤器过滤图像。

该过滤器可用于检测连续的边缘,例如血管,皱纹和河流。它可以用来计算包含这些对象的整个图像的分数。

几乎等于Frangi过滤器,但使用平滑的替代方法。参考_1找到Frangi和Hessian滤波器之间的区别。

参数:

图像:(N,M)ndarray Array与输入图像数据。scale_range:浮点数的2元组,可选使用的sigma范围。scale_step:float,可选步长在sigma之间。beta1:float,可选的Frangi校正常数,用于调整滤波器对类似Blob结构的偏差的灵敏度。beta2:float,可选的Frangi校正常数,用于调整滤波器对高方差/纹理/结构区域的灵敏度。

返回:

out:(N,M)ndarray已过滤的图像(所有比例中的最大像素数)。

注意

Written by Marc Schrijver, 2/11/2001 Re-Written by D. J. Kroon University of Twente (May 2009)

参考

R251

Choon-Ching Ng, Moi Hoon Yap, Nicholas Costen and Baihua Li, “Automatic Wrinkle Detection using Hybrid Hessian Filter”.

inverse

skimage.filters.inverse(data, impulse_response=None, filter_params={}, max_gain=2, predefined_filter=None)[source]

将过滤器反向应用于给定的数据。

参数:

数据:(M,N)ndarray输入数据。impulse_response:callable f(r,c,** filter_params)过滤器的脉冲响应。请参阅LPIFilter2D .__ init__。filter_params:dict向impulse_response函数中添加关键字参数。max_gain:float限制滤波器增益。通常,滤波器包含零点,这将导致逆滤波器具有无限增益。高增益会导致人为因素的放大,因此推荐使用保守限制。

| Other Parameters: |

| | predefined_filter:LPIFilter2D如果您需要多次在不同的图像上应用相同的滤镜,请构造LPIFilter2D并在此处指定它。|

laplace

skimage.filters.laplace(image, ksize=3, mask=None)[source]

使用拉普拉斯算子查找图像的边缘。

参数:

图像:ndarray要处理的图像。ksize:int,可选定义离散拉普拉斯算子的大小,使其具有(ksize,)* image.ndim的大小。mask:ndarray,可选一个可选掩码,用于将应用程序限制到某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:ndarray拉普拉斯边缘图。

注意

拉普拉斯算子使用函数skimage.restoration.uft.laplacian()生成。

median

skimage.filters.median(image, selem=None, out=None, mask=None, shift_x=False, shift_y=False)[source]

返回图像的当地中位数。

参数:

图像:二维数组(uint8,uint16)输入图像。selem:二维数组,可选将邻域表示为1和0的二维数组。如果没有,则使用大小为3的完整正方形。out:二维数组(与输入相同的dtype)如果没有,则分配一个新数组。mask:ndarray Mask数组,用于定义(> 0)本地邻域中包含的图像的区域。如果没有,则使用完整的图像(默认)。shift_x,shift_y:int添加到结构元素中心点的偏移量。Shift是有界的结构元素的大小(中心必须在给定的结构元素内)。

返回:

out:二维数组(与输入图像相同的dtype)输出图像。

示例

>>> from skimage import data
>>> from skimage.morphology import disk
>>> from skimage.filters.rank import median
>>> img = data.camera()
>>> med = median(img, disk(5))

prewitt

skimage.filters.prewitt(image, mask=None)[source]

使用Prewitt变换找到边缘量值。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2D阵列Prewitt边缘映射。

另请参阅

sobel, scharr

注意

返回水平和垂直Prewitt变换的平方和的平方根。由于Prewitt算子对梯度算子的逼近不完全是旋转不变的,因此边缘的大小稍微取决于边缘方向。为了获得更好的旋转不变性,应该使用Scharr运算符。Sobel算子比Prewitt算子具有更好的旋转不变性,但旋转不变性比Scharr算子差。

示例

>>> from skimage import data
>>> camera = data.camera()
>>> from skimage import filters
>>> edges = filters.prewitt(camera)

prewitt_h

skimage.filters.prewitt_h(image, mask=None)[source]

使用Prewitt变换查找图像的水平边缘。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2D阵列Prewitt边缘映射。

注意

我们使用以下内核:

 1   1   1
 0   0   0
-1  -1  -1

prewitt_v

skimage.filters.prewitt_v(image, mask=None)[source]

使用Prewitt变换查找图像的垂直边缘。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2D阵列Prewitt边缘映射。

注意

我们使用以下内核:

1   0  -1
1   0  -1
1   0  -1

rank_order

skimage.filters.rank_order(image)[source]

返回一个形状相同的图像,其中每个像素是像素值的索引,按唯一值的升序排列image,也就是等级顺序值。

参数:

图片:ndarray

返回:

标签:类型为np.uint32的ndarray,形状为image.shape每个像素具有图像中相应像素的rank-order值的新阵列。像素值介于0和n - 1之间,其中n是图像中不同唯一值的数量。original_values:1-D ndarray图像的唯一原始值

示例

>>> a = np.array([[1, 4, 5], [4, 4, 1], [5, 1, 1]])
>>> a
array([[1, 4, 5],
       [4, 4, 1],
       [5, 1, 1]])
>>> rank_order(a)
(array([[0, 1, 2],
       [1, 1, 0],
       [2, 0, 0]], dtype=uint32), array([1, 4, 5]))
>>> b = np.array([-1., 2.5, 3.1, 2.5])
>>> rank_order(b)
(array([0, 1, 2, 1], dtype=uint32), array([-1. ,  2.5,  3.1]))

roberts

skimage.filters.roberts(image, mask=None)[source]

使用罗伯茨的交叉算子找出边缘量值。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2D阵列罗伯茨的交叉边缘图。

另请参阅

sobel, scharr, prewitt, feature.canny

示例

>>> from skimage import data
>>> camera = data.camera()
>>> from skimage import filters
>>> edges = filters.roberts(camera)

roberts_neg_diag

skimage.filters.roberts_neg_diag(image, mask=None)[source]

使用Roberts的Cross运算符查找图像的交叉边缘。

将内核应用于输入图像以产生单独方向的梯度分量测量值。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:二维数组罗伯特的边缘图。

注意

我们使用以下内核:

 0   1
-1   0

roberts_pos_diag

skimage.filters.roberts_pos_diag(image, mask=None)[source]

使用Roberts的交叉算子找出图像的交叉边缘。

将内核应用于输入图像以产生单独方向的梯度分量测量值。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:二维数组罗伯特的边缘图。

注意

我们使用以下内核:

1   0
0  -1

scharr

skimage.filters.scharr(image, mask=None)[source]

使用Scharr变换查找边缘量值。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2-D数组Scharr边缘映射。

sobel, prewitt, canny

注意

取水平和垂直Scharrs的平方和的平方根以得到对方向稍微不敏感的量值。Scharr运算符比其他边缘过滤器(如Sobel或Prewitt运算符)具有更好的旋转不变性。

参考

R252

D. Kroon, 2009, Short Paper University Twente, Numerical Optimization of Kernel Based Image Derivatives.

R253

http://en.wikipedia.org/wiki/Sobel_operator#Alternative_operators

示例

>>> from skimage import data
>>> camera = data.camera()
>>> from skimage import filters
>>> edges = filters.scharr(camera)

scharr_h

skimage.filters.scharr_h(image, mask=None)[source]

使用Scharr变换查找图像的水平边缘。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2-D数组Scharr边缘映射。

注意

我们使用以下内核:

 3   10   3
 0    0   0
-3  -10  -3

参考

R254

D. Kroon, 2009, Short Paper University Twente, Numerical Optimization of Kernel Based Image Derivatives.

scharr_v

skimage.filters.scharr_v(image, mask=None)[source]

使用Scharr变换查找图像的垂直边缘。

参数:

图像:二维数组图像处理掩码:二维数组,可选用于将应用程序限制在特定区域的可选掩码。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2-D数组Scharr边缘映射。

注意

我们使用以下内核:

 3   0   -3
10   0  -10
 3   0   -3

参考

R255

D. Kroon, 2009, Short Paper University Twente, Numerical Optimization of Kernel Based Image Derivatives.

sobel

skimage.filters.sobel(image, mask=None)[source]

使用Sobel变换查找边缘量值。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2维数组索贝尔边缘映射。

另请参阅

scharr, prewitt, roberts, feature.canny

注意

取水平和垂直Sobels的平方和的平方根得到一个对方向不敏感的量值。

水平和垂直Sobels中使用的3x3卷积核是图像梯度的近似值(由于9像素用于计算给定像素的梯度,所以略微模糊)。作为梯度的近似值,Sobel算子不完全是旋转不变的。应该使用Scharr运算符来获得更好的旋转不变性。

注意scipy.ndimage.sobel返回一个方向Sobel,它必须被进一步处理以执行边缘检测。

例子

>>> from skimage import data
>>> camera = data.camera()
>>> from skimage import filters
>>> edges = filters.sobel(camera)

sobel_h

skimage.filters.sobel_h(image, mask=None)[source]

使用Sobel变换查找图像的水平边缘。

参数:

image:处理二维数组图像。掩码:二维数组,可选一个可选掩码,用于将应用程序限制在某个区域。请注意,屏蔽区域周围的像素也被屏蔽,以防止屏蔽区域影响结果。

返回:

输出:2维数组索贝尔边缘映射。

注意

我们使用以下内核:

 1   2   1
 0   0   0
-1  -2  -1

sobel_v

skimage.filters.sobel_v(image, mask=None)[source]

使用Sobel变换查找图像的垂直边缘。

Parameters:

image : 2-D array Image to process. mask : 2-D array, optional An optional mask to limit the application to a certain area. Note that pixels surrounding masked regions are also masked to prevent masked regions from affecting the result.

Returns:

output : 2-D array The Sobel edge map.

注意

我们使用以下内核:

1   0  -1
2   0  -2
1   0  -1

threshold_adaptive

skimage.filters.threshold_adaptive(image, block_size, method='gaussian', offset=0, mode='reflect', param=None)[source]

弃用功能threshold_local改为使用。

threshold_isodata

skimage.filters.threshold_isodata(image, nbins=256, return_all=False)[source]

根据ISODATA方法返回阈值(s)。

基于直方图的阈值,称为Ridler-Calvard方法或inter-means。返回的阈值满足以下等式:

threshold = (image[image <= threshold].mean() +image[image > threshold].mean()) / 2.0

也就是说,返回的阈值是将图像分成两组像素的强度,其中阈值强度在这些组的平均强度之间的中间。

对于整数图像,上面的等式保持在1之内; 对于浮点图像,等式保持在直方图的bin宽度内。

参数:

图像:(N,M)ndarray输入图像。nbins:int,可选用于计算直方图的bin数。整数数组被忽略。return_all:bool,可选如果False(默认),则只返回满足上述等式的最低阈值。如果为True,则返回所有有效的阈值。

返回:

阈值:float或int或数组阈值(s)。

参考

R256

Ridler, TW & Calvard, S (1978), “Picture thresholding using an iterative selection method” IEEE Transactions on Systems, Man and Cybernetics 8: 630-632, DOI:10.1109/TSMC.1978.4310039

R257

Sezgin M. and Sankur B. (2004) “Survey over Image Thresholding Techniques and Quantitative Performance Evaluation” Journal of Electronic Imaging, 13(1): 146-165, http://www.busim.ee.boun.edu.tr/~sankur/SankurFolder/Threshold_survey.pdf DOI:10.1117/1.1631315

R258

ImageJ AutoThresholder code, http://fiji.sc/wiki/index.php/Auto_Threshold

例子

>>> from skimage.data import coins
>>> image = coins()
>>> thresh = threshold_isodata(image)
>>> binary = image > thresh

threshold_li

skimage.filters.threshold_li(image)[source]

基于李氏最小交叉熵方法的自适应阈值返回。

参数:

图像:(N,M)ndarray输入图像。

返回:

阈值:浮点上阈值。所有强度高于此值的像素都假定为前景。

参考

R259

Li C.H. and Lee C.K. (1993) “Minimum Cross Entropy Thresholding” Pattern Recognition, 26(4): 617-625 DOI:10.1016/0031-3203(93)90115-D

R260

Li C.H. and Tam P.K.S. (1998) “An Iterative Algorithm for Minimum Cross Entropy Thresholding” Pattern Recognition Letters, 18(8): 771-776 DOI:10.1016/S0167-8655(98)00057-9

R261

Sezgin M. and Sankur B. (2004) “Survey over Image Thresholding Techniques and Quantitative Performance Evaluation” Journal of Electronic Imaging, 13(1): 146-165 DOI:10.1117/1.1631315

R262

ImageJ AutoThresholder code, http://fiji.sc/wiki/index.php/Auto_Threshold

例子

>>> from skimage.data import camera
>>> image = camera()
>>> thresh = threshold_li(image)
>>> binary = image > thresh

threshold_local

skimage.filters.threshold_local(image, block_size, method='gaussian', offset=0, mode='reflect', param=None)[source]

基于局部像素邻域计算阈值掩模图像。

也称为自适应或动态阈值。阈值是像素的局部邻域减去常数的加权平均值。或者,阈值可以使用'通用'方法通过给定函数动态确定。

参数:

图像:(N,M)ndarray输入图像。block_size:int用于计算阈值的像素邻域的奇数大小(例如3,5,7,...,21,...)。方法:{'generic','gaussian','mean','median'},可选用于确定加权平均图像中局部邻域的自适应阈值的方法。'generic':使用自定义函数(参见param参数)'gaussian':应用高斯过滤器(请参阅自定义sigma值的参数参数)'mean':应用算术平均过滤器'median':应用中值过滤器默认情况下'高斯'方法被使用。offset:float,可选常量从邻域的加权均值中减去以计算局部阈值。默认偏移量为0. mode:{'reflect','constant','nearest','mirror','wrap'},可选mode参数决定如何处理数组边界,其中cval是模式等于'常量'时的值。默认是'反映'。param:{int,function},可选为'generic'方法指定'gaussian'方法的sigma或函数对象。该函数将局部邻域的平面数组作为单个参数,并返回中心像素的计算阈值。

返回:

阈值:(N,M)ndarray阈值图像。输入图像中比阈值图像中的对应像素高的所有像素被认为是前景。

  • 'generic':使用自定义函数(参见param参数)
  • 'gaussian':应用高斯滤波器(参见param自定义西格玛值)
  • 'mean':应用算术平均滤波器
  • 'median':应用中值排名过滤器

默认情况下使用'gaussian'方法。

偏移量:浮点,可选

从邻域的加权平均值中减去常数以计算局部阈值。默认偏移量是0。

mode : {‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’}, optional

mode参数确定如何处理数组边界,其中cval是mode等于'constant'时的值。默认是'反映'。

param : {int, function}, optional

为'generic'方法指定'gaussian'方法或函数对象的sigma。该函数将局部邻域的平面数组作为单个参数,并返回中心像素的计算阈值。

Returns:  **threshold** : (N, M) ndarray

阈值图像。输入图像中比阈值图像中的对应像素高的所有像素被认为是前景。

参考

R263

http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#adaptivethreshold

例子

>>> from skimage.data import camera
>>> image = camera()[:50, :50]
>>> binary_image1 = image > threshold_local(image, 15, 'mean')
>>> func = lambda arr: arr.mean()
>>> binary_image2 = image > threshold_local(image, 15, 'generic',
...                                         param=func)

threshold_mean

skimage.filters.threshold_mean(image)[source]

根据灰度值的平均值返回阈值。

参数:

图像:(N,M,...,P)ndarray灰度输入图像。

返回:

阈值:浮点上阈值。所有强度高于此值的像素都假定为前景。

参考

R264

C. A. Glasbey, “An analysis of histogram-based thresholding algorithms,” CVGIP: Graphical Models and Image Processing, vol. 55, pp. 532-537, 1993. DOI:10.1006/cgip.1993.1040

例子

>>> from skimage.data import camera
>>> image = camera()
>>> thresh = threshold_mean(image)
>>> binary = image > thresh

threshold_minimum

skimage.filters.threshold_minimum(image, nbins=256, max_iter=10000)[source]

基于最小方法返回阈值。

输入的直方图image被计算和平滑,直到只有两个最大值。那么中间的最小值就是阈值。

参数:

图像:(M,N)ndarray输入图像。nbins:int,可选用于计算直方图的bin数。整数数组被忽略。max_iter:int,可选用于平滑直方图的最大迭代次数。

返回:

阈值:浮点上阈值。所有强度高于此值的像素都假定为前景。

举:

RuntimeError如果无法在直方图中找到两个局部最大值,或者平滑过程需要超过1e4次迭代。

参考

R265

C. A. Glasbey, “An analysis of histogram-based thresholding algorithms,” CVGIP: Graphical Models and Image Processing, vol. 55, pp. 532-537, 1993.

R266

Prewitt, JMS & Mendelsohn, ML (1966), “The analysis of cell images”, Annals of the New York Academy of Sciences 128: 1035-1053 DOI:10.1111/j.1749-6632.1965.tb11715.x

例子

>>> from skimage.data import camera
>>> image = camera()
>>> thresh = threshold_minimum(image)
>>> binary = image > thresh

threshold_niblack

skimage.filters.threshold_niblack(image, window_size=15, k=0.2)[source]

将Niblack本地阈值应用于阵列。

使用以下公式为图像中的每个像素计算阈值T:

T = m(x,y) - k * s(x,y)

其中,m(x,y)和s(x,y)是像素(x,y)邻域的平均值和标准偏差,其由以像素为中心的w乘以w的矩形窗限定。k是一个可配置的参数,用于衡量标准偏差的影响。

参数:

图像:(N,M)ndarray灰度输入图像。window_size:int,可选像素邻域窗口的奇数大小(例如3,5,7 ...)。k:float,可选值阈值公式中的参数k的值。

返回:

阈值:(N,M)ndarray阈值掩码。所有强度高于此值的像素都假定为前景。

注意

该算法最初设计用于文本识别。

参考

R267

Niblack, W (1986), An introduction to Digital Image Processing, Prentice-Hall.

例子

>>> from skimage import data
>>> image = data.page()
>>> binary_image = threshold_niblack(image, window_size=7, k=0.1)

threshold_otsu

skimage.filters.threshold_otsu(image, nbins=256)[source]

根据大津方法返回阈值。

参数:

图像:(N,M)ndarray灰度输入图像。nbins:int,可选用于计算直方图的bin数。整数数组被忽略。

返回:

阈值:浮点上阈值。所有强度高于此值的像素都假定为前景。

举:

ValueError如果图像只包含单个灰度值。

注意

输入图像必须是灰度。

References

R268

Wikipedia, http://en.wikipedia.org/wiki/Otsu’s_Method

例子

>>> from skimage.data import camera
>>> image = camera()
>>> thresh = threshold_otsu(image)
>>> binary = image <= thresh

threshold_sauvola

skimage.filters.threshold_sauvola(image, window_size=15, k=0.2, r=None)[source]

将Sauvola局部阈值应用于数组。Sauvola是Niblack技术的改进。

在原始方法中,使用以下公式为图像中的每个像素计算阈值T:

T = m(x,y) * (1 + k * ((s(x,y) / R) - 1))

其中,m(x,y)和s(x,y)是像素(x,y)邻域的平均值和标准偏差,其由以像素为中心的w乘以w的矩形窗限定。k是一个可配置的参数,用于衡量标准偏差的影响。R是灰度图像的最大标准偏差。

参数:

图像:(N,M)ndarray灰度输入图像。window_size:int,可选像素邻域窗口的奇数大小(例如3,5,7 ...)。k:float,可选参数k的值。r:float,可选值R,标准差的动态范围。如果无,则设置为图像dtype范围的一半。

返回:

阈值:(N,M)ndarray阈值掩码。所有强度高于此值的像素都假定为前景。

注意

该算法最初设计用于文本识别。

参考

R269

J. Sauvola and M. Pietikainen, “Adaptive document image binarization,” Pattern Recognition 33(2), pp. 225-236, 2000. DOI:10.1016/S0031-3203(99)00055-2

例子

>>> from skimage import data
>>> image = data.page()
>>> binary_sauvola = threshold_sauvola(image,
...                                    window_size=15, k=0.2)

threshold_triangle

skimage.filters.threshold_triangle(image, nbins=256)[source]

基于三角算法返回阈值。

参数:

图像:(N,M,...,P)ndarray灰度输入图像。nbins:int,可选用于计算直方图的bin数。整数数组被忽略。

返回:

阈值:浮点上阈值。所有强度高于此值的像素都假定为前景。

参考

R270

Zack, G. W., Rogers, W. E. and Latt, S. A., 1977, Automatic Measurement of Sister Chromatid Exchange Frequency, Journal of Histochemistry and Cytochemistry 25 (7), pp. 741-753 DOI:10.1177/25.7.70454

R271

ImageJ AutoThresholder code, http://fiji.sc/wiki/index.php/Auto_Threshold

例子

>>> from skimage.data import camera
>>> image = camera()
>>> thresh = threshold_triangle(image)
>>> binary = image > thresh

threshold_yen

skimage.filters.threshold_yen(image, nbins=256)[source]

基于日元的方法返回阈值。

参数:

图像:(N,M)ndarray输入图像。nbins:int,可选用于计算直方图的bin数。整数数组被忽略。

返回:

阈值:浮点上阈值。所有强度高于此值的像素都假定为前景。

参考

R272

Yen J.C., Chang F.J., and Chang S. (1995) “A New Criterion for Automatic Multilevel Thresholding” IEEE Trans. on Image Processing, 4(3): 370-378. DOI:10.1109/83.366472

R273

Sezgin M. and Sankur B. (2004) “Survey over Image Thresholding Techniques and Quantitative Performance Evaluation” Journal of Electronic Imaging, 13(1): 146-165, DOI:10.1117/1.1631315 http://www.busim.ee.boun.edu.tr/~sankur/SankurFolder/Threshold_survey.pdf

R274

ImageJ AutoThresholder code, http://fiji.sc/wiki/index.php/Auto_Threshold

例子

>>> from skimage.data import camera
>>> image = camera()
>>> thresh = threshold_yen(image)
>>> binary = image <= thresh

try_all_threshold

skimage.filters.try_all_threshold(image, figsize=(8, 5), verbose=True)[source]

返回比较不同阈值方法输出的图。

参数:

图像:(N,M)ndarray输入图像。figsize:元组,可选图尺寸(英寸)。详细:布尔,可选打印每个方法的函数名称。

返回:

无花果,斧头:元组Matplotlib图和轴。

注意

使用以下算法:

  • isodata
  • li
  • mean
  • minimum
  • otsu
  • triangle
  • yen

例子

>>> from skimage.data import text
>>> fig, ax = try_all_threshold(text(), figsize=(10, 6), verbose=False)

wiener

skimage.filters.wiener(data, impulse_response=None, filter_params={}, K=0.25, predefined_filter=None)[source]

最小均方误差(Wiener)逆滤波器。

参数:

数据:(M,N)ndarray输入数据。K:float或(M,N)ndarray噪声功率谱与未降级图像的比值。impulse_response:callable f(r,c,** filter_params)过滤器的脉冲响应。请参阅LPIFilter2D .__ init__。filter_params:dict向impulse_response函数中添加关键字参数。

| 其他参数:|

| | predefined_filter:LPIFilter2D如果您需要多次在不同的图像上应用相同的滤镜,请构造LPIFilter2D并在此处指定它。|

LPIFilter2D

class skimage.filters.LPIFilter2D(impulse_response, **filter_params)[source]

Bases: object

线性位置不变滤波器(2维)

__init__(impulse_response, **filter_params)[source]

参数:

impulse_response:callable f(r,c,** filter_params)产生脉冲响应的函数。r和c是表示行和列位置的一维向量,换言之,坐标是(r0,c0),(r0,c1)等。** filter_params通过。换句话说,impulse_response会被这样调用:>>> def impulse_response(r,c,** filter_params):... pass >>> >>> r = 0,0,0,1,1,1, 2,2,2 >>> c = 0,1,2,0,1,2,0,1,2 >>> filter_params = {'kw1':1,'kw2':2,'kw3':3 } >>> impulse_response(r,c,** filter_params)

deprecated

class skimage.filters.deprecated(alt_func=None, behavior='warn', removed_version=None)[source]

Bases: object

装饰者用警告标记弃用的功能。

摘自[http://wiki.python.org/moin/PythonDecoratorLibrary](http://wiki.python.org/moin/PythonDecoratorLibrary)。

参数:

alt_func:str如果给出,请告诉用户使用什么函数。行为:{'warn','raise'}在调用不推荐函数期间的行为:'warn'=警告用户该函数不推荐使用; 'raise'=引发错误。removed_version:str其中不推荐使用的函数将被删除的软件包版本。

__init__(alt_func=None, behavior='warn', removed_version=None)[source]

过滤器 | filters相关

Scikit image

Scikit-image 是用于图像处理的 Python 包,使用原生的 NumPy 数组作为图像对象。

主页 http://scikit-image.org/
源码 https://github.com/scikit-image/scikit-image
发布版本 0.13.1