目录
canny
corner_harris
greycomatrix
greycoprops
hog
local_binary_pattern
scikit-image feature是一个强大的python可以调用的计算特征库。对于常见的图像特征可以直接调用scikit-image feature中封装好的函数来计算,速度也比自己编写的函数快(别问我怎么知道的,心塞了)。
具体来说有以下特征:
skimage.feature.blob_dog(image,min_sigma,...) |
在给定的灰度图像中查找斑点。 |
---|---|
skimage.feature.blob_doh(image,min_sigma,...) |
在给定的灰度图像中查找斑点。 |
skimage.feature.blob_log(image,min_sigma,...) |
在给定的灰度图像中查找斑点。 |
skimage.feature.canny(图片,西格玛,...) |
使用Canny算法边缘过滤图像。 |
skimage.feature.corner_fast(image,n,...) |
提取给定图像的FAST角点。 |
skimage.feature.corner_foerstner(image,sigma) |
计算Foerstner角落测量响应图像。 |
skimage.feature.corner_harris(image,...) |
计算哈里斯角度测量响应图像。 |
skimage.feature.corner_kitchen_rosenfeld(图像) |
Compute Kitchen和Rosenfeld角落测量响应图像。 |
skimage.feature.corner_moravec(图片,...) |
计算Moravec角落测量响应图像。 |
skimage.feature.corner_orientations(图片,...) |
计算拐角的方向。 |
skimage.feature.corner_peaks(image,...) |
在角落测量响应图像中找到角点。 |
skimage.feature.corner_shi_tomasi(image,sigma) |
计算Shi-Tomasi(Kanade-Tomasi)角落测量响应图像。 |
skimage.feature.corner_subpix(图像,角落) |
确定拐角的亚像素位置。 |
skimage.feature.daisy(img,step,radius,...) |
为给定图像密集提取DAISY特征描述符。 |
skimage.feature.draw_multiblock_lbp(img,r,...) |
多块本地二进制模式可视化。 |
skimage.feature.greycomatrix(image,...,...) |
计算灰度共生矩阵。 |
skimage.feature.greycoprops(P,道具) |
计算GLCM的纹理属性。 |
skimage.feature.hessian_matrix(图片,...) |
计算Hessian矩阵。 |
skimage.feature.hessian_matrix_det(image,...) |
计算图像上的近似Hessian行列式。 |
skimage.feature.hessian_matrix_eigvals(Hxx,...) |
计算Hessian矩阵的特征值。 |
skimage.feature.hog(图像,方向,...) |
提取给定图像的定向梯度直方图(HOG)。 |
skimage.feature.local_binary_pattern(image,P,R) |
灰度和旋转不变LBP(局部二元模式)。 |
skimage.feature.match_descriptors(...,...) |
描述符的蛮力匹配。 |
skimage.feature.match_template(图片,模板) |
使用归一化相关将模板匹配到2-D或3-D图像。 |
skimage.feature.multiblock_lbp(int_image,r,...) |
多块本地二进制模式(MB-LBP)。 |
skimage.feature.peak_local_max(图片,...) |
在图像中查找峰值作为坐标列表或布尔掩模。 |
skimage.feature.plot_matches(ax,image1,...) |
绘制匹配的功能。 |
skimage.feature.register_translation(...,...) |
通过互相关高效的子像素图像平移配准。 |
skimage.feature.shape_index(image,sigma,...) |
计算形状索引。 |
skimage.feature.structure_tensor(image,...) |
使用平方差和计算结构张量。 |
skimage.feature.structure_tensor_eigvals(...) |
计算结构张量的特征值。 |
skimage.feature.BRIEF(descriptor_size,...) |
简单二进制描述符提取器。 |
skimage.feature.CENSURE(min_scale,...) |
CENSURE关键点检测器。 |
skimage.feature.ORB(缩放,n_scales,...) |
面向快速和旋转的简要特征检测器和二进制描述符提取器。 |
skimage.feature.blob |
|
skimage.feature.brief |
|
skimage.feature.brief_cy |
|
skimage.feature.censure |
|
skimage.feature.censure_cy |
|
skimage.feature.corner |
|
skimage.feature.corner_cy |
|
skimage.feature.match |
|
skimage.feature.orb |
|
skimage.feature.orb_cy |
|
skimage.feature.peak |
|
skimage.feature.template |
|
skimage.feature.texture |
表征图像纹理的方法。 |
skimage.feature.util |
|
对于经常使用的一些特征,举例如下:
skimage.feature.canny(image, sigma=1.0, low_threshold=None, high_threshold=None, mask=None, use_quantiles=False)
[source]
使用Canny算法边缘过滤图像。
参数: |
图像:二维数组灰度输入图像检测边缘; 可以是任何dtype。sigma:float高斯滤波器的标准偏差。low_threshold:float滞后阈值的下限(链接边)。如果没有,low_threshold被设置为dtype的最大值的10%。high_threshold:float滞后阈值上限(链接边缘)。如果没有,high_threshold被设置为dtype最大值的20%。mask:array,dtype = bool,可选Mask用于限制Canny对某个区域的应用。use_quantiles:bool,可选如果为True,则将low_threshold和high_threshold视为边缘幅度图像的分位数,而不是绝对边缘幅度值。如果为True,那么阈值必须在0,1范围内。 |
---|---|
返回: |
输出:2D数组(图像)二进制边缘图。 |
另请参阅:skimage.sobel
注意
该算法的步骤如下:
sigma
宽度高斯平滑图像。示例
from skimage import feature
# Generate noisy image of a square
im = np.zeros((256, 256))
im[64:-64, 64:-64] = 1
im += 0.2 * np.random.rand(*im.shape)
# First trial with the Canny filter, with the default smoothing
edges1 = feature.canny(im)
# Increase the smoothing for better results
edges2 = feature.canny(im, sigma=3)
skimage.feature.corner_harris(image, method='k', k=0.05, eps=1e-06, sigma=1)
[source]
计算哈里斯角度测量响应图像。
该角点检测器使用来自自相关矩阵A的信息:
A = [(imx**2) (imx*imy)] = [Axx Axy] [(imx*imy) (imy**2)] [Axy Ayy]
其中imx和imy是一阶导数,用高斯滤波器进行平均。角落测量然后被定义为:
det(A) - k * trace(A)**2
要么:
2 * det(A) / (trace(A) + eps)
参数: |
图像:ndarray输入图像。方法:{'k','eps'},可选用于从自相关矩阵计算响应图像的方法。k:float,可选灵敏度因子,用于分离边缘的角点,通常范围为0,0.2。较小的k值会导致检测到尖角。eps:float,可选归一化因子(Noble的角点测量)。sigma:float,可选用于高斯核的标准偏差,用作自相关矩阵的加权函数。 |
---|---|
返回: |
回应:ndarray Harris反应形象。 |
示例:
>>> from skimage.feature import corner_harris, corner_peaks >>> square = np.zeros([10, 10]) >>> square[2:8, 2:8] = 1 >>> square.astype(int) array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) >>> corner_peaks(corner_harris(square), min_distance=1) array([[2, 2], [2, 7], [7, 2], [7, 7]
skimage.feature.greycomatrix(image, distances, angles, levels=None, symmetric=False, normed=False)
计算灰度共生矩阵。
灰度级共生矩阵是图像上给定偏移处的共生灰度值的直方图。
参数: |
image:array_like整型输入图像。只支持正值图像。如果type不是uint8,则需要设置参数级别。距离:array_like像素对距离偏移列表。angles:array_like以弧度表示的像素对角度列表。levels:int,可选输入图像应该包含0和level-1的整数,其中level指示计数的灰度数(对于8位图像通常为256)。该参数对于16位或更高的图像是必需的,通常是图像的最大值。由于输出矩阵至少为x水平,因此可能最好使用输入图像的分档而不是较大的水平值。symmetric:bool,可选如果为True,则输出矩阵P:,:,d,theta是对称的。这是通过忽略值对的顺序来实现的,所以(i,j)和(j,i)在给定偏移量时遇到(i,j)时被累加。默认值是False。normed:bool,可选如果为True,则将每个矩阵P:,:,d,theta除以给定偏移量的累计同现事件总数。结果矩阵的元素总和为1.默认值为False。 |
---|---|
返回: |
P:4-D ndarray灰度共生直方图。值Pi,j,d,theta是灰度级j在距离d和与灰度级i成角度θ时出现的次数。如果normed为False,则输出为uint32类型,否则为float64。尺寸是:水平x水平x距离数量x角度数量。 |
示例
计算2个GLCM:一个用于向右偏移1像素,另一个向上偏移1像素。
>>> image = np.array([[0, 0, 1, 1], ... [0, 0, 1, 1], ... [0, 2, 2, 2], ... [2, 2, 3, 3]], dtype=np.uint8) >>> result = greycomatrix(image, [1], [0, np.pi/4, np.pi/2, 3*np.pi/4], ... levels=4) >>> result[:, :, 0, 0] array([[2, 2, 1, 0], [0, 2, 0, 0], [0, 0, 3, 1], [0, 0, 0, 1]], dtype=uint32) >>> result[:, :, 0, 1] array([[1, 1, 3, 0], [0, 1, 1, 0], [0, 0, 0, 2], [0, 0, 0, 0]], dtype=uint32) >>> result[:, :, 0, 2] array([[3, 0, 2, 0], [0, 2, 2, 0], [0, 0, 1, 2], [0, 0, 0, 0]], dtype=uint32) >>> result[:, :, 0, 3] array([[2, 0, 0, 0], [1, 1, 2, 0], [0, 0, 2, 1], [0, 0, 0, 0]], dtype=uint32
skimage.feature.greycoprops(P, prop='contrast')
[source]
计算GLCM的纹理属性。
计算灰度共生矩阵的特征以作为矩阵的紧凑总结。属性计算如下:
参数: |
P:ndarray输入数组。P是计算指定属性的灰度共生直方图。值Pi,j,d,theta是灰度级j在距离d和与灰度级i成角度θ时出现的次数。prop:{'contrast','dissimilarity','homogeneity','energy','correlation','ASM'},可选GLCM的特性来计算。默认值是'对比'。 |
---|---|
返回: |
结果:2-D ndarray 2维阵列。resultd,a是第d个距离和第a个角度的属性'prop'。 |
例子:
计算距离为1,2和角度为0度,90度的GLCM的对比度
>>> image = np.array([[0, 0, 1, 1], ... [0, 0, 1, 1], ... [0, 2, 2, 2], ... [2, 2, 3, 3]], dtype=np.uint8) >>> g = greycomatrix(image, [1, 2], [0, np.pi/2], levels=4, ... normed=True, symmetric=True) >>> contrast = greycoprops(g, 'contrast') >>> contrast array([[ 0.58333333, 1. ], [ 1.25 , 2.75 ]]
skimage.feature.hog(image, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(3, 3), block_norm='L1', visualise=False, transform_sqrt=False, feature_vector=True, normalise=None)
[source]
提取给定图像的定向梯度直方图(HOG)。
计算面向梯度的直方图(HOG)
2. 在x和y中计算渐变图像
3. 计算梯度直方图
4. 正常化块
5. 展平成一个特征向量
参数: |
图像:(M,N)ndarray输入图像(灰度)。方向:int,可选方向箱的数量。pixels_per_cell:2元组(int,int),可选的单元格大小(以像素为单位)。cells_per_block:2元组(int,int),可选每个块中的单元格数。block_norm:str {'L1','L1-sqrt','L2','L2-Hys'},可选块归一化方法:L1使用L1范数进行归一化。(默认)L1-sqrt使用L1-norm进行归一化,然后是平方根。L2规范化使用L2范数。使用L2范数进行L2-Hys归一化,然后将最大值限制为0.2(Hys代表滞后)并使用L2范数重新归一化。有关详细信息,请参阅R196,R197。可视化:布尔,可选还返回HOG的图像。transform_sqrt:bool,可选应用幂法压缩以在处理前对图像进行归一化。如果图像包含负值,请不要使用它。另请参阅下面的注释部分。feature_vector:bool,可选通过在返回前对结果调用.ravel()来返回数据作为特征向量。normalize:bool,不赞成参数已弃用。使用transform_sqrt进行幂法压缩。规范化已被弃用。 |
---|---|
返回: |
newarr:ndarray HOG将图像视为一维(展平)阵列。hog_image:ndarray(if visualize = True)HOG图像的可视化。 |
注意
所提出的代码实现了从[R195]的HOG提取方法,其具有以下变化:(I)使用(3,3)单元的块((2,2));(II)单元内没有平滑(高斯空间窗口sigma = 8pix在论文中);(III)使用L1块标准化(本文中的L2-Hys)。
幂律压缩也称为伽玛校正,用于减少阴影和光照变化的影响。压缩使黑暗区域变得更轻。当kwarg transform_sqrt
设置为True
,该函数计算每个颜色通道的平方根,然后将宏算法应用于图像。
skimage.feature.local_binary_pattern(image, P, R, method='default')
[source]
灰度和旋转不变LBP(局部二元模式)。
LBP是一种可用于纹理分类的不变描述符。
参数: |
图像:(N,M)阵列Graylevel图像。P:int圆对称邻居设置点的数量(角度空间的量化)。R:float圆的半径(操作员的空间分辨率)。方法:{'default','ror','uniform','var'}确定模式的方法。'default':原始的局部二值模式,它是灰度但不是旋转不变的。'ror':扩展灰度和旋转不变的默认实现。'uniform':改进的旋转不变性和均匀的模式以及角度空间的更精细的量化,灰度和旋转不变。'nri_uniform':非旋转不变的均匀图案变体,它只是灰度不变的R199。'VAR': |
---|---|
返回: |
输出:(N,M)阵列LBP图像。 |
Returns: **output** : (N, M)