Estoy trabajando en un programa que trazará puntos en el centro de blobs binarios que se asemejan a piezas curvas de confeti. Más tarde ajustaré estos puntos con una spline cúbica que traza la curva.¿Cómo se muestra una línea en un blob en un ángulo perpendicular? (en Python/OpenCV a menos que sugiera cambiar a otra cosa)
Como parte del programa, I necesidad de:
- crear un vector 2D muestreo de una línea en ángulo a través de una imagen binaria,
- calcular el ángulo de utilizar en cada posición a lo largo de la gota de confeti.
Éstos son algunos ejemplos de las imágenes y bocetos de lo que los puntos trazados podría parecerse a:
Encontrar el centro de una sección vertical de un confeti negro es sencillo. Siempre que esté en un píxel negro, encuentre el borde blanco izquierdo y derecho, el centro está a la mitad de la distancia entre estos. Hacer esto es fácil porque el vector 2d utilizado para hacer el cálculo anterior es solo una fila de la imagen.
Pero las piezas de confeti no siempre se alinean con la espalda recta y vertical! Algunas veces son curvas o alineadas horizontalmente. Lo que se necesita aquí es un vector 2d que corta una sección a través del confeti en un ángulo. ¿Cuál es la manera más eficiente de muestrear este vector en ángulo de la imagen? Prácticamente, en una biblioteca de procesamiento de imágenes como Python PIL o OpenCV, ¿hay operaciones que puedan obtener vectores de líneas en ángulos a través de una imagen? Si hago uno, ¿cómo puedo asegurarme de que sea eficiente?
¿Cuál es la forma más eficiente de calcular el ángulo del vector necesario? Una forma de obtener el ángulo apropiado es encontrar el ángulo que da como resultado el segmento negro de ancho mínimo en el vector 2d devuelto. No necesito hacer esto de manera exhaustiva, solo recorrer 360 grados con incrementos de 30 grados Otra forma de obtener el ángulo apropiado podría ser encontrar la tangente de la curva de la pieza de confeti y usar la línea perpendicular a esa, pero eso podría ser más complicado.
Cualquier idea sobre cómo abordar mejor el problema sería muy útil. Cualquier sugerencia específica sobre cómo buscar una línea 2d a través de una imagen, y una forma eficiente de obtener el ángulo perpendicular también sería genial.
El adelgazamiento de contornos podría ser útil. Lo investigaré. Creo que la esqueletización va a ser demasiado costosa desde el punto de vista computacional, ya que eventualmente haré esto en video si no en tiempo real. Sin embargo, es una buena biblioteca de procesamiento de imágenes de Python. – user391339