Integral channel feature

From Wikipedia, the free encyclopedia

Integral Channel Features (ICF), also known as ChnFtrs, is a method for object detection in computer vision. It uses integral images to extract features such as local sums, histograms and Haar-like features from multiple registered image channels. This method was highly exploited by Dollár et al. in their work for pedestrian detection, that was first described at the BMVC in 2009.[1]

Overview of the method[]

  1. Compute multiple registered image channels from an input image, using linear and non-linear transformations
  2. Extract features such as sums over rectangular channel regions from each channel. The features extracted from various channels are called integral channel features.
  3. Train the AdaBoost classifier. Dollár et al. used boosting technique which offers faster learning but training could be done with any of the other available methods such as support vector machine.
  4. Finally, trained classifier is used to detect objects

Images and channels[]

Typically, a "channel" refers to a certain component that defines pixel values in a digital image. A color image, for example is an aggregate of three channels (red, green and blue). The color data of an image is stored in three arrays of values, known as channels. While this definition of a "channel" is widely accepted across various domains, there exists a broader definition in computer vision, which allows one to exploit other features of an image besides the color information. One such definition refers to a channel as a registered map of the original image where the output pixels are mapped to input pixels by some linear or non-transformation.[1] According to this notion of a channel, color channels of an image can be redefined as output images that are obtained by extracting one specific color information point from the input image at a time. Similarly, a channel for a grayscale input image is simply equal to a grayscale input image. The simple MATLAB implementation below shows how color channels and grayscale channel can be extracted from an input image.

I = imread('I_RGB.png'); % input color image

% Output_image = color_channel(I),
% where color channel could be red, green or blue. The three output images
% are extracted from input image as follows
red_channel = I(:, :, 1);
green_channel = I(:, :, 2);
blue_channel = I(:, :, 3);

% Output image = grayscale_image(I).
% Note if input image I was already a grayscale image, grayscale channel
% would have simply been equal to input image, i.e., gray channel = I
gray_channel = rgb2gray(I);

It is clear from the above examples that a channel can be generated by either simply extracting specific information from the original image or by manipulating the input image in some form to obtain the desired channel. Dollár et al. defined a channel generation function as Ω, which can be used to relate a channel (that is, an output image) to the original image as follows.[1]