Wednesday, May 30, 2012

How r u, Want 2 find U?


How r u, Want 2 find U?
     after 2 weeks of changing my mind again and again and again. Want 2 find u finally can move forward.

           ðŸ˜„ 1. Key Points, in some degree, is better than the Contours to be representative of a picture
           ðŸ˜„ 2. Key Points are clear and can speed up the Process of Comparing
           ðŸ˜¢ 1. Key Points may not contain as much as useful informations as the contours,    
                       However, I don't think the user who sketch a face can definitely confirm that ---- what he draw is what he want. 😄

      2. Use Key Point inside the Feature templates


!!! The papers I follow..


!!! What I will do this and next week:
      1. get the informations such as the LIP THICKNESS (necessary when i saw this..)
          the thickness of the Eyebrow if possible.
         
      2. check the Eye-lid --- if it is double fold eyelid. (necessary)
      3. check the shape of the chin.
      4. get the shape/outline of the eyes.

      5. Get the SKETCH, do the preprocess of it in the same way.
      6. Add the color of the Eye and Skin (already done)

      7. compare.
   

Using KeyPoints


1. Locate the Features
        use Haar Cascade Classifier to locate the Eyebrows, Eyes, Ears (not useful), Nose and Mouth.
2. Get Key Points
        use SURF algorithm to get the key points.
        2.1 about the Key Points, (x,y)
            1. Eyebrow: eyebrow_l1, eyebrow_l2, eyebrow_r1, eyebrow_r2 
            2. Eye:         eye_l1, eye_l2, eye_r1, eye_r2
            3. Iris:          iris_l, iris_r
            4. Nose:       nose_l, nose_m, nose_r
            5. Mouth:    mouth_l, mouth_m, mouth_r
            6. Jaw:         jaw
            7. Face:       face_l1, face_l2, face_r1, face_r2

x=111 y=104 laplacian=1 size=16 dir=90.000000 hessian=15466.430664
x=182 y=106 laplacian=1 size=15 dir=90.000000 hessian=12413.648438
x=192 y=110 laplacian=1 size=16 dir=90.000000 hessian=13282.147461
x=79 y=132 laplacian=1 size=15 dir=90.000000 hessian=13704.891602
x=92 y=137 laplacian=-1 size=16 dir=90.000000 hessian=11122.696289
x=105 y=175 laplacian=1 size=16 dir=90.000000 hessian=11498.058594
x=76 y=216 laplacian=1 size=16 dir=90.000000 hessian=14645.329102
x=220 y=139 laplacian=-1 size=32 dir=90.000000 hessian=15401.563477
x=93 y=146 laplacian=1 size=34 dir=90.000000 hessian=16285.532227
x=215 y=153 laplacian=1 size=31 dir=90.000000 hessian=13717.638672
x=228 y=211 laplacian=-1 size=31 dir=90.000000 hessian=22596.167969
x=53 y=227 laplacian=1 size=30 dir=90.000000 hessian=13204.163086
x=270 y=240 laplacian=1 size=30 dir=90.000000 hessian=18954.589844
x=89 y=153 laplacian=1 size=57 dir=90.000000 hessian=14741.933594
x=213 y=191 laplacian=1 size=62 dir=90.000000 hessian=15877.199219
x=230 y=221 laplacian=-1 size=58 dir=90.000000 hessian=32176.843750


3. Get the Length of the features, and the Distance among the features
      (to make it easier to present, just show it like below)
      (actually works like [(y2-y1)^2 + (x2-x1)^2]^(1/2))

        iris_dist           = iris_r - iris_l ; (red points)

eye_length      = eye_l2 - eye_l1 ; ( orange point, yellow point)
nose_width     = nose_r - nose_l ; ( green points)
mouth_length  = mouth_r - mouth_l ; (purple points)
        eyebrow_length
                               = eyebrow_l2 - eyebrow_l1; (blue points)

        eye_dist          = eye_r2 - eye_l1; (orange points)
        nose_mouth    = nose_m - mouth_m; (green & purple)

face_length     = face_r1- face_l1 ; (blue-green color points)

4. The Shape of the Face ----- Face Angle
       i didn't make it to get all the key points i want on the outline of the face.
       so i change it to be like 
               face_l1(x,y) -> find point face_l1(x,y) on FaceOutLine where x = Iris_l(x)
       and also face_r1(x,y)
       then find face_l2(x,y) -> find point face_l2(x,y) on FaceOutLine where x = eye_l1(x)
              also face_r2(x,y)

       face_angle1 = ( jaw(y) - face_l1(y) ) / ( jaw(x) - face_l1(x) )
       face_angle2 = ( face_l1(y) - face_l2(y) ) / ( face_l1(x) - face_l2(x) )
       face_angle = face_angle1 / face_angle2

