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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Фильтр неравномерности яркости [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: фильтр для выравнивания яркости изображения,
Алтенрион
Отправлено: 24 Декабря, 2012 - 03:04:43
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Слегка по тестировал ваш код, и нашел его весьма занятным. Однако есть следующие мысли:

Если усреднять значения яркости, то это не только понижение яркости. Также темные пиксели надо приблизить к среднему... или просто высветлить по какому либо критерию.

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

И еще, не могли бы уточнить какое ограничение на объем изображения, чем именно обусловлено, и можно ли увеличить?

на картинки большего размера чем указанные вами ругается на превышение допустимого размера.
 
 Top
Алтенрион
Отправлено: 24 Декабря, 2012 - 03:08:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Вот пример квадратика:
Прикреплено изображение
r.png
 
 Top
NoPaper
Отправлено: 24 Декабря, 2012 - 12:40:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




Алтенрион пишет:
Слегка по тестировал ваш код, и нашел его весьма занятным. Однако есть следующие мысли:

Если усреднять значения яркости, то это не только понижение яркости. Также темные пиксели надо приблизить к среднему... или просто высветлить по какому либо критерию.

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

И еще, не могли бы уточнить какое ограничение на объем изображения, чем именно обусловлено, и можно ли увеличить?

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


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

Насчет темных изображений, там должно быть именно усреднение, а не затемнение, что собственно и получается:
Прикреплено изображение
1.png

(Отредактировано автором: 24 Декабря, 2012 - 12:42:58)

 
 Top
Алтенрион
Отправлено: 24 Декабря, 2012 - 15:09:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




NoPaper пишет:
Насчет темных изображений, там должно быть именно усреднение, а не затемнение, что собственно и получается:


проверял на локальной машине. Загрузил на хостинг - действительно увидел осветление темного квадрата.


Но при загрузке изображения в районе 400кб появляется такое :
(Добавление)
как именно можно рассчитать сколько памяти займет массив данных обработки, подскажите пожалуйста?
Прикреплено изображение (Нажмите для увеличения)
warn.png

(Отредактировано автором: 24 Декабря, 2012 - 15:23:37)

 
 Top
NoPaper
Отправлено: 24 Декабря, 2012 - 19:34:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




У меня на локалке картинка png размером 4кб съедает 50мб памяти Радость
 
 Top
DlTA
Отправлено: 25 Декабря, 2012 - 01:19:26
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




вопрос для размышления:
нафига создавать массив точек, что мешает пробегаться по точкам изображения каждый раз запрашивая конкретный пиксел и обрабатывая его?

это поможет снизить потребление памяти
 
 Top
NoPaper
Отправлено: 25 Декабря, 2012 - 10:46:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




DlTA пишет:
вопрос для размышления:
нафига создавать массив точек, что мешает пробегаться по точкам изображения каждый раз запрашивая конкретный пиксел и обрабатывая его?

это поможет снизить потребление памяти

спасибо, потребление памяти снизилось до 15 мб
(Добавление)
Алтенрион, вот измененный скрипт, должен меньше памяти кушать
_https://docs.google.com/open?id=0BxG_9AZqsNLZSThCdGkya0loa2s
 
 Top
Алтенрион
Отправлено: 25 Декабря, 2012 - 16:48:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Я пошел альтернативным путем ^_^ .



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

Проведя многократные тестирования, выяснил что кол-во памяти не зависит от качества (веса) картинки, а зависит от размеров по пикселям. тоесть 5х5, 1200х1200...


В любом случае спасибо, попробую испытать новую версию.
 
 Top
Алтенрион
Отправлено: 26 Декабря, 2012 - 10:59:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




На локальной машине отмена ограничения памяти сработало корректно, а вот на хостинге не срабатывает. Писать админу чтобы он помог или есть альтернативный путь?

Просто при работе с объемными изображениями требуется много памяти, а работать с объемными кадрами придется...
 
 Top
NoPaper
Отправлено: 26 Декабря, 2012 - 11:14:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




Попробовал кое-что переделать в алгоритме, результат - картинка 200х200 съедает 800кб памяти =)
Осталось некоторые баги убрать
 
 Top
DlTA
Отправлено: 26 Декабря, 2012 - 11:15:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Алтенрион пишет:
а вот на хостинге не срабатывает
очень сомневаюсь что админ непонятно за какие заслуги поставит в приоритет, а тем более в безлимит по памяти. учитесь кодить расчитывая на ограничения а не с надеждой на "режим бога"
 
 Top
NoPaper
Отправлено: 26 Декабря, 2012 - 12:03:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




Алтенрион, доделал скрипт, по твоей картинке с кругом и квадратом рез-ты такие:
718.148 KB
0.737 sec

Можешь скачать его по предыдущей ссылке
 
 Top
