{ } Raw JSON

bundles / skimage 0.26.1rc0.dev0+git20260530.b607368ff / skimage / feature / haar / haar_like_feature

function

skimage.feature.haar:haar_like_feature

source: /dev/scikit-image/src/skimage/feature/haar.py :86

Signature

def   haar_like_feature ( int_image r c width height feature_type = None feature_coord = None )

Summary

Compute the Haar-like features for a region of interest (ROI) of an integral image.

Extended Summary

Haar-like features have been successfully used for image classification and object detection [1]. It has been used for real-time face detection algorithm proposed in [2].

Parameters

int_image : ndarray of shape (M, N)

Integral image for which the features need to be computed.

r : int

Row-coordinate of top left corner of the detection window.

c : int

Column-coordinate of top left corner of the detection window.

width : int

Width of the detection window.

height : int

Height of the detection window.

feature_type : str or list of str or None, optional

The type of feature to consider:

  • 'type-2-x': 2 rectangles varying along the x axis;

  • 'type-2-y': 2 rectangles varying along the y axis;

  • 'type-3-x': 3 rectangles varying along the x axis;

  • 'type-3-y': 3 rectangles varying along the y axis;

  • 'type-4': 4 rectangles varying along x and y axis.

By default all features are extracted.

If using with feature_coord, it should correspond to the feature type of each associated coordinate feature.

feature_coord : ndarray of list of tuples or None, optional

The array of coordinates to be extracted. This is useful when you want to recompute only a subset of features. In this case feature_type needs to be an array containing the type of each feature, as returned by haar_like_feature_coord. By default, all coordinates are computed.

Returns

haar_features : ndarray of shape (n_features,) and dtype (int or float)

Resulting Haar-like features. Each value is equal to the subtraction of sums of the positive and negative rectangles. The data type depends of the data type of int_image: int when the data type of int_image is uint or int and float when the data type of int_image is float.

Notes

When extracting those features in parallel, be aware that the choice of the backend (i.e., multiprocessing vs threading) will have an impact on the performance. The rule of thumb is as follows: use multiprocessing when extracting features for all possible ROI in an image; use threading when extracting the feature at specific location for a limited number of ROIs. Refer to the example sphx_glr_auto_examples_applications_plot_haar_extraction_selection_classification.py for more insights.

Examples

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
You can compute the feature for some pre-computed coordinates.
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')])
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

Aliases

  • skimage.feature.haar_like_feature