Shurik
Хранитель
Сообщений: 1 980
Offline
|
Да, программа есть, ImageDupeless Работает не без ошибок, но похожие картинки действительно находит. Вот только проблема в том что в галерею ее не интегрировать. Если только периодически базу картинок прогонять через нее. И алгоритм они свой не раскроют, программа платная, деньги терять никто не хочет. Есть ли подобные алгоритмы для php я не в курсе. Пока мысль делать для каждой картнки грубую превьюшку, там 50х50 с 16 цветами и уже их сравнивать.
Rivelt: а что за теги? и кто их будет каждой картинке присваивать? если можно поподробнее.
|
|
|
Записан
|
|
|
|
Rivelt
Дозорный Дракон
Сообщений: 2 938
Offline
|
*Масштабирование Таки у меня было только минут пять, чтобы почитать форум и внести предложение. Пока мысль делать для каждой картнки грубую превьюшку, там 50х50 с 16 цветами Если дублей всё-таки немного, то Пока мысль делать для каждой картнки грубую превьюшку, там 50х50 с 16 цветами и уже их сравнивать. Можно. Если сопоставить каждому цвету число и найти расстояние между матрицами рисунков, то можно найти дубли. Сейчас попробую набросать код. Rivelt: а что за теги? и кто их будет каждой картинке присваивать? Теги — банальные вебдванольные теги, которые можно приписать к посту в блоге, статье на сайте или картинке в галерее. Приписывать их будем сообща. Я могу написать быстренько несложный сервис для этого. По идее, они неплохо оптимизируют поиск картинки (всяко лучше, чем их древовидное разбиение по иерархиям категорий), поскольку получается не дерево, а несколько более густая сеть.
|
|
|
Записан
|
|
|
|
Rivelt
Дозорный Дракон
Сообщений: 2 938
Offline
|
Готово. <? function getColorIndeces($im, $x, $y) { return imagecolorsforindex($im, ImageColorAt($im, $x, $y)); }
function getImage($path, $w_new, $h_new) { $old = imagecreatefromgif($path); $w = imageSX($old); $h = imageSY($old); $new = imageCreate($w_new, $h_new); imagefilledrectangle($new, 0, 0, $w_new, $h_new, imagecolorallocate($new, 255, 255, 255)); imagecopyresampled($new, $old, 0, 0, 0, 0, $w_new, $h_new, $w, $h); return $new; }
function sqr($x) { return $x*$x; }
$W = 200; $H = 200; $im1 = getImage("РИСУНОК1", $W, $H); $im2 = getImage("РИСУНОК2, $W, $H);
$sigma2 = 0; for($i=0;$i<$W;$i++) for($j=0;$j<$H;$j++) { $s1 = getColorIndeces($im1, $i, $j); $s2 = getColorIndeces($im2, $i, $j); $sigma2 += sqr($s1["red"] - $s2["red"]) + sqr($s1["blue"] - $s2["blue"]) + sqr($s1["green"] - $s2["green"]); }
echo sqrt($sigma2); ?>
Если вкратце, то этот скрипт проходит по двум рисункам (названия нужно подставить вместо РИСУНОК1 и РИСУНОК2), приводит их к равным размерам и высчитывает среднеквадратическое отклонение цветов одного рисунка от другого, а затем выводит его на экран. Для одной и той же, но масштабированной картинки ~200x200 получается около 12 000. Для двух разных картинок получается больше 30 000.
|
|
|
Записан
|
|
|
|
Shurik
Хранитель
Сообщений: 1 980
Offline
|
Теги — банальные вебдванольные теги, которые можно приписать к посту в блоге, статье на сайте или картинке в галерее. Приписывать их будем сообща. Я могу написать быстренько несложный сервис для этого. По идее, они неплохо оптимизируют поиск картинки (всяко лучше, чем их древовидное разбиение по иерархиям категорий), поскольку получается не дерево, а несколько более густая сеть.
я примерно так себе и представлял Каждой картинке присваивается Автор, Тема, абольшенезнаю, ... Все картинки лежат в обной папке, а при просмотре выбираются различными фильтрами. Только все это будет более-менее работать когда каждой картинке будут присвоены 1-2 тега Да и что б типов тегов побольше было. Вот тольок в тех 3 гигах ~20000 картинок, представляю скольок времения надо будет теги прописывать .... поповоду скрипта: странно что результаты очень близки, отличие всего в 2,5 раза, для масштабированной картинка я ожидал получить около 0
|
|
|
Записан
|
|
|
|
Rivelt
Дозорный Дракон
Сообщений: 2 938
Offline
|
для масштабированной картинка я ожидал получить около 0 Когда растровое изображение увеличивают, то оно появляются характерные квадраты. Они и дают помехи. Каждой картинке присваивается Автор, Тема, абольшенезнаю, ... Все картинки лежат в обной папке, а при просмотре выбираются различными фильтрами. Только все это будет более-менее работать когда каждой картинке будут присвоены 1-2 тега Да и что б типов тегов побольше было. Да. Только теги не будут различаться в БД: просто один столбец под них. А автора можно указывать и в теге, и в кратком описании картинки. Вот тольок в тех 3 гигах ~20000 картинок, представляю скольок времения надо будет теги прописывать .... В одиночку — довольно долго, а вот если возьмутся хотя бы 5-10 постоянных участников, то вполне приемлемо.
|
|
|
Записан
|
|
|
|
Rivelt
Дозорный Дракон
Сообщений: 2 938
Offline
|
Я изменил скрипт для перебора по папке, так он довольно сильно тормозит... Вдобавок он путает изображения с одинаковой цветовой гаммой в центре. А если повышать точность за счёт увеличения площадей, в которые копируются рисунки, — то ещё сильнее тормозит. -.- Так что с этим бида-бида. Можно сделать что-то подобное на C++, но лучше всё же как-то улучшить алгоритм. Либо перейти на краудсортинг. -.-
Я постараюсь набросать небольшой сервис для хранения-пометок-качания-удаления картинок, под эту базу и с возможностью скачать накопленный набор меток. В сумме файлы весят что-то больше гигабайта, так что уже вижу одну сложность: медленность сервиса. Но я надеюсь, много запросов не будет и всё ограничится читателями этой темы. -.-
|
|
|
Записан
|
|
|
|
Golden Dragon
Дракон
Наблюдатель
Золотой дракон
Сообщений: 881
Offline
|
а прикинь туда полинета ломанеться
|
|
|
Записан
|
подпись скорректирована в связи с новыми правилами. п.п. 4.4. и 5.7.
|
|
|
Rivelt
Дозорный Дракон
Сообщений: 2 938
Offline
|
Значит, надо сделать так, чтобы о сервисе узнало минимальное количество народа.
|
|
|
Записан
|
|
|
|
Shurik
Хранитель
Сообщений: 1 980
Offline
|
При просмотре ничего не будет тормозить. Относительно конечно, есть еще ограничение ширины канала, производительности жестких дисков ... Поэтому ограничивать число пользователей не нужно, сервис теряет полезность
А вот сервис загрузки можно и ограничить, например ввести регистрацию "модераторов"
Нужно только оптимизировать скрипты при загрузке новых картинок. Здесь надо подумать как сделать для каждой картинки сигнатуру, типа коротенького хеша (на первое время пойдет и md5, но для поиска похожих надо что то другое) Для новых картинок генерить эту сигнатуру и проверять ее уникальность Если в базе она уже есть, то картинку удалять как дубль.
> Я постараюсь набросать небольшой сервис для хранения-пометок-качания-удаления картинок Rivelt, а может проще поискать готовые решения? и их уже доработать до нужного нам уровня? все писать с нуля это сложно и нудно,.
|
|
|
Записан
|
|
|
|
Rivelt
Дозорный Дракон
Сообщений: 2 938
Offline
|
все писать с нуля это сложно и нудно,. Нудно — это допиливать чужой код до нужного состояния. -.- Как раз легче написать с нуля. Ну, почти с нуля: у меня есть коллекция заготовок под всякое. А вот сервис загрузки можно и ограничить, например ввести регистрацию "модераторов" Аналогично и с расстановкой тегов. Хранить все копии в БД — слишком жирно, поэтому проще слегка ограничить доступ. -.-
|
|
|
Записан
|
|
|
|
Игорёк
wolphin
Сообщений: 183
Offline
|
|
|
|
Записан
|
"Лучшим способом выразить дельфинам нашу благодарность было бы оставить их в покое. Во многом они, бесспорно, превзошли нас хотя бы уже потому, что им от нас ничего не нужно." Жак Майоль
|
|
|
DSA
Джокер в отставке.
Сообщений: 309
Offline
|
http://www.prismaticsoftware.com/Download/SetupDD.exeDupDetector 3.2 это вещь, есть выбор алгоритма поиска и действительно работает, не то что остальные.
|
|
|
Записан
|
Он любит жизнь и любит скалы Безумство ветра, гладь воды И небеса, что сводом встали Опершись в горизонт Земли.
|
|
|
|
|
droner
Я тут редкий гость
Сообщений: 703
Offline
|
Кого бы попросить перезалить Видимо закачка глюканула и тормознулась, а я и забыл =\
|
|
|
Записан
|
|
|
|
Shurik
Хранитель
Сообщений: 1 980
Offline
|
|
|
|
Записан
|
|
|
|
droner
Я тут редкий гость
Сообщений: 703
Offline
|
Громадное спасибо. А то уже подумал, что потерял 1гб сокровищ
|
|
|
Записан
|
|
|
|
Вацуус
"Devoted Secret Organization" Избран быть ...
Сообщений: 120
Offline
|
Грфф… с моей скоростью я пол года только ждать буду!
|
|
|
Записан
|
Жизнь коротка. Память вечна! Pax vobiscum Homo sapiens !!
|
|
|
spyros
|
ФУ меня тоже есть картинки.Только в "Моих документах."У меня где-то 60 картинок.Мало.
|
|
|
Записан
|
|
|
|
Nuxias
Draco Vulgaris
Сообщений: 144
Offline
|
|
|
« Последнее редактирование: 22 Ноябрь 2008, 20:42:59 от Nuxias »
|
Записан
|
Выше непокорных птиц, яростнее ветра.
|
|
|
|