Desktop appl in C#, C++, or VB. User inputs an image file depicting a face, and the program creates a modified version of the face that looks to be the same person but with the eyes gazing in a direction specified by the user. Good appearance of results with most input images is required, but perfect performance is not expected (see below for details). Please read detailed description as well as high level summary before bidding. Tasks: 1. Locate face in image, and locate eyes in face. OK to use open-source code for this subtask. 2. Within each eye, locate the sclera, the iris, and the pupil. (To review parts of the eye, look here: [login to view URL]~chenyi1/Research/iris/segmentation/[login to view URL] Shift the iris/pupil leftward or rightward, and upward or downward, as appropriate given the user-specified variables listed above. Obviously this will require synthesizing some bitmap to fill in parts of the sclera or iris/pupil that are not visible in the original image. Simply assign these new images to the average values of the portions that are visible. Performance: To do a perfect job of this in real-time may well be impossible. Standard for this job is more reasonable: Speed: Process a typical image with a runtime of 100 msec on a current Pentium (i.e., I am not requesting anything close to realtime video performance). Failure Rate: The program needs to succeed on 90+% of “normal images?? (decent frontally posed images). Developer and customer to agree in advance upon a large test dataset to use for testing. Quality of Output (Altered) Image: The final output image does not need to be perfect, in the sense that it is exactly what that person would look like when gazing at that particular angle. The critical standard is that for 90%+ of normal input images, if a patch of the face containing the eyes (and eyebrows) is viewed at approximately 300 pixels wide X 100 pixels high, the casual viewer would not say that the face “looks funny?? or “looks photoshopped?? or “looks mutated??. There may be imperfections that would be evident to a microscopic examination of the image, but there should not be any defects so gross that, when viewed at this image size, they would strike casual viewers as strange.
## Deliverables
MORE DETAILED VERSION OF BRIEF DESCRIPTION: Summary: user inputs an image depicting a face, and program automatically creates a modified version of the face that looks to be the same person but with the eyes gazing in a direction specified by the user. Good appearance of results with most input images is required, but perfect performance is not expected (roughly 10% failure rate would be acceptable--see below for details). Specifics: Input bitmap image of face (if greater than approx screensize, say 1280 X 1024, then resize to that size). 2 Input parameters set by user: 1. lateral desired direction of desired gaze (1=extreme left; 5 = straight ahead; 9 = extreme right). 2. vertical direction of desired gaze (1 = somewhat down; 3 = horizontal; 5 = somewhat up) Expect image containing a large approximately frontally posed photograph of a face. It is OK to fail on noisy images, or images with poses not approximately frontal. Tasks: 1. Locate face in image, and locate eyes in face. OK to use Intel Open Source Computer Vision Library [login to view URL] or other code with similar license (the license must permit use in commercial applications). See also Face Detection Homepage: [login to view URL] 2. Within each eye, locate the sclera, the iris, and the pupil. (To review parts of the eye, look here: [login to view URL]~chenyi1/Research/iris/segmentation/[login to view URL] 3. Shift the iris/pupil leftward or rightward, and upward or downward, as appropriate given the user-specified variables listed above. Obviously this will require synthesizing some bitmap to fill in parts of the sclera or iris/pupil that are not visible in the original image. Suggested approach: assign the newly synthesized portions of the image to have the average values of the portions that are visible. Performance: I am aware that to do a perfect job of this, and to do that perfect job in real-time, is probably impossible without a massive R&D project. Buyer does not expect perfection, but does expect the following: Speed: Process a typical image with a runtime of 100 msec on a current machine (far from realtime video performance). Failure Rate: The program needs to succeed on 90+% of “normal images?? (decent frontally posed images). Developer and customer to agree in advance upon a large test dataset to use for testing. Quality of Output (Altered) Image: The final output image does not need to be perfect, in the sense that it is exactly what that person would look like when gazing at that particular angle. The critical standard is that for 90%+ of normal input images, if a patch of the face containing the eyes (and eyebrows) is viewed at approximately 300 pixels wide X 100 pixels high, the casual viewer would not say that the face “looks funny?? or “looks photoshopped?? or “looks mutated??. There may be imperfections that would be evident to a microscopic or forensic examination of the image, but there should not be any defects so gross that, when viewed at this image size, they would strike casual viewers as strange. Comments: Customer is aware that this is a rather unusual task. I am looking for a developer with experience and confidence in varied digital image processing techniques willing to try this task out. Feel free to post questions of any kind. Employer Questions: (1) How long do you think it would take you to do this? (2) I would be willing to deposit money into escrow, but prefer not to pay until I see working program. Is that acceptable to you? (3) Do you have any concerns/questions that I can answer? Do you feel that the performance standards described in my proposal are clear enough, or can I elaborate in any way upon them?