ПредишенСледващото

Във всеки проект, човешкият фактор не е отменен, а ако на потребителите по отношение на собствените си кораби снимки на интернет страница - не могат да бъдат избегнати дубликати. Когато става дума за хиляди файлове, всички очи не се преглеждат, и повтарящи се образи не е достатъчно, че никой не иска, така да се провеждат също, загуба на ресурси и в крайна сметка пречат на работата.

Как да се идентифицират дублиращи се изображения с помощта на PHP, savepearlharbor

Защото рано или късно въпросът за автоматизация на процеса по намиране на повторения, а след това се вгледаме в основните, както и да разгледа делото.

Сравнете файлове с помощта на хеш функция

Един от начините е да се сравнят файла дубликат определение чрез генериране на хеш стойност от съдържанието на даден файл.

Един прост пример за изчисляване на хеш снимки:

Резултатът изглежда по следния начин: bff8b4bc8b5c1c1d5b3211dfb21d1e76

Ако хешовете съвпадат двете изображения - изображенията са едни и същи.
Методът не е най-точният, тъй като тя работи само за идентични изображения, при най-малкото разликата - да усеща нула.

Как да се идентифицират дублиращи се изображения с помощта на PHP, savepearlharbor

ImageMagick

функция за обработка на изображения Imagick :: compareImages връща масив, който съдържа реконструирания образ и разликата между изображенията.

Пример използват при сравняването на две изображения:

В резултат на това двете сравнявани Изображенията са моделирани в една, в която могат да се видят разликите.
Можете също така да получите числов израз различия за всеки параметър (например с of.sayta):

GD2 и libpuzzle

За да намерите бързо дубликати трябва да бъдат инсталирани GD2 библиотека и libpuzzle.

Libpuzzle предназначена за бързо визуално търсене по подобие на изображения (GIF. PNG. JPEG). Първа на растерни изображения е разделена на блокове - автоматично отхвърлени рамки, които не носят много важна информация. Разликата между два съседни блока формира вектор - така наречените подпис изображения. Сходството на изображения определя от разстоянието между две такива вектори. Тъй като обикновено промяна на цвета, преоразмерявате или компресиране не влияе на резултатите, произведени от libpuzzle.

Как да се идентифицират дублиращи се изображения с помощта на PHP, savepearlharbor

Libpuzzle доста лесен за използване. изчисляването на подписа за две снимки:

Изчисляване на разстоянието между подписите на:

Проверете сходството на изображенията:

Компресиране на подписи за съхранение в базата данни:

сетивната хашиш

Най-вероятно, най-точен метод за намиране на дубликат - сравнение на файлове чрез сетивната хашиш. Проверка на сходството се извършва чрез преброяване на броя на различни позиции между две хешове, този Hamming разстояние. Разстоянието е по-малко - толкова по-съвпадение.

Как да се идентифицират дублиращи се изображения с помощта на PHP, savepearlharbor

Инсталация за UNIX платформи, както следва:

Опитайте всъщност възможно чрез i.onthe.io/phash. Изтегляне на изображения чрез интерфейса и индикатор изход "еднаквостта".

Как работи това

Ние получи хеша на първата снимка:

Ние получи хеша на втората снимка:

Ние се получи Хеминг разстояние между двете изображения:

Ние сме направили почти цялата възможна манипулация на една и съща снимка, за да се провери - какви промени се намесва открие два екземпляра през pHash, и какво - не.
Например, ако огледален образ - картината остава неразпозната.
Но можете да играете с цветове, колкото е необходимо - резултата от сравнението не е засегната.
Какво може да се каже за манипулация от RGB-канали, отново, Джон не позна. въпреки че разстоянието на Хеминг за този случай е много по-малък.

Други резултати са както следва:

Да не се намесва (Hamming разстояние = 0)

Намесва (Hamming разстояние - в скоби)

Промяна на цветовете и яснотата

* Това зависи от площта на kropnutyh. При рязане на рамката на картината в малък брой пиксели дебели, разстоянието на Хаминг ще бъде нула, така че сходството - 100%. Но осезаем реколта - колкото по-голям - толкова по-малък шанс за намиране на дубликат. Търсенето на дубликати kropnutyh чрез възприятие хешове може да се прочете тук.

** същото като с култура. Когато завъртите няколко градуса малко, но по-голям е ъгълът на наклона - по-голяма е разликата.

  1. За сравнение на изображения с помощта на ImageMagick. и за търсене на напълно идентична - чрез сравняване на хеш.
  2. Да се ​​намери леко модифицирани образи - използвайте библиотека libpuzzle.
  3. Сравнете над сетивната хашиш - един от най-надеждните, можем да се опитаме тук.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!