2010-02-08 21 views
14

Estoy pensando en crear un sistema de base de datos para imágenes donde se almacenan con firmas compactas y luego comparar con una "imagen de consulta" que podría ser una versión redimensionada, recortada, iluminada, rotada o volteada de la almacenada. Tenga en cuenta que no estoy hablando de algoritmos de similitud de imagen, sino estrictamente sobre la detección de duplicados. Esto haría las cosas mucho más simples. Al sistema no le importaría si dos imágenes tienen un elefante, solo sería importante detectar si las dos imágenes son de hecho la misma imagen.¿Algoritmos de detección de imágenes duplicados?

Las comparaciones de histogramas simplemente no funcionarán para las imágenes de consulta recortadas. La única forma viable de ir es la detección de forma/borde. Primero, las imágenes se discretizarán de alguna manera, convirtiendo cada píxel a una escala de grises de 8 niveles, por ejemplo. La imagen discretizada contendrá amplias regiones del mismo color que ayudarían a indicar formas. Estas formas podrían describirse con coeficientes y su posición relativa podría ser recordada. Las firmas compactas se producirían a partir de eso. Este proceso se llevará a cabo sobre cada imagen que se almacena y sobre cada imagen de consulta cuando se tiene que realizar una comparación. ¿Eso suena como un algoritmo eficiente y realizable? Para ilustrar esta idea:

eliminado enlace ImageShack muertos

Sé que esto es un área de investigación inmaduro, He leído Wikipedia sobre el tema y le pediría a proponer sus ideas acerca de un algoritmo.

+2

Usted dice que no estamos hablando de algoritmos de similitud, pero la detección de duplicados. Sin embargo, si también está hablando de permitir cambios, especialmente cultivos, inevitablemente tendrá que hacer un juicio sobre el grado de "similitud". –

+0

Sin duda, habrá umbrales aceptables al hacer las comparaciones. La cuestión es que incluso una imagen de consulta recortada y de tamaño aún contiene un subconjunto de las mismas formas/áreas de interés, posicionadas relativamente de la misma manera, pero representadas con una cantidad diferente de píxeles. –

Respuesta

1

Echa un vistazo a tineye.com Tienen un buen sistema que siempre está mejorando. Estoy seguro de que puedes encontrar trabajos de investigación sobre el tema.

+1

Prefiero leer y resumir diferentes ideas aquí. He visto a Tineye antes. –

1

¿Qué hay de la conversión de this python codes a C?

+0

El código que refiere se basa en la obtención de histogramas. Funcionaría bien si la imagen de la consulta no es posiblemente recortada. Una subimagen recortada arrojaría un histograma completamente diferente a la imagen completa, por lo tanto no es aplicable en este caso. –

1

El artículo se puede estar refiriendo a on Wikipedia on feature detection.

Si está ejecutando un procesador Intel/AMD, puede usar Intel Integrated Performance Primitives para tener acceso a una biblioteca de funciones de procesamiento de imágenes. O más allá de eso, está el proyecto OpenCV, una vez más otra biblioteca de funciones de procesamiento de imágenes para usted. La ventaja de utilizar una biblioteca es que puede probar varios algoritmos, ya implementados, para ver qué funcionará para su situación.

+0

Probar diferentes funciones de procesamiento no es el punto. Me interesaría si tienes una idea en particular, incluso una muy escasa para lograr la tarea. –

+0

¿Puede tomar los componentes de frecuencia tanto del objetivo como de las imágenes de consulta, y hacer "algún tipo de comparación"? Sí, esto es muy escaso, ha pasado un tiempo. Hacer esto es intensivo desde el punto de vista computacional ;-) –

2

Si desea hacer un modelo impulsado por detección de características, quizás podría tomar el singular value decomposition de las imágenes (probablemente tendría que hacer una SVD para cada color) y usar las primeras columnas de las matrices U y V junto con los valores singulares correspondientes para juzgar qué tan similares son las imágenes.

Muy similar al método SVD es uno llamado principle component analysis que creo que será más fácil de usar para comparar imágenes. El método PCA está muy cerca de simplemente tomar la SVD y deshacerse de los valores singulares al factorizarlos en las matrices U y V. Si sigue la ruta PCA, también puede consultar correspondence analysis. Por cierto, el método PCA fue un método común utilizado en el Netflix Prize para extraer características.

+0

Intenté dejar en claro que la imagen de la consulta será una variación del original, no una copia exacta. Tengo que investigar sobre SVD. –

+0

Sí, edité mi solución. Saqué la información de la suma de comprobación y puse más relacionada con la SVD. –

Cuestiones relacionadas