Существует несколько способов сделать такое преобразование. Я предполагаю, что вы хотите, чтобы пользователь мог выбрать цвет, который должен быть нейтральным на изображении, но это не так.
Мое предположение для Lightroom заключается в том, что они, вероятно, преобразуют значения RGB в лабораторное цветовое пространство , а затем корректируют значения a
и b
каждого пикселя на определенную величину. (Величина, представляющая собой разницу между исходным цветом и нулевым значением для a
и b
.) Возможно, вы захотите наклонить ось L всего цветового пространства так, чтобы выбранный цвет совпадал с тем, где a
и b
равны 0 в неподкошенном пространстве.
Вы можете приблизить такое изменение другими способами. Одним из способов является преобразование из RGB во что-то более простое, например, Y'CbCr, и настройку там своих цветов. Опять же, вы должны наклонить ось Y так, чтобы цвет, который первоначально выбрал пользователь, переместился в своей плоскости к началу координат (где Cb и Cr равны 0).
Вы можете имитировать это в прямом RGB, повернув серую ось (r = g = b), чтобы она была вертикальной, наклонив эту новую вертикальную ось так, чтобы выбранный цвет оказался на оси, а затем вращая в обратном направлении первый поворот.