Estoy tratando de construir una utilidad como esta http://labs.ideeinc.com/multicolr, pero no sé qué algoritmo están usando, ¿Alguien sabe?Algoritmo de búsqueda de similitud visual
Respuesta
Todo lo que hacen es coincidir histogramas.
Así que construya un histograma para sus imágenes. Normalice los histogramas por tamaño de imagen. Un histograma es un vector con tantos elementos como colores. No necesita 32,24, y tal vez ni siquiera 16 bits de precisión, y esto solo lo hará más lento. Por motivos de rendimiento, correlacionaría los histogramas a 4, 8 y 10-12 bits.
- Haz un difuso
least distance compare
entre todos los histogramas de 4 bits y los colores de muestra. - Luego tome ese conjunto y compare el histograma de 8 bits.
- Luego, tal vez aumente hasta un histograma de 10 o 12 bits en comparación con el conjunto restante. Esta será la búsqueda de mayor rendimiento, porque está comparando el conjunto total con un número muy pequeño de cálculos, para encontrar un subconjunto pequeño.
- A continuación, se trabaja en el pequeño subgrupo con un mayor número de cálculos, etc.
El gran truco real es encontrar el mejor algoritmo para hacer coincidir los histogramas similares.
Comience con el cálculo de distancia. En 3 dimensiones, creo que fue:
SQRT ((x1-x2)^2 + (y1-y2)^2 + (Z1-Z2)^2)
que estoy haciendo esto desde la memoria, así que búscalo para asegurarte.
para sus propósitos, que tendrán más de 3 dimensiones, por lo que tendrá más términos. Un histograma de 4 bits tendría 16 términos, uno de 8 bits tendría 256 términos, etc. Recuerde que este tipo de matemática es lenta, así que no haga la parte
SQRT
. Si normalizas el tamaño de tus imágenes lo suficientemente pequeño, digamos hasta 10,000 píxeles, entonces sabes que solo tendrás que hacerx^2
para los valores 0..10,0000. Precalcular una tabla de búsqueda dex^2
donde x pasa de 0..10,000. Entonces tus cálculos irán rápido.Cuando selecciona un color de la paleta, simplemente haga un histograma con ese color = 10,0000. Cuando seleccione 2, crea un histograma con color1 = 5000, 5000 color2 = etc.
Al final tendrá que añadir factores de dulce de azúcar para hacer la aplicación coincide con el mundo real, pero se puede encontrar estos con las pruebas.
gracias usaré imageJ y este algoritmo de programa http://rsb.info.nih.gov/ij/plugins/color-inspector.html – Emrah
Menciono hacer una comparación de distancia mínima difusa. Creo que estaba drogado. Simplemente compara la distancia mínima. :) – johnnycrash
Probablemente simplemente creando un histograma de los colores utilizados en las imágenes, y luego haciendo un mejor ajuste a los colores seleccionados por el usuario.
Te sugiero que hagas algún tipo de agrupación de los colores presentes en las imágenes en su base de datos.Es decir, para cada imagen en su base de datos:
- recoger los colores de cada píxel de la imagen
- realizar el agrupamiento (digamos k-media agrupación con 5 grupos) en los colores recogidos
- tienda de la colores agrupados como descriptor representativa de la imagen
Cuando el usuario proporciona un conjunto de uno o más colores de consulta que hacer algún tipo de juego codicioso elegir la mejor combinación entre los colores dados y el descriptor de color (los 5 colores reprsentative) de cada imagen en su base de datos .
¿Cuál es el tamaño de la colección de imágenes, ya que dependiendo del tamaño, la indexación de algunas búsquedas puede ser un problema mayor que el alogorito mismo?
- 1. Algoritmo de similitud de texto
- 2. algoritmo de búsqueda
- 3. Algoritmo de búsqueda de gráficos
- 4. Algoritmo de búsqueda de palabras
- 5. simetría 3D algoritmo de búsqueda
- 6. Algoritmo para comparar la similitud de ideas (como cadenas)
- 7. Algoritmo para comparar la similitud de las oraciones en inglés
- 8. Algoritmo para medir la similitud entre dos secuencias de cadenas
- 9. manera más eficiente de agrupar resultados de búsqueda por similitud de cadena
- 10. ¿Cómo comparo frases de similitud?
- 11. Optimización de algoritmo de búsqueda lineal
- 12. Un conjunto algoritmo de búsqueda de unión
- 13. Personalizando el algoritmo de búsqueda de Elasticsearch
- 14. Algoritmo de búsqueda de sitios web
- 15. Similitud hashing
- 16. Algoritmos de similitud de cadenas?
- 17. Similitud de cadenas: ¿cómo funciona exactamente Bitap?
- 18. agrupamiento con similitud de coseno
- 19. binario algoritmo de búsqueda en Python
- 20. Algoritmo de búsqueda pero para funciones
- 21. ¿In_array() usa un algoritmo de búsqueda binario?
- 22. Similitud de cadenas -> distancia de Levenshtein
- 23. Métricas de similitud de cadenas en Python
- 24. Similitud entre cadenas de líneas
- 25. Comparar algoritmos de similitud
- 26. Similitud de coseno
- 27. Similitud de documento
- 28. agrupando cadenas por similitud
- 29. Cálculo de la similitud de dos listas
- 30. Algoritmo de ayuda necesaria
No estoy seguro de que sea una detección de "similitud visual", más parecida a la indexación del color (colores y área compartida). Como el color está hecho de componentes numéricos, puede construir algoritmos para rastrearlo. –