0

I have asked this question in this too. But since the topic was a different one, maybe it was not noticed. I got the eigenface algorithm for face recognition working using opencv in java. I wanted to increase the accuracy of the code as its a well known fact that eigenface relies greatly on the light intensity.

What I have Right Now

I get perfect results if I give a check for a image clicked at the same place where the pictures in my database have been clicked, but the results get weird as I give in images clicked in different places.

I figured out that the reason was that my images differ in the light intensity.

Hence , my question is

Is there any way to set a standard to the images saved in the database or the ones that are coming fresh into the system for a recognition check so that I can improve on the accuracy of the face-recognition system that I have currently?

Any kind of positive solution to the problem would be really helpful.

Community
  • 1
  • 1
theAndDev
  • 662
  • 2
  • 11
  • 33
  • 1
    [equalizeHist](http://docs.opencv.org/modules/imgproc/doc/histograms.html#equalizehist) while pre-processing – berak Oct 01 '13 at 11:06
  • @berak is right, it will get you at least a few percent improvement in accuracy - You can check this on the YaleB dataset which has big lighting changes. – Bull Oct 01 '13 at 13:02
  • @berak I have been training my system to the images I have of the people I know and not on some database. Still I managed to correct the issues of the light to a great extent. Still the accuracy sucks as the recognition matches people whose images are not in the database with a greater confidence. I tried to figure out why and it seems that eigenfaces algorithm is a template based algorithm whereas I need to implement feature based ones. Can you please give me some idea on feature based algorithms? – theAndDev Oct 09 '13 at 05:12
  • did you try the LBPH face recognizer ? lbp is a bit more robust against variations in lighting – berak Oct 09 '13 at 08:07

3 Answers3

1

Identifying the lighting intensity and pose is the important factor of face recognition. Try to do histogram comparison with training and testing image (http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.html). This parameter helps to avoid the worst lighting situation. And pre processing is one of the successful key factor of Face recognition. Gamma Correction and DOG filtering may reduce the lighting problems.

Evan
  • 128
  • 2
  • 9
0

You can also elliptical filter out only the face,removing the noise created by hair,neck etc. The OpenCV cookbook provides an excellent and simple tutorial on this.

Vinodh
  • 38
  • 4
0
  • Below are the following options which may help you boost your accuracy

1] Image Normalization:

  • Make your image pixel values from 0 to 1 so that to reduce the effect of lighting conditions

2] Image Alignment (This is a very important step to achieve good performance):

3] Data augmentation trick:

  • You can add filters to you faces that will have an effect of the same face in different lighting conditions
  • So from one face you can make several images in different lighting conditions

4] Removing Noise:

  • Before performing step 3 apply Gaussian blur to all the images
Jai
  • 3,211
  • 2
  • 17
  • 26