Перейти к публикации

Поиск одинаковых или похожих изображений


Рекомендованные сообщения

Через доп. поле формата изображение гружу картинки на сервер, но уже не помню какие картинки грузил, а какие нет. Есть ли какое платное или бесплатное решение чтобы, допустим при загрузке фото через доп поле шла проверка по похожести изображения? Подскажите пожалуйста, очень нужно. Готов рассмотреть любой вариант.

Ссылка на сообщение
Поделиться на других сайтах
  15.01.2020 в 04:53, stas84 сказал:

Мне кажется вы усложняете задачу. ImageMagick

 

Расширить  

Он не усложняет, он бабок хочет. Что ты хочешь от профессионального флудера

Ссылка на сообщение
Поделиться на других сайтах

Есть несколько разных вариантов https://habr.com/ru/company/io/blog/259549/ но все требует именно написания персонального плагина и установки на сервер доп. по. Готового вы вряд ли найдете, такие вещи как правило только на заказ делаются под конкретный проект.

Ссылка на сообщение
Поделиться на других сайтах
<!DOCTYPE html>
<?php
		
	$im1 = new Imagick('1.jpg');
	$im2 = new Imagick('2.jpg');

	$res = $im1->compareImages($im2, Imagick::METRIC_MEANSQUAREERROR);
	$d = round($res[1]*1000); // приводим значение разности к удобному виду

	echo $d;
	
?>

Я поставил imagick и выполнил этот код, он сравнивает две картинки, похоже работает. Теперь вопрос, кто сможет написать модуль, который будет искать похожие картинки по базе или при добавлении сравнивать каждый раз. При добавлении новой новости я так понимаю сравнение может быть долгим если много картинок, так что возможно лучшее решение что-то типа обслуживания базы.

Изменено пользователем stas84
Ссылка на сообщение
Поделиться на других сайтах
  15.01.2020 в 05:55, stas84 сказал:

Теперь вопрос, кто сможет написать модуль, который будет искать похожие картинки по базе или при добавлении сравнивать каждый раз.

Расширить  

Картинки не в базе. Это файлы. Перебирать каждый раз все файлы, ваш сервер ляжет как бобик и сдо... Вам не подойдет этот вариант. Я бы вам рекомендовал смотреть в сторону libpuzzle и при загрузке делать подпись сохранять подписи в базе, а потом по базе делать сравнение уже расхождение в подписях. Тоже неплохо по нагрузке получится, но уже лучше.

Ссылка на сообщение
Поделиться на других сайтах
  15.01.2020 в 06:04, celsoft сказал:

при загрузке делать подпись сохранять подписи в базе, а потом по базе делать сравнение уже расхождение в подписях.

Расширить  

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

Ссылка на сообщение
Поделиться на других сайтах

А нельзя сделать задержку при сканировании всех изображений чтобы не повесить сервер? Если это будет как модуль в админке, то запустил его и всё, ждешь когда он закончит искать похожие картинки. С md5 тоже думал, но не совсем понимаю как оно пойдет, ведь картинки в основном тянуться с интернета и они могут иметь разный md5 например если размер картинки был изменен. Вариант с md5 хорош если имеется своя какая-то постоянная коллекция картинок.

Изменено пользователем stas84
Ссылка на сообщение
Поделиться на других сайтах

я делал такой модуль для одного сайта обои на рабочий стол. реализовал через phash https://habr.com/ru/post/120562/

скорость примерно 0.1 - 0.3сек . картинок около 5000

Ссылка на сообщение
Поделиться на других сайтах
  15.01.2020 в 07:50, stas84 сказал:

А нельзя сделать задержку при сканировании всех изображений чтобы не повесить сервер?

Расширить  

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

Ссылка на сообщение
Поделиться на других сайтах
  15.01.2020 в 05:10, alex32 сказал:

Он не усложняет, он бабок хочет. Что ты хочешь от профессионального флудера

Расширить  

Не преувеличивайте всё таки, главный флудераст форума тут явно вы.

  15.01.2020 в 05:50, celsoft сказал:

Есть несколько разных вариантов https://habr.com/ru/company/io/blog/259549/ но все требует именно написания персонального плагина и установки на сервер доп. по. Готового вы вряд ли найдете, такие вещи как правило только на заказ делаются под конкретный проект.

Расширить  

Ещё это потребует глубокой переделки структуры хранения изображений в DLE (для тех же хэшей), что в будущем будет вызывать много дискомфорта по переписыванию кода под новые версии, в которых наверника будет что то добавлятся и менятся в структуре данных касательно изображений. Из коробки пора бы уже сделать хранение изображений на стораджах + проверку дубликатов и не хранить одно и тоже по 1*N раз.

 

  15.01.2020 в 05:55, stas84 сказал:
<!DOCTYPE html>
<?php
		
	$im1 = new Imagick('1.jpg');
	$im2 = new Imagick('2.jpg');

	$res = $im1->compareImages($im2, Imagick::METRIC_MEANSQUAREERROR);
	$d = round($res[1]*1000); // приводим значение разности к удобному виду

	echo $d;
	
?>

