en mi proyecto, necesito comparar imágenes. Una imagen muestra un modelo de renderizado y la otra imagen es una foto en la que se muestra el objeto real que se representa en el modelo. Lo que quiero exactamente:¿Cómo comparo dos imágenes de borde (en OpenCV)?
- El algoritmo tiene que comparar las dos imágenes y devolver un número, que describe la similitud. Digamos que cuanto menor es el número, mejor encajan las imágenes.
- Ambas imágenes se representan como imágenes binarias que solo contienen los contornos/bordes de la imagen-render real/foto.
- La foto tiene muchos más objetos en ella que la imagen de renderizado. Entonces solo quiero verificar si el punto de vista del objeto de renderización es casi el mismo que el punto de vista del objeto real en la foto. (Ejemplo: un automóvil se modela de modo que se aproxime a un automóvil real. Saco una foto del automóvil real desde una posición y orientación especial. Ahora quiero verificar si la posición y la orientación de mi cámara virtual miran el auto de renderizado es casi lo mismo, que la posición y orientación de mi cámara de la vida real). La solución es solo para comparar los píxeles blancos de la imagen de renderizado con los píxeles de la foto (como imagen de borde). Los otros píxeles no son interesantes.
- El valor devuelto de la comparación de imágenes debe disminuir cuanto mejor se adapte mi orientación y posición de la cámara virtual a la posición y orientación de la cámara real.
He intentado calcular la distancia euclidiana de las dos imágenes, pero el resultado es bueno, cuando los píxeles se ajustan entre sí. Ahora estoy buscando alterantives.
Hasta ahora he considerado utilizar la correlación cruzada normalizada, pero realmente no sé si se ajusta a mi tarea.
La pregunta es si vale la pena intentar la correlación cruzada normalizada o si hay mejores métodos para resolver mi problema.
El algoritmo debe ser lo más rápido posible, porque comparo muchas imágenes.
Muchas gracias
Gracias por sus sugerencias. Estoy un poco confundido debido al hecho de que la distancia de Haussdorff y la cruzada cruzada normalizada parecen ser buenas para encontrar un patrón pequeño en una imagen general.
La pregunta es: ¿Los dos algoritmos también son buenos para comparar 2 imágenes del mismo tamaño?
Aquí hay un ejemplo de 2 imágenes que tienen que ser comparadas. Por el momento estoy comparando alrededor de 120 imágenes, paires por segundo.
Lástima que no puedo publicar imágenes como un nuevo usuario. Así que aquí está el enlace directo: http://s14.directupload.net/file/d/2674/t8qzbq9i_png.htm
Se puede publicar las dos imágenes? – Maurits
Se ha publicado el enlace a un ejemplo. – user987979
+1 para una pregunta interesante. ¿Puedes publicar las imágenes antes de que puedas detectarlas también? Ayudaría a agregar algo de contexto a su pregunta. – misha