类Haar特征描述符

类Haar特征是在实时人脸检测器中引入的简单数字图像特征 1. 使用积分图像,可以在固定时间内以任意比例高效地计算这些特征 1. 之后,从该大量潜在特征中选择少量关键特征(例如,使用如中的AdaBoost学习算法 1) 。下面的例子将展示构建这一系列描述符的机制。

参考文献

1(1,2,3)

维奥拉、保罗和迈克尔·J·琼斯。“强大的实时人脸检测功能。”《国际计算机视觉杂志》57.2(2004):137-154。Https://www.merl.com/publications/docs/TR2004-043.pdf DOI:10.1109/CVPR.2001.990517

import numpy as np
import matplotlib.pyplot as plt

from skimage.feature import haar_like_feature_coord
from skimage.feature import draw_haar_like_feature

不同类型的类Haar特征描述符

类似Haar的特征描述符分为5种不同的类型,如下图所示。描述符的值等于绿色和红色的亮度值之和。

images = [np.zeros((2, 2)), np.zeros((2, 2)),
          np.zeros((3, 3)), np.zeros((3, 3)),
          np.zeros((2, 2))]

feature_types = ['type-2-x', 'type-2-y',
                 'type-3-x', 'type-3-y',
                 'type-4']

fig, axs = plt.subplots(3, 2)
for ax, img, feat_t in zip(np.ravel(axs), images, feature_types):
    coord, _ = haar_like_feature_coord(img.shape[0], img.shape[1], feat_t)
    haar_feature = draw_haar_like_feature(img, 0, 0,
                                          img.shape[0],
                                          img.shape[1],
                                          coord,
                                          max_n_features=1,
                                          random_state=0)
    ax.imshow(haar_feature)
    ax.set_title(feat_t)
    ax.set_xticks([])
    ax.set_yticks([])

fig.suptitle('The different Haar-like feature descriptors')
plt.axis('off')
plt.show()
The different Haar-like feature descriptors, type-2-x, type-2-y, type-3-x, type-3-y, type-4

描述符的值等于绿色矩形和红色矩形中的强度值之和。在实践中,将红色区域减去绿色的像素强度之和,类Haar特征将被放置在图像的所有可能位置,并将计算每个位置的特征值。

脚本的总运行时间: (0分0.100秒)

Gallery generated by Sphinx-Gallery