jueves, 7 de marzo de 2013

Lab: Detección de círculos con diferente radio

Para esta entrada de laboratorio, se nos pide realizar el detectar círculos donde no sepamos información de estos, es decir, a diferencia de la entrada anterior, ahora tenemos que saber cual es el radio del circulo, al igual que su centro.

Primero que nada, hice una rutina en la cual podamos ir cambiando el radio y obtengamos los votos de cada radio aumentado, de manera que estamos utilizando la transformada de Hough de una forma canónica, como la siguiente imagen.

Tomada de las diapositivas Rochester Institute of Technology

Por lo que primero que nada genero una lista con todos los centros posibles y con todos los radios posibles, en donde yo pongo los radios mínimos y máximos para luego adivinar cual es el radio que queremos detectar.

Luego de tener todos los centros, ahora hago repeticiones de radios disponibles hasta que concuerde con los bordes detectados con la mascara laplaciana, de manera que podamos obtener los siguientes resultados.

Este es el código.

Estos son los resultados.











Como pueden ver, mi código no funciona bien, estuve moviéndole a que estuviera una combinación entre el número de bordes a detectar y la cantidad de círculos, teniendo resultados no favorables, nada más detectando un solo circulo, aunque si detecta el radio desconocido, no calcula varios.

Como pueden ver en la ultima imagen si me detecto en la mayoría de los círculos, no se si este bien.

Minimo tamaño de borde

Maximo tamaño de borde


Espero que si alguien me puede comentar cual es la manera de mejorarlo o que debería de haber hecho.

martes, 5 de marzo de 2013

Lab: Simulación

Se nos pide para esta entrada de laboratorio diseñar, ejecutar y reportar una simulación de prueba, incluyendo algunas medidas de desempeño y visualización, es por eso que realicé una simulación utilizando NS2, graficando sus valores obtenidos en gnuplot y python.

Lo que hice de simulación es el generar trafico utilizando el protocolo TCP y en capa aplicación utilizando FTP, haciendo una topología de árbol de manera que el nodo padre generara el tráfico y pasara por los demás nodos hijos y ver que si entre más lejos estés de este nodo padre, tenemos menos kbps por segundo, por lo que en los primeros segundos genero el tráfico hacia el nodo 7 y luego genero tráfico para el nodo 8.


Este es el código de la simulación.



En donde pueden ver cómo genero el tráfico y la posición de los nodos, modificando la intensidad de ms y trazos según los nodos y su jerarquía.

Luego, todo esta simulación genera un archivo nam el cual por medio de python saco sus valores interesantes para obtener los kbps que recibe y el tiempo capturado.



Luego, grafico el comportamiento en gnuplot.


Obteniendo la siguiente gráfica.


En donde podemos comprobar que el nodo más lejano al padre (nodo 8), no da la misma velocidad que el nodo 7.

Esta sería la entrada de laboratorio para telecomunicaciones, si tienen alguna duda o comentario favor de comentar.

Lab: Tiendas de electrónica

Para esta entrada se nos pide realizar una lista de lugares donde podamos encontrar componentes electrónicos con los cuales podamos realizar nuestros proyectos de cómputo ubicuo, o cualquier otro proyecto que tengamos en mente donde tenga que intervenir algo de electrónica.

Primero que nada voy a escribir sobre las tiendas donde yo personalmente he ido a comprar material anteriormente y tengo experiencia en ellas, después las que se encuentran en la red que no he probado pero tienen buenos comentarios.

5Hz electrónica
Al menos para la mayoría de nosotros ITS que hemos estado haciendo proyectos de electrónica, en 5Hz podemos encontrar mucha variedad de componentes para realizar las tareas que se proponen, los cuales los puedes pedir en internet o puedes ir a su local ubicado en Av Raúl Rangel Frías 3528, Valle del Topo Chico, Monterrey, Nuevo León, es una casa que está a lado de un dentista, yo he ido y ahí mismo te antienden muy amable para darte lo que estas buscando, recomiendo que antes de ir, darle un vistazo a la página para saber exactamente que quieres comprar y checar si tienen en existencia para luego ellos te lo den en su oficina y no te des la vuelta con las manos vacias.

Tienen servicio de que pages por internet y recibas el producto, la verdad no lo he probado pero creo que la mayoría de mis compañeros de mi salón lo han probado y todo ha salido satisfactoriamente, es importante recalcar que 5Hz es la única tienda de electrónica en todo el país que es distribuidor de Adafruit (de la cual hablo más adelante), por lo que pueden estar seguros que estan comprando buenos productos.

Les dejo la liga de la página por si se interesan.
5Hz Electrónica

