Ir al contenido principal

Tarea #3 - Vision(LAB) - Detección de lineas - Python

Que tal, para esta entrada se nos encargo hacer un .py que fuera capaz de detectar lineas horizontales y verticales y pintarlas de color rojo.

Para hacer esto se uso el algoritmo de Hough, el cual dice que se recorre toda la imagen pixel por pixel, cuando se detecta un pixel tipo borde, se calcula su RHO y su THETA y se agregan a un lista, si otro pixel vuelve a tener los mismo valores entonces se va acumulando(votando) al final los pixeles mas votados son lo que forman una linea recta.

Para hacer esto se tiene que tomar en cuanta varias cosas, por ejemplo y lo principal, el calculo de RHO y THETA, que los libros nos dicen, mas bien nos muestran la sig. formula.

formula para RHO

donde "x" y "y" son la coordenada del pixel actual y THETA es el ángulo que se forma del Punto de origen(tu lo eliges) hasta el pixel actual y se calcula con la siguiente formula.

formula para THETA

Con esta formula la teoría nos dice que por cada pixel tendremos finitas lineas rectas que crucen por el pixel actual, pero solo tomaremos en cuenta aquellas rectas que tengan un pixel tipo borde como vecino. Aparte de eso, tendremos que llamar o sumar o votar como lo allás entendido mejor, por los mejores candidatos(pixeles) que formen una recta.

Basta de teoría..... pongamos en practica todo lo anterior.

Lo primero que necesitamos en sacar "gx" y "gy" para poder calcular THETA, para esto usamos los gradrientes obtenidos del operador sobel(o cualquier otra mascara) y el calculo de THETA seria "relativamente fácil" :| y una vez que tengas THETA tendrás que normalizarla, también "relativamente fácil" :|

pero bueno, este es la función que lo hace, y los resultados que arrojan los podrán ver un poco mas abajo de esta entrada.



Resultados....

Original


Salida

El programa aun genera mucho ruido y existen pedazos de linea que debería detectar y no lo hace pero en la próxima entrega lo arreglare.


REFERENCIAS

http://elisa.dyndns-web.com/~elisa/teaching/comp/vision/2013.html (teoría)
http://elisa.dyndns-web.com/~elisa/teaching/comp/vision/histograma.py (código python)

Comentarios

  1. La función atan2 resuelve muchos de los casos especiales que tienes que manejar. Acabo de aprender que existe esa cosa :P 4 pts.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Pequeño Juego con LEDS y Dip Switch

Siguiendo con los mini-proyectos, lo que quería hacer originalmente era un tipo "candado" con push-button y LEDs, el objetivo seria, meter la combinacion de botones correcta y los LEDS encendería por un motivo practico, en forma de serpiente. El objetivo no cambio, pero por falta de "material" lo hice con un dip switch de X entradas(depende de que tan grande quieras la combinación). CONOCIMIENTOS(max. 7 estrellas): Electronica:     ★ ★ Programación: ★ ★ Juego de Combinación + LEDs El programa es un poco mas complicado que el mini-proyecto pasado , pero aun asi es basico. Guardamos las salidas de los LEDs en un arreglo, despues con los valores recibidos y comparados de los dip switch jugamos con los LEDś. Hardware Requerido (1) Arduino Uno (6) LED (8) Resistencias 330 Ω (1) Dip Switch Circuito Usamos las salidas del ARduino 2-7 para los LEDS Usamos la salida A5, A4 para el dip switch Para hacer prender los LEDS tienes que encontrar la ...

Tarea #2 - LAB Visión - Sal y Pimienta - Procesamiento de imagenes - Python

Que tal para esta entrada se nos encargo  modificar  o agregar a nuestro código, una rutina que agregara degradación por adición de ruido(Sal y pimienta) base a dos parámetros: Intensidad = que tanto porcentaje de la imagen se le agregara sal y pimienta Polarización = que tan negros/blancos se pone un pixel seleccionado. y otra rutina que quitara filtrara ese ruido. Antes de comenzar Mi programa se esta empezando a poner " FEO " son demasiados métodos y por cada tarea esta creciendo considerablemente, pese a esto, esta sera la ultima entrada que estaré modificando este código, el las siguientes trabajare por clases.  El los avances de la tarea están en mi  github . Un poco de teoría Les comparto información de relevante que me ayudo a despejar dudas, al final de la entrada en el apartado de REFERENCIAS pondré los links de TODA esta información. El RUIDO en las imágen...

Tarea #5 - Codigo Hamming - Python

Codigo hamming Liga al repo Teoria segun wikipedia Antes de los códigos Hamming se utilizaron ciertos códigos detectores de error, como lo fueron el código linteing, pero ninguno llegó a ser tan eficaz como los de Hamming. A continuación se describen algunos de estos códigos. Paridad   La   paridad   consiste en añadir un bit, denominado   bit de paridad , que indique si el número de los bits de valor 1 en los datos precedentes es par o impar. Si un solo bit cambiara por error en la transmisión, el mensaje cambiará de paridad y el error se puede detectar (nótese que el bit donde se produzca el error puede ser el mismo bit de paridad). La convención más común es que un valor de paridad   1   indica que hay un número impar de unos en los datos, y un valor de paridad de   0   indica que hay un número par de unos en los datos. info. completa y un vídeo que me ayudo mucho para esta tarea: (TIENEN QUE VERLO - OBLIGATORIO) http://www.you...