14 de febrero de 2013

Noisy Channel

Information Theory and Coding Methods
Assignment 1

I realized that plotting the length of the word against the transmission success rate, in all probability graphs using different frequency zeros, seem to be related to the same function, which I believe is exponential.

This is one of the graphics given.


In the next two graphics we can appreciate all the information given by the programs and script.

The next graphic is for word length versus frequency of zeros, and the color is given by the average percentage of correct transmitions, so yellow indicate high percentage of correct transmitions and black is practically a bad level.


And here we have the same but with the difference that the average is releated with the radius of the bubbles.


Código


For this assignment I write code in different languages, but I only run channel.sh in the terminal, and then channel.R inside the R console.

channel.py


channel.sh


channel.awk


channel.plot


channel.R


References:
Noisy channel by Elisa Schaeffer

13 de febrero de 2013

Actividad 2: Ruido Sal y Pimienta

Laboratorio de Visión Computacional
Actividad 2

La actividad para esta semana fue crear una rutina para generar el ruido sal y pimienta en imágenes para luego crear una rutina que eliminara este ruido de las imágenes.

¿Qué es el ruido sal y pimienta?

"En el tipo de ruido conocido como ruido sal y pimienta los pixeles de la imagen son muy diferentes en color o intensidad a los pixeles circundantes. El hecho que define este tipo de ruido es que el pixel ruidoso en cuestión no tiene relación alguna con los pixeles circundantes." [1]

Ejemplos


Con el programa que hice probé con varias intensidades de ruido para crear las imágenes con este efecto de sal y pimienta, para luego eliminar este mismo ruido. Veamos los resultados con algunas imágenes, primero agregando el ruido sal y pimienta, y luego la imagen después de eliminar el ruido sal y pimienta.

En esta imagen apliqué una intensidad de 0.01.



En esta imagen apliqué una intensidad de 0.1.



En esta imagen apliqué una intensidad de 0.05.



En esta imagen apliqué una intensidad de 0.3.



Código para sal y pimienta



Detección de bordes


Para la detección de bordes hemos visto que es posible hacerlo mediante la aplicación de máscaras y el método de convolución, pero ahora usamos otra técnica más simple que implica calcular la diferencia entre la imagen original y la versión creada con el filtro de difuminado.

Aquí la muestra de como se obtienen los bordes de la imagen usando el método de convolución y máscaras, del cuál ya se habló en una publicación anterior a esta.


Y ahora la misma imagen pero con una nueva técnica. Podemos ver que no es tan precisa como la anterior, pero aún así se logran diferenciar bien los bordes de la imagen.


Aquí otra muestra.


Código para detección de bordes y más


En el siguiente código están incluidos la detección de bordes por medio de convolución, detección de bordes usando diferencia de imágenes, agregar ruido sal y pimienta, y por último eliminar ruido sal y pimienta.

Recibe como parámetro en línea de comandos el nombre de una imagen. Al ejecutarlo veremos una ventana como la siguiente.



Referencias:
[1] - Ruido en la fotografía

12 de febrero de 2013

Protocolo

Redes de Telecomunicaciones
Tarea 2

La tarea para esta semana fue diseñar, implementar, comprobar experimentalmente y documentar un protocolo simple a nivel de aplicación.

Para esto utilice el lenguaje de programación Python, usando algunos paquetes como thread y socket, este último para crear sockets UDP, el cual provee de métodos para enviar y recibir bytes.

EL servidor implementado puede tener varios clientes al mismo tiempo, y por usar sockets UDP, no se establece una sesión entre cliente y servidor como sería con TCP. Lo que sucede con sockets UDP, es que el cliente primeramente envía datos, y cuando llegan al servidor, este puede determinar la dirección de donde vinieron esos datos para poder dar retroalimentación al cliente enviando otro conjunto de datos.

Propósito de su protocolo

