У тебя каждое преобразование работает в своем цветовом пространстве. (класс со свойством "пространство")
У тебя есть картинка, которая тоже находится в своем цветовом пространстве. (класс со свойством "пространство")
Тебе надо наложить на картинку серию преобразований.
Цветовое пространство описываем классом с двумя функциями — преобразования в и из одного базового цветового пространства. Которое всегда одно и то же, например, RGB.
Функция преобразования из произвольного в произвольное пространство конструируется как композиция двух таких преобразований — "в" и "из".
Собственно, все. Можно сделать чтобы работало как в статике, так и в динамике. Без макросов. Где у нас подвох?