用法:
class skimage.feature.SIFT(upsampling=2, n_octaves=8, n_scales=3, sigma_min=1.6, sigma_in=0.5, c_dog=0.013333333333333334, c_edge=10, n_bins=36, lambda_ori=1.5, c_max=0.8, lambda_descr=6, n_hist=4, n_ori=8)
基础:
skimage.feature.util.FeatureDetector
,skimage.feature.util.DescriptorExtractor
SIFT 特征检测和说明符提取。
- upsampling:int 可选
在特征检测之前,图像被放大 1 倍(无放大)、2 或 4。方法:Bi-cubic 插值。
- n_octaves:int 可选
最大八度音阶数。每增加一个八度,图像大小减半,sigma 加倍。八度音阶的数量将根据需要减少,以在最小比例下沿每个维度保持至少 12 个像素。
- n_scales:int 可选
每个八度音阶的最大音阶数。
- sigma_min:浮点数,可选
种子图像的模糊级别。如果启用了上采样 sigma_min 按因子 1/上采样进行缩放
- sigma_in:浮点数,可选
输入图像的假定模糊级别。
- c_dog:浮点数,可选
DoG中丢弃低对比度极值的阈值它的最终值取决于n_scales的关系:final_c_dog = (2^(1/n_scales)-1) /(2^(1/3)-1) * c_dog
- c_edge:浮点数,可选
丢弃位于边的极值的阈值。如果 H 是极值的 Hessian,则其 “edgeness” 由 tr(H)²/det(H) 说明。如果边度高于 (c_edge + 1)²/c_edge,则丢弃极值。
- n_bins:int 可选
直方图中说明关键点周围梯度方向的 bin 数量。
- lambda_ori:浮点数,可选
用于查找关键点参考方向的窗口的宽度为 6 * lambda_ori * sigma,并由 2 * lambda_ori * sigma 的标准差加权。
- c_max:浮点数,可选
方向直方图中的次峰被接受为方向的阈值
- lambda_descr:浮点数,可选
用于定义关键点说明符的窗口具有 2 * lambda_descr * sigma * (n_hist+1)/n_hist 的宽度,并由 lambda_descr * sigma 的标准差加权。
- n_hist:int 可选
用于定义关键点说明符的窗口由 n_hist * n_hist 直方图组成。
- n_ori:int 可选
说明符补丁的直方图中的 bin 数量。
参数:
注意:
SIFT 算法由 David Lowe [1]、[2] 开发,后来获得了不列颠哥伦比亚大学的专利。由于该专利于 2020 年到期,因此可以免费使用。此处的实现紧跟 [3] 中的详细说明,包括使用相同的默认参数。
参考:
- 1
D.G. Lowe. “Object recognition from local scale-invariant features”, Proceedings of the Seventh IEEE International Conference on Computer Vision, 1999, vol.2, pp. 1150-1157. DOI:10.1109/ICCV.1999.790410
- 2
D.G. Lowe. “Distinctive Image Features from Scale-Invariant Keypoints”, International Journal of Computer Vision, 2004, vol. 60, pp. 91-110. DOI:10.1023/B:VISI.0000029664.99615.94
- 3
I. R. Otero and M. Delbracio. “Anatomy of the SIFT Method”, Image Processing On Line, 4 (2014), pp. 370-396. DOI:10.5201/ipol.2014.82
例子:
>>> from skimage.feature import SIFT, match_descriptors >>> from skimage.data import camera >>> from skimage.transform import rotate >>> img1 = camera() >>> img2 = rotate(camera(), 90) >>> detector_extractor1 = SIFT() >>> detector_extractor2 = SIFT() >>> detector_extractor1.detect_and_extract(img1) >>> detector_extractor2.detect_and_extract(img2) >>> matches = match_descriptors(detector_extractor1.descriptors, ... detector_extractor2.descriptors, ... max_ratio=0.6) >>> matches[10:15] array([[ 10, 412], [ 11, 417], [ 12, 407], [ 13, 411], [ 14, 406]]) >>> detector_extractor1.keypoints[matches[10:15, 0]] array([[ 95, 214], [ 97, 211], [ 97, 218], [102, 215], [104, 218]]) >>> detector_extractor2.keypoints[matches[10:15, 1]] array([[297, 95], [301, 97], [294, 97], [297, 102], [293, 104]])
- delta_min:浮点数
第一个八度的采样距离。它的最终值为 1/上采样。
- float_dtype:类型
图像的数据类型。
- scalespace_sigmas:(n_octaves, n_scales + 3) 数组
所有八度音阶中所有音阶的 sigma 值。
- keypoints:(N, 2) 数组
关键点坐标为
(row, col)
。- positions:(N, 2) 数组
Subpixel-precision 关键点坐标为
(row, col)
。- sigmas:(N, ) 数组
关键点的相应 sigma(模糊)值。
- scales:(N, ) 数组
关键点的相应比例。
- orientations:(N, ) 数组
每个关键点周围的渐变方向。
- octaves:(N, ) 数组
关键点的对应八度。
- descriptors:(N, n_hist*n_hist*n_ori) 数组
关键点的说明符。
属性:
相关用法
- Python skimage.feature.graycomatrix用法及代码示例
- Python skimage.feature.blob_doh用法及代码示例
- Python skimage.feature.blob_dog用法及代码示例
- Python skimage.feature.graycoprops用法及代码示例
- Python skimage.feature.corner_orientations用法及代码示例
- Python skimage.feature.structure_tensor用法及代码示例
- Python skimage.feature.hessian_matrix用法及代码示例
- Python skimage.feature.ORB用法及代码示例
- Python skimage.feature.corner_subpix用法及代码示例
- Python skimage.feature.canny用法及代码示例
- Python skimage.feature.peak_local_max用法及代码示例
- Python skimage.feature.CENSURE用法及代码示例
- Python skimage.feature.hessian_matrix_eigvals用法及代码示例
- Python skimage.feature.corner_foerstner用法及代码示例
- Python skimage.feature.haar_like_feature_coord用法及代码示例
- Python skimage.feature.corner_harris用法及代码示例
- Python skimage.feature.corner_fast用法及代码示例
- Python skimage.feature.BRIEF用法及代码示例
- Python skimage.feature.haar_like_feature用法及代码示例
- Python skimage.feature.structure_tensor_eigvals用法及代码示例
注:本文由纯净天空筛选整理自scikit-image.org大神的英文原创作品 skimage.feature.SIFT。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。