One of the simplest methods for detecting pixels which might be part of a face is to look for skin color. Human skin has a particular hue and saturation. The intensity, however, will vary as a function of the relative direction to the illumination. Of course, the perceived hue and saturation will be the product of the color of the ambient light and the skin color [SW95].
We have found that candidate pixels for faces and hands can be detected very rapidly using a normalized color histogram. Histogram color can be normalised for changes in intensity by dividing by the luminance. This permits us to convert an [R, G, B] vector into a [r, g] vector of normalised color. The normalized color histogram H(r, g) provides a fast means of skin detection. The histogram is initialised by observing a patch of skin and counting the number of times each normalized color value occurs. The histogram contains the number of pixels which exhibit a particular color vector [r, g]. Dividing by the total number of pixels in the histogram gives the probability of obtaining a particular vector given that the pixel observes skin.
Figure 5: up-left : Black and white rendition of color image of Y.H. Berne. up-right Probability of skin in color image of Y.H. Berne. low-left : Thresholded skin probability with bounding box of connected components. low-right Bounding box for the face.
Bayes rule can be used to determine the probability of skin give the vector [r, g].
P(skin) can be taken as constant. P(color) is the global statistic for the vector [r, g]. In practice this ratio is often approximated by a constant. The result is, for each pixel, is the estimate of the probability of skin. An example (unfortunatly printed here in black and white) is shown in figure 5. Histogram matching can provide a very fast indicator that a face is present at a part of an image. However, reliability requires that this information be confirmed by another detection means. Such a means can be provided by a blink detector.