使用scikit-image feature计算图像特征与常见特征示例
目录
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 |
|
对于经常使用的一些特征,举例如下:
canny
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
宽度高斯平滑图像。
- 应用水平和垂直Sobel算子来获取图像中的渐变。边缘强度是渐变的常态。
- 薄到1像素宽曲线的潜在边缘。首先,找到每个点的边缘法线。这是通过查看X-Sobel和Y-Sobel的符号和相对大小来将点分为4类:水平,垂直,对角线和反对角线。然后查看正常方向和反向方向,以查看这两个方向中的任何一个的值是否大于所讨论的点。使用插值来获得混合点,而不是选择最接近正常点的点。
- 执行滞后阈值:首先将高于阈值的所有点标记为边缘。然后递归地标记8个连接到带标记点的低阈值以上的点作为边。
示例
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)
corner_harris
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]
greycomatrix
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
greycoprops
skimage.feature.greycoprops(P, prop='contrast')
[source]
计算GLCM的纹理属性。
计算灰度共生矩阵的特征以作为矩阵的紧凑总结。属性计算如下:
- ‘contrast’: (\sum_{i,j=0}^{levels-1} P_{i,j}(i-j)^2)
- ‘dissimilarity’: (\sum_{i,j=0}^{levels-1}P_{i,j}|i-j|)
- ‘homogeneity’: (\sum_{i,j=0}^{levels-1}\frac{P_{i,j}}{1+(i-j)^2})
- ‘ASM’: (\sum_{i,j=0}^{levels-1} P_{i,j}^2)
- ‘energy’: (\sqrt{ASM})
- ‘correlation’: [\sum_{i,j=0}^{levels-1} P_{i,j}\left\frac{(i-\mu_i) \ (j-\mu_j)}{\sqrt{(\sigma_i^2)(\sigma_j^2)}}\right]
参数: |
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 ]]
hog
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
,该函数计算每个颜色通道的平方根,然后将宏算法应用于图像。
local_binary_pattern
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图像。 |
- 'default':原始的局部二值模式,它是灰度但不是旋转不变的。
- 'ror':扩展灰度和旋转不变的默认实现。
- 'uniform':改进的旋转不变性和均匀的模式以及角度空间的更精细的量化,灰度和旋转不变。
- 'nri_uniform':非旋转不变统一模式变体,它只是灰度不变的[R199]。
- 'var':旋转不变方差测量局部图像纹理的对比度,其是旋转但不是灰度不变的。
Returns: **output** : (N, M)
使用scikit-image feature计算图像特征与常见特征示例相关推荐
- R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度、使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异)
R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度.使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异) 目录
- ML之SIFT_FLANN:FLANN算法的简介、使用方法(对图片提取SIFT特征并利用FLANN方法实现计算图像相似度并可视化案例)之详细攻略
ML之SIFT_FLANN:FLANN算法的简介.使用方法(对图片提取SIFT特征并利用FLANN方法实现计算图像相似度并可视化案例)之详细攻略 目录 FLANN算法 1.flann的搜索步骤 (1) ...
- Python计算树模型(随机森林、xgboost等)的特征重要度及其波动程度:基于熵减的特征重要度计算及可视化、基于特征排列的特征重要性(feature permutation)计算及可视化
Python计算树模型(随机森林.xgboost等)的特征重要度及其波动程度:基于熵减的特征重要度计算及可视化.基于特征排列的特征重要性(feature permutation)计算及可视化 目录
- 图像局部显著性—点特征(SURF)
1999年的SIFT(ICCV 1999,并改进发表于IJCV 2004,本文描述):参考描述:图像特征点描述. 参考原文:SURF特征提取分析 本文有大量删除,如有疑义,请参考原文. SURF对SI ...
- HiFT: Hierarchical Feature Transformer for Aerial Tracking分层特征Transformer的无人机跟踪
Abstract 大多数现有的基于孪生的跟踪方法基于相似度的方法,执行目标对象的分类和回归.然而,它们要么使用来自最后一个卷积层的单个特征图,这会降低复杂场景中的定位精度,要么单独使用多个特征图进行决 ...
- 图像特征之SURF特征匹配
原文站点:https://senitco.github.io/2017/06/27/image-feature-surf/ 加速鲁棒特征(Speed Up Robust Feature, SURF ...
- 基于图像的三维建模——特征点检测与匹配
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:梦寐mayshine 链接:https://zhuanlan.zhihu.com/p/12893 ...
- 图像特征提取三大法宝:HOG特征、LBP特征、Haar-like特征
(一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...
- 图像特征点—SIFT特征点
图像特征点-SIFT特征点 关于SIFT特征点,以下三篇博客说的非常详细,再次不再赘述. https://mp.weixin.qq.com/s/XVB88f119gRqpwTTRvTyrA https ...
最新文章
- OpenCV(八)形态学操作3--形态学梯度实现轮廓分析(基本梯度、内部梯度、外部梯度、方向梯度X(Y))
- Linux常用命令--网终设置
- [转]Iphone NSString字符串常用方法
- IDC最新报告:阿里语音AI登顶中国No.1
- 苹果电脑安装python-4. 在苹果系统上使用 Python
- Pytorch骨干网络性能测试
- matlab设置固定的窗宽窗位,python实现CT窗宽窗位的调整(即指定HU值保存图像)...
- 检索COM类工厂组件的CLSID 80040154(不容易啊!!) 80040154.
- python中的zip是什么意思_python中zip是什么函数
- html 5效果不显示,详解如何解决H5开发使用wx.hideMenuItems无效果不生效
- python示例异常处理与程序调试_Python错误处理及代码调试方
- 爬虫的步骤解析内容xpath介绍_Xpath的基本方法和使用详解 Python爬虫中最好用解析库...
- Microsoft Visual C++ 14.0 is required (Unable to find vcvarsall.bat)
- oledb操作Excel
- Linux init详解(转)
- 7.10 添加房间参数
- Android学习——四大核心组件(核心知识点整理)
- 海量数据排序问题一一 100G 数据,只有 100M 内存,怎么排序?
- cad快速看图能合并图纸吗_怎样才能把2张CAD图纸合并
- 嘉立创 PCB 生产流程
热门文章
- 如何开展微博营销--开展微博营销的步骤
- 金仓数据库 KingbaseES SQL 语言参考手册 (11. SQL语句:ABORT 到 ALTER INDEX)
- 基于FDC2214传感器的手势识别装置(MSP430)
- 10分钟部署一个别人可以访问的在线网站
- windows常用CMD命令大全总结
- 如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。//现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等
- 交换机连接控制器_干货丨FIT控制器与eMotion LV1的配置场景介绍
- redis状态与性能监控
- 四旋翼无人机学习第4节--STM32、MPU9250等器件的绘制
- comm tools