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

  • Найдите дубликаты изображений и удалите их.
  • Поиск похожих изображений по содержанию
  • Поиск ненадлежащего контента
  • Поиск изображений с цифровой подписью

API обратного поиска изображений

Существует множество приложений для поиска изображений на основе методов обратного поиска изображений. Однако, если вы ищете решение REST API для обратного поиска изображений, то вы попали по адресу. Aspose.Imaging Cloud предоставляет мощную поисковую систему, которая помогает разработчикам легко добавлять функции обратного поиска изображений в свои приложения на любой платформе. Она сравнивает исходный набор изображений, содержащий хотя бы одно изображение, с несколькими другими изображениями. В результате этого сравнения вы получаете список наиболее похожих изображений в соответствии со следующими условиями:

  • Степень сходства
  • Минимальный порог сходства
  • Алгоритм сравнения

В настоящее время поисковая система Aspose.Imaging Cloud поддерживает поиск изображений по содержимому, поиск дубликатов изображений, поиск изображений по зарегистрированным тегам, сравнение изображений и обнаружение сходства, а также операции извлечения характеристик изображений.

Здесь мы дадим вам краткий обзор функции поиска дубликатов изображений с помощью Aspose.Imaging Cloud REST API. Однако вы можете проверить документацию Aspose.Imaging Cloud для полного списка функций и их подробностей.

Как найти повторяющиеся изображения?

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

Мы покажем вам, как легко можно найти дубликаты изображений с помощью API Aspose.Imaging Cloud. В этом примере мы используем алгоритм AKAZE для обнаружения признаков и алгоритм RandomBinaryTree для сопоставления признаков. Мы выполним следующие шаги для поиска дубликатов изображений:

  • Загрузить исходные изображения в хранилище
  • Создать контекст поиска
  • Извлечение особенностей изображения
  • Найти дубликаты изображений

Загрузить изображения в хранилище

// Загрузите входные изображения в облачное хранилище
DirectoryInfo dir = new DirectoryInfo(PathToDataFiles);
FileInfo[] images = dir.GetFiles();
foreach (FileInfo image in images)
{
	// Загрузить локальное изображение в облачное хранилище
	using (FileStream localInputImage = System.IO.File.OpenRead(image.FullName))
	{
		var uploadFileRequest = new UploadFileRequest(image.Name, localInputImage);
		FilesUploadResult result = imagingApi.UploadFile(uploadFileRequest);
	}
	
}

Создать контекст поиска

// Создать новый контекст поиска
 string searchContextId = CreateImageSearch();

////////////////

public static string CreateImageSearch()
{
	string detector = "akaze";
	string matchingAlgorithm = "randomBinaryTree";
	string folder = null; // File will be saved at the root of the storage
	string storage = null; // We are using default Cloud Storage

	CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
	SearchContextStatus status = imagingApi.CreateImageSearch(createSearchContextRequest);
	return status.Id;
}

Извлечение особенностей изображения

// извлечение изображений особенности
foreach (FileInfo image in images)
	{               
	   CreateImageFeatures(image.Name, false, searchContextId);
    }
	
/////////////////////

// Извлекайте характеристики изображений и добавляйте их в контекст поиска.
public static void CreateImageFeatures(string storageSourcePath, bool isFolder, string searchContextId)
{
	var request = isFolder
		   ? new CreateImageFeaturesRequest(searchContextId, imageId: null, imagesFolder: storageSourcePath, storage: null)
		   : new CreateImageFeaturesRequest(searchContextId, imageId: storageSourcePath, storage: null);
	imagingApi.CreateImageFeatures(request);
}

Найти дубликаты изображений

// Поиск дубликатов изображений
double? similarityThreshold = 80; // The similarity threshold
string folder = null; // Path to input files
string storage = null; // We are using default Cloud Storage

ImageDuplicatesSet imageDuplicatesSet = imagingApi.FindImageDuplicates(new FindImageDuplicatesRequest(searchContextId, similarityThreshold, folder, storage));
Console.WriteLine("Duplicates Set Count: " + imageDuplicatesSet.Duplicates.Count);

// процесс дублирует результаты поиска
foreach (var duplicates in imageDuplicatesSet.Duplicates)
{
	Console.WriteLine("Duplicates:");
	foreach (var duplicate in duplicates.DuplicateImages)
	{
		Console.WriteLine(
		   $"ImageName: {duplicate.ImageId}, Similarity: {duplicate.Similarity}");
	}

Заключение

В этой статье мы узнали о возможностях Aspose.Imaging Cloud для обнаружения дубликатов изображений. Мы рассмотрели примеры кода и подробности о том, как реализовать эту функцию в вашем приложении. Между тем, если у вас есть вопрос или вам нужна дополнительная помощь, пожалуйста, не стесняйтесь оставлять нам комментарии ниже или задавать вопросы на бесплатном форуме поддержки. Это помогает нам постоянно улучшать и совершенствовать наш API.

Чтобы узнать больше об Aspose.Imaging Cloud с помощью бесплатной пробной версии, вам нужно всего лишь зарегистрироваться в aspose.cloud. После регистрации вы сможете ознакомиться со следующими полезными ресурсами Aspose.Imaging Cloud.

Ссылки по теме

Мы рекомендуем посетить следующие ссылки, чтобы узнать больше о: