Я работаю над приложением для обработки изображений (для развлечения) и изо всех сил пытаюсь полностью понять, как работают преобразования ColorMatrix. Я получаю основы линейных / аффинных преобразований и могу прекрасно справляться с репликацией примеров в Интернете, но я хотел бы полностью понять , почему что-то работает, а не просто удовлетворено тем, что оно работает.
Например, для простого преобразования изображения с целью получения его негатива (каждый цвет преобразуется в соответствующий дополнительный) используется следующая матрица:
[-1, 0, 0, 0, 0]
[0, -1, 0, 0, 0]
[0, 0, -1, 0, 0]
[0, 0, 0, 1, 0]
[1, 1, 1, 0, 1]
Я понимаю, что -1 - это косинус 180 градусов, то есть вращение, необходимое для "переворачивания" цвета на его дополняющее, но я не понимаю, как вектор цвета можно умножить на приведенную выше матрицу и получить правильный дополнительный вектор.
Например, если пиксель имеет цветовой вектор [247, 255, 0, 255, 1] (с использованием пространства RGBAW), выполнение умножения на вышеуказанную матрицу приводит к [-247, -255, 0, 255 , 1], но это не правильно, поскольку реальный дополнительный цвет вышеупомянутого - [8, 0, 255, 255, 1].
Я упускаю что-то очевидное здесь и с радостью признаю, что не совсем уверен в том, что делаю :) Представляем ли преобразованный цветовой вектор в какой-то другой системе координат? (например, не 0-255)
Если бы кто-нибудь мог помочь предоставить "недостающее звено" моего понимания, я был бы очень признателен.
Редактировать
Я только что обнаружил, что следующая матрица также работает и фактически математически интуитивна (она производит правильный вектор).
-1 0 0 0 0
0 -1 0 0 0
0 0 -1 0 0
1 1 1 1 0
0 0 0 0 1
Итак, мой новый вопрос: почему обе эти матрицы работают? Последнее дает мне более удовлетворительное решение, так как я могу понять, почему оно работает с алгебраической точки зрения. Четыре ряда используются для масштабирования? И если да, то почему масштабирование добавляет 255? Откуда он получает это значение?
Извините, если это действительно глупые вопросы, я пытаюсь разобраться с этим.