El protocolo implementado es muy simple, ya que lo que se hace es el envío y recepción de "paquetes" con las direcciones IP junto con el puerto utilizado por el cliente y el servidor, así como de datos a ser procesados.

El cliente envía una notificación "READY" cuando esta listo para hacer un cálculo, en este caso evaluar si un número es primo o no, y el servidor estará enviando como dato en el paquete un número de 6 dígitos a ser evaluado.

Veamos como esta distribuida la cabecera del paquete y sus datos.

TIPO HOST ORIGEN HOST DESTINO PUERTO ORIGEN PUERTO DESTINO RESPUESTA DATO
0 | 1 0.0.0.0 0.0.0.0 00000 00000 0 | 1 000000

Donde:

TIPO, puede ser 0 o 1, (0 - servidor, 1 - cliente), para corroborar que el paquete viene desde un servidor, o si el paquete es de un cliente que esta enviando información al servidor.

HOST ORIGEN, la IP desde donde se envían los datos.

HOST DESTINO, la IP a donde serán enviados los datos.

PUERTO ORIGEN, el puerto abierto desde donde se envían los datos.

PUERTO DESTINO, el puerto a donde se envían los datos.

RESPUESTA, es 0 cuando el paquete es enviado desde el servidor o cuando el número evaluado resulto no ser primo y es 1 cuando el número evaluado por el cliente resulto ser primo.

DATO, es un número entero de 6 dígitos.

Un ejemplo de paquete sería el siguiente:

TIPO HOST ORIGEN HOST DESTINO PUERTO ORIGEN PUERTO DESTINO RESPUESTA DATO
1 127.0.0.1 127.0.0.1 9999 34872 0 567822

Lo que podemos resumir como un paquete enviado desde el cliente, el cual evaluó el número 567822 para conocer si era primo, pero el resultado fue negativo, por lo tanto el campo de RESPUESTA esta llenado con un 0.

Código


Son dos partes del programa, el servidor y el cliente. No requieren parámetros adicionales. Por ahora al ejecutar el cliente entra en un ciclo infinito en el cual en cada iteración se pide un número al servidor para poder evaluarlo.



Ejecución


Para probar si el código hacia lo que debería ejecute en varias terminales los códigos. En la terminal más amplia es donde se ejecuto el servidor y en las otras cuatro más pequeñas los clientes.


Podemos notar como en la ventana del servidor se están imprimiendo todos los paquetes que van llegando una vez parseados según se indico en el protocolo, y vemos que algunos de los paquetes en el campo de RESPUESTA tienen un "1" que indica que el número evaluado si fue un número primo.


Lo interesante de la siguiente captura es que en tres de las cuatro terminales donde se ejecutaban los clientes se interrumpió la ejecución para detenerlos, y solo un cliente quedo activo, y el servidor no detiene la ejecución aún y si ya no quedan clientes.


Vídeo demostración



Referencias:
Socket programming
UDP communication

11 de febrero de 2013

Detección de Bordes

Visión Computacional
Tarea 1

Existen varias máscaras que se pueden aplicar para la detección de bordes en una imagen. Al experimentar con varias de ellas, encontré una llamada Operador Laplaciano que fue el que me dio mejor resultado y fue el que utilice para la detección de bordes con mi programa.

$\begin{bmatrix}{0}&&{1}&&{0}\\{1}&&{-4}&&{1}\\{0}&&{1}&&{0}\end{bmatrix}$

Podemos ver que esta máscara es simétrica, por lo que no fue necesario aplicar más de una vez el método de convolución, ya que comúnmente se suelen utilizar por lo menos dos máscaras, una para bordes horizontales y una para bordes verticales.

Utilizando esta máscara podemos ver resultados como el siguiente:


Para que los bordes resultaran contínuos, experimente con la aplicación de algunos filtros simples como el de difuminado y una versión de umbrales, que yo llamo blanco y negro, donde recibe un parámetro que indica el valor del umbral al cual hay que compararse para determinar si el pixel se convierte a blanco o negro.

