1. A method of processing a run time image comprising the steps of: receiving a training image; generating a pixel block codebook based on the training image, the codebook comprising entries that have associated lists of similarly matched pixel blocks; generating a plurality of filters based on the codebook entries; receiving a run time image; breaking down the run time image into pixel blocks; comparing a run time image pixel block with the pixel block codebook to identify a closest match entry; processing the closest match entry based on an averaging algorithm to produce an optimal filter; and applying the optimal filter to the run time image pixel block.