Я работаю над приложением, в котором я хочу изменить несколько свойств изображения, таких как яркость, контрастность, насыщенность, оттенок и т. Д., С помощью ползунков (вариант использования аналогичен рабочему процессу Lightroom, где пользователь может изменить эти свойства, просто перемещая ползунки).
Проблема:
Моя проблема в том, что эти свойства не коммутативны.
Пример
- Я меняю яркость на значение +30 на изображении I, т.е. B(I), затем контраст на полученном изображении на -60, т.е. C(B(I)), результат отличается от B(C(I)).
- После описанной выше операции C(B(I)), если я попытаюсь вернуть яркость на -30, чтобы свести на нет эффект яркости, то есть B(C(B(I))), результат не будет таким же, как C(I).
Подходы, которые я пробовал:
Я пробовал два разных подхода, но оба они потерпели неудачу.
- Продолжайте применять результаты к последнему изображению, т.е. если я хочу снова изменить яркость, я применяю его к результату C (B (I)). Это, очевидно, дает неправильные результаты и не отменяет эффект более раннего применения яркости.
- Всякий раз, когда эффект применяется повторно, удалите первый. Пример: если я применил C(B(I)) и снова хочу изменить яркость, я бы удалил первый эффект яркости и, следовательно, получил бы C(I), а затем применил бы результат к этому новому результату. Таким образом, новый эффект будет выглядеть как B(C(I)). Проблема с этим подходом заключается в том, что он медленный, так как эффекты необходимо повторно применять, как только вы меняете ползунок (из-за удаления предыдущего эффекта). И это также приводит к внезапному изменению изображения (очень наглядному), если я верну ползунок обратно на яркость (потому что результат не изменится с C (B (I)) на B (C (I))).
Lightroom и многие другие программы для обработки изображений достигают этого, но я не знаю, как они полностью сводят на нет изменения, когда пользователь перемещает ползунок, независимо от порядка применения свойств. Я не знаю, как они это делают, поэтому мне нужна помощь.
Примечание. В последнее время мне было интересно, можно ли этого добиться путем смешивания (не знаю, какой тип смешивания) результата каждого эффекта, примененного к исходному изображению, а не применения их к результатам предыдущего. .