La desventaja de aplicar estos filtros es que algunos de los bordes menos detallados se pierden, pero es posible arreglarlo cambiando la forma en que los umbrales son aplicados a diferentes escalas de grises en la imagen, pero por ahora he dejado un valor predeterminado en este método de umbrales, ya que logra resaltar las características más sobresalientes de las imágenes en general.

La experimentación fue visual, y los filtros aplicados para resaltar los bordes aveces variaban según la imagen con la que estaba haciendo pruebas, pero el filtro de difuminado y después aplicación de umbrales fue el que logró hacer diferenciar los bordes para la mayoría de las imágenes.

Se realizó una prueba de tiempo de ejecución de la rutina completa para obtener los bordes de la imagen incluyendo el tiempo que tarda el filtro para escala de grises antes de aplicar la máscara, y los filtros de difuminado y umbrales después de aplicar la máscara, así como el tiempo que tarda en aplicar la propia máscara.

Se hizo un promedio del tiempo de 30 repeticiones para diferentes imágenes y diferentes dimensiones.

Ahora veamos la comparativa de la imagen original contra la imagen después de la detección de bordes, y la tabla con los resultados de la prueba de tiempo de ejecución.


Perry



Los resultados de la prueba de tiempo para la imagen perry-el-ornitorrinco.jpg fue la siguiente:

Dimensión Tiempo de ejecución
300x200 2.10296666622
500x400 7.42993968725
700x550 14.6455515027


Snoopy



Los resultados de la prueba de tiempo para la imagen snoopy.jpg fue la siguiente:

Dimensión Tiempo de ejecución
200x100 0.539839204152
300x200 2.12622498671
400x300 5.17025875251


Fundidora



Los resultados de la prueba de tiempo para la imagen fundidora.jpg fue la siguiente:

Dimensión Tiempo de ejecución
300x200 2.14322346449
500x400 7.40442377329
1000x700 28.0735495091


Código


Los filtros que ya había creado anteriormente los coloque en un solo script de python con nombre filters_methods.py, y en el script edges.py lo importo para poder usar el método del filtro deseado.

El programa edges.py recibe como parámetro el nombre del archivo de una imagen, y dos números correspondientes al ancho y alto con que se desea ver la imagen.

Ejemplo:
~$ python edges.py images/snoopy.jpg 400 300

Una vez que se muestra la ventana y después de presionar el botón "Convolution" podremos visualizar lo siguiente.




Referencias:
Matrices de convolución
Matrices para detección de bordes

10 de febrero de 2013

Actividad 2: Protocolos

Laboratorio de Redes de Telecomunicaciones
Actividad 2

Prepara un diagrama de tu propio diseño que ilustre los protocolos que consideres los más importantes de uso tradicional en redes alámbricas, indicando el propósito de cada uno y resaltando sus características principales.



Elaborado usando el servicio web de Piktochart.

Referencias:
Diferencias entre TCP y UDP
Nivel de transporte
¿Qué es UDP?
Modelo OSI y protocolos de red
Protocolos por capas en modelo OSI

9 de febrero de 2013

Actividad 2: Desarrollos Emergentes

Laboratorio de Cómputo Ubicuo
Actividad 2

Intelligent Alarm Clock

Este es un despertador creado como proyecto por unos estudiantes asiáticos el cuál podría ser desarrollado a gran escala ya que reúne todos los requisitos para una alarma despertador.

"Hemos diseñado un reloj despertador inteligente que se puede programar desde el ordenador para hablar mensajes personalizados y también detectar si el usuario está en la cama o salir de su habitación."

Los sensores son generalizadas en el sector industrial, aeroespacial, y la medicina. A pesar de que potencialmente pueden mejorar a la persona común en la vida diaria, rara vez se utilizan en la mayoría de los productos electrónicos de consumo. En línea con la evolución futura de la tecnología, el propósito del proyecto es la integración de una amplia gama de sensores para mejorar el funcionamiento de una necesidad electrónica, el despertador. Con los despertadores actuales, quedarse dormido depende principalmente de la disciplina del usuario.

