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

Tabla de sonidos easyVR desde cero

Uno de los poderes del easyVR es reproducir sonidos. Esta entrada se encarga de despejar todas la dudas y que al final sean capaz de crear un tabla de sonido ustedes solos, asi que al "ataque". Los pasos son: 1.- Conseguir los archivos de sonidos, con las siguientes características. formato: WAV    22050 Hz  Canal: Mono (o Monoaural)   2.- Agregar los archivos .WAV al quick synthesis 5 3.- Agregar proyecto a la memoria del easyVR  4.- Codigo 5 .- Fin Paso 1/5 - Conseguir los archivos de sonidos Esta parte es la mas tediosa sobre todo si quieres conseguir un tabla de calidad, a que me refiero con calidad, a que lo sonidos se escuchen perfectos sin ningún tipo de ruido. Con el programa Audacity , puedes grabar todo lo que pasa por tu tarjeta de sonido, esto es muy recomendable cuando quieres hacer tus propios sonidos. También puedes editarlos para que se escuchen un poco mejor. Solo no olvides guardar tus soni...

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...

Prueba de Frecuencia (Monobit)

La entrada para esta semana era hacer un programa que evaluara si nuestras claves eran realmente random.   Pero ¿porque es importante saber si es realmente random? Bueno, unos de los problemas mas comunes en criptografía es que un mensaje se puede descubrir con ataques de frecuencia, haciendo este método nos aseguramos y hacemos que nos ataquen de otra forma mas complicada, en otras palabras, se las ponemos mas difícil. Existen como 8 pruebas (de lo que alcance a ver, checa el link de las referencias) para evaluar si tus números o caracteres son realmente random, en mi programa use la de prueba de frecuencia monobit; pero ¿cual es el propósito o como funciona esta prueba? El propósito de esta prueba, es determinar si el número de unos y ceros en una secuencia son aproximadamente la misma que sería de esperar para una secuencia verdaderamente aleatoria. La aparición de un cero o un uno en la secuencia debería ser igualmente probables, de modo que el defecto detectado por ...