Tìm kiếm hình ảnh ngược là một kỹ thuật giúp bạn tìm kiếm hình ảnh tương tự về mặt hình ảnh dựa trên hình ảnh mẫu của bạn. Có thể có rất nhiều trường hợp sử dụng để áp dụng công cụ tìm kiếm hình ảnh ngược. Các trường hợp sử dụng phổ biến nhất là:

  • Tìm kiếm hình ảnh trùng lặp và xóa các hình ảnh trùng lặp
  • Tìm kiếm nội dung hình ảnh tương tự
  • Tìm kiếm nội dung không phù hợp
  • Tìm kiếm hình ảnh có chữ ký số

API tìm kiếm hình ảnh ngược

Có nhiều ứng dụng có sẵn để tìm kiếm hình ảnh dựa trên các kỹ thuật tìm kiếm hình ảnh ngược. Tuy nhiên, nếu bạn đang tìm kiếm giải pháp REST API cho tìm kiếm hình ảnh ngược, thì bạn đã đến đúng nơi rồi. Aspose.Imaging Cloud cung cấp một công cụ tìm kiếm mạnh mẽ giúp các nhà phát triển thêm các tính năng tìm kiếm hình ảnh ngược vào ứng dụng của họ trên bất kỳ nền tảng nào một cách liền mạch. Nó so sánh bộ hình ảnh nguồn, chứa ít nhất một hình ảnh, với một số hình ảnh khác. Kết quả của phép so sánh này, bạn sẽ nhận được danh sách các hình ảnh giống nhau nhất theo các điều kiện sau:

  • Mức độ tương đồng
  • Ngưỡng tương đồng tối thiểu
  • Thuật toán so sánh

Hiện tại, công cụ tìm kiếm Aspose.Imaging Cloud hỗ trợ tìm kiếm hình ảnh dựa trên nội dung, tìm kiếm hình ảnh trùng lặp, tìm kiếm hình ảnh theo thẻ đã đăng ký tùy chỉnh, so sánh hình ảnh và phát hiện điểm tương đồng, cũng như các hoạt động trích xuất tính năng hình ảnh.

Tại đây, chúng tôi sẽ cung cấp cho bạn tổng quan nhanh về tính năng tìm hình ảnh trùng lặp bằng Aspose.Imaging Cloud REST API. Tuy nhiên, bạn có thể kiểm tra tài liệu Aspose.Imaging Cloud để biết danh sách đầy đủ các tính năng và thông tin chi tiết của chúng.

Làm thế nào để tìm hình ảnh trùng lặp?

Phát hiện hình ảnh trùng lặp, đây là cách sử dụng phổ biến nhất của công cụ tìm kiếm hình ảnh ngược. Nhiều khách hàng cần sắp xếp thư viện ảnh của mình bằng cách tìm những hình ảnh tương tự và để lại một hoặc nhiều bức ảnh trong khi xóa những bức còn lại.

Chúng tôi sẽ chỉ cho bạn cách dễ dàng tìm thấy hình ảnh trùng lặp bằng cách sử dụng Aspose.Imaging Cloud API. Chúng tôi đang sử dụng thuật toán AKAZE để phát hiện các tính năng và thuật toán RandomBinaryTree để khớp tính năng trong ví dụ. Chúng tôi sẽ làm theo các bước sau để tìm hình ảnh trùng lặp:

  • Tải hình ảnh nguồn lên bộ nhớ
  • Tạo ngữ cảnh tìm kiếm
  • Trích xuất các tính năng hình ảnh
  • Tìm hình ảnh trùng lặp

Tải hình ảnh lên bộ nhớ

// Tải hình ảnh đầu vào lên Cloud Storage
DirectoryInfo dir = new DirectoryInfo(PathToDataFiles);
FileInfo[] images = dir.GetFiles();
foreach (FileInfo image in images)
{
	// Tải hình ảnh cục bộ lên Cloud Storage
	using (FileStream localInputImage = System.IO.File.OpenRead(image.FullName))
	{
		var uploadFileRequest = new UploadFileRequest(image.Name, localInputImage);
		FilesUploadResult result = imagingApi.UploadFile(uploadFileRequest);
	}
	
}

Tạo ngữ cảnh tìm kiếm

// Tạo ngữ cảnh tìm kiếm mới
 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;
}

Trích xuất các tính năng hình ảnh

// trích xuất hình ảnh tính năng
foreach (FileInfo image in images)
	{               
	   CreateImageFeatures(image.Name, false, searchContextId);
    }
	
////////////////////

// Trích xuất các tính năng của hình ảnh và thêm chúng vào ngữ cảnh tìm kiếm.
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);
}

Tìm hình ảnh trùng lặp

// Tìm hình ảnh trùng lặp
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);

// quá trình sao chép kết quả tìm kiếm
foreach (var duplicates in imageDuplicatesSet.Duplicates)
{
	Console.WriteLine("Duplicates:");
	foreach (var duplicate in duplicates.DuplicateImages)
	{
		Console.WriteLine(
		   $"ImageName: {duplicate.ImageId}, Similarity: {duplicate.Similarity}");
	}

Phần kết luận

Trong bài đăng này, chúng ta đã tìm hiểu về khả năng của Aspose.Imaging Cloud để phát hiện hình ảnh trùng lặp. Chúng ta đã xem các mẫu mã và thông tin chi tiết về cách triển khai tính năng này trong ứng dụng của bạn. Trong khi đó, nếu bạn có thắc mắc hoặc cần hỗ trợ thêm, vui lòng gửi cho chúng tôi bình luận bên dưới hoặc đăng câu hỏi trong diễn đàn hỗ trợ miễn phí. Điều này giúp chúng tôi liên tục cải thiện và tinh chỉnh API của mình.

Để tìm hiểu thêm về Aspose.Imaging Cloud bằng bản dùng thử miễn phí, tất cả những gì bạn cần là đăng ký với aspose.cloud. Sau khi đăng ký, bạn có thể xem qua các tài nguyên hữu ích sau của Aspose.Imaging Cloud.

Liên kết liên quan

Chúng tôi khuyên bạn nên truy cập vào các liên kết sau để tìm hiểu thêm về: