To change particular colors in an image, generally you multiply the RGB by a transformation matrix. Image manipulation programs such as gimp & 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
<canvas>. What color space and distance definition do these algorithms typically use, and then how do they compute the transformation matrix?