2011-02-16 18 views
5

Tengo miles de imágenes y necesito eliminar las que no son fotografías, o de lo contrario 'interesantes'.Cómo identificar imágenes que no son fotográficas o "poco interesantes" usando Python Imaging Library (PIL)

Una imagen "poco interesante", por ejemplo, puede ser de un solo color, o la mayoría de un color, o un icono/logotipo simple.

La solución no tiene que ser perfecta, solo lo suficientemente buena para eliminar las imágenes menos interesantes.

Mi mejor idea hasta ahora es tomar una muestra aleatoria de píxeles, y luego ... hacer algo con ellos.

+1

Creo que el enfoque más simple es para comprobar el histograma de la imagen. – Tarantula

+0

Soy novato en material de imagen, ¿qué hago con el histograma? – Danphe

Respuesta

2

Danphe me ganó. Esto es mi método de cálculo de la entropía imagen:

import Image 
from math import log 

def get_histogram_dispersion(histogram): 
    log2 = lambda x:log(x)/log(2) 

    total = len(histogram) 
    counts = {} 
    for item in histogram: 
     counts.setdefault(item,0) 
     counts[item]+=1 

    ent = 0 
    for i in counts: 
     p = float(counts[i])/total 
     ent-=p*log2(p) 
    return -ent*log2(1/ent) 


im = Image.open('test.png') 
h = im.histogram() 
print get_histogram_dispersion(h) 
Cuestiones relacionadas