-4

I want to know how 'feature detection and extraction' works step by step. I refer to this Journal, you can download it here : http:// dynamics.org/~altenber/UH_ICS/EC_REFS/GP_REFS/CEC/2002/GP_WCCI_2002/7074.PDF

Such as convert RGB to Grayscale, We know its simply can be done by manipulate pixel value. Take an example : Pixel of Image

Assume that pixel has RGB Value, so we need to manipulate that value using formula : = (++)/3

But in my case (facial feature detection based on that journal : Facial Feature detect using this pattern Pattern for facial feature detection

first, find a left eye region, and then right eye region, mouth region, after that, nose assumed between eyes and mouth. I don't know how my program knows it was eyes region, mouth and nose.

Could you help me to explain it or refer me to somewhere?

Thank you.

ps: I want to implement that journal using Harmony Search Algorithm

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
Arief Wijaya
  • 827
  • 2
  • 8
  • 20
  • 2
    What have you tried so far? Share your findings. – MrSmith42 Mar 06 '17 at 07:36
  • @MrSmith42 i've tried preprocessing ,all step from Convert to Grayscale, Median Filter, Sobel Detection, resize resolution, but when i want to try to detect feature using HSA , i'm confused. i cannot imagine how it works such as Convert to Grayscale : change pixel value, Median Filter : multiply some pixel using kernel pattern, and so on. – Arief Wijaya Mar 06 '17 at 08:02
  • @MrSmith42 i've updated my question, hope it more explicit . – Arief Wijaya Mar 06 '17 at 09:16

1 Answers1

0

Face detection topic is really wide and the problem is quite complex, but in a few words I will try to describe it.

In digital image processing you have to treat image as an two-dimensional array of pixels. If you proceed RGB image each pixel contains 3 values (from r,g,b channels).

For the simple solution you can assume that the faces are always the same size (but consider it just as first step of your development or a prototype). After that step consider detection in multiple scales.

You have to choose frame size for face recognition and count some features inside each frame (if the shape is elipse in this case) and classify if it is face or not. Then you have to set your eyes, lips and nose regions and retrive it). You have to make several assumptions (as frame size, regions positions), which you have to think about (or do some research). There's no just one way to do it.

I have done a paper on face detection (in fpga hardware, but there are some references to other papers and the algorithm is described quite nice). You can check it to get general idea of face detection and image processing.

There are also some already implemented methods (e.g. in openCV) if you don't want to write it yourself.


Setting regions should base on your assumptions. Eg. you have the frame with face, so you know that the nose will be more or less in the center of the frame and will take eg. 10x20 pixels. Than the right (left) eye will be on the right (left) of the nose, a bit higher and will have 25x20 pixels. And the mouth will be 30x15 pixels 20 pixels beyond nose.

After setting your assumption you should test it, and may be change a bit or add some more parameters to find the regions like number of edges, corners. You can find some shapes eg. for eyes.

You know that the nose holes will be dark on the grayscale image. Use this information. You know that the lips are below nose and are wider than nose. Use that.

That's what you have to do research about based on some images that would be your test images set. This set represent target images.

I think that noone would tell you exactly how to write it, because there are a lot of variables. You have to do it on your own, because you know where your app will be used. You know the conditions on witch the app will be working. Many things can affect the performance of your algorithm eg. lightning conditions, camera to face angle.

Do the research.

MicD
  • 197
  • 2
  • 11
  • Thank you for your response. I read your answer and thanks, i understand your concept. but based on journal in my question, i dont understand how it will be done in pseudocode. i've updated my question, hope it more explicit. thank you – Arief Wijaya Mar 06 '17 at 09:20
  • so, it's more about 'predict' the position, then 'trial and error'. Okay thank you for your quick response and it has opened my mind. i'll do some research and trial and more. – Arief Wijaya Mar 06 '17 at 09:56
  • That's what research about. Try the method and parameters and see if the result suits you or not. If not try other parameters or another method. Computers do not see. They count. They operate on numbers not visual shapes. Teach them how to see by telling them what to count. – MicD Mar 06 '17 at 10:03
  • 'computers do not see, they count' . very nice, i agree with you. i'm trying. – Arief Wijaya Mar 06 '17 at 16:47
  • Hi, after some research, now i know the answer for my question and detailed about how 'feature detection and extraction' works step by step according to the journal i've uploaded before. Thank you because you helped me and didnt downvote me. – Arief Wijaya Mar 19 '17 at 03:46
  • Hello again... i'm back. just want to say , Thank you !! Now i've finished of making my program based on that journal using Harmony Search Algorithm *cheers* i'm glad because this is my final project in my college, and determine my graduation :) – Arief Wijaya Apr 04 '17 at 07:24
  • I'm happy that it helped you! – MicD Apr 04 '17 at 07:37