Алтенрион
Отправлено: 26 Декабря, 2012 - 12:10:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Вопросы: Как в новом алгоритме (версии 2.0 ^_^) указывается коэффициент. В первой версии было понятно, и есть желание сделать ползунок (веб форму type="range") чтобы обработка кадра происходила по кнопке, согласно указанному коэффициенту.

С версией 1.0 я почти связал это, с 2.0 не понимаю как передавать коэффициент от ползунка.

Версию 3.0 сейчас буду тестить.

П.С.:Спасибо за активную помощь
(Добавление)
Первичные тесты показали что объем памяти сократился примерно в 15-16 раз.

(Отредактировано автором: 26 Декабря, 2012 - 12:13:50)

 
 Top
NoPaper
Отправлено: 26 Декабря, 2012 - 13:25:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




Там нет коэффициента, все пиксели усредняются.
Добавить эту фичу - не проблема
(Добавление)
Сейчас нет доступа к своему компьютеру и гуглу, напишу здесь.
В скрипте строки:
PHP:
скопировать код в буфер обмена
  1.                 for($y=0; $y<$height; $y++)
  2.                 {
  3.                         for($x=0; $x<$width; $x++)
  4.                         {
  5.                                 $rgb = imagecolorat($im, $x, $y);
  6.                                
  7.                                 $pixels['red']=((($rgb >> 16) & 0xFF)+$red)/2;
  8.                                 $pixels['green']=((($rgb >> 8) & 0xFF)+$green)/2;
  9.                                 $pixels['blue']=(($rgb & 0xFF)+$blue)/2;
  10.                                
  11.                                 imagesetpixel ($im, $x, $y, imagecolorallocate($im, $pixels['red'], $pixels['green'], $pixels['blue']));
  12.                         }
  13.  
  14.                 };


Замени на
PHP:
скопировать код в буфер обмена
  1.  
  2.                 $k = $_GET['get_var'];
  3.                 for($y=0; $y<$height; $y++)
  4.                 {
  5.                         for($x=0; $x<$width; $x++)
  6.                         {
  7.  
  8.                                 $rgb = imagecolorat($im, $x, $y);
  9.                                
  10.                                 $pixels['red']=($rgb >> 16) & 0xFF;
  11.                                 $pixels['green']=($rgb >> 8) & 0xFF;
  12.                                 $pixels['blue']=($rgb & 0xFF);
  13.                                
  14.                                 if(
  15.                                    $pixels['red']-$red>$k ||
  16.                                    $pixels['green']-$green>$k ||
  17.                                    $pixels['blue']-$blue>$k
  18.                                 ) imagesetpixel ($im, $x, $y, imagecolorallocate($im, ($pixels['red']+$red)/2, ($pixels['green']+$green)/2, ($pixels['blue']+$blue)/2));
  19.                         }
  20.  
  21.                 }
  22.  
 
 Top
Алтенрион
Отправлено: 26 Декабря, 2012 - 13:39:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Все было протестировано, был сделан интерфейс, ведется работа над отладкой взаимодействия всех кнопок.

Есть 4 ключевых звена в цепи работы данного комплекса:

1) Загрузка изображения на сайт, и отображение его на странице.
2) Передача изображения (загруженного) и коэффициента ползунка php скрипту фильтра.
3) Кнопка сохранения в базу данных загруженного и полученного кадров.
4) Скачивание готового изображения с сайта на компьютер.

Пункт 1: нашел информацию касательно веб формы
CODE (html):
скопировать код в буфер обмена
  1. <form method="post" enctype="multipart/form-data">


Возникли некоторые трудности с пониманием, как загрузить именно на сайт выбранное такой формой изображение, и загрузить именно его а не только его директорию...

Пункт 2: С ползунком работаю непосредственно сейчас. Нашел инфу что наиболее рационально передавать значение от ползунка, php обработчику, посредством java script. Решил использовать jQuery ... В общем доделаю отпишу мысли.

Пункт 3: Интересует как можно реализовать такую форму (кнопку) чтобы она подцепляла изображения для отправки в бд.... с SQL синтаксисом я вроде дружу... Суть тут в том что в базу надо именно изображения пихать а не их пути на сервере или в файлах сайта... так уж необходимо...(хотя с многих сторон это не рационально)

Пункт 4: Кнопка Download. С ней еще не ковырялся. Пока решаю первые 3 пункта. Скачивание полученного (обработанного ) изображения, это самый финальный штрих.


Прошу поделиться мыслями.

Чуток попозже выложу нынешний прототип интерфейса. Работать буду над ним и в Новогоднюю ночь... и дальше. Благодарен заранее.

(Отредактировано автором: 30 Декабря, 2012 - 02:24:59)

 
 Top
Страниц (4): « 1 2 [3] 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB