2012-03-13 14 views
7

Tengo muchas imágenes (decenas de miles) de imágenes JPG bastante grandes. Cada una es una imagen de una tarjeta de índice. La mayoría de ellos son blancos, pero algunos tienen colores estándar de tarjeta de índice (these colors).¿Cómo clasificar automáticamente las imágenes por color dominante?

Los colores corresponden a los atributos de datos, por lo que me gustaría clasificar programáticamente estas tarjetas por color. Sé que es posible extraer el color dominante de las imágenes en un navegador web usando un elemento canvas y un algoritmo como color thief, y funciona; me da un valor rgb que es suficiente para almacenar las tarjetas.

Pero no veo cómo podría ejecutar una cosa así a través de un navegador web en tantas imágenes.

Me pregunto si alguien puede recomendar una herramienta de línea de comandos, tal vez un módulo de Python o Ruby, que podría hacer algo similar.

Respuesta

3

Esto parece coincidir fuertemente con this question.

Si estuviera en su situación, sin embargo, hay un par de cosas que probaría. En primer lugar, puede obtener cualquiera de las varias bibliotecas de Python que pueden funcionar: OpenCV, Mahotas, PIL, o scikits.image, todos pueden manejar esto, ya que solo necesita quitar los valores promedio de RGB.

Escriba una secuencia de comandos para cargar cada imagen y anexar su valor promedio RGB a una lista. A continuación, puede usar los métodos integrados desde scikits.learn para realizar clustering meanshift o k-means en esta gran lista de colores. Como es probable que sepa cuántos colores diferentes hay, k-means es una buena opción. Alternativamente, si ya conoce los valores RGB de los colores estándar, para cada imagen que cargue, simplemente calcule el valor promedio RGB, luego "clasifique" esa imagen de acuerdo con el color RGB estándar más cercano.

Cuestiones relacionadas