An image processing method comprising: obtaining first color values representing lightness, color channel 'a' and color channel 'b' for a first color; obtaining second color values representing lightness, color channel 'a' and color channel 'b' for a substrate or a background color; obtaining first reflectance values for the first color at a machine-vision wavelength; obtaining second reflectance values for the substrate or the background color at the machine-vision wavelength; determining a reflectance difference between the first reflectance values and the second reflectance values; using one or more programmed processors, determining a signal visibility error that is associated with the first color values, the second color values and the reflectance difference, in which the signal visibility error, i.e. RWV, comprises: RWV = Δ 660 ΔL ∗ 2 + Δa ∗ 8 2 + Δb ∗ 16 2 1 2 in which Δ660 represents a reflectance difference of the first color and the substrate or the background color at a peak illumination in the range of 630nm - 710nm, ΔL* represents a difference in lightness between the first color values and the second color values, Δ a * represents a difference in 'a' channel color values between the first color values and the second color values, and Δb * represents a difference in 'b' channel color values between the first color values and the second color values; using one or more programmed processors, determining a color error that is associated with the first color values, the second color values and the reflectance difference, in which the color error, i.e. RCV, comprises: RCV = Δ 660 ΔL ∗ 2 + Δa ∗ 2 + Δb ∗ 2 1 2; and linearly combining the signal visibility error and the color error to yield a combined error, and evaluating the combined error to determine whether to transform digital imagery with the first color to carry an encoded signal. obtaining first color values representing lightness, color channel 'a' and color channel 'b' for a first color; obtaining second color values representing lightness, color channel 'a' and color channel 'b' for a substrate or a background color; obtaining first reflectance values for the first color at a machine-vision wavelength; obtaining second reflectance values for the substrate or the background color at the machine-vision wavelength; determining a reflectance difference between the first reflectance values and the second reflectance values; using one or more programmed processors, determining a signal visibility error that is associated with the first color values, the second color values and the reflectance difference, in which the signal visibility error, i.e. RWV, comprises: RWV = Δ 660 ΔL ∗ 2 + Δa ∗ 8 2 + Δb ∗ 16 2 1 2 in which Δ660 represents a reflectance difference of the first color and the substrate or the background color at a peak illumination in the range of 630nm - 710nm, ΔL* represents a difference in lightness between the first color values and the second color values, Δ a * represents a difference in 'a' channel color values between the first color values and the second color values, and Δb * represents a difference in 'b' channel color values between the first color values and the second color values; using one or more programmed processors, determining a color error that is associated with the first color values, the second color values and the reflectance difference, in which the color error, i.e. RCV, comprises: RCV = Δ 660 ΔL ∗ 2 + Δa ∗ 2 + Δb ∗ 2 1 2; and linearly combining the signal visibility error and the color error to yield a combined error, and evaluating the combined error to determine whether to transform digital imagery with the first color to carry an encoded signal.