A non-transitory program storage device, readable by a programmable control device comprising instructions stored thereon to cause the programmable control device to: store image pixel data in a memory, wherein the image pixel data is obtained from an image captured by an image sensor; estimate a noise level or a lux level of the image; characterized in that the instructions are arranged to cause the programmable control device to: transform the image pixel data into a set of image pixel values over a color space; identify, based on the estimated noise level or lux level, a noise-optimized weighting table of values from among a plurality of pre-stored noise-optimized weighting tables, the noise-optimized weighting table of values comprises a plurality of values, wherein each of the plurality of values has a corresponding image pixel value, and wherein the plurality of values are determined based on a likelihood that the corresponding image pixel value represents a white surface in the image, given the estimated noise level or lux level; apply the noise-optimized weighting table to the set of image pixel values to generate weighted image pixel data; calculate a scene white point using the weighted image pixel data; and store the weighted image pixel data in the memory. store image pixel data in a memory, wherein the image pixel data is obtained from an image captured by an image sensor; estimate a noise level or a lux level of the image; characterized in that the instructions are arranged to cause the programmable control device to: transform the image pixel data into a set of image pixel values over a color space; identify, based on the estimated noise level or lux level, a noise-optimized weighting table of values from among a plurality of pre-stored noise-optimized weighting tables, the noise-optimized weighting table of values comprises a plurality of values, wherein each of the plurality of values has a corresponding image pixel value, and wherein the plurality of values are determined based on a likelihood that the corresponding image pixel value represents a white surface in the image, given the estimated noise level or lux level; apply the noise-optimized weighting table to the set of image pixel values to generate weighted image pixel data; calculate a scene white point using the weighted image pixel data; and store the weighted image pixel data in the memory. the instructions are arranged to cause the programmable control device to: transform the image pixel data into a set of image pixel values over a color space; identify, based on the estimated noise level or lux level, a noise-optimized weighting table of values from among a plurality of pre-stored noise-optimized weighting tables, the noise-optimized weighting table of values comprises a plurality of values, wherein each of the plurality of values has a corresponding image pixel value, and wherein the plurality of values are determined based on a likelihood that the corresponding image pixel value represents a white surface in the image, given the estimated noise level or lux level; apply the noise-optimized weighting table to the set of image pixel values to generate weighted image pixel data; calculate a scene white point using the weighted image pixel data; and store the weighted image pixel data in the memory. transform the image pixel data into a set of image pixel values over a color space; identify, based on the estimated noise level or lux level, a noise-optimized weighting table of values from among a plurality of pre-stored noise-optimized weighting tables, the noise-optimized weighting table of values comprises a plurality of values, wherein each of the plurality of values has a corresponding image pixel value, and wherein the plurality of values are determined based on a likelihood that the corresponding image pixel value represents a white surface in the image, given the estimated noise level or lux level; apply the noise-optimized weighting table to the set of image pixel values to generate weighted image pixel data; calculate a scene white point using the weighted image pixel data; and store the weighted image pixel data in the memory.