Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Как роботом отделить красивые тумбы от некрасивых?
Новая тема
Ответить
цитата
26/03/10 в 22:40
kit
Есть много тумбнейлов различной красивости. Устроить ротацию и померять кликабельность возможности нет. Хотелось бы их грубо разделить на несколько фракций.
Как научить робота отличать яркие, контраcтные, сочные тумбы, от блеклых, смазанных, одноцветных?
Тумбы резались и кропились автоматом, гламурить возможности нет.
Пример более менее приличных тумбнейлов:
Пример плохих тумбнейлов:
Последний раз редактировалось: kit (
01/04/10 в 23:37
), всего редактировалось 1 раз
цитата
26/03/10 в 22:56
paranoik.death
один из параметров - вес тумбы. Чем больше ярких цветов, тем тяжелее.
цитата
27/03/10 в 01:08
Foxy Babe
kit писал:
Как научить робота отличать яркие, контраcтные, сочные тумбы, от блеклых, смазанных, одноцветных?
методом тестовых заданий, проб и ошибок
хорошо отличил - получи на нормальную еду, плохо отличил - получи на черный хлеб ... или голодай
цитата
27/03/10 в 01:30
benzole
в плохих тумбах как правило левелс криворукие, соответственно имхо надо имаджмэджиком чекать левелс у тумбы ( менять-то уровни имэджмэджик умеет -
http://www.imagemagick.org/script/command-line-options.php#level
- видимо должен уметь и просто чекать распределение уровней на картинке)
цитата
27/03/10 в 01:49
Kn
имхо как раз по методу
Foxy Babe:
цитата
27/03/10 в 02:32
Sterx
benzole:
интересно было бы узнать про авточек уровня.
в свое время экспериментировал с яркостью-контрастностью, все оказалось жутко нелинейно
цитата
27/03/10 в 02:34
Woland
+1 Foxy Babe, главное не закармливать робота
цитата
27/03/10 в 03:28
Silvio Manuel
И какое нынче в среднем энергопотребление у хороших роботов на каждую тысячу тумб?
цитата
27/03/10 в 03:37
benzole
Sterx писал:
benzole:
интересно было бы узнать про авточек уровня.
чессговоря это я просто гипотезу выдвинул. ничего конкретного сказать не могу . смысл в том, что когда хочешь сделать из приведённой в примере "плохой" картинки "хорошую" - одним из распространённых вариантов в фотошопе является просто растянуть диапазон яркостей между блэк пойнтом и вайт пойнтом.
вот пример гистограммы "плохой картинки" -
характерной особенностью является наличие "провалов" справа и слева между основными границами гистограммы и черной и белой точками.
чтобы эту картинку сделать более смотрибельной, надо слайдеры белой и черной точек передвинуть на основные границы гистограммы.
т.е у картинки с плохими уровнями есть провалы в экстремумах яркостей (там где "черная" и "белая" точки):
.........||||||||||||||||......
0------------------------------255
а у картинки с хорошими уровнями - присутствует весь диапазон отсчётов яркостей, притом он имеет более-менее однородную структуру, как правило без резких пиков и провалов:
...||||||||||||||||||||||||||..
0------------------------------255
а как программно определить картинки с такой гистограммой - я хз.
цитата
27/03/10 в 12:22
Kn
автоуровни есть в имейджмеджике и он исправляет эту неровность - только вот тока проблема, не значит это что получится нормальная тумба
цитата
27/03/10 в 12:47
Zmey Горыныч
нейросети, пусть сам робот учится
только сказать труднее чем сделать
цитата
27/03/10 в 13:03
benzole
Kn писал:
автоуровни есть в имейджмеджике и он исправляет эту неровность - только вот тока проблема, не значит это что получится нормальная тумба
не, вопрос ведь стоИт не в улучшении, а в обнаружении.
цитата
27/03/10 в 14:30
JM
Ну как вариант берем 100 точек с тумбы делаем автокорекцию тем же IM по тем же точкам проверяем сильно ли ушел цвет
1.если ваще сильно и везде значит - тумба гавно....
2.если сильно но не везде - тумба гавно?
3.не ушел/не сильно везде/не везде - тумба хорошего качества....
Вощем над попробовать и подбирать...
цитата
27/03/10 в 14:39
pickuper
Для вышепоставленной задачи достаточно IM.
Копать надо в сторону утилиты identify (с параметром -verbose), а среди выводимых ей результатов смотрим Channel statistics.
Понятно, что тумбы тумбам рознь, но примеры из первого поста определяются данным способом со 100% точностью.
Для более сложных случаев, этого будет не достаточно... У меня сокурсники писали дипломы по теме вроде "пиксельный анализ изображения" - это дело было на Си++, давно и не правда ;)
цитата
27/03/10 в 15:10
Fighter
в сервис для распознавания капч зарядить. выдавать две пиксы на выбор - быстро отсеят имхо =)
цитата
27/03/10 в 23:11
alex.raven
Вот результат небольшого эксперимента
Код:
<?
$images = array("3583086.jpg", "5129499.jpg", "5233995.jpg", "5276998.jpg", "5635460.jpg", "5650199.jpg", "5846497.jpg", "5968560.jpg");
foreach ($images as $image)
{
$im = new Imagick($image);
$im->edgeImage(1.0);
$im->posterizeImage(2, false);
$im->writeImage("thumbs/{$image}");
unset($im);
}
?>
Результат работы скрипта:
Суть заключается в том, что у "сочных" тумб с большим количеством цветов и не смазанных будут более чёткие края. У смазанных и неконтрастных наоборот - они в результате обработки стали почти чёрными. Далее подсчитываем отношение количества чёрных\не чёрных пикселей, и чем больше не чёрных, тем субъективно более качественная тумба. Не было возможности проверить на большой выборке.
Метод конечно же, не претендует на ноу-хау, и не со всеми тумбами будет давать правильный результат. Но это эксперимент :-)
цитата
28/03/10 в 03:06
kit
Pikuper, alex.raven
спасибо за интересные варианты. Но есть вопросы:
1) Как быстро посчитать черноту картинки?
2) Identify->Channel statistic: что именно там смотреть?
цитата
28/03/10 в 03:55
alex.raven
kit писал:
Pikuper, alex.raven
спасибо за интересные варианты. Но есть вопросы:
1) Как быстро посчитать черноту картинки?
2) Identify->Channel statistic: что именно там смотреть?
вот так:
Код:
<?
$images = array(
"3583086.jpg",
"5129499.jpg",
"5233995.jpg",
"5276998.jpg",
"5635460.jpg",
"5650199.jpg",
"5846497.jpg",
"5968560.jpg",
);
$i=0;
foreach ($images as $image)
{
$im = new Imagick($image);
$im->edgeImage(1.0);
$im->posterizeImage(2, false);
$im->writeImage("thumbs/{$image}");
$width = $im->getImageWidth();
$height = $im->getImageHeight();
$black = 0; $nonblack = 0;
for ($y=0; $y<$height; $y++)
{
for ($x = 0; $x<$width; $x++)
{
$pixel = $im->getImagePixelColor($x, $y);
$color = $pixel->getColor();
$value = $color['r'] + $color['g'] + $color['b'];
if ($value>0)
{
$nonblack++;
}
else
{
$black++;
}
}
}
echo "{$image}, black: {$black}, non-black: {$nonblack}<br />";
$i++;
unset($im);
}
?>
результат работы:
3583086.jpg, black: 18970, non-black: 230
5129499.jpg, black: 17649, non-black: 1551
5233995.jpg, black: 18930, non-black: 270
5276998.jpg, black: 17328, non-black: 1872
5635460.jpg, black: 17461, non-black: 1739
5650199.jpg, black: 18781, non-black: 419
5846497.jpg, black: 16873, non-black: 2327
5968560.jpg, black: 17018, non-black: 2182
пихаем значения в базу данных, и затем делаем
Код:
SELECT * FROM thumbs ORDER BY nonblack DESC;
скрипт довольно медленный из-за большого числа итераций, так что лучше сначала проапдейтить базу, а не вызывать его в реалтайме для каждой тумбы.
цитата
28/03/10 в 09:27
JM
alex.raven
отличное решение помоему
Немного подгламурим
Цитата:
$value = $color['r'] + $color['g'] + $color['b'];
лишний кусок при всех нулях итак $color = $pixel->getColor(); будет нулем....
Код:
$color = $pixel->getColor();
# $value = $color['r'] + $color['g'] + $color['b'];
if ($color>0)
{
цитата
28/03/10 в 10:04
alex.raven
JM писал:
alex.raven
отличное решение помоему
Немного подгламурим
лишний кусок при всех нулях итак $color = $pixel->getColor(); будет нулем....
Код:
$color = $pixel->getColor();
# $value = $color['r'] + $color['g'] + $color['b'];
if ($color>0)
{
не сработает, т.к getColor() возвращает не число, а ассоциативный массив c элементами r, g, b.
цитата
28/03/10 в 11:16
pickuper
kit писал:
Pikuper, alex.raven
спасибо за интересные варианты. Но есть вопросы:
1) Как быстро посчитать черноту картинки?
2) Identify->Channel statistic: что именно там смотреть?
Если мы говорим об уровнях, как о показателе сочности картинки, то смотрим на минимальные (0) и максимальные (255) значения для каждого цвета (red, green, blue).
Приведу пример значений для данных тумб:
5635460.jpg red: 0 255; green: 0 255; blue: 0 255;
5846497.jpg red: 0 255; green: 0 255; blue: 0 255;
5968560.jpg red: 0 255; green: 0 255; blue: 0 255;
5276998.jpg red: 26 255; green: 6 255; blue: 0 255;
5129499.jpg red: 24 255; green: 21 255; blue: 9 255;
5650199.jpg red: 3 209; green: 4 189; blue: 0 160;
5233995.jpg red: 16 255; green: 21 255; blue: 15 255;
3583086.jpg red: 1 202; green: 0 182; blue: 0 164;
Для каждой тумбы проводим нехитрые вычисления ( r(max-min) + g(max-min) + b(max-min) ):
765
765
765
733
711
551
713
547
Как видим, только 4ая тумба отклоняется от идеальных результатов, но тут можно ввести какую-то погрешность (тут = 32).
цитата
28/03/10 в 15:34
alex.raven
Оффтопик:
так зарождались фильтры для фотошопа
цитата
29/03/10 в 11:04
leroy_17
alex.raven писал:
Так вот у этой тумбы количество черных и не черных пикселей будет соответствовать качественной тумбе, хотя оригинал так себе
цитата
29/03/10 в 11:27
nubik
да имхо тут проще человеку поручить. просто сделать вывод тумб штук по 100 и чтоб он выбирал плохие, кликая по ним.
таким макаром несколько тыщь в день для одного не проблема, а человек 5 вобще выдадут огромные объемы. и качество будет на порядок лучше чем скриптом.
цитата
29/03/10 в 11:46
alex.raven
leroy_17 писал:
Так вот у этой тумбы количество черных и не черных пикселей будет соответствовать качественной тумбе, хотя оригинал так себе
ну я жеж сразу оговорился, на чём основан метод и что у него будут погрешности.
хотя у нас применяется другой метод - я написал простой скрипт, который при помощи ajax одним кликом позволяет отбирать более качественные тумбы, которые попадут на главную страницу:
на странице выводится сразу по 500 тумб, опыт показал, что одна девочка за 2-3 часа ненапряженной работы модерирует около 20,000 тумб.
Стр.
1
,
2
>
последняя »
Новая тема
Ответить
Эта страница в полной версии