Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Фильтр неравномерности яркости [2]
Форумы портала PHP.SU » » Графика в PHP » Фильтр неравномерности яркости

Страниц (4): « 1 [2] 3 4 »
 

16. Алтенрион - 23 Декабря, 2012 - 13:07:03 - перейти к сообщению
NoPaper пишет:
Тогда можно "поизвращаться" Улыбка
Создать массив с данными о каждом пикселе ($arr[$x][$y]=array(red, green, blue))
найти среднее значение каждого цвета
все, что ярче - усреднить


Если работать именно с R G B, то мне кажется при усреднении будут меняться сами цвета, а не компонента отвечающая за яркость.

Иными словами просто усредняя полученный из пикселя цвет, мы модифицируем цвет. разве нет?
17. KingStar - 23 Декабря, 2012 - 13:27:03 - перейти к сообщению

делаем Ps на php Радость Радость Радость , скоро возьмемся за OC
18. Алтенрион - 23 Декабря, 2012 - 13:30:58 - перейти к сообщению
KingStar пишет:

делаем Ps на php Радость Радость Радость


Ну Ps конечно не получится, но фильтр как онлайн сервис замутить нужно. Если интересно, то совершенно не коммерческие цели.
19. DlTA - 23 Декабря, 2012 - 19:28:19 - перейти к сообщению
Алтенрион пишет:
просто как с гистограммами работать в php я не в курсе
так же как и на всех остальных языках в мире,
объявляем массив целых положительных чисел длинной 256 элеметнов пробегаемся по каждому пикселю изображения получаем его яркость, обычно это значение в пределах 0-255
и соответствующую ячейку массива инкрементируем
в итоге мы получаем заполненный массив, что и есть гистограмма.

теперь нужно ее преобразовать, выкинуть те участки где есть "пустышки" (ячейки с нулевым количеством или очень маленькие значения) а то что останется растянуть так чтоб в итоге у нас получалась максимально заполненая кривая без пробелов, см. первый и второй рис.

ну а дальше делаем обратное преобразование изображение
пробегаемся по всем пикселям изображения, получаем его яркость, смотрим куда оно попадало раньше и куда должно попасть теперь и изменяем эту ярскость тоесть записываем иное значение(+ преобразуем обратно в RGB)
собсно и все.

как видите как таковой пыхи тут и нет, а точнее пофигу на чем делать
алгоритм и наглядные графики выложил, вам осталось найти формулы преобразования из RGB в LAB и обратно, а для всего остального осталось немного пораскинуть моцком. удачи.
20. Алтенрион - 23 Декабря, 2012 - 19:38:21 - перейти к сообщению
В итоге работа переходит из разряда кода, в разряд поиска или разработки математического алгоритма фильтра... ух как меня это еще на с++ бесило... какж неохото тоже самое воротить на php...
21. DlTA - 23 Декабря, 2012 - 19:56:55 - перейти к сообщению
Алтенрион пишет:
из разряда кода, в разряд поиска или разработки математического алгоритма
а что вы тогда делаете в программировании? (риторический вопрос)
22. Алтенрион - 23 Декабря, 2012 - 20:13:31 - перейти к сообщению
Да не в этом суть, просто есть же библиотеки для работы с графикой, их нельзя применить в каком либо виде?
23. DlTA - 23 Декабря, 2012 - 20:29:46 - перейти к сообщению
http://php.su/functions/?cat=image
как найдете сообщите, чтоб и я знал
24. Алтенрион - 23 Декабря, 2012 - 21:19:29 - перейти к сообщению
тут про гистограммы есть материал.
[url]_http://mapexpert.com.ua/index_ru.php?table=Menu&id=26[/url]

Принцип понятен, просто у меня опыта мало, может кто нибудь расписать последовательность, или логику. Этапы работы такой программы.

Я уж попытаюсь что либо наколдовать, или вместе по колдуем, потом статейку на форуме сделаем полноценную?
25. DlTA - 23 Декабря, 2012 - 21:48:36 - перейти к сообщению
... (нецензурная брань)

пишите сразу в раздел "напишите за меня", это хоть честно будет.
(Добавление)
Алтенрион пишет:
http://mapexpert.com.ua/index_ru.php?table=Menu&id=26
нафига вам методы поиска границ и прочей лабуды?! это высший пилотаж, и явно не для тех кто не может закодить простые вещи.
26. NoPaper - 23 Декабря, 2012 - 21:52:42 - перейти к сообщению
Алтенрион пишет:
Если работать именно с R G B, то мне кажется при усреднении будут меняться сами цвета, а не компонента отвечающая за яркость.

Иными словами просто усредняя полученный из пикселя цвет, мы модифицируем цвет. разве нет?

Погуглив, узнал, что яркость определяется так: I = 0.11R+0.59G+0.30B
Обратно получить значения rgb не получится.

Немного переделал скрипт, подсунул цветные картинки.

Вот картинки обработаны родной функцией imagefilter _https://docs.google.com/open?id=0BxG_9AZqsNLZWGdQLWotMzVQZzQ
А вот по моему алгоритму_https://docs.google.com/open?id=0BxG_9AZqsNLZT3hlQ1RGZVhmcHc

Результат разный
27. DlTA - 23 Декабря, 2012 - 21:59:07 - перейти к сообщению
NoPaper пишет:
Обратно получить значения rgb не получится.

вы ж еще 2 компонены цвета потеряли.
28. NoPaper - 23 Декабря, 2012 - 22:09:21 - перейти к сообщению
DlTA пишет:
NoPaper пишет:
Обратно получить значения rgb не получится.

вы ж еще 2 компонены цвета потеряли.

a и b ?
29. Алтенрион - 23 Декабря, 2012 - 22:30:57 - перейти к сообщению
NoPaper пишет:
Немного переделал скрипт, подсунул цветные картинки.

Вот картинки обработаны родной функцией imagefilter _https://docs.google.com/open?id=0BxG_9AZqsNLZWGdQLWotMzVQZzQ
А вот по моему алгоритму_https://docs.google.com/open?id=0BxG_9AZqsNLZT3hlQ1RGZVhmcHc



Второй вариант на мой взгляд очень близок к правде. Как задается коэффициент?
30. NoPaper - 23 Декабря, 2012 - 22:53:10 - перейти к сообщению
Сначала в цикле все пиксели переносятся в массив, там же рассчитывается среднее значение red, green и blue (тупо сложить все значение определенного цвета и поделить на кол-во пикселей).

Второй цикл сравнивает каждый пиксель со средним значением, и, если значения rgb сильно расходятся со средним, цвет пикселя делается менее ярким.

Вот картинки вместе со скриптом _https://docs.google.com/folder/d/0BxG_9AZqsNLZN2U0d05tQkFwUTA/edit

 

Powered by ExBB FM 1.0 RC1