反向影像搜尋是一種可協助您根據範例影像搜尋視覺上相似的影像的技術。應用反向圖像搜尋引擎可能有很多用例。最常見的用例如下:

  • 搜尋重複圖像並刪除重複項
  • 搜尋內容相似的圖像
  • 搜尋不當內容
  • 搜尋數位簽名影像

反向影像搜尋API

有許多應用程式可用於基於反向影像搜尋技術的影像搜尋。但是,如果您正在尋找用於反向圖像搜尋的 REST API 解決方案,那麼您來對地方了。 Aspose.Imaging Cloud提供了強大的搜尋引擎,可以幫助開發人員在任何平台上的應用程式中無縫添加反向圖像搜尋功能。它將至少包含一幅影像的來源影像集與多幅其他影像進行比較。作為比較的結果,您將根據以下條件獲得最相似圖像的清單:

  • 相似度
  • 相似度的最小閾值
  • 比較演算法

目前,Aspose.Imaging Cloud搜尋引擎支援基於內容的圖像搜尋、重複圖像搜尋、透過自訂註冊標籤進行圖像搜尋、圖像比較和相似性檢測以及圖像特徵提取操作。

在這裡,我們將向您快速概述使用 Aspose.Imaging Cloud REST API 尋找重複圖像的功能。但是,您可以查看 Aspose.Imaging Cloud 文件 以取得完整的功能清單及其詳細資訊。

如何找到重複圖像?

重複影像偵測,這是反向影像搜尋引擎最常見的用途。許多客戶需要整理自己的照片庫,找到相似的照片影像,留下一張或多張照片,同時刪除剩餘的照片。

我們將向您展示如何使用 Aspose.Imaging Cloud API 輕鬆找到重複圖像。在範例中,我們使用 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 的以下有用資源。

相關連結

我們建議訪問以下連結以了解更多資訊: