当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python skimage.feature.BRIEF用法及代码示例


用法:

class skimage.feature.BRIEF(descriptor_size=256, patch_size=49, mode='normal', sigma=1, sample_seed=1)

基础:skimage.feature.util.DescriptorExtractor

简要二进制说明符提取器。

Brief(Binary Robust Independent Elementary Features)是一种有效的特征点说明符。即使使用相对较少的位,它也具有很高的辨别力,并且使用简单的强度差异测试来计算。

对于每个关键点,对 pixel-pairs 的特定分布数 N 进行强度比较,得到长度为 N 的二进制说明符。对于二进制说明符,汉明距离可用于特征匹配,与L2 范数。

参数

descriptor_sizeint 可选

每个关键点的简要说明符的大小。作者推荐的尺码 128、256 和 512。默认值为 256。

patch_sizeint 可选

关键点周围的二维正方形补丁采样区域的长度。默认值为 49。

mode{‘normal’, ‘uniform’},可选

关键点周围决策pixel-pairs 的采样位置的概率分布。

sample_seed{无,int numpy.random.Generator },可选

如果sample_seed是没有的numpy.random.Generator使用单例。如果sample_seed是一个int 一个新的Generator使用实例,播种sample_seed.如果sample_seed已经是一个Generator实例然后使用该实例。

决策pixel-pairs的随机抽样种子。从长度为patch_size 的方形窗口,使用模式参数对像素对进行采样,以使用强度比较构建说明符。 sample_seed 的值必须与构建说明符时要匹配的图像相同。

sigma浮点数,可选

应用于图像以减轻噪声敏感性的高斯low-pass 滤波器的标准差,强烈建议使用此方法来获得有辨别力的良好说明符。

例子

>>> from skimage.feature import (corner_harris, corner_peaks, BRIEF,
...                              match_descriptors)
>>> import numpy as np
>>> square1 = np.zeros((8, 8), dtype=np.int32)
>>> square1[2:6, 2:6] = 1
>>> square1
array([[0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0]], dtype=int32)
>>> square2 = np.zeros((9, 9), dtype=np.int32)
>>> square2[2:7, 2:7] = 1
>>> square2
array([[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, 0, 0],
       [0, 0, 1, 1, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 1, 1, 0, 0],
       [0, 0, 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]], dtype=int32)
>>> keypoints1 = corner_peaks(corner_harris(square1), min_distance=1)
>>> keypoints2 = corner_peaks(corner_harris(square2), min_distance=1)
>>> extractor = BRIEF(patch_size=5)
>>> extractor.extract(square1, keypoints1)
>>> descriptors1 = extractor.descriptors
>>> extractor.extract(square2, keypoints2)
>>> descriptors2 = extractor.descriptors
>>> matches = match_descriptors(descriptors1, descriptors2)
>>> matches
array([[0, 0],
       [1, 1],
       [2, 2],
       [3, 3]])
>>> keypoints1[matches[:, 0]]
array([[2, 2],
       [2, 5],
       [5, 2],
       [5, 5]])
>>> keypoints2[matches[:, 1]]
array([[2, 2],
       [2, 6],
       [6, 2],
       [6, 6]])

属性

descriptors(问,descriptor_size) dtype bool 数组

大小的二进制说明符的 2D ndarraydescriptor_size过滤掉具有索引值的边界关键点后的 Q 关键点(i, j)或者是True或者False表示 j-th 决策 pixel-pair 上 i-th 关键点的强度比较结果。这是Q == np.sum(mask).

mask(N, ) dtype bool 数组

指示是否已过滤掉关键点的掩码 (False) 或在说明符大批 (True)。

相关用法


注:本文由纯净天空筛选整理自scikit-image.org大神的英文原创作品 skimage.feature.BRIEF。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。