¡Bienvenido/a al "Eliminador de Imágenes Duplicadas"!
Este programa está diseñado para ayudarte a detectar y eliminar imágenes duplicadas en una carpeta específica. Si tienes una colección de imágenes y sospechas que hay duplicados que ocupan espacio innecesario, este programa te facilitará el proceso de limpieza.
El "Eliminador de Imágenes Duplicadas" utiliza un algoritmo basado en el puntaje de similitud SSIM (Structural Similarity Index Measure). El algoritmo compara cada par de imágenes en la carpeta y calcula su puntaje de similitud. Si el puntaje supera un umbral establecido, se identifica la imagen como duplicada y se elimina automáticamente.
Puedes ajustar el umbral de similitud según tus preferencias. Un valor más alto eliminará solo las imágenes muy similares, mientras que un valor más bajo eliminará incluso imágenes con menor similitud. El programa te proporcionará información sobre el número total de imágenes duplicadas eliminadas, lo que te ayudará a mantener tu colección de imágenes ordenada y libre de duplicados.
Para utilizar el programa, simplemente especifica la ruta de la carpeta que contiene las imágenes y ejecuta el código. El "Eliminador de Imágenes Duplicadas" hará el resto por ti.
¡Disfruta de una carpeta de imágenes más limpia y organizada con el "Eliminador de Imágenes Duplicadas"!
La idea principal detrás del "Eliminador de Imágenes Duplicadas" es proporcionarte una forma sencilla y automática de descartar imágenes que aporten poco valor a tu conjunto de datos. En muchos casos, al trabajar con grandes conjuntos de datos de imágenes, es común encontrar duplicados que ocupan espacio innecesario y dificultan el análisis y procesamiento posterior.
Este programa te permite ahorrar tiempo y esfuerzo al automatizar el proceso de identificar y eliminar imágenes duplicadas. Al establecer un umbral de similitud, puedes ajustar la sensibilidad del algoritmo y decidir qué nivel de similitud considerar como duplicado. Esto te brinda la flexibilidad de adaptar el programa a tus necesidades específicas.
Imagina que estás trabajando en un proyecto de visión por computadora y tienes un amplio conjunto de datos de imágenes. Es posible que algunas imágenes se repitan debido a descargas múltiples o copias de seguridad. Utilizando el "Eliminador de Imágenes Duplicadas", puedes eliminar fácilmente esas duplicaciones y reducir el tamaño de tu conjunto de datos, mejorando la eficiencia del procesamiento y evitando resultados sesgados.
Además, el programa es capaz de manejar grandes conjuntos de datos sin problemas. Puedes aplicarlo a carpetas con cientos o incluso miles de imágenes, lo que te permite limpiar y organizar rápidamente tu colección de datos.
~~~~~~~~
import os
from skimage import io
from skimage.metrics import structural_similarity as ssim
def calculate_similarity_score(image1, image2):
# Calcular el puntaje de similitud SSIM entre dos imágenes
score = ssim(image1, image2, multichannel=True)
return score
def remove_duplicate_images(folder_path, similarity_threshold):
image_files = os.listdir(folder_path)
num_images = len(image_files)
num_duplicates = 0 # Contador de imágenes duplicadas eliminadas
duplicate_files = [] # Lista de nombres de archivo de imágenes duplicadas
for i in range(num_images):
image1 = io.imread(os.path.join(folder_path, image_files[i]))
for j in range(i + 1, num_images):
image2 = io.imread(os.path.join(folder_path, image_files[j]))
similarity_score = calculate_similarity_score(image1, image2)
if similarity_score > similarity_threshold:
# Agregar el nombre de archivo de la imagen duplicada a la lista
duplicate_files.append(image_files[j])
# Eliminar las imágenes duplicadas
for file_name in duplicate_files:
file_path = os.path.join(folder_path, file_name)
if os.path.exists(file_path):
os.remove(file_path)
num_duplicates += 1
print(f"Número total de imágenes duplicadas eliminadas: {num_duplicates}")
# Ruta de la carpeta que contiene las imágenes
EeveelutionsCollection = "Copia" #@param {type:"string"}
folder_path = f"/content/drive/MyDrive/Dataset/{EeveelutionsCollection}"
similarity_threshold = 0.9 #@param {type:"slider", min:0.0, max:1.0, step:0.01}
#Umbral de similitud para considerar una imagen como duplicada
remove_duplicate_images(folder_path, similarity_threshold)
~~~~
Este código es un programa que busca imágenes duplicadas en una carpeta y las elimina utilizando el cálculo del puntaje de similitud estructural (SSIM). Aquí está una explicación de las partes clave del código:
import os
: Esta línea importa el móduloos
, que proporciona funciones para interactuar con el sistema operativo, como acceder a archivos y directorios.from skimage import io
: Esto importa el móduloio
de la bibliotecascikit-image
, que se utiliza para leer imágenes.from skimage.metrics import structural_similarity as ssim
: Esto importa la funciónstructural_similarity
de la bibliotecascikit-image.metrics
y se le asigna el aliasssim
.calculate_similarity_score(image1, image2)
: Esta es una función que toma dos imágenes como entrada y calcula el puntaje de similitud estructural (SSIM) entre ellas utilizando la funciónssim
importada anteriormente. El puntaje de similitud SSIM se utiliza para medir la similitud entre dos imágenes.remove_duplicate_images(folder_path, similarity_threshold)
: Esta es la función principal del programa. Toma la ruta de la carpeta que contiene las imágenes y un umbral de similitud como entrada. La función busca imágenes duplicadas en la carpeta utilizando un enfoque de comparación de pares. Compara cada par de imágenes y si el puntaje de similitud SSIM entre ellas es mayor que el umbral establecido, se considera que son duplicadas y se agregan a una lista de nombres de archivo de imágenes duplicadas.Luego, el programa itera sobre la lista de nombres de archivo de imágenes duplicadas y verifica si cada archivo aún existe en la ruta especificada. Si existe, el archivo se elimina utilizando la función
os.remove()
y se actualiza el contador de imágenes duplicadas eliminadas.Finalmente, se muestra en pantalla el número total de imágenes duplicadas eliminadas.
Las últimas líneas del código establecen la ruta de la carpeta que contiene las imágenes y el umbral de similitud deseado. Luego, llaman a la función
remove_duplicate_images()
con estos parámetros para iniciar el proceso de eliminación de imágenes duplicadas.
Al utilizar este código, hay algunas consideraciones y posibles errores a tener en cuenta:
Formatos de imagen compatibles: El código está diseñado para funcionar con imágenes en formato soportado por la biblioteca
scikit-image
, como JPEG y PNG. Si intentas utilizar imágenes en otros formatos no compatibles, es posible que se produzcan errores.Ruta de la carpeta y nombres de archivo: Asegúrate de proporcionar la ruta correcta de la carpeta que contiene las imágenes en la variable
folder_path
. También verifica que los nombres de archivo de las imágenes sean correctos y coincidan con los nombres reales en la carpeta. Si hay discrepancias, es probable que se produzcan errores relacionados con la falta de archivos o directorios.Permisos de escritura: El programa intenta eliminar las imágenes duplicadas utilizando la función
os.remove()
. Asegúrate de tener los permisos adecuados para escribir en la carpeta y eliminar archivos. Si no tienes los permisos necesarios, es posible que se produzca un error de permisos denegados al intentar eliminar archivos.Umbral de similitud: El umbral de similitud
similarity_threshold
determina cuándo se considera que dos imágenes son duplicadas. Ajusta este valor según tus necesidades y el grado de similitud que deseas detectar. Si el umbral es demasiado bajo, es posible que algunas imágenes duplicadas no sean detectadas. Si el umbral es demasiado alto, es posible que se eliminen imágenes que no son duplicadas.Rendimiento: Dependiendo del número de imágenes en la carpeta y la complejidad de los cálculos de similitud, el proceso de eliminación de imágenes duplicadas puede llevar tiempo. Si tienes una gran cantidad de imágenes, el tiempo de ejecución puede ser considerable. Ten en cuenta este aspecto y sé paciente durante la ejecución del programa.
Respaldo de imágenes: Antes de ejecutar el programa y eliminar las imágenes duplicadas, asegúrate de tener un respaldo de seguridad de las imágenes originales. Esto te permitirá revertir cualquier eliminación no deseada o errores que puedan ocurrir durante la ejecución del programa.
Si tienes en cuenta estas consideraciones y verificas los aspectos mencionados, deberías poder utilizar el código de manera efectiva para detectar y eliminar imágenes duplicadas en una carpeta.
Abrir en Gith
Abrir en Colab
Financial assistance: Hello everyone!
This is Tomas Agilar speaking, and I'm thrilled to have the opportunity to share my work and passion with all of you. If you enjoy what I do and would like to support me, there are a few ways you can do so:
Ko-fi (Dead)