General: Espero que el caso de uso que voy a describir es un caso simple de un problema de flujo óptico y como no tengo mucho conocimiento sobre el tema, Me preguntaba si alguien tiene alguna sugerencia sobre cómo puedo abordar la solución de mi problema.caso simple de flujo óptico
Investigación ya he hecho: he comenzó a leer el periódico High Accuracy Optical Flow Estimation Based on a Theory for Warping y estoy pensando en mirar por encima del papel Particle Video. He encontrado una implementación MATLAB High Accuracy Optical Flow de flujo óptico. Sin embargo, los documentos (y el código) parecen describir conceptos que son muy complicados y que pueden requerir mucho tiempo para que pueda profundizar y comprender. Espero que la solución a mi problema sea más simple.
Problema: Tengo una secuencia de imágenes. Las imágenes muestran un proceso de rotura de material, donde el material y el fondo son negros y las grietas son blancas. Estoy interesado en atravesar la secuencia de imágenes en reversa en un intento de mapear todas las grietas que se han formado en el proceso de rotura a la primera imagen negra. Puedes pensar en el material como un gran rompecabezas y estoy tratando de juntar las piezas en el orden inverso al que rompieron.
En cada imagen, puede haber algunas grietas que están emergiendo y/o algunas grietas que se han formado completamente (y así se creó un fragmento). A lo largo del proceso de rotura, algunos fragmentos pueden separarse y romperse aún más. Los fragmentos también pueden moverse más lejos el uno del otro (el cambio es leve entre cuadros posteriores).
Salida deseada: Todas las grietas/líneas en la secuencia corresponden a la primera imagen de la secuencia.
Notas adicionales: Las imágenes están disponibles en formato de escala de grises (es decir, original), así como en formato binario, donde las grietas se han delineado en blanco y el fondo es completamente negro. Vea a continuación algunos ejemplos de imágenes.
La fila superior muestra las imágenes originales y la fila inferior muestra las imágenes binarias. Como puede ver, la grieta que desciende por el medio se hace más y más ancha a medida que progresa la secuencia de imágenes. Por lo tanto, la grieta inferior se mueve junto con el fragmento inferior. Al atravesar la secuencia en reversa, espero realizar algorítmicamente que la grieta intermedia se une como una (y asignarla correctamente a la primera imagen), y también mapear correctamente la grieta inferior, manteniendo su correspondencia correcta (tamaño y posición) con la fragmento inferior.
Una secuencia contiene típicamente alrededor de 30 ~ 40 imágenes, así que acabo de mostrar el subconjunto inicial. Además, aunque estas imágenes no lo muestran, es posible que una imagen en particular solo contenga el comienzo de la grieta (es decir, su apariencia inicial) y en imágenes posteriores sea cada vez más larga y se una con otras grietas.
Idioma: Aunque no es necesario, me gustaría implementar la solución usando MATLAB (solo porque la mayoría de los otros códigos que se relacionan con el proyecto se han hecho en MATLAB). Sin embargo, si OpenCV puede ser más fácil, soy flexible en el uso de mi idioma/biblioteca.
Cualquier idea es muy apreciada.
El flujo óptico no le dará resultados significativos para las imágenes en blanco y negro. Además, su problema no está especificado: ¿cuál es su resultado deseado? Y, como siempre, las imágenes de muestra, por supuesto, ayudarían a entender la configuración. – etarion
¿por qué la última imagen no es un resultado deseado? ¿Pueden los fragmentos moverse cada vez más? – Andrey
Por favor proporcione imágenes. En general, los algoritmos OF requieren texturas y no son muy adecuados para imágenes binarias. Sería útil si proporcionara el nombre de los documentos que ha leído en lugar de un enlace a un PDF. –