Semiautomatic red-eye removal algorithm works fine for most photos, but sometimes it can get confused. It may happen when the photo has low contrast, skin tint is reddish, or the user selected the face inaccurately. To allow the user to remove red eyes even if semiautomatic mode fails, you can use the manual mode as a fallback option.
In manual mode the user needs to click each eye. Red-Eye Removal searches boundaries of the red area and fix color here.
You still need to provide the facial rectangle. It is used to estimate the eye square to avoid "fixing" red areas outside of the eye.
This way the user should make two steps:
In addition to RedEyeRemoval.FaceRegion property, you should also specify the RedEyeRemoval.EyePoint property. You should pass coordinates of mouse click there.
Here is a code which removes red-eye effect in the manual mode:
Dim redEyeRemoval As New Aurigma.GraphicsMill.Transforms.RedEyeRemoval redEyeRemoval.Mode = Aurigma.GraphicsMill.Transforms.RedEyeRemovalMode.Manual redEyeRemoval.FaceRegion = faceRect redEyeRemoval.EyePoint = eyePoint redEyeRemoval.ApplyTransform(sourceBitmap)
Aurigma.GraphicsMill.Transforms.RedEyeRemoval redEyeRemoval = new Aurigma.GraphicsMill.Transforms.RedEyeRemoval(); redEyeRemoval.Mode = Aurigma.GraphicsMill.Transforms.RedEyeRemovalMode.Manual; redEyeRemoval.FaceRegion = faceRect; redEyeRemoval.EyePoint = eyePoint; redEyeRemoval.ApplyTransform(sourceBitmap);
You may find it inconvenient to have the user to select a face before clicking red eyes. From the point of view of usability it is acceptable if you are re-using the facial rectangle which user specifies for the semiautomatic mode. Most natural way to do it is to organize the user interface as a wizard. These topics discuss how do it:
Adding Red-Eye Removal Functionality to Windows Applications