Что такое поиск по изображению?
Обратный поиск изображений — это технология, которая позволяет пользователям искать информацию, используя изображение в качестве поискового запроса вместо текста. В отличие от традиционных поисков на основе ключевых слов, обратный поиск изображений обрабатывает визуальный контент для нахождения совпадений, извлечения метаданных или предоставления контекста об изображении.
Этот метод стал незаменимым для таких задач, как определение происхождения изображения, проверка его подлинности, поиск аналогичного контента и обнаружение несанкционированного использования защищенного авторским правом материала. Обратный поиск изображений широко используется в различных областях, включая электронную коммерцию, журналистику, цифровую экспертизу и многое другое.
Как работает обратный поиск изображений?
В основе обратного поиска изображений лежит ключевая технология, называемая перцептивным хешированием. Этот подход генерирует уникальный "отпечаток пальца" для каждого изображения, который затем сравнивается с отпечатками других изображений для выявления схожестей. Вот как перцептивное хеширование работает в обратном поиске изображений:
-
Предобработка изображений: Перед генерацией хеша изображение предварительно обрабатывается для удаления ненужных деталей и стандартизации его формата. Обычно это включает изменение размера изображения до меньшего фиксированного размера и конвертацию в оттенки серого. Это обеспечивает последовательность процесса хеширования для всех изображений.
-
Извлечение признаков: Вместо анализа каждого отдельного пикселя, перцептивное хеширование фокусируется на высокоуровневых признаках изображения, таких как его общая структура, паттерны и распределение цветов. Эти признаки суммируются в более компактное представление, которое захватывает суть изображения, игнорируя незначительные вариации, такие как артефакты сжатия или незначительное обрезание.
-
Генерация хеша: Хеш — это строка фиксированной длины или бинарная последовательность, которая представляет характеристики изображения. Перцептивные хеши специально разработаны для того, чтобы гарантировать, что визуально похожие изображения создают почти идентичные хеши, даже если изображения были немного изменены (например, изменены в размере, повернуты или сжаты).
-
Сравнение хешей: Как только хеш для запрашиваемого изображения сгенерирован, он сравнивается с хешами, хранящимися в базе данных. Это сравнение использует техники, такие как расстояние Хэмминга, которое измеряет количество отличающихся битов между двумя хешами. Меньшая разница указывает на более высокое сходство между изображениями.
Путем сосредоточения на перцептивных характеристиках, этот метод позволяет двигателям поиска по изображениям сопоставлять не только идентичные изображения, но и те, которые претерпели незначительные изменения. Перцептивное хеширование является легким и эффективным подходом, который делает обратный поиск по изображениям практичным даже для крупных наборов данных.
Реализация обратного поиска изображений с помощью API GroupDocs.Search
API GroupDocs.Search предлагает универсальное и эффективное решение для реализации возможностей обратного поиска по изображениям в ваших приложениях. Используя его функции индексации и поиска изображений, вы можете создать систему для поиска изображений, хранящихся в документах или отдельных файлах. Вот пошаговое руководство по настройке обратного поиска по изображениям с использованием API GroupDocs.Search.
Шаг 1: Настройка окружения
Чтобы начать, включите библиотеку GroupDocs.Search в ваш проект. Вы можете сделать это, установив библиотеку через NuGet для проектов .NET. Просто выполните следующую команду в консоле диспетчера пакетов:
Install-Package GroupDocs.Search
Шаг 2: Индексация изображений
Чтобы включить обратный поиск по изображениям, вам нужно индексировать изображения из ваших папок документов. GroupDocs.Search позволяет индексировать отдельные изображения (например, .png
, .jpg
), а также изображения, встроенные в документы или контейнерные форматы, такие как .zip
. Ниже приведен пример того, как создать индекс и добавить документы для индексирования изображений:
string indexFolder = @"C:\MyIndex";
string documentFolder = @"C:\MyDocuments";
// Creating an index
Index index = new Index(indexFolder);
// Setting the image indexing options
IndexingOptions indexingOptions = new IndexingOptions();
indexingOptions.ImageIndexingOptions.EnabledForContainerItemImages = true;
indexingOptions.ImageIndexingOptions.EnabledForEmbeddedImages = true;
indexingOptions.ImageIndexingOptions.EnabledForSeparateImages = true;
// Indexing documents in a document folder
index.Add(documentFolder, indexingOptions);
Здесь параметры ImageIndexingOptions
включены, чтобы обеспечить индексацию всех изображений (независимо от того, являются ли они автономными, встроенными или из контейнеров).Это делает обратный поиск изображений всесторонним.
Шаг 3: Поиск связанных изображений
Как только изображения будут проиндексированы, вы сможете искать похожие изображения, предоставив изображение-образец в качестве запроса. Настройте поиск с помощью ImageSearchOptions
, чтобы контролировать такие аспекты, как допустимый уровень сходства (HashDifferences
), максимальное количество результатов для возврата и конкретные типы файлов для поиска. Вот как выглядит процесс поиска:
// Setting the image search options
ImageSearchOptions imageSearchOptions = new ImageSearchOptions();
imageSearchOptions.HashDifferences = 10;
imageSearchOptions.MaxResultCount = 100;
imageSearchOptions.SearchDocumentFilter =
SearchDocumentFilter.CreateFileExtension(".zip", ".png", ".jpg");
// Creating a reference image for search
SearchImage searchImage = SearchImage.Create(@"C:\MyDocuments\image0.png");
// Searching in the index
ImageSearchResult result = index.Search(searchImage, imageSearchOptions);
Процесс поиска генерирует хеш для эталонного изображения и сравнивает его с индексированными изображениями. Параметр HashDifferences
задает порог для сходства – чем меньше значение, тем строже соответствие.
Шаг 4: Обработка результатов поиска
Объект ImageSearchResult
содержит все изображения, которые соответствуют критериям поиска. Вы можете перебрать результаты, чтобы получить информацию о соответствующих изображениях, включая их местоположение или метаданные.
Console.WriteLine("Images found: " + result.ImageCount);
for (int i = 0; i < result.ImageCount; i++)
{
FoundImageFrame image = result.GetFoundImage(i);
Console.WriteLine(image.DocumentInfo.ToString());
}
Sample Output
Например, если выполнить обратный поиск по изображению с запросом, могут быть получены следующие результаты:
Images found: 2
C:\MyDocuments\image0.png
C:\MyDocuments\image193.png
Это означает, что в индексированных документах найдены два совпадающих или похожих изображения: оригинальное изображение запроса (image0.png
) и другой результат (image193.png
).
Шаг 5: Тонкая настройка системы
Чтобы оптимизировать ваш обратный поиск по изображению, вы можете настроить такие параметры, как:
- Хэш-различия: Более низкие значения увеличивают точность, но могут пропустить слегка измененные версии изображения.
- Фильтры поиска: Ограничьте поиски до определенных типов файлов или форматов документов.
- Структура индекса: Периодически обновляйте индекс, чтобы включить новые изображения или удалить устаревшие файлы.
Заключение
Обратный поиск по изображениям — это мощная технология с широким спектром применения в современных отраслях, от электронной коммерции до цифровой криминалистики. Используя такие инструменты, как API GroupDocs.Search, разработчики могут легко реализовать надежные системы поиска изображений, которые эффективно локализуют и сравнивают визуальные данные. С функциями, такими как индексация изображений, настраиваемые пороги схожести и поддержка встраиваемых или автономных изображений, этот API упрощает процесс создания гибких и точных решений для обратного поиска по изображениям. Будь то поиск дублирующихся изображений, проверка подлинности или открытие связанных материалов, внедрение этой функциональности является ценным шагом к улучшению пользовательского опыта и операционной эффективности.
Посмотрите на эти полезные ссылки для получения дополнительных деталей и ресурсов: