La búsqueda inversa de imágenes es una técnica que le ayuda a buscar imágenes visualmente similares basándose en su imagen de muestra. Puede haber muchos casos de uso para aplicar el motor de búsqueda inversa de imágenes. Los casos de uso más comunes son los siguientes:

  • Busque imágenes duplicadas y elimine los duplicados
  • Buscar contenido con imágenes similares
  • Buscar contenido inapropiado
  • Búsqueda de imágenes firmadas digitalmente

API de búsqueda inversa de imágenes

Hay muchas aplicaciones disponibles para la búsqueda de imágenes basadas en técnicas de búsqueda inversa de imágenes. Sin embargo, si está buscando una solución de API REST para la búsqueda inversa de imágenes, ha llegado al lugar correcto. Aspose.Imaging Cloud ofrece un potente motor de búsqueda que ayuda a los desarrolladores a agregar funciones de búsqueda inversa de imágenes en su aplicación en cualquier plataforma sin problemas. Compara el conjunto de imágenes de origen, que contiene al menos una imagen, con varias otras imágenes. Como resultado de esta comparación, obtiene una lista de las imágenes más similares según las siguientes condiciones:

  • Grado de similitud
  • El umbral mínimo de similitud
  • Algoritmo de comparación

Actualmente, el motor de búsqueda Aspose.Imaging Cloud admite la búsqueda de imágenes basada en contenido, la búsqueda de imágenes duplicadas, la búsqueda de imágenes mediante etiquetas registradas personalizadas, la comparación de imágenes y detección de similitudes y las operaciones de extracción de características de la imagen.

Aquí le brindaremos una descripción general rápida de la función para encontrar imágenes duplicadas mediante la API REST de Aspose.Imaging Cloud. Sin embargo, puede consultar la documentación de Aspose.Imaging Cloud para obtener una lista completa de funciones y sus detalles.

¿Cómo encontrar imágenes duplicadas?

Detección de imágenes duplicadas: este es el uso más común del motor de búsqueda inversa de imágenes. Muchos clientes necesitan ordenar sus bibliotecas de fotografías buscando imágenes fotográficas similares y dejando una o varias tomas mientras eliminan las restantes.

Le mostraremos lo fácil que es encontrar imágenes duplicadas con la API de Aspose.Imaging Cloud. En el ejemplo, utilizamos el algoritmo AKAZE para la detección de características y el algoritmo RandomBinaryTree para la comparación de características. Seguiremos estos pasos para encontrar las imágenes duplicadas:

  • Subir imágenes de origen al almacenamiento
  • Crear contexto de búsqueda
  • Extraer características de la imagen
  • Encuentra imágenes duplicadas

Subir imágenes al almacenamiento

// Subir imágenes de entrada al almacenamiento en la nube
DirectoryInfo dir = new DirectoryInfo(PathToDataFiles);
FileInfo[] images = dir.GetFiles();
foreach (FileInfo image in images)
{
	// Subir imagen local al almacenamiento en la nube
	using (FileStream localInputImage = System.IO.File.OpenRead(image.FullName))
	{
		var uploadFileRequest = new UploadFileRequest(image.Name, localInputImage);
		FilesUploadResult result = imagingApi.UploadFile(uploadFileRequest);
	}
	
}

Crear contexto de búsqueda

// Crear nuevo contexto de búsqueda
 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;
}

Extraer características de la imagen

// Extraer características de las imágenes
foreach (FileInfo image in images)
	{               
	   CreateImageFeatures(image.Name, false, searchContextId);
    }
	
/////////////////////

// Extrae características de las imágenes y agrégalas al contexto de búsqueda.
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);
}

Encuentra imágenes duplicadas

// Encontrar imágenes duplicadas
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);

// El proceso duplica los resultados de búsqueda
foreach (var duplicates in imageDuplicatesSet.Duplicates)
{
	Console.WriteLine("Duplicates:");
	foreach (var duplicate in duplicates.DuplicateImages)
	{
		Console.WriteLine(
		   $"ImageName: {duplicate.ImageId}, Similarity: {duplicate.Similarity}");
	}

Conclusión

En esta publicación, aprendimos sobre las capacidades de Aspose.Imaging Cloud para la detección de imágenes duplicadas. Vimos ejemplos de código y detalles sobre cómo implementar esta función en su aplicación. Mientras tanto, si tiene alguna pregunta o necesita más ayuda, no dude en dejarnos un comentario a continuación o publicar una pregunta en el foro de soporte gratuito. Esto nos ayuda a mejorar y refinar continuamente nuestra API.

Para obtener más información sobre Aspose.Imaging Cloud mediante una prueba gratuita, todo lo que necesita es registrarse en aspose.cloud. Una vez que se haya registrado, puede consultar los siguientes recursos útiles de Aspose.Imaging Cloud.

Enlaces relacionados

Te recomendamos visitar los siguientes enlaces para conocer más sobre: