A system for removing noise from a low-light image, the system comprising: a luma filter circuit (104, 108) for selecting a first filter from a plurality of luma component filters (110, 112, 114) and applying the first filter to a luma component of a low-light image, thereby creating a filtered luma component; a chroma filter circuit for applying a second filter to a chroma component of the low- light image, thereby creating a filtered chroma component; and a circuit for combining the filtered luma component and the filtered chroma component to thereby produce a filtered low-light image, wherein the plurality of luma component filters includes an edge-detection-based adaptive filter having a Gaussian distribution engine, the edge-detection-based adaptive filter being configured to identify a non-edge pixel and a neighbouring pixel region, and the Gaussian distribution engine being configured to: determine a mean and a variance of a Gaussian distribution of the neighbouring pixel region, determine a difference between the non-edge pixel and the mean, and compare the difference to the variance; wherein the edge-detection-based adaptive filter is configured to assign an output based on whether the comparison indicates that the non-edge pixel is a result of low-light noise; wherein the plurality of luma component filters includes a median filter, and wherein the edge-detection-based adaptive filter causes the median filter to determine a median value for the neighbouring pixel region and the median value is assigned as the output when the difference is greater than a first threshold multiplied by the variance; wherein the plurality of luma component filters includes a low-pass averaging filter, and wherein the edge-detection-based adaptive filter causes the low-pass averaging filter to determine a low-pass filter value for the neighbouring pixel region and the low-pass averaging filter value is assigned as the output when the difference is greater than a second threshold multiplied by the variance, the second threshold being less than or equal to the first threshold; and wherein the non-edge pixel is assigned as the output when the difference is greater than a third threshold multiplied by the variance, the third threshold being less than or equal to the second threshold. a luma filter circuit (104, 108) for selecting a first filter from a plurality of luma component filters (110, 112, 114) and applying the first filter to a luma component of a low-light image, thereby creating a filtered luma component; a chroma filter circuit for applying a second filter to a chroma component of the low- light image, thereby creating a filtered chroma component; and a circuit for combining the filtered luma component and the filtered chroma component to thereby produce a filtered low-light image, wherein the plurality of luma component filters includes an edge-detection-based adaptive filter having a Gaussian distribution engine, the edge-detection-based adaptive filter being configured to identify a non-edge pixel and a neighbouring pixel region, and the Gaussian distribution engine being configured to: determine a mean and a variance of a Gaussian distribution of the neighbouring pixel region, determine a difference between the non-edge pixel and the mean, and compare the difference to the variance; wherein the edge-detection-based adaptive filter is configured to assign an output based on whether the comparison indicates that the non-edge pixel is a result of low-light noise; wherein the plurality of luma component filters includes a median filter, and wherein the edge-detection-based adaptive filter causes the median filter to determine a median value for the neighbouring pixel region and the median value is assigned as the output when the difference is greater than a first threshold multiplied by the variance; wherein the plurality of luma component filters includes a low-pass averaging filter, and wherein the edge-detection-based adaptive filter causes the low-pass averaging filter to determine a low-pass filter value for the neighbouring pixel region and the low-pass averaging filter value is assigned as the output when the difference is greater than a second threshold multiplied by the variance, the second threshold being less than or equal to the first threshold; and wherein the non-edge pixel is assigned as the output when the difference is greater than a third threshold multiplied by the variance, the third threshold being less than or equal to the second threshold.