A computer program product stored on a non-transitory computer-readable storage medium, which when executed by a computing system, generates an altered image based on an original image captured by an image capture device, the computer program product comprising:
- program code that separates an original image into distinct images based on a luminance value for each pixel of a plurality of pixels forming the original image, the distinct images including:
- a first separated image formed from a first group of pixels of the original image, and
- a second separated image formed from a second group of pixels of the original image, the second group of pixels distinct form the first group of pixels;
- program code that determines a first luminance range for the first separated image, the first luminance range based on the luminance value for each pixel of the first group of pixels of the first separated image;
- program code that determines a second luminance range for the second separated image, the second luminance range based on the luminance value for each pixel of the second group of pixels,
- wherein the second luminance range is distinct from the first luminance range;
- program code that adjusts visual parameters of the first separated image formed from the first group of pixels based on a first luminance function;
- program code that adjusts visual parameters of the second separated image formed from the second group of pixels based on a second luminance function;
- and
- program code that combines the adjusted, first separated image and the adjusted, second separated image to generate the altered image.