Estos jóvenes tuvieron la visión de que con los despertadores del futuro, el exceso de sueño será una cosa del pasado, como los despertadores serán capaz de "sentir" si el usuario realmente ha despertado. También, mientras que la mayoría de los despertadores hoy sólo sirven para despertar al usuario de la mañana, los relojes de alarma futuras serán capaces de recordar al usuario de diversos eventos en el día. Por lo tanto, se desarrollo un despertador de próxima generación que puede programarse desde la computadora para hablar mensajes personalizados.


Enlace: http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/s2009/ct269_wl246_wc276/ct269_wl246_wc276/index.html

Clocky Go!

Para las personas que tienen problemas para lidiar con despertador y tener que decirles que es hora de levantarse, he aquí una posible solución. Es un reloj despertador que huye hasta que te levantes.

Clocky era sólo un concepto de diseño que recibió mucha atención, y ya esta en desarrollo. Cuando la alarma suena, Clocky comenzará a sonar. Puedes ponerlo a funcionar de inmediato y la alarma suena, o puede configurarlo para dormir de una vez por su número elegido de minutos y si no se levanta, Clocky comenzará a sonar de nuevo y salir corriendo. Su objetivo es saltar de la mesa de noche en primer lugar, por lo que no será fácil de atrapar una vez que cayo al suelo.

Aquí un vídeo de este producto.


Enlace: http://www.gizmag.com/go/6959/

El despertador inteligente que cobra por dormir un poquito más

Un diseñador anónimo creó un prototipo de despertador que destruye billetes si su propietario no lo apaga dentro de un plazo determinado. Dicho dispositivo tiene un hueco para los billetes y una cortadora incorporada que empieza a funcionar cuando el despertador no se apaga.

Es posible que este invento nunca sea puesto en producción ya que en algunos países el deterioro de billetes se considera un delito. Así, por ejemplo, en Estados Unidos al deterioro deliberado de dólares le corresponde una multa o hasta seis meses de prisión.

La gente que duerme mucho o tiene sueño profundo, y que necesitan alguna motivación opcional para luchar contra el deseo irresistible de dormir por las mañanas, podrán adquirir este aparato por 40 dólares. El despertador conectará a Internet y transferirá, como mínimo, 10 dólares a cuentas de organizaciones de caridad cada vez que el usuario no desactiva a tiempo su alarma.


Enlace: http://actualidad.rt.com/ciencias/view/28139-El-despertador-inteligente-que-cobra-por-dormir-un-poquito-mas

Enlaces en los comentarios


Casa inteligente con enfoque a seguridad
http://www.slideshare.net/rapaluzji/agente-inteligente-sistema-de-seguridad-para-casas

Brújula electrónica
http://tumedicion.com/Para-Autos/Brujula-digital-direccional-con-luz-de-fondo.html

8 de febrero de 2013

Actividad 1: Productos Existentes

Laboratorio de Cómputo Ubicuo
Actividad 1

Despertador que obliga a saltar de la cama

"Si no puede despertarse por la mañana porque desactiva o aplaza la alarma del reloj, un nuevo modelo de despertador podría ser el invento ideal para usted. La única forma de callar las exasperantes campanillas del dispositivo que impiden seguir durmiendo es introducir una clave en un teclado remoto."

Fue inventado por Paul Sammut, un ingeniero estadounidense de 25 años que comenzó a diseñar el despertador ante la dificultad que tenía para levantarse y llegar con puntualidad al trabajo tras la jornada universitaria.

Al momento de estar pensando en como desarrollar este invento, el diseñador se dio cuenta de que la manera más fácil de despertarse sería abandonar la cama e irse lejos de ella. Por eso, el teclado remoto del despertador se coloca en la cocina o el baño, y para apagar la alarma hay que levantarse y caminar.

