Primero que nada, calcularemos los gradientes horizontal y vertical por separado para cada imagen. Esto se hace utilizando alguna mascara de convolución para bordes. Se utiliza tanto su forma horizontal como su forma vertical por que de ahí se sacaran las lineas.
Una vez teniendo los gradientes, se calcula el ángulo para cada pixel en cada gradiente. Si gx = 0 y gy = 0, entonces no se toma el ángulo. Si gx = 0 y gy = 255, entonces el ángulo es 90º. Si gx = 255 y gy = 0, entonces el ángulo es 0º.
Con esas condiciones podemos obtener las lineas horizontales y verticales.
Para ello es necesario calcular rho:
Este se guarda en un diccionario junto con un valor para cada pixel, si el pixel es igual al anterior, su rho será aparentemente igual. por lo tanto se trata de una posible linea.
Los resultados son los siguientes:
Código:
Liga al proyecto:
https://github.com/victoralex911/vision-computacional
Con el atan2 podríamos evitar lo de if-elif-else del ángulo. Estoy indecisa sobre si poner 4 o 5... En esta ocasión redondeo para arriba. 5 pts.
ResponderBorrar