反向图像搜索是一种帮助您根据样本图像搜索视觉上相似的图像的技术。反向图像搜索引擎可能有很多用例。最常见的用例如下:

  • 搜索重复的图片并删除重复的图片
  • 搜索内容相似的图片
  • 搜索不适当的内容
  • 搜索数字签名的图像

反向图像搜索 API

有许多应用程序可用于基于反向图像搜索技术的图像搜索。但是,如果您正在寻找用于反向图像搜索的 REST API 解决方案,那么您来对地方了。Aspose.Imaging Cloud 提供了一个强大的搜索引擎,可帮助开发人员在任何平台上无缝地在其应用程序中添加反向图像搜索功能。它将包含至少一个图像的源图像集与其他几个图像进行比较。通过此比较,您可以根据以下条件获得最相似图像的列表:

  • 相似度
  • 相似度的最小阈值
  • 比较算法

目前,Aspose.Imaging Cloud搜索引擎支持基于内容的图像搜索、重复图像搜索、通过自定义注册标签的图像搜索、图像比较和相似性检测以及图像特征提取操作。

在这里,我们将为您简要介绍使用 Aspose.Imaging Cloud REST API 查找重复图像的功能。不过,您可以查看 Aspose.Imaging Cloud 文档 以获取完整的功能列表及其详细信息。

如何查找重复的图像?

重复图片检测,这是反向图片搜索引擎最常见的用途。许多客户需要整理他们的照片库,找到相似的照片图片,留下一张或几张照片,删除剩余的照片。

我们将向您展示如何使用 Aspose.Imaging Cloud API 轻松找到重复图像。我们在示例中使用 AKAZE 算法进行特征检测,使用 RandomBinaryTree 算法进行特征匹配。我们将按照以下步骤查找重复图像:

  • 将源图像上传到存储
  • 创建搜索上下文
  • 提取图像特征
  • 查找重复的图像

将图像上传到存储

// 将输入图像上传到 Cloud Storage
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 的以下有用资源。

相关链接

我们建议您访问以下链接以了解更多信息: