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


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


用法:

skimage.feature.haar_like_feature(int_image, r, c, width, height, feature_type=None, feature_coord=None)

计算积分图像感兴趣区域 (ROI) 的Haar-like 特征。

Haar-like 特征已成功用于图像分类和对象检测[1]。它已用于[2]中提出的实时人脸检测算法。

参数

int_image(M, N) ndarray

需要计算特征的积分图像。

rint

检测窗口左上角的Row-coordinate。

cint

检测窗口左上角的Column-coordinate。

widthint

检测窗口的宽度。

heightint

检测窗口的高度。

feature_typestr 或 str 列表或无,可选

要考虑的特征类型:

  • ‘type-2-x’:沿 x 轴变化的 2 个矩形;
  • ‘type-2-y’:沿 y 轴变化的 2 个矩形;
  • ‘type-3-x’:沿 x 轴变化的 3 个矩形;
  • ‘type-3-y’:沿 y 轴变化的 3 个矩形;
  • ‘type-4’:沿 x 和 y 轴变化的 4 个矩形。

默认情况下,所有特征都被提取。

如果与feature_coord一起使用,它应该对应于每个关联坐标特征的特征类型。

feature_coord元组列表的 ndarray 或无,可选

要提取的坐标数组。当您只想重新计算特征的子集时,这很有用。在这种情况下feature_type需要是一个包含每个特征类型的数组,由返回skimage.feature.haar_like_feature_coord.默认情况下,计算所有坐标。

返回

haar_features(n_features,) int 的 ndarray 或浮点数

产生Haar-like 特征。每个值等于正负矩形之和的减法。数据类型取决于int_image的数据类型:当int_image的数据类型为uint或int时为int,当int_image的数据类型为float时为float。

注意

并行提取这些特征时,请注意后端的选择(即多处理与线程)将对性能产生影响。经验法则如下:在为图像中所有可能的 ROI 提取特征时使用多处理;在为有限数量的 ROI 提取特定位置的特征时使用线程。参考例子使用Haar-like特征说明符进行人脸分类以获得更多见解。

参考

1

https://en.wikipedia.org/wiki/Haar-like_feature

2

Oren, M., Papageorgiou, C., Sinha, P., Osuna, E., & Poggio, T. (1997, June). Pedestrian detection using wavelet templates. In Computer Vision and Pattern Recognition, 1997. Proceedings., 1997 IEEE Computer Society Conference on (pp. 193-199). IEEE. http://tinyurl.com/y6ulxfta DOI:10.1109/CVPR.1997.609319

3

Viola, Paul, and Michael J. Jones. “Robust real-time face detection.” International journal of computer vision 57.2 (2004): 137-154. https://www.merl.com/publications/docs/TR2004-043.pdf DOI:10.1109/CVPR.2001.990517

例子

>>> import numpy as np
>>> from skimage.transform import integral_image
>>> from skimage.feature import haar_like_feature
>>> img = np.ones((5, 5), dtype=np.uint8)
>>> img_ii = integral_image(img)
>>> feature = haar_like_feature(img_ii, 0, 0, 5, 5, 'type-3-x')
>>> feature
array([-1, -2, -3, -4, -5, -1, -2, -3, -4, -5, -1, -2, -3, -4, -5, -1, -2,
       -3, -4, -1, -2, -3, -4, -1, -2, -3, -4, -1, -2, -3, -1, -2, -3, -1,
       -2, -3, -1, -2, -1, -2, -1, -2, -1, -1, -1])

您可以计算一些预先计算的坐标的特征。

>>> from skimage.feature import haar_like_feature_coord
>>> feature_coord, feature_type = zip(
...     *[haar_like_feature_coord(5, 5, feat_t)
...       for feat_t in ('type-2-x', 'type-3-x')])
>>> # only select one feature over two
>>> feature_coord = np.concatenate([x[::2] for x in feature_coord])
>>> feature_type = np.concatenate([x[::2] for x in feature_type])
>>> feature = haar_like_feature(img_ii, 0, 0, 5, 5,
...                             feature_type=feature_type,
...                             feature_coord=feature_coord)
>>> feature
array([ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, -1, -3, -5, -2, -4, -1,
       -3, -5, -2, -4, -2, -4, -2, -4, -2, -1, -3, -2, -1, -1, -1, -1, -1])

相关用法


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