Color transform algorithm (that also works on saturation and value/lightness)? To change particular colors in an image, generally you multiply the RGB by a transformation matrix. Image manipulation programs such as gimp &amp; photoshop have a selective color change function that allows a user to convert pixels within a certain "distance" to the original color in some color space to a new color. Eg, changing #00f blue into #ffd pale yellow. 

I'm trying to implement such a function in a &lt;canvas&gt;. What color space and distance definition do these algorithms typically use, and then how do they compute the transformation matrix?
Very often, the Lab color space is used, since it is close to how humans perceive color. As to which distance to apply: This wikipedia article mentions a Delta E distance of 1.0 for a just noticeable difference. There are a lot of different formulas resulting in different thresholds.