1. A method comprising: (a) comparing a value of a first pixel to values of a set of other pixels, wherein the first pixel and the set of other pixels are each of a first color; wherein step (a) comprises defining a first environment comprising the first pixel and the at least two pixels neighboring the first pixel; (b) for each pixel in the set of other pixels, comparing values of at least two pixels neighboring the first pixel to values of at least two further pixels neighboring the other pixel, wherein one of the at least two pixels neighboring the first pixel is of a second color and the other of a third color, and wherein one of the at least two further pixels neighboring the other pixel is of the second color and the other of the third color; wherein step (b) comprises, for each pixel in the set of other pixels, defining an environment comprising the other pixel and the at least two pixels neighboring the other pixel, and determining a difference value that numerically represents how similar the environment defined for the other pixel is to the environment defined for the first pixel; (c) determining, for each pixel in the set of other pixels, a weight based at least in part on results of steps (a) and (b); wherein step (c) comprises determining at least one threshold value, comparing the at least one threshold value to each of the difference values determined in step (b), and for each pixel in the set of other pixels, determining the weight for the other pixel based at least in part on the comparison of the at least one threshold value to the difference value determined for the other pixel; (d) calculating a de-noised pixel value based at least in part on the weights of each pixel in the set of other pixels; and (e) replacing the value of the first pixel with the de-noised pixel value.