2012-03-13 4 views
7

Ho molte immagini (decine di migliaia) di immagini JPG piuttosto grandi. Ognuno è un'immagine di una scheda indice. Molti di questi sono bianchi, ma alcuni hanno colori standard per le carte indice (these colors).Come classificare automaticamente le immagini in base al colore dominante?

I colori corrispondono agli attributi dei dati, quindi mi piacerebbe classificare queste carte per colore. So che è possibile estrarre il colore dominante dalle immagini in un browser web usando un elemento canvas e un algoritmo come color thief, e funziona-mi dà un valore di rgb che è abbastanza per bin le carte.

Ma non riesco a vedere come ho potuto eseguire una cosa del genere attraverso un browser web su così tante immagini.

Mi chiedo se qualcuno possa consigliare uno strumento da riga di comando, forse un modulo Python o Ruby, che potrebbe fare qualcosa di simile.

risposta

3

Questo sembra sovrapporsi fortemente con this question.

Se fossi nella tua situazione, però, ci sono un paio di cose che proverei. Innanzitutto, è possibile ottenere una qualsiasi delle diverse librerie Python che possono funzionare: OpenCV, Mahotas, PIL o scikits.image possono probabilmente gestirle poiché è davvero necessario eliminare i valori RGB medi.

Scrivere uno script per caricare ciascuna immagine e aggiungere il suo valore RGB medio a un elenco. È quindi possibile utilizzare i metodi incorporati da scikits.learn per eseguire il meanshift o k-significa il clustering in questa grande lista di colori. Dato che probabilmente conosci quanti colori diversi ci sono, k-means è una buona scelta. In alternativa, se si conoscono già i valori RGB dei colori standard, quindi per ciascuna immagine caricata, basta calcolare il valore RGB medio, quindi "classificare" quell'immagine in base a qualsiasi colore standard, il vettore RGB è più vicino.