Project: Red eye detection
Description: I want to remove red-eye from images. I am not able to use face detector because, the faces in the images are not always frontal and also the images are of players with helmet. And the images may have many red eyes. Also, the lighting is not proper. I want to know how to detect the red eyes? I am searching for some proven studies. Any help would be appreciated.
Update:
My images will be like the below one with red eye.
Those algorithms belong to edge and feature detection algorithms studied in Computer Vision.
Since you are looking for studies, I can offer you to read ones by Microsoft, HP, another one by HP, another good discussion of the algorithm
Related
I implemented an eye blink detection solution using the research from this article:
http://www.iu.hio.no/~frodes/unitech10/011-Krolak/
I use a Haar eye classifier to identify the two eye regions, then using template matching on both eyes to detect blink state change. I also require that the face and eye regions remain fairly still. It works pretty well, except I occasionally get false positive on photos if I slightly move them (particularly rotate/scale). Does anyone have any suggestions to eliminate such cases? I don't want to make the stillness too strict, because it makes the live case unusable.
I have implemented with some success two cascades, one that detect open eyes and one that detect closed eyes.
You can use the face detector and restrict the search on the eyes region, then apply the "open eye" cascade. The good thing with that approach is that you can add slightly different poses and angles for the eyes on the training set. Worked really well for me.
with image processing libraries like opencv you can determine if there are faces recognized in an image or even check if those faces have a smile on it.
Would it be possible to somehow determine, if the person is looking directly into the camera? As it is hard even for the human eye to determine is someone is looking into the camera or to a close point, i think that this will be very tricky.
Can someone agree?
thanks
You can try using an eye detection program, I remember doing back a few years ago, and it wasn't that strong, so when we tilt our head slightly off the camera, or close our eyes, the eyes can't be detected.
Is it is not clear, what I really meant was our face must be facing straight at the camera with our eyes open before it can detect our eyes. You can try doing something similar with a bit of tweaks here and there.
Off the top of my head, split the image to different sections, for each ROI, there are different eye classifiers, for example, upper half of the image, u can train the a specific classifiers of how eyes look like when they look downwards, lower half of image, train classifiers of how eyes look like when they look upwards. and for the whole image, apply the normal eye detection in case the user move their head along while looking at the camera.
But of course, this will be based on extremely strong classifiers and ultra clear quality images, video due to when the eye is looking at. Making detection time, extremely slow even if my method is successful.
There maybe other ideas available too that u can explore. It's slightly tricky, but it not totally impossible. If openCV can't satisfy, openGL? so many libraries, etc available. I wish you best of luck!
I'm working on an application which needs to detect the location of a face in a video stream, using a web cam placed at desk height (and slightly off to the side of the user).
I've already implemented a version of OpenCV (using their Haar detection) and it works ok... the problem is that it tends to lose the position of the face if the user turns their head to the side (or looks up).
Since the webcam is sitting on the desk, it is tilted up at a 30 degree angle. The OpenCV detection algorithm is trained using fully frontal images, but not up-angle images like the ones I'm using. I know OpenCV also has a profile Haar file that can be used.. but from my research it seems that the results are quite mixed on profile detection. In addition, I don't really have control over the background or lighting of the image... so this sometimes also effects the efficacy of the OpenCV detection algorithm.
So, I guess what I'm asking is... are there other face detection algorithms (that are hopefully free, as this is part of my university research) that are better for detecting faces for this type of setup? It seems like some of the built-in webcams (for Macs and PCs) actually have fairly robust algorithms for detecting faces (and then overlaying cheesy cartoon images over the faces)... but they seem to work well regardless of background or lighting. Do you have any recommendations?
Thanks.
For research purposes, you can use the Haar cascades in OpenCV, things are different if you want to go commercial (in which case you need to consider LBP cascades instead). Just be sure to quote the Viola-Jones paper in your references.
To improve the results of face detection, you have several paths:
individual image detection: you can send rotated images to a frontal cascade to account for some variability without training your own cascade
individual image detection but more work) : train your own cascade in operating conditions closer to the ones of your app
stability in video streams (as in webcams & co.) : this is achieved by adding a layer of tracking around the face detection. Depending on your knowledge about this topic, you can use your own filter, have fun with OpenCV's particle or Kalman filter, implement a simple first or second order low pass filter on the face position or a PID tracker on the detected face...
Any of these tracking filters will enhance a lot your results when processing video streams.
Use CLM-framework for accurate realtime face detection and face landmark detection.
Example of the system in action: http://youtu.be/V7rV0uy7heQ
You may find it useful.
i am working on a project detecting and tracking fingers. Though i find there is quiet a lot resource on this task, i haven't found a effective one yet :(.
So far i have thought of methods to detect hands as follow:
Haar training. But firstly we don't have a trained set(xml) as that in the face detection. Secondly, if we do the training ourselves, we don't have enough samples (i am still a college student)
skin color detection in HSV space. I have tried this one but the result has a lot of noises so cannot helps me continue the further detection on fingertip.
3.use Handvu. But i have heart that this lib is hard to set up and used in windows...
So in a word, can anyone give me any suggestions on how to detect hands effectively? (After that i may consider about detecting fingertips..)
Thanks!!
Here is a pretty in-depth paper on finger segmentation using Zernike moments. Here is a good paper on using Zernike moments for image recognition as a basis for the first paper.
Can you explain more about your experimental setup? Are you trying to track fingers against a cluttered background, or a plain cardboard sheet?
Haar like features perform very well for face recognition (the Viola Jones paper being a classic example) however I would not recommend them for your task. Although they can be computed fast using the integral image, they work well using a CASCADED Adaboost classification framework.
For skin colour detection, it depends on your setup. As a first step you could try doing background subtraction: simply learn the distribution (histogram) of pixels for foreground (ie. the hand) and the background and use these to do image segmentation.
I don't know what Handvu is
Zernike moments are also very good shape descriptors that are rotation invariant and can be made to be both scale and translation invariant.
I hope this helps!
I want to develop an iPhone app which should recognise the eyes, face, and skin color of a person in an image which is scanned by QR Reader.
How can eyes be detected in an image?
Although it may be possible, I'm just warning you that it will have, regardless of the programming, a degree of inaccuracy. Any face/retina detection software is able to be tricked, and considering the quality of the iPhone's camera, it can't capture enough detail to accurately evaluate the geometric relevancy between two retinas. Also, about recognizing the face color, it might be problematic due to varying light conditions. Under florescent lights, the person's skin tone would appear more blue than under incandescent or natural lighting. Maybe there is another way to go about this?
For localizing the eyes I've used the algorithm described in "Accurate Eye Center Location and Tracking Using Isophote Curvature" by Roberto Valenti, Theo Gevers in my master thesis and achieved very good results with it:
http://www.science.uva.nl/research/publications/2008/ValentiCVPR2008/CVPR%2008.pdf
For face detection / localization, use the Viola-Jones algorithm, there is probably a objective-c implementation out there somewhere. (OpenCV has it, alternatively)