[A ver si a la enésima vez que mando el mensaje aparece en la lista...]

Está cojonudo el retrievr ese :-)

Yo hice una aplicación en Java que dada una cierta imagen de entrada, 
consultaba una base de datos y sacaba una lista con imágenes similares. 
En la base de datos lo que se guardaba era la imagen y su histograma de 
color, que era lo que se usaba para hacer la comparación. Si el 
histograma de color de la imagen de entrada difería menos de un % con el 
de la imagen de la base de datos, se daba como imagen similar.

Aunque parece complicado no lo es mucho, el histograma de color de una 
imagen se construye con una matriz de 3 dimensiones donde cada dimensión 
es un componente de color. Se va leyendo cada pixel de la imagen, se 
obtiene la componente R, G y B, y se incrementa la casilla 
correspondiente en 1:

histograma[r][g][b] += 1

Luego dados 2 histogramas de imágenes se calcula la distancia entre 
ellos y si es menor que un cierto umbral es un positivo.

Ciertas consideraciones a tener en cuenta:
- en la práctica trabajar con una matriz de 3 dimensiones donde cada 
dimensión puede ser un valor entre 0 y 255 es inabordable, para reducir 
este problema se discretiza el histograma en N tramos, por ejemplo 8, 
así la dimensión máxima de nuestro histograma será de 8x8x8. Así, los 
valores de rojo entre 0 y 32 se asignarán al tramo 1, entre 33 y 64 al 
tramo 2, etc. A mayor longitud del tramo mayor precisión a la hora de 
obtener resultados, pero se necesita mayor potencia de cálculo.
- es mejor normalizar el histograma, de forma que todas las componentes 
de la matriz sumen uno, de forma que así tenemos en cada casilla un % en 
lugar del número de píxeles de ese color. Esto es tan sencillo como 
sustituir

histograma[r][g][b] += 1
por
histograma[r][g][b] += 1/totalPixeles

Luego dado un color de entrada, como en retrievr, podemos descomponer el 
color en RGB y consultar los histogramas que tenemos en la base de 
datos, los que posean en esa casilla/tramo un % superior a un cierto 
umbral (que debemos fijar a base de pruebas) podremos darlo como positivo.

No he visto el código de retrievr y no sé si usan esta técnica (supongo 
que tendrán muchas más optimizaciones), pero como algoritmo de andar por 
casa éste puede servir, a ver si alguien se anima a hacerlo en Flash :-)

Ricardo Cabrera escribió:
> Hola a [EMAIL PROTECTED]
>
> Estoy haciendo una galería de imágenes que me gustaría incluirle un buscador 
> de imágenes por colores, algo como lo de flickr   
> http://krazydad.com/colrpickr/, que dado un color te devuelve las imágenes 
> con croma similar.
>
> Gracias por adelantado
>
> Repito el link de referencia:
> http://krazydad.com/colrpickr/
>
> Richard
>
>               
> ---------------------------------
>
> LLama Gratis a cualquier PC del Mundo.
> Llamadas a fijos y móviles desde 1 céntimo por minuto.
> http://es.voice.yahoo.com
> -----------------------------------------------------
> ASNativos
> www.5dms.com
> subscripciones/desubscripciones
> http://asnativos.5dms.com
> -----------------------------------------------------
>
>   

-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------

Responder a