[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Дубликаты фоток. Найти и определить
inpost
Есть 2 фотки, как проверить, изображено ли на них одно и то же самое?
В какую сторону копать? Кто что может посоветовать?
Есть ли что-нибудь готовое?



Спустя 5 минут, 50 секунд (3.05.2012 - 15:40) tejlo111 написал(а):
незнаю biggrin.gif

Спустя 6 минут, 28 секунд (3.05.2012 - 15:46) T1grOK написал(а):
Для одинакового соотношения сторон. Можно ресайзить одну картинку к размеру наименьшей и проверять попиксельно. Определив за дублткаты изображения совпадения у которых сколько-то процентов.

Спустя 2 минуты, 20 секунд (3.05.2012 - 15:49) Oyeme написал(а):
http://www.pureftpd.org/project/libpuzzle

The Puzzle library is designed to quickly find visually similar images (gif, png, jpg), even if they have been resized, recompressed, recolored or slightly modified. The library is free, lightweight yet very fast, configurable, easy to use and it has been designed with security in mind.
  • finding duplicate images in photo libraries
  • image classification
  • image search services
  • moderation (pictures sent by users on forums, wikis, blogs, etc). Pictures similar to other pictures that were previously banned can be signaled to moderators.

Спустя 34 секунды (3.05.2012 - 15:49) forza написал(а):
Знаю 1 способ. Но он деревянный, потому что если изменится хотябы 1 пиксель, его отценок, то все - пиши пропало -)
А идея токова. Берем содержимое файла (file_get_contents). и этот фарш загоняем в мд5. Потом берем 2ую форку, повторяем 1ый пунк, сверяем их мд5.
Совпали - дубликат, не совпали - нет -)

Спустя 3 минуты, 47 секунд (3.05.2012 - 15:53) T1grOK написал(а):
Может что-то из предмета "Компьютерная графика" поможет. В частности алгоритмы. Насколько помню там составлялись всевозможные матрицы для распознания графики.

Спустя 7 минут, 42 секунды (3.05.2012 - 16:01) T1grOK написал(а):
Вообще очень интересная тема. Вот пример самого примитивного метода сравнения изображений http://habrahabr.ru/post/120577/
А вот сами идеи сравнения
http://habrahabr.ru/post/122372/

Спустя 14 минут, 16 секунд (3.05.2012 - 16:15) Invis1ble написал(а):
file_get_contents($image1) === file_get_contents($image2);

не?

Спустя 1 час, 35 минут, 4 секунды (3.05.2012 - 17:50) glock18 написал(а):
Цитата (T1grOK @ 3.05.2012 - 13:46)
Для одинакового соотношения сторон. Можно ресайзить одну картинку к размеру наименьшей и проверять попиксельно. Определив за дублткаты изображения совпадения у которых сколько-то процентов.


puzzle использовать разумнее, мне кажется, хотя если самопис хочется, то, возможно, подобный механизм сможет какую-то приличную долю дубликатов выделить. Если над еще поработать хорошенько

Спустя 1 час, 6 минут, 24 секунды (3.05.2012 - 18:56) walerus написал(а):
Поддерживаю ответ T1grOK - сам как то лет 5ть назад пытался антикапчу писать, самую простецкую и предложение Oyeme, тоже понравилось...

Спустя 49 минут, 46 секунд (3.05.2012 - 19:46) sergeiss написал(а):
inpost, Я тебе отвечу... Только ты не пугайся wink.gif

Для того, чтобы максимально правильно это сделать, необходимо произвести для начала преобразование Фурье для картинки. И мы получим некий набор "пространственных частот". Подобно тому, как при преобразовании звука получаем набор звуковых частот.

И уже это набор "пространственных частот" можно сравнивать для разных картинок. Не полное совпадение, но когда похожи получаются.

Чуть подробнее про преобразование Фурье тут читай: http://ru.wikipedia.org/wiki/%CF%F0%E5%EE%...%D4%F3%F0%FC%E5 (а я предупреждал - не пугайся!)

PS. Кстати. Любой сотовый телефон постоянно занимается прямым и обратным преобразованием Фурье. Только для звука, а не для пространства. Это так, к слову пришлось...

Спустя 1 час, 22 минуты, 3 секунды (3.05.2012 - 21:08) vital написал(а):
На одном проекте посутпили вот как.(на линух системе):
findimagedupes -n -v=fp image.extension

Генерит fingerprint некий для картинки. делаешь его для обоих и..
А дальше примерно так 2 хеша им сгенеренные в base64 сравниваются - код копипастен с Node.js:
unction calculate_similar(x, y){
console.log('hash1: ' + x);
console.log('hash2: ' + y);
x = base64decode(x);
y = base64decode(y);
var counter = 0, i, xor, tmp;
for (i = 0; i < 32; i++){
xor = ord(x[i]) ^ ord(y[i]);
if (!xor){
continue;
}
while( xor > 0){
if (xor % 2 > 0){
counter++;
}
xor = Math.floor(xor / 2);
}
}

return counter;
}

ф-я возвращает число - чем больше, тем более разные изображения(или наоборот, сам писал, но не помню уже).
У нас бралось число 90 и меньше.


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.