Я поставил imagick и выполнил этот код, он сравнивает две картинки, похоже работает. Теперь вопрос, кто сможет написать модуль, который будет искать похожие картинки по базе или при добавлении сравнивать каждый раз. При добавлении новой новости я так понимаю сравнение может быть долгим если много картинок, так что возможно лучшее решение что-то типа обслуживания базы.

Расширить  

Вы уверены что вам подойдёт автоматический анализ?
Как правило он вам может и подпоритить вполне нормальные изображения, которые похожи, но не то же самое.
Лучше уж делать ставку на полные дубликаты, это и в реализации проще.

  15.01.2020 в 07:45, MSK сказал:

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

Расширить  

Но не md5, а что то более уникальное, что бы уменьшить вероятность коллизий.

 

  15.01.2020 в 07:50, stas84 сказал:

А нельзя сделать задержку при сканировании всех изображений чтобы не повесить сервер? Если это будет как модуль в админке, то запустил его и всё, ждешь когда он закончит искать похожие картинки. С md5 тоже думал, но не совсем понимаю как оно пойдет, ведь картинки в основном тянуться с интернета и они могут иметь разный md5 например если размер картинки был изменен. Вариант с md5 хорош если имеется своя какая-то постоянная коллекция картинок.

Расширить  

В архитектуре DLE вам так и так будет сложно это сделать, т.к. у DLE изображения в самих новостях привязываются по путям к изображениями, а не по условному ID записи в БД, что заставит вас во первых менять логику загрузчика, во вторых добавлять те же хэши в _images, и уже при загрузке проходиться по таблице _images в поисках дубликата, но это всё равно не решает проблему, когда изображение будет удалятся из первой новости, но при этом используясь в других новостях, для обхода этого уже по сути нужно садится и городить ещё большие костыли, или переписывать всю систему хранения изображений, что впринципе представляется сомнительной затеей.

  15.01.2020 в 13:42, MSK сказал:

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

Расширить  

Можно перефразировать, при объёмах изображений не равных десяткам и сотням террабайтов, это вообще сомнительная затея.

Ссылка на сообщение
Поделиться на других сайтах
  16.01.2020 в 01:43, mr. Freeman сказал:

Не преувеличивайте всё таки, главный флудераст форума тут явно вы.

  15.01.2020 в 05:50, celsoft сказал:
Расширить  

Да нет дружок, по флуды ты явно рекорд побил. На форуме всего ничего, а нафлудил уже на пару лет вперед

Ссылка на сообщение
Поделиться на других сайтах
  16.01.2020 в 02:14, alex32 сказал:
 

Да нет дружок, по флуды ты явно рекорд побил. На форуме всего ничего, а нафлудил уже на пару лет вперед

Расширить  

Вот тут можно посмотреть ваш бесполезный флуд: https://forum.dle-news.ru/profile/71164-alex32/content/?type=forums_topic_post&change_section=1

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

Ссылка на сообщение
Поделиться на других сайтах
  16.01.2020 в 02:34, mr. Freeman сказал:

Чуть ли не большая часть бесполезный копипаст или ещё чего, так что уже можете успокоить свою пятую точку, тем более что по мимо флуда были и оскорбления, и мат, и чего только не было

Расширить  

Обтекай :)

Ссылка на сообщение
Поделиться на других сайтах
  16.01.2020 в 01:43, mr. Freeman сказал:

Ещё это потребует глубокой переделки структуры хранения изображений в DLE (для тех же хэшей), что в будущем будет вызывать много дискомфорта по переписыванию кода под новые версии, в которых наверника будет что то добавлятся и менятся в структуре данных касательно изображений. Из коробки пора бы уже сделать хранение изображений на стораджах + проверку дубликатов и не хранить одно и тоже по 1*N раз.

Расширить  

В принципе не соответствует действительности. Причем здесь хранение информации о картинках в DLE. Для хешей создается отдельная таблица, никак не привязанная к структуре DLE, где хранится хеш и id новости. Все. Не нужно лезть туда куда не следует и нет надобности, а именно в таблицы DLE и в структуру хранения картинок DLE, эта задача этого не требует в принципе.

 

Если писать правильно, то работать будет на любой версии DLE и всегда. В дистрибутиве этого не будет, потому как задача специфическая и требует специфического серверного ПО. 

Ссылка на сообщение
Поделиться на других сайтах
  16.01.2020 в 10:29, celsoft сказал:

В принципе не соответствует действительности. Причем здесь хранение информации о картинках в DLE. Для хешей создается отдельная таблица, никак не привязанная к структуре DLE, где хранится хеш и id новости. Все. Не нужно лезть туда куда не следует и нет надобности, а именно в таблицы DLE и в структуру хранения картинок DLE, эта задача этого не требует в принципе.

 

Если писать правильно, то работать будет на любой версии DLE и всегда. В дистрибутиве этого не будет, потому как задача специфическая и требует специфического серверного ПО. 

Расширить  

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

Ссылка на сообщение
Поделиться на других сайтах
  16.01.2020 в 14:12, mr. Freeman сказал:

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

Расширить  

Использовать имя картинки в этой же таблице где и хеш и id религия не позволяет? Зачем лезть в структуру DLE? Высасываете проблему там где ее нет, либо не видите в голове полной картины построения структуры модуля.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...