| Shitov.ru / Wavelets / | |
| Face Image Preprocessing Based on Wavelets | |
Images are regarded as an array of numbers. The dimension of the array is defined by the width and the height of an image. The elements of an array are integer numbers within Wavelet Instruments
Although the image The stage of extracting the features of the face from a unique image goes in two parallel branches horizontal and vertical (that can be effectively used for parallel evaluations, and even more, the structure of each branch allows to split the task into subtasks, and the result will be updated after the subprocess is completed; no extra memory requests are needed). Both of the m use the same algorithm and therefore are easy in implementation you just need to white a procedure for one of the branch and it is easy to modify the code for the other. The whole process of feature extraction expects the se two substages and after doing that the results of the two branches are combined together so that a new image of the original size would appear. That final image is a monochrome one and contains a contour face. The First Stage
The image is presented as an array of lines horizontal ones in one branch and vertical in another. Each line is processed as a single
Here a and b stand for the dilation and shift parameters of the gaussian wavelet The normalization factor is
After doing that every horizontal and vertical line will be transformed into the wavelet space at the selected scale a. Red curve on the plot in the middle of
The information contained in the wavelet image of the line includes both the face features and the noise. Before continuing we should denoise the wavelet image. The simplest way to do that is to exclude those parts of wavelet coefficients which are small in magnitude. You define the threshold and all the coefficients which are not so strong to overcome this barrier are set to zero. Being so simple the procedure suppresses the noise efficiently enough. The result of applying
This denoised wavelet image already reflects the most significant features on the face. But it still carries redundant information on the slopes of peaks. This redundancy can be easily excluded. The way of doing that is known as skeletizing of wavelet spectrum. To convert the wavelet image to the skeleton you just need to find all local maxima of the wavelet sequence. The result of this if presented on the Thus after obtaining the skeleton we can start to build the new image. Pixels placed at the skeleton bones we mark black, other pixels are white. Applying the procedures described above we will obtain the picture which reflects the most significant features of the source image.
The result of converting an image from
Further suppression of noise can be achieved by selecting the most «wide» local maxima in the wavelet coefficients sequences for each horizontal and vertical line. One need to define a depth value,
Wavelet Order and Scale
To convert an image into its skeleton one needs to choose the order of the wavelet and the scale at which to perform the transform. Our experiments with various wavelets from WMVF at different scales clearly shows that the best choice is Gaussian wavelet of order 3 at scales of
Averaging Face SkeletonsFurther information describes my attempt to use several images of one face to create averaged bitmap. Results show that if you wish to use skeletized images in face recognition systems you should average vector-based features rather than bitmaps. CoarseningScan through all the pixels of the image, if there are enough (defined by an Area Threshold) neighbours, the result is a black pixel on the new image. Examples of coarseningFour of 10 source images (top), their skeletons (middle) and coarsen skeletons (bottom). AveragingAfter applying the coarsening procedure to all the images, nearly the same procedure is applied to images, obtained during that stage. Pixel neighbour this time is the pixel with the same position placed on another image. The most difficult for averaging are set of images where faces are not frontal only. The goal is to get the frontal average image. Examples of averagingAveraged skeletized image of 10 images of the face above. The head rotation caused an effect of photographing the moving objects (left image). An attempt of decreasing the influence of head rotation was made (by straightening the Depth parameter at the stage of skeletizing and the Planes Threshold at the averaging stage. One more example. This time the resulting image is rather good, no head rotation influence is visible although head angles are clearly seen on the source. Written in 2000. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| andy@shitov.ru | ||