A report by Georg Petschnigg, June 2002

Flash Image with redeye

Automatically corrected using noisy non-flash image

Digital Photography inherited some baggage from traditional photography. One of these problems is "redeye", which often occurs when taking pictures of people in dark environments using a compact camera. For small camera frames the flash is located too close to the camera's optical axis, causing flash light to reflect from a subject's retina back onto the image sensor. This causes "redeye". Both traditional and digital compact cameras are subject to this industrial design size constraint. However we can take advantage of a digital camera's variable sensitivity, multiple exposure and image processing capabilities to correct a redeye automatically if it occurs. This report describes an algorithm for automatically detecting correcting redeye using a flash and non flash image pair taken in rapid succession.

Overview

Redeye has been a boon to compact cameras for years. For small cameras the built in flash is located to closely to the optical axis, causing flash light to be reflected back from a person's retina. This algorithm will take advantage of a digital camera's multi-exposure and variable sensitivity settings to create a pair of registered images: One image is taken at noise free ISO 200 with flash, the other at a higher ISO setting without flash. This image pair is the used to detect a redeye, using the assumption that the redeye will exhibited the greatest increase in red from non flash to flash image. After a redeye mask is created a color correction steps creates the fixed image For a discussion how to reduce noise in the non-flash image see here.
The system works as follows:

  1. Take image without flash using a high ISO setting - for example ISO1600 1/30 sec exposure
  2. Immediately afterwards take an image with flash at optimal ISO setting - for example ISO200, 1/125sec exposure
  3. Use image pair to detect redeye
  4. Segment out eyes by fitting ellipsoids
  5. Create redeye mask
  6. Correct red eye
Image Processing Pipeline

The detailed processing pipeline is located here.

 Results

See sample results here.
Matlab code will be made available soon.

The main accomplishment I showed in this project was that a flash and noisy non-flash image can be used for seeding a redeye detection algorithm, To my knowledge many semi-automatic correction algorithms exist, but few of them if at all fully automatically detect redeye. Using a multi image digital camera and appropriate color conversions, I showed that the detection process can be improved and a simple correction routine suffices to fix redeye in a pleasant way.

Limitations and improvement opportunities

While locating a redeye using the proposed system seems plausible, it currently has no solid indicator for the absence of a redeye. An improvement suggestion is discussed in the implementation description. Secondly the correction step currently is limited to elliptical axis aligned redeye. A better algorithm is given by [Patti98], which could easily be extended to use the seed eye my algorithm finds. The main advantage of [Patti98] is that it is applied in an iterative manner and in the final step performs a localized color search. I intentionally omitted such an improvement to show the strength of the flash and non flash image pair classification.

References

Automatic digital redeye reduction
Patti, A.; Konstantinides, K.; Tretter, D.; Qian Lin
Image Processing, 1998. ICIP 98. Proceedings. 1998 International Conference on , Volume: 3 , 1998

Differences in the infrared bright pupil response of human eyes
K. Nguyen; C. Wagner; D. Koons; M. Flickner
Proceedings of the symposium on ETRA 2002. 2002


Copyright © 2002 Georg Petschnigg

age's Cr component.