I have this image:

enter image description here

After many preprocessing operations, I obtained this image

enter image description here

my goal is implementing one to many matching on my images for recognition purpose,i have 250 image for 50 persons (5 image/person) ,they are represented as: 0001hv1,0001hv2,0001hv3,0001hv4,0001hv5,0002hv1,....... , now:

i ask if i can consider the preprocessed image as a feature vector in order to use dimensionality reduction algorithm such as PCA or SIFT 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?

finally , i wish that my question is obvious , if it is not, i need only to know , which one i need to implement on preprocessed image , feature extraction or dimensionality reduction . sorry but my english language is not very good.

regards to all

  • 3
    $\begingroup$ Lets first define what exactly the information is you wish to extract? $\endgroup$ – Maurits Feb 6 '12 at 23:38
  • 1
    $\begingroup$ Replace the link with the actual image - you can add images to the post $\endgroup$ – Roronoa Zoro Feb 7 '12 at 0:30
  • 1
    $\begingroup$ ruaa, first is - much more clarity appears by comments than the question. So i strongly suggest that you edit your question to accommodate all this information that would look very good. $\endgroup$ – Dipan Mehta Feb 23 '12 at 10:47
  • 2
    $\begingroup$ I guess, i have try to answer some of your questions in past which appears to be for the same project. But only from this comments do i now understand things slightly better. Before you judge which features are good and how to extract them -ask a very basic question: If you would have given set of images to human that belongs to class1 and others that are not class1 - how would humans have identified them? - essentially what information is responsible to make the qualification work? That is nothing but feature. $\endgroup$ – Dipan Mehta Feb 23 '12 at 11:09
  • 3
    $\begingroup$ @ruaa You have now asked several questions on the same topic, each one only a little different from the previous. This cannot go on. Please take the time to think through your problem fully (think, not solve) and then post a question here when you get stuck, with full specifics. I'm inclined to close this within the next day if the question is not improved with details $\endgroup$ – Lorem Ipsum Feb 24 '12 at 16:32

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:

  1. Find the line endings and junctions. Then do point cloud matching to compare different skeletons.
  2. 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.
  3. 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.

  1. You can try using template matching on the resulting image of your image processing operations. So you have a database of these images, there comes a new image in, you process it, and you find the best match by laying the new image over all the images in the database (using a certain distance measure between all the white pixels).

  2. You can also try to extract lines of your processed image, and represent the image with the starting point of the line, the length and the slope of the line. Using this as a feature vector, you can also compute a distance between a new image and the database.

You can also combine the two, by using the second approach as a first selection step, because template matching can be quite computationally expensive.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.