# SOS,Find a good way to compare two id pictures to decide whether they are the same person.

hi,dear experts,here I need your kind help very much.
Firstly,I will introduce to you the backgroud of my project.I have to compare two id card pictures to see if they are the same person or not.The first picture is the previous one which has been stored in the database,now I have his(or her)another picture recently photographed,suppose there sizes are the same(If not,I can use the function 'copyrect' to make the current one be enlarged or minimized to fit the database one.)
Secondly,I'd like to tell you my methods used in the project.first,I partition them into  '9rows*6lines' blocks(so there are 54 blocks,difference[i] stands for the diference of each block),then I will compare each pixel(red,green,blue) to see if they are the same,if not, inc(difference[i]) until we finish them.Now I will give every block's coefficient[i](between 0 and 1) according to their importance in the comparing process,for example,the section which the eyes are located,I will give 0.9 to it.Now the Difference:=sum(difference[i]*coefficient[i]),right?Second,I will figure out the all pixels,the pixels*3 is the counts I have compared in sum,so:
Similarextent:=((width*height*3-Difference)/(width*height*3));right?
Third,I will give a threshold,if similarextent is larger than the threshold,I will assume they are the same one.

Thirdly,I will give you the reasons that tell the method's incompleteness:
1.The two pictures may be not both colorful or black and white;
2.The pictures may has been reprocessed,such as smoothed,sharpened,inverted,luminance intensified or weakened,diffused,mosaiced.
So the method of comparing the red,green and blue of each pixels is not incomplete,right?Do you have any better methods?I don't want to get an exact and very precise method but a realizable one.Please help me,Thank you very much.(If answered,I will give more points:))
###### Who is Participating?

Commented:
Did you obtain any positive results with your method? It seems to me the most reasonable way to do it.

I would try to "equalize" somehow the two pictures before comparing. Do something like using the background (left-top square) to compensate the overall luminance and eventually to detect BW/color differences. After that, adjust the contrast using histograms built on each image, preserving the average luminance value.
Probably you should take account only of average square luminance when comparing since the color can be tricky.
Take into account the color only if the results obtained by using the above steps are not relevant enough, and even then use only specific "important" squares, like eyes/face areas.

F.
0

Author Commented:
Any experts can give me some advice?I will appreciate your kind help very much.

0

Author Commented:
Any experts can give me some advice?I will appreciate your kind help very much.

0

Commented:
Hi nevsayno,

it is very diffucult to implement pictures comaring.
But just one idea. Before comare pictures make it both black and white and apply some blur. Do not use fixed matrix. You have images in databse, so you can do few passes and increase matrix resolution every time until only one person in database will be equal to image.

-----
Igor.
0

Commented:
nevsayno, compareing pictures pixel by pixel and checking difference makes sens only if You want compare 2 copies of the same picture. If You have one picture in DB and want to compare with another one and find out if on picture is same person it's almost impossible, 'cause on 2 different pics same person might be in different position, distance between person and camera will be different, lights different, etc, etc..
ziolko.
0

Commented:
it seems ur need is a image processing App.there are many standard method for do this ( Communication Experts always know them u can ask them ). i guess ur method is neural net analysis. but there are a good Neural Net Toolkit in Mathlab (do u know mathlab?). and i think also there is some image processing examples.

the best point in using mathlab is that this package can make c++ code that u can import to ur app.

i hope my comment can help u.

best regards
hamed
0

Commented:
0

Commented:
Just an idea. Subtract the picture from the original one. If the pictures are exactly the same, you will get a black picture. If there some differences, the result will be dark with some spots here and there.
Now calculate a liminosity histogram of it. The lower the values, the more the resemblance. The more the peaks stretch to the light range, the less the resemblance.
Play with Photoshop to see what happens. Use the layers to subtract the pictures from each other.
0

Author Commented:
Honored fva,thank you very much.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.