1. A method for processing a noise contaminated image having an array of image pixels, comprising: providing an estimated noise variance floor for the image; providing a plurality of directional variance values for each pixel; providing a filter having an array of filtering coefficients, wherein a strength of each coefficient is determined based on both a value of an image pixel corresponding to the each filter coefficient relative to a value of an image pixel and an estimated total variance determined by the estimated noise variance floor and the plurality of directional variance values; and processing the image pixels with the assembled filter; wherein the total variance of the image is estimated from a procedure comprising: calculating a directional variance along each of a pre-determined directions; finding the minimum variance among the calculated directional variances; calculating a threshold variance based on the minimum variance; and calculating the total variance from the calculated directional variances that are equal to or less than the threshold.