AG electrónica
Otra de las tiendas que frecuento cuando realizamos proyectos de electrónica es AG electrónica, se encuentra muy cerca de la estación de metro ___, ahí puedes ir a preguntar sobre sus componentes electrónicos, al igual que puedes buscarlos en internet antes de ir, pero la diferencia de esta tienda es que tienes que ir a pedirlos y el próximo dia vas recoger tus componentes, lo cual hace que sea un poquito fastidioso tener que ir y volver a darte la vuelta, pero tienen algunos componentes que no encuentran en 5Hz y la verdad es que esta mucho más centríco.

Tienen otras sucursales a lo largo del país y tambien tienen servicio en linea, no lo he probado pero si les puedo asegurar que sus productos también son de buena calidad y todo lo que hemos comprado ahí esta bien, por lo que se los recomiendo.

Les dejo la liga de la página por si se interesan.
AG Electrónica

Steren
Existen muchas tiendas Steren en el país, pero es importante decir que NO vayan a los steren que están dentro de centros comerciales (a los que ellos llaman Steren Shop), porque en estos no venden componentes electrónicos, nada más venden electrónica ya hecha o accesorios para computadoras, por lo que les recomiendo que primero busquen en internet cual steren les queda cerca y que no sea Steren Shop, por ejemplo, aquí en Monterrey está un Steren en frente de AG electrónica, esta muy grande y tienen muchos componentes, pero igual existen otras donde pueden comprar LEDs, puentes, protos, PICs, etc... todo de su propia marca y por lo tanto muchas veces es más baratos, recomiendo igualmente ver la página antes de ir a la tienda para que vean y compraren precios y si tienen lo que necesitan.

Los componentes son buenos, no he tenido problemas, lo malo es que los muchachos que atienden en realidad no saben que te están vendiendo, por lo que recomiendo que investigen que es lo que necesitan antes de comprarlo e ir a la tienda, ellos no están capacitados para sacarte una duda de que cómponente debes comprar.

Les dejo la liga de la página por si se interesan.
Electrónica Steren

Yo creo que la combinación de las tres anteriores son suficiente para ciertos componentes electrónicos, pero claro que si quieres algo más específico y quieres meterte en el rollo de importar de otros paises, esperando que la aduana pase lo que quieres importan, existen alternativas con variedad de componentes, yo no los he probado, pero los nombro aquí, entre ellos se encuentra:

Adafruit
En esta tienda puedes encontrar bastante variedad de componentes desde Arduinos, Rasberry Pi, hasta los sensores avanzados para proyectos mucho más complejos, puedes ver su catálogo en linea y según investige puedes traerlos para acá, ellos mismos ponen a 5Hz como distribuidor de sus productos, por lo que yo creo que si quieres algo de ellos, pudieras hablar a 5Hz, en realidad no se pero sería cuestión de checar.

Su fundadora es Limor Fried es una ingeniería que busca que el hardware libre se distribuya y por lo tanto los componentes que se encuentran en su web son altamente configurables con mucha información en su blog para crear nuevos proyectos.

Les dejo la liga de la página por si se interesan.
Adafruit Industries

Detección de círculos del mismo radio

Para la materia de visión computacional se nos pide detectar circulos, es por eso que utilizando la transformada de Hough y utilizando las mascaras de gradiente para 0 y 90 grados de Sobel, detecto los círculos de un mismo radio de una imagen.

Mi repositorio de los códigos. Liga.

Primero que nada, sacamos el gradiente de tal forma que podamos analizar la imagen.



Para luego, procesarlo de manera que tengamos su información relevante de cada pixel, para sacar los valores más significativos y los pintamos de manera que un color el centro y a partir del centro calculado dibujar con el radio dado, el circulo, para este caso, utilicé diferentes tonalidades de amarillo para cada circulo al igual que pongo en el centro, para la imagen guardada, un punto verde y múltiples círculos para remarcar su contorno, este es el código.



Estos son los resultados de diferentes imágenes cambiando el radio y numero de círculos.













Estas son algunas capturas de pantalla, los resultados que nos dio por medio de las imágenes guardadas con el punto verde en el centro y por otra parte las capturas de la ventana en donde pongo sus etiquetas del ID de cada circulo.

Es importante decir, yo empecé a utilizar otras máscaras para sacar los gradientes en 0 y 90 grados, pero al momento de hacerlo los círculos quedaban muy mal ubicados y computacionalmente tardaba más, esto es porque por ejemplo al usar Prewitt quedaban los gradientes bien definidos pero no en los grados dados, por lo que al utilizar Sobel, es mucho mas rápido al utilizar solo ceros y unos, y computacionalmente menos pesado, solo un poco.