Image data identifying multiple pixels in an image is received, and a
multi-resolution hierarchical structure is created from the image data.
Further, output values are calculated for the pixels in the image using a
wavelet-based retinex algorithm by propagating pixel values computed at
lower resolution levels of the multi-resolution hierarchy to higher
levels of the multi-resolution hierarchy and refining the propagated
pixel values at the higher resolution levels.