Si el despertador está desenchufado, una pila le permite seguir funcionando. Y al aproximarse la hora de levantarse no se puede reprogramar la alarma. Esto es de gran ayuda para que no intentemos desconectar solamente el despertador de la corriente.

Según el autor del invento, la única forma de silenciar la alarma sin dejar la cama es darle un gran golpe. Aunque, con un precio de 350 dólares, para que el propietario del despertador lo piense dos veces antes de destruirlo.


Enlace: http://mesaredonda.cubadebate.cu/noticias/2012/04/14/crean-un-despertador-que-obliga-a-%E2%80%98saltar%E2%80%99-de-la-cama/

Puzzle Alarm Clock

"Si eres un amante de los rompecabezas, el Puzzle Alarm Clock puede ser justo lo que necesitabas para resolver el problema de siempre: levantarse de la cama.

Este gadget es un reloj de alarma que viene con 3 piezas de rompecabezas. Cuando llega el momento increíblemente acogedor de salir de la cama cada mañana, no sólo sus oídos disfrutarán de una melodía de llamada fantástico, también un rompecabezas de 3 piezas al azar se dispara."

Para al fin poder desactivar la alarma sonando, se debe resolver el rompecabezas, y ensamblar de nuevo todo en el reloj. Una vez hecho esto la alarma dejará de sonar.

El despertador es de aproximadamente 18x11x4cm de tamaño y requiere 3 pilas AA. El tiempo puede ser configurado para mostrar en formato de 12 o 24 horas.

Según estudios, una de las formas en que es posible entrar en acción por las mañanas después de abrir los ojos, es hacer que el cerebro comience a procesar algo de información, este despertador precisamente al necesitar que el usuario tenga que pensar en como acomodar las figuras, hace que la persona haga funcionar su cerebro.


Enlace: http://www.latestbuy.com.au/puzzle_clock_gadget.html

Good Morning Sing N Shock

Un estudiante indio que siempre llegaba tarde a clase inventó un despertador que puede dejar bastante impresionado a su propietario. Sankalp Sinha, de 19 años, tuvo la idea después de que apagar el despertador y volver a quedarse dormido se convirtiera en un hábito.

El joven trató de pensar en algo que lo obligara a salir de la cama y así fue como ideó su revolucionario invento: un despertador que administra una pequeña descarga eléctrica cuando tratas de apagarlo.

Cuando el usuario presiona el botón recubierto de aluminio que hay que en la parte de arriba del reloj, recibe unos inofensivos micro-voltios. Se trata de una pequeña sacudida cuya potencia es pequeñísima en comparación con los 50.000 voltios que administra una pistola Taser.

Sankalp, que estudia ingeniería, espera que su reloj se empiece a producir en masa en breve. Asegura que su invento sacará del sueño incluso a los más dormilones.


Enlace: http://www.antena3.com/noticias/tecnologia/despertador-que-levanta-cama-descargas-electricas_2013012300136.html

Sfera alarm clock

La esfera es un reloj despertador que se cuelga del techo encima de la cama. Cuando llega la hora de levantarse, se activa la alarma, en cuyo caso, sólo tiene que llegar y tocar para activar la función de repetición. A continuación, se retrae el reloj hacia el techo. Al tiempo de pausa, usted tiene que llegar un poco más alto para desactivar por un rato otra vez, y así sucesivamente hasta que usted tiene que levantarse cada vez más de la cama para alcanzarlo y poder desactivarlo.


Enlace: http://www.uberreview.com/2006/03/top-ten-most-annoying-alarm-clocks.htm

Enlaces en los comentarios


Carro seguro
www.youtube.com/watch?v=MuLokDxiIh4

Brazalate con GPS, GSM y signos vitales
http://buengeek.com/motoactv-reloj-inteligente-que-monitorea-tus-signos-vitales

Galería Inteligente
http://www.aton.eu/riflessioni/el-museo-de-arte-italiano-milanese-adopta-rfid/es/