i ask if i can consider the preprocessed image as a feature vector in order to use dimensionality reduction algorithm such as PCA
You mean applying PCA to this preprocessed image directly? I'm almost certain that can't work. PCA makes sense if you have lots of samples that are linearly dependent. You have few samples that are linearly independent.
SIFT is not a dimensionality reduction algorithm but a feature extraction algorithm. So to apply SIFT, you would usually search for "keypoints" (e.g. line endings, T-junctions) and SIFT would create a feature vector that describes the image in the neighborhood of each keypoint. Problem is, thanks to your preprocessing, there's not much to say about each keypoint besides "it's a line ending" or "it's a t-junction".
or any other that enable me to do matching or not ?if it is not ,what are features may be suitable for creating feature vector?
Many, but I can't tell you which features will give the same values for the same persons. You'll probably have to implement a few different approaches, test them on a reasonably sized set of test images (e.g. 100-1000 different images of each of your persons), and see how high the recognition rate is. If you only test on the 5 images you have now, you can't know if your algorithm has a 0.1% error rate or a 20% error rate.
That said, here are a few ideas you might try:
- Find the line endings and junctions. Then do point cloud matching to compare different skeletons.
- Use the preprocessed images as features directly. To compare two images, take each point in image A in turn and measure the distance to the closest point in image B. (This can be efficiently calculated by calculating a distance transform on one image.) The mean or median distance might be a good similarity measure. Align both images to minimize this measure.
- Use a hough transform to find (almost) straight lines, then match those (matching lines is similar to point matching)
But to be honest, I don't think this problem can be solved by a beginner, even with help from Stackexchange. I hope I don't sound patronizing, but my real advice is: start with a simpler problem. Get a few introductory books on image processing/computer vision. Get comfortable with Matlab or Mathematica. Play around with image filters, template matching algorithms, image transformations and so on. Read Teach Yourself Programming in Ten Years. Find more and more advanced problems that you can solve on your own. Unfortunately, that's the only way to get experience, and you need experience to solve problems like these.