У Kate Rhodes есть замечательное эссе по различиям в http://weblog.masukomi.org/2006/11/21/xml-rpc-vs-soap
Вместо использования RGB попробуйте использовать цветовую модель HSL (оттенок, насыщенность, яркость) или HSV (оттенок, насыщенность и значение) . Затем поэкспериментируйте с различными элементами смещения, например, при расчете расстояния оттенок важнее яркости.
Джон Скит прав. Вам необходимо использовать систему с оттенком в качестве компонента вместо RGB, если вы обеспокоены тем, что цветовой компонент совпадения слишком сильно отличается. И HSL, и HSV прекрасно подойдут для этой цели.
Затем вам нужно поиграть с формулой расстояния, чтобы взвесить оттенок, пока вы не будете довольны результатами. Обратите внимание: вы обнаружите, что проблема фактически неразрешима, если у вас нет большого количества цветов для сопоставления или если ваши входные цвета ограничены небольшим диапазоном возможных значений. Это потому, что, хотя может показаться, что вы можете прикрепить любой цвет к одному из 8 (красный, оранжево-желтый, зеленый, синий, фиолетовый, черный и белый) или к одному из 16, на самом деле вы обнаружите, что ваш алгоритм всегда найдет то, что кажется явно неправильным, совпадает, потому что с 3 осями движения (оттенок, насыщенность,
Я бы подумал, что если вы рассматриваете цвета как координаты RGB в 3-м пространстве и вычисляете расстояние от выборки до известных значений, вы можете определить наиболее близкое совпадение. Я бы, наверное, также попробовал масштабировать RGB в соответствии с чувствительностью глаза (например, Y = 0,3 * R + 0,59 * G + 0,11 * B), и вы получите лучший результат