1. A non-transitory computer-readable medium that stores instructions executable by one or more processors to perform a method for removing noise from a noisy image, comprising instructions for estimating a noise level of said noisy image; instructions for dividing said noisy image into a plurality of blocks; instructions for converting said plurality of blocks to a plurality of vectors; instructions for grouping said plurality of vectors; instructions for performing a matrix recovery to remove the noise and obtain denoised vectors; instructions for converting said denoised vectors to denoised blocks; and instructions for merging said denoised blocks to construct a denoised image; wherein, the noise is random variations of brightness or color information in said noisy image.