Учитывая, что пиксель не может иметь градиент, но у него есть цветовой код RGB (8, 16 или 32 бита для каждого канала), вы должны установить переменную допуска, выраженную в процентах, которая сделает цветкод по-прежнему считается того же цвета, что и шаблон.
Скажите в псевдокоде:
tolerance=10%
IF Rpixel - tolerance <= Rtemplate <= Rpixel + tolerance AND
Gpixel - tolerance <= Gtemplate <= Gpixel + tolerance AND
Bpixel - tolerance <= Btemplate <= Bpixel + tolerance THEN
YEAH they match.
Конечно, это требует попиксельного сравнения исходного изображения.
Редактировать: изменить "допустимый" цвет, учитывая его изменение цвета, просто:
deltaR = Abs(Rpixel - Rtemplate)
deltaG = Abs(Gpixel - Gtemplate)
deltaB = Abs(Bpixel - Btemplate)
sourceR = destinationR +/- deltaR;
sourceG = destinationG +/- deltaG;
sourceB = destinationB +/- deltaB;