Показать сообщение отдельно
Старый 21.11.2011, 18:05
pavel___zzz вне форума Посмотреть профиль Отправить личное сообщение для pavel___zzz Найти все сообщения от pavel___zzz
  № 5  
Ответить с цитированием
pavel___zzz

Регистрация: Oct 2008
Сообщений: 41
Боюсь, что с матрицей не выйдет вообще. Это ведь всего лишь линейное преобразование, ну т.е.

px.r = k1 * px.r + k2
px.g = k1 * px.b + k2
px.g = k1 * px.g + k2

ну только можно ещё делать k1 и k2 разные для разных цветов и делать цвета зависимыми друг от друга...

Кстати, тут есть ещё такое соображение: вроде как яркость удаётся воспроизвести кривыми, а кривые вроде как применяются независимо к каждому цветовому каналу. Если вышесказанное верно, то и при изменении яркости каналы не зависят друг от друга (хорошо, если хотя бы так).

P.S. Загвоздка в том, что изменить яркость можно каким угодно способом: умножить каждый конал на константу, добавить константу, извлечь корень, взять экспоненту, синус, да что угодно.... Всегда будет получаться ярче и всегда по-разному.
Только вот что именно делает фотошоп?

Добавлено через 25 минут
Мда, вот если бы фотошоп умел не только импортировать фильтры PixelBender, но и экспортировать их... уж ладно без исходников (может ноухау какое), но хотя бы байткод...

Добавлено через 1 час 9 минут
ещё вот, если кому-нибудь что-нибудь говорит:

brightness +70 очень похоже на

px.r = sin(0.5*PI*px.r);
px.g = sin(0.5*PI*px.g);
px.b= sin(0.5*PI*px.b);

но на другие значения brightness распространить это у меня не получается...