Обнаружение исходного цвета после смешивания rgb
Попытка обнаружить исходный цвет после смешивания его с другим.
Что я уже пробовал:
Например:
A R G B source 255 128 64 64 overlay 204 0 128 128 result 255 26 115 115После смешивания исходного цвета с наложением (в обычном режиме смешивания) я получаю результирующий цвет.
Зная, что исходная альфа и результирующая Альфа являются константами, для вычисления результирующего цвета я использую эту формулу:
result.red = source.red + (overlay.red - source.red) * overlay.alpha / 255;соответственно для остальных синих и зеленых каналов та же формула.
Первая проблема, с которой я сталкиваюсь, заключается в том, что результирующее значение округляется, поэтому вместо 25,6 (для результата R) я получу 26 (потому что rgb-это байтовые значения).
Таким образом, это вызовет проблему при обнаружении исходного цвета, зная только результат и наложение. Итак, используя эту формулу:
source.red = (255 * result.red - overlay.red * overlay.alpha) / (255 - overlay.alpha)приведет к исходному красному значению = 130 вместо 128 (потому что результирующее красное значение равно 26 вместо 25,6).
Есть идеи, как можно вычислить исходный цвет по-другому?