リバース イメージ検索は、サンプル画像に基づいて視覚的に類似した画像を検索するのに役立つ技術です。リバース イメージ検索エンジンを適用するユースケースは多数考えられます。最も一般的なユースケースは次のとおりです。

  • 重複した画像を検索し、重複を削除します
  • コンテンツに類似した画像を検索
  • 不適切なコンテンツを検索する
  • デジタル署名された画像を検索する

逆画像検索 API

逆画像検索技術に基づく画像検索用のアプリケーションは数多くあります。ただし、逆画像検索用の REST API ソリューションをお探しの場合は、適切な場所にたどり着いたことになります。Aspose.Imaging Cloud は、開発者があらゆるプラットフォーム上のアプリケーションに逆画像検索機能をシームレスに追加できるようにする強力な検索エンジンを提供します。少なくとも 1 つの画像を含むソース画像セットを他の複数の画像と比較します。この比較の結果、次の条件に従って最も類似した画像のリストが得られます。

  • 類似度
  • 類似性の最小閾値
  • 比較アルゴリズム

現在、Aspose.Imaging Cloud 検索エンジンは、コンテンツベースの画像検索、重複画像検索、カスタム登録タグによる画像検索、画像の比較と類似性の検出、画像の特徴の抽出操作をサポートしています。

ここでは、Aspose.Imaging Cloud REST API を使用して重複画像を検索する機能の概要を簡単に説明します。ただし、機能の完全なリストと詳細については、Aspose.Imaging Cloud ドキュメント を確認してください。

重複した画像を見つけるにはどうすればいいですか?

重複画像の検出は、リバース画像検索エンジンの最も一般的な用途です。多くのお客様は、類似の写真画像を見つけて 1 枚または数枚のショットを残し、残りのショットを削除することで、写真ライブラリを整理する必要があります。

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 の次の便利なリソースを参照できます。

関連リンク

詳細については、次のリンクにアクセスすることをお勧めします。