I'm working on a problem (in C++/opencv) in which 4 users need to be distinguished from each other using identity information extracted from skin color and features of the upper hand. However, skin color method (in YCrCb) has a very low reliability because there is not much difference between skin tones. Therefore I'm trying to extract more features from the hands such as darker spots etc. To do this, I calculated the laplacian of the images. results:
http://imageshack.us/photo/my-images/818/afb1.jpg/
http://imageshack.us/photo/my-images/31/afb2i.jpg/
http://imageshack.us/photo/my-images/638/afb3.jpg/
The first two images are from the same hand/person. The second image is a hand from another person. As you can see, a clear bright spot is visible in the frist two images which represent darker spots of the hand. My idea was to sample the handcontour in small squares and to find for these squares in the other images. Afterwards, we can evaluate which image has the most and highest matches for a given image.
However, I cannot find an algorithm to find matches between a sample image and another image. I tried the cvMatchTemplate() operation (http://dasl.mem.drexel.edu/~noahKuntz/openCVTut6.html#Step%202) and meanShift algorithm but the results of both techniques were really bad.
Can someone give me some tips?