after these four steps, I get the information of the face:
     1. the length of nose, mouth, eyes, eyebrow
     2. the distance of the Iris_Iris, Eye_Eye, nose_mouth...




use Proportion to compare

after getting the key points, i come across a problem
 ðŸ˜­  Problem
   Because the size of the head in different pictures are not the same, Using the Length and Distance to compare the pictures is far from accurate.

💡 Solution!
   Proportion is used to help me get rid of this problem.

     How?
        Consider the iris_dist to be the base.
        So..... I get:
     eye_iris                = eye_length / iris_dist ;
         eyebrow_iris        = eyebrow_length / iris_dist;
 nose_iris              = nose_width / iris_dist ;
 mouth_iris            = mouth_length / iris_dist ;
   
         eye_dist_iris         = eye_dist / iris_dist ;
         nose_mouth_iris   = nose_mouth / iris_dist ;



Monday, May 14, 2012

TrackBar & Color

TrackBar & Color
Last week, I disappeared from class. I got 2 midterms, and get sick after cse130-----OCAML : (.....
I didn't use the main color of the faces. And I didn't use HSV.
instead.
I tried to locate the nose, and get the average RGB value of the nose.


About Want 2 Find U
I added the find_by_face_color function, to my project.

1. TrackBar is used in this part to represent the COLOR.



(because the color of faces are usually white, yellow, red, brown, black. So I make 5 block in the track bar. (From low to high, That is from white to black))(you can see the track bar above the photo of Sophie Marceau)


(when you choose the first mark, you will receive all the photos have the color between white and yellow.
 The second, you will receive photos of skin color from yellow to red.....)



NOW you can see only one pic of each mark, because I only have 5 pics in my database to show my idea in class, but Want 2 find U will have more photos. 

NEXT: GET THE OUTLINE OF THE FACES, AND DO THE MATCH.


Wednesday, May 2, 2012

Color Histogram

Color histogram(hsv(hue,saturation,value)

now I can locate the face in a photo, and make a HSV Color Histogram for it.



this is Sir Alex Ferguson, His face is always red.


i was imaging this two sportsman should seems similar in the diagram.
However, Nani seems a little brighter.


Two 'Vampires', Their Histograms are similar. (But actually Bella is not vampire in this pic, so the blue line is lower.)




What I am going to do this week, is 
1. Calculate the MAIN COLOR of the face and eyes.
2. Start the Work on Outline comparison.
3.Start the work on Color comparison

edge detection



Edge Detection 

Just do the edge Detection is far from enough.
What I should do is try to divide the Face by features.
And then do the Comparison Between the shapes of the features.
That is eyes to eyes, nose to nose.
In this way, Features seems like some small tags for a face.

(50,150)

(100,150)

Wednesday, April 25, 2012

OpenCV & Python2.7 on Mac OS X

Finally wake up  from the NightMare....

but.....another nightmare...in app store...made me change the name of my blog...


1.Setting up OpenCV on Mac OS X (binding Python2.7) 

        http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port


      1. download and install macports( http://www.macports.org/ )
            1.1 Mac OS X has already come with Python


      2. sudo port -v install opencv +python27
(before that remember to install command line tools in Xcode. or it will 
result in the conflicks in the installing process )
(Xcode -> preference -> components -> command line tools, then install it)


2. Start with OpenCV and Python2.7



    After spend the whole weekends dealing with setting up OpenCV with Python on Mac OS X, I finally start my project.


    Since OpenCV and Python are both open source, what I can refer to is very narrow. So I start with the The OpenCV Reference Manual




3. Track the Face and Eyes

       I write some small program in python 2.7, using openCV and haarcascades classifer.
       What I am able to do now is to locate the face, sometimes eyes in a photo...
       And also track the movement of the eyes and face from the video captured by webcam.
       



followings from webcam video
(seems this is a good way to find my eyes...)

 with glasses? it's ok, but.. we have to cut the influence...

s




4.What to do next?

   i.  Locate the Pupil (I mean.. the colorful part of the eyes.).
    ( 1. try to recognize circles in the given photo)
    ( 2. try to locate the circle inside the eyes ---- that is, pupil!)
  ii. Record the color of the eyes
 iii. Record the color of the face