A method for enhancing local area contrast of an image comprising: receiving image data; generating from the image data a high-pass image and a low-pass image, in which generating the low-pass image comprises: applying a low-pass filter to the image data, in which the low-pass filter is an NxN weighted averaging filter, in which N is an integer larger than one, which averages a central pixel (P 0) with a subset of surrounding pixels, further in which the surrounding pixels are grouped (201, 202, 203, 204) into virtual pixels (P 1, P 2, P 3, P 4) by dividing the N×N kernel into four quadrants and averaging the pixels in each quadrant to generate respective virtual pixels, the virtual pixels being weighted according to a difference in value between the virtual pixels and the central pixel; applying dynamic range compression to the low-pass image and not the high-pass image, in which the dynamic range compression comprises an algorithm employing the following relationship, where P in is an input pixel, P out is an output pixel, and X 0 is a curvature parameter: P out = P in * 1 + X 0 / P in + X 0; and adding the high-pass image to the low-pass image after dynamic range compression to create an output image. receiving image data; generating from the image data a high-pass image and a low-pass image, in which generating the low-pass image comprises: applying a low-pass filter to the image data, in which the low-pass filter is an NxN weighted averaging filter, in which N is an integer larger than one, which averages a central pixel (P 0) with a subset of surrounding pixels, further in which the surrounding pixels are grouped (201, 202, 203, 204) into virtual pixels (P 1, P 2, P 3, P 4) by dividing the N×N kernel into four quadrants and averaging the pixels in each quadrant to generate respective virtual pixels, the virtual pixels being weighted according to a difference in value between the virtual pixels and the central pixel; applying dynamic range compression to the low-pass image and not the high-pass image, in which the dynamic range compression comprises an algorithm employing the following relationship, where P in is an input pixel, P out is an output pixel, and X 0 is a curvature parameter: P out = P in * 1 + X 0 / P in + X 0; and adding the high-pass image to the low-pass image after dynamic range compression to create an output image. applying a low-pass filter to the image data, in which the low-pass filter is an NxN weighted averaging filter, in which N is an integer larger than one, which averages a central pixel (P 0) with a subset of surrounding pixels, further in which the surrounding pixels are grouped (201, 202, 203, 204) into virtual pixels (P 1, P 2, P 3, P 4) by dividing the N×N kernel into four quadrants and averaging the pixels in each quadrant to generate respective virtual pixels, the virtual pixels being weighted according to a difference in value between the virtual pixels and the central pixel; applying dynamic range compression to the low-pass image and not the high-pass image, in which the dynamic range compression comprises an algorithm employing the following relationship, where P in is an input pixel, P out is an output pixel, and X 0 is a curvature parameter: P out = P in * 1 + X 0 / P in + X 0; and adding the high-pass image to the low-pass image after dynamic range compression to create an output image.