1. A non-transitory program storage device, readable by a processor and comprising instructions stored thereon to cause the processor to: obtain, with a processor, image data representative of a first image, the image data comprising a first plurality of pixels, each pixel comprising a luminance value and a second plurality of pixel color values; obtain, with the processor, a noise model for the first image; decompose the luminance values of the first plurality of pixels; smooth the luminance values of the first plurality of pixels based, at least in part, on the decomposed luminance values; create an alignment map for the first plurality of pixels based, at least in part, on the obtained noise model and the smoothed luminance values of the first plurality of pixels; store the alignment map in the memory; create a feature map for the first plurality of pixels based, at least in part, on the obtained noise model and the smoothed luminance values of the first plurality of pixels; store the feature map in the memory; smooth the first plurality of pixels based, at least in part, on the alignment map and the feature map; and store the smoothed first plurality of pixels as a first denoised image in the memory.