Быстрый поиск дубликатов изображений через OpenCVC#

Место общения программистов C#
Ответить
Anonymous
 Быстрый поиск дубликатов изображений через OpenCV

Сообщение Anonymous »

Я пытаюсь добавить способ хранения и поиска повторяющихся изображений в MongoDB через C#. У меня есть приложение, которое позволяет пользователям создавать изображения и сохранять их на моем веб-сайте. Я храню их в MongoDB и теперь хочу найти дубликаты, но из-за количества изображений не могу просто сверить новые с другими. Я хочу иметь несколько индексов и флагов, чтобы быстро находить возможные дубликаты, а затем полностью их проверять. Я использую библиотеку OpenCV, чтобы найти дескрипторы изображений и сохранить их, чтобы после этого я мог легко проверить их на новые. Что я могу использовать в качестве флагов или индекса, чтобы не выполнять поиск по всей базе данных? Есть ли быстрый способ? Это пример моего кода, который позволяет мне находить дескрипторы:

Код: Выделить всё

Mat img1 = Cv2.ImRead("somepic", ImreadModes.Grayscale);
var orb = ORB.Create();
KeyPoint[] keyPoints;
Mat descriptors = new Mat();
orb.DetectAndCompute(img1, null, out keyPoints, descriptors);
Приведен пример сравнения двух изображений по их дескрипторам (левое исходное и правое обрезанное). Так что этот метод работает. Но как это сделать быстро на миллионах картинок?
сравнивая изображения
Я слышал, что можно разделить дескрипторы на 4-8 частей и использовать их как индексы, но нет никакой гарантии, что я найду возможный дубликат. Я тоже слышал о k-средних, но тоже не понимаю, как его использовать с дескрипторами. А может есть другой способ без машинного обучения?
P.S. Я попробовал PHash, но он ужасен для обрезанных фотографий.

Подробнее здесь: https://stackoverflow.com/questions/788 ... via-opencv
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»