Social Icons

twitterfacebookgoogle plusemail

miércoles, 29 de mayo de 2013

Image Compression

In this entry I'm gonna talk about image compression using Huffman
method to compress the image. Huffman is a method that makes a three
keywords where each keyword has a value that have less weight than the
one that is replaced, and as you get more large the three the high
frequencies are more weight than the ones with high frequencies.
Below we can see an example of how does it work.



In the program that I made you need to put a keyword "comprimir" to
select that you wanna compress a file or "descomprimir" to select that
you wanna descompress a file, after you press enter you are gonna put
you're file name once that you put it, the compression or
decompression begins.



When you compress a file with my program you are gonna see in the
terminal a dictionary of frequencies of the values followed by a
binary file created with the Huffman's algorithm and then the time
of execution.




The flow for compress is the next one:


And the flow for decompress is the follow one:

All this happen using the pixel value of each coordinate of the image,
and then using the flow that I mencioned before we can get the image
compressed or decompress (once is compressed).

A good way to examine the performance is saving the time of execution
and the size of the file that print out my program. To see how the performance
is going I recommend a linear graph.

The program just is working for compression, I had problems to decompress
the file but the logic pretty much the same as previous programs that I made
about using Huffman's algorithm.

This is the code that I made:

martes, 28 de mayo de 2013

Bioinformatic

For this homework I have to search an article in the web that talk
about Bioinformatic related with Theory Information. The articule that
I found is the next one:
 
  Integrating Biological Research through Web Services
  Hong Tina Gao, Jane Huffman Hayes, et al.

In this topic they talk about a case of study where demostrates that
Web Services could be key to coordinating and standardizing
incompatible applications in bioinformatics, an effort that is
becoming increasingly critical to meaningful biological research.

This starts with the disadvantage with the people that work in biology,
they need to analyze microarray to search certain proteins, look for
some patterns, certain sequence, etc., in a microarray are aproximatetly hundreds of
millons of molecules so it's to hard to make a search manually, for
this they make scripts where they implement algorithms depending in
what they are working for, then when they get a result they have to
make readable that result. As you see it's very difficult to make a
script, implement an algorithm and then make readable the information.
 
This is a microarray, a set of molecules.


That's why in these guys implement Web Services to avoid that the
people that work in Biology need to know about programming, need to
implement algorithms and then making readable, they said that the
biologist just need to know about basic skills about computer like
uploading a file in a web page, use keyboard and mouse, then they can
put some kind of rules to say if they need to look for some sequence,
search and certain of molecules, proteins, etc., after they put the
rules they just wait like a 10 or 15 minutes for a result, here is
important to say that in normal experiments in a normal computers is
about 1 hour or 10 hours to wait for a result, and after wait the time
necessary you just get a file in the result wished and ready to read.

Below we can see an diagram of how the web service that takes as inputs
microarray works.

  


This way any biologist can make experiments in just minutes, avoiding
that the biologist the need of programming skills.

Conclusion

I think this is a great idea because the biologist just need to make
some clicks to get his results and then get some conclusiones in some
minutes. This help to make a good improvement of the biologist and
increase the levels of experiments, invents and progress in biology.
 

Reference

Gao, H. and Huffman Hayes, J. (2005) Integrating Biological Research
through Web Services. Disponible en:
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1413114&tag=1
[Accesado: 28 Mayo 2013].

Glosary of Information Theory

Cyclic codes
They are linear block error-correcting codes that have convenient algebraic structures for efficient error detection and correction.

Matrix theory
It's a branch of mathematics which is focused on study of matrices. Initially, it was a sub-branch of linear algebra, but soon it grew to cover subjects related to graph theory, algebra, combinatorics and statistics as well.

Merge
In the context of information theory is like mixing, adding in dictionaries, matrixes and files. 
 
Signal
In the context of information theory is a kind of signal generated by a electromagnetic phenomenon and in each sign codify a content that can be analyzed.

Previous
In the context of theory information could be a file size before it's compressed.

Weakness
In the context of theory information could be if the compression ratio is too low.

Unique
In the context of theory information could be a unique key that could be used for the dictionary as a reference.

Ignore
In the context of theory information could a certain bits that can be used for represent white spaces.

Emit
In the context of theory information could apply in adaptative encoding while the code is compressing a file and when it's require to change some logic of the code you can emit a kind of signal.

Reconstruction
In the context of theory information can be a method that decode a compress file.

Target
 In the context of theory information can be a method that encode a file that is a target.

References.

Cyclic code
http://en.wikipedia.org/wiki/Cyclic_code

Matrix theory
http://en.wikipedia.org/wiki/Category:Matrix_theory

lunes, 27 de mayo de 2013

Redes Sensoras

Para esta semana se buscaron papers sobre el tema de Redes Sensoras
para la clase de Redes de la Telecomunicación, el paper que encontre
se llama

         The Deployment of a Smart Monitoring System using Wireless
         Sensors and Actuators Networks
         Nicola Bressan, Leonardo Bazzaco, Nicola Bui, et al.


Lo que proponían en este paper es una implementación de un sistema de
vigilancia inteligente en una red de sensores inalámbricos, en donde
se enfocan en un protoloco de enrutamiento sólido a tráves de un protocolo de
enrutamiento que es de  bajo costo de energía y con poco ruidos (RPL).
Su estructura se basa en una aplicación ligera de transferencia de
estado de representación (REST) paradigma por medio de un servicio web
binario, y en un mecanismo de publicación y suscripción, por lo que
cada nodo tiene un conjunto de recursos (por ejemplo, sensores
ambientales) a disposición de las partes interesadas.

Realizaron pruebas dentro de una red que se encuentra en prueba dentro
de algunas regiones de Estados Unidos esta red se llama WSAN ahí
buscan modelar el comportamiento de un tamaño de construcción de redes
inteligentes y se centran en la comprensión de si las soluciones
estándar WSAN están preparados para soportar los requerimientos de las
redes inteligentes, las redes sensoras se pueden beneficiar en gran
medida si con usados como los servicios web y que si se utilizan
ampliamente podría tener éxito en mecanismos de integración de algunos
sistemas que permite crear una mayor distribución en cualquier sistema
que sea construido en componentes estándar en cualquier sistema, por
ejemplo en la industria, casa de automatización, así como sistemas de
gestión de energía entre muchas cosas.

TinyREST implementa de una manera eficiente servicios web dentro de la
red WSAN al minimiazar cuidadosamente la sobrecarga introducida por la
capa de transporte, usando formato de datos como XML y WSDL. Los
servicios web se pueden clasificar en base RESTful y base SOAP, aunque
el enfoque le quieren hacer es a RESTful ya que es ligero.

Demostraron la viabilidad de WSAN basada en IP, donde los nodos envían
datos a tráves de servicios web. Este trabajo parte de la
implementación ligera de los servicios web basados en REST en la
arquitectura WSAN.

Hicieron algunos experimentos sobre el enrutamiento, en particular en
la focalización sobre la fase de configuración y las principales
funciones de control como son los parámetros de la función de
configuración del algorítmo RPL. El experimento lo realizaron en la
universidad de Pandova.



En el despliegue del servidor central se mantiene la conexión a un
nodo que es un sensor que esta colocado en la esquina superior
izquierda de la imagen. La topología de la red se encuentra con 80
nodos de los cuales se han escogido de diferentes area y diferentes
densidades de nodo; lugares como cuellos de botella (pasillos), así
como salas de laboratorio y esto permite probar el rendimiento de
enruteamiento en un entorno de reproducción de un despliegue de redes
inteligentes realista. Cada nodo ejecuta ejecuta el protocolo RPL.

Con el fin de probar el impacto de los parámetros de RPL en la
creación de la infraestructura de enruteamiento dejaron que las
constantes varien un poco en cambios en un tiempo de intervalos
preconfigurados.

Ahora veamos la evaluación de desempeño en donde se muestran los nodos
registrados en tiempo en donde K representa el número de transmisiones
realizadas con el servidor central.


 
Conclusión

Este trabajo tiene un gran futuro como para cuidades inteligentes, por
medio de este tipo de comunicación podríamos llegar a obtener
servicios de la web sin necesidad de estar conectados en la web esto
ayudaría a que cualquier tipo de lugar inteligente pueda mantener
comunicación con sus actuadores y que así envie información en tiempo
real sin la necesidad de comprar componentes que son relativamente
caros.


Referencias

Nicola Bressan, Leonardo Bazzaco, Nicola Bui, et al. (2013) The Deployment of a Smart Monitoring
System using Wireless Sensors and Actuators Networks.
Disponible en :
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5622015
[Acesado en: 27 Mayo 2013].

viernes, 24 de mayo de 2013

Redes Sensoras


Para esta entrada se hablará sobre el tema de redes sensoras, en donde
se desarrolló una simulación de una red sensora. En la simulación se
tomaron en cuenta 3 dimensiones en el eje x, y y z en el que z a que
tanta altura se encuentra el nodo; Imaginemos que los nodos son unas
antenas que se encuentran de manera estática en el aire dichas antenas
pueden percibir objetos pero con una cierta altitud de diferencia,
digamos que un objeto no identificado llamemosló enemigo dicho enemigo
pasa a 30 metros de la antena en donde su radio de percepción
onmidireccional es de cierto alcance 20 metros, entonces el enemigo
pasará desapercibido.


Esta simulación puede ser comparada en situaciones reales como la
detección de ciertos enemigos aereos usando UAVs en donde cada UAV
tiene cierto rango de alcance de vista.


A continuación mostrare la simulación en un video, donde se tienen dos
opciones en la primera parte que tuve problemas en donde se tenía que
tener una cierta matriz en donde cada cuadro tenía que tener un cierta
rango de altitud que al final simplemente se los incormporé a cada
nodo, y cada nodo puede transmitir un mensaje de propagación siempre y
cuando se encuentre en su rango de comunicación.

Video.



Ahora veamos algo de código (el cual se encuentra comentado).

miércoles, 22 de mayo de 2013

Wavelets con Python


En esta entrada hablaremos de wavelets (onduletas), las onduletas son funciones que
siguen el mismo principio que la transformada de Fourier nadamas que
estos se trasladan y dilatan para obtener datos.

Para más información sobre que son las onduletas pueden entrar a esta
página de Wolfram Alpha.

        http://mathworld.wolfram.com/Wavelet.html

En esta ocasión hablaremos sobre transformadas de onduletas
estacionarías (Stationary Wavelets Transform aka SWT) que es un
algorítmo diseñado para superar cierto ruido que hay al momento de
hacer la traducción de la invariancia de la transformada de onduleta
discreta (Discrete Wavelet Transform aka DWT). La traducción de la
invariancia se logra mediante la eliminación de las muestras
inferiores (downsamplers) y muestras superiores en el DWT y tomando
muestras superiores del filtro de los coeficientes por un factor de 2
(j-1) en cada nivel j del algorítmo.

En comparación del DWT y el SWT es que la salida de cada nivel de SWT
contiene el mismo número de muestras como la entrada, por lo que para
una descomposición de los niveles de N hay una redundancia de N en los
coeficientes de las onduletas.

A continuación podemos ver un diagrama de bloques en el que se muestra
la implementación de SWT.

           
                        Referencia:http://en.wikipedia.org/wiki/Stationary_wavelet_transform

En cada nivel los filtro toman las muestras superiores de la versión
anterior.

             

                        Referencia:http://en.wikipedia.org/wiki/Stationary_wavelet_transform


Para más ejemplos pueden visitar esta página:

http://www.wolfram.com/mathematica/new-in-8/wavelet-analysis/stationary-wavelet-transform-(swt).html


¿Qué aplicaciones tiene SWT?

Nos sirve para eliminar el ruido en una señal y para el reconocimiento de patrones en imágenes.

A continuación usaremos una librería en Python llamada PyWavelets que
nos permite realizar dichas funciones de una manera sencilla para
realizar pruebas de teorías ó proyectos. Primero lo que debemos tener
instalado como requisito son las siguientes librerías:

  • Python 2.6 ó 2.7.
  • Numpy.
  • PIL ( se usará solamente para abrir imagenes ).

Una vez que estamos seguros de tenerlas instaladas vamos a descargar
la librería, hacer eso podemos descargarlo directamente del GitHub:
   
                     https://github.com/nigma/pywt

Luego python setup.py install para instalar la librería ó pueden
instalarlo con pip install PyWavelets ó easy_install PyWavelets.

Una vez instalado lo que podemos hacer es importarlo de la                                                            siguiente manera import pywt.

Ahora lo que haremos será probar un demo en el que muestra distintos
niveles de SWT en este caso usaremos 3 niveles en una imagen que
mostrare a continuación:




Y esto sucede cuando es pasado por el primer nivel.



Segundo nivel.



Tercer nivel.



Como podemos observar a como se iban subiendo los niveles en el
SWT se iba cambiando la resolución de imagen, esto ayuda por un
lado la compresión de imágenes y por otro lado una forma de realizar
un filtro para poder tomar un ciertas regiones de la imagen en donde
realmente no nos importa la forma si no la existencia de las mismas
regiones.

Ahora como podemos ver esto es lo que sucede cuando se llega al
nivel 5 de SWT con la imagen antes presentada.



Para realizar lo anterior simplemente usé el código que se encuentra
dentro de la carpeta de demos en el GitHub del proyecto e hice unas
cuantas modificaciones para cambiar los niveles y poder hacer pruebas
de distintas imágenes diferentes de las que vienen por default. Aquí les
dejó algo del código que utilice y modifiqué.



Fuentes:

     SWT
     http://en.wikipedia.org/wiki/Stationary_wavelet_transform

     PyWavelets
     http://www.pybytes.com/pywavelets/

martes, 21 de mayo de 2013

Redes Ad-hoc


Dada la tarea de esta semana de laboratorio me puse a investigar algún
paper que este relacionado con redes ad-hoc y lo que encontre fue el
siguiente paper Location-Aware Services over Vehicular Ad-Hoc Networks
using Car-to-Car Communication por Marios D. Dikaiakos, Andreas
Florides et al. en el cual cubre la aplicación  emergente sobre comunicación
de un auto a otro usando redes ad-hoc, aunque actualmente dicho paper
contiene información sobre un protocolo para realizar comunicación
antes mencionada.

Actualmente muchas manufacturadoras de automoviles y centros de
investigación están desarrollando protocolos de comunicación de un
auto a otro ( Inter-Vehicle Communication (IVC) ) y desarrollando
sistemas usando el mismo protocolo para establecer una comunicación de
un auto a otro creando una red vehícular ad-hoc ( Vehicular Ad-Hoc
Networks (VANETs) ). Para poder crear un protocolo de
comunicación de este tipo se tienen que tomar en cuenta ciertos retos:

 - Cambios rápidos de conexión a una topología, esto se debe a que los
   autos siempre en la mayoría de los casos van en constante
   movimiento.

 - Frecuentes desconecciones de la red, especialmente en el caso de
   cuando haiga una baja densidad de autos y cuando un auto se
   encuentre en kilómetros quizá.

 - Compresión de datos esto para situaciones en las que haiga límites
   de banda ancha.

 - La predicción de la viabilidad de la posiíon del auto, esto para
   poder recibir dentro de la red caminos pre-hechos.

 - El uso de energía se contempla como si no tuviera cierto límite
   aunque realmente se toma del auto.


El enfoque que le dieron en el paper es sobre el problema de proveer
servicios a partir de la localización del auto, esto se realiza
tomando ventaja de la comunicación wireless de auto a auto (IVC) y la red
ad-hoc creada a partir de dicha comunicación, se enfocan sobre
servicios distribuidos de información en demanda describiendo las
condiciones de los caminos y disponibilidad de algunos servicios en
algún area geometríca ( Condiciones de tráfico ( congestión, flujo de
tráfico), alertas de tráfico como resultado de viajar en un cierto
camino ( Accidente automovilistico, obstrucción de algún auto ) y un
directorio de servicios ( Localización y listas de precios de
estaciones de gas, listas y menus de restaurantes ).

Cada auto se asume que esta equipado con un sistema embebido con una
pantalla que muestra la interfaz, GPS, una red wireless para la
comunicación IVC y una interfaz que muestra un diagnóstico del auto (
Muestra datos de los sensores que estan montados en el auto y
conectadas con un sistema embebido). También se esta tomando encuenta
que algunos autos pueden estar equipados con una red móvil de
comunicación ( un componente parecido a un telefono ).

El auto establece una red ad-hoc vehícular a tráves de las conexiónes
establecidas por la interfaz wireless del auto, también un cierto
números de lugares que ofrecen servicio entran a la red que también
están equipados con el mismo tipo de interfaz y participan en la
infraestructura de la red ad-hoc vehícular, y a partir de la
referencia geografica de algún auto se puede mostrar ciertos mensajes
del establecimiento. Se toma encuenta que en caso de que no se
encuentre una gran densidad de autos para que la red ad-hoc vehícular
funcione este se comunicará usando la red del dispitivo móvil,
wireless para que este comience a enviar información a todos los autos
en caso de que se encuentre alguno cerca.

Ahora veamos un ejemplo empleado en el paper para poder explicar como
funciona la infraestructura antes mencionada.

Imaginemos en la figura de abajo que un auto A que esta localizado
en la parte superior derecha de la figura y se esta moviendo hacía el
sur en la avenida Woods para llegar a su destino hacía el oeste de la
cuidad. El conductor quiere ir ya sea por la calle Rt513 ó 27, también
esta interesado en ir por gas para el auto sin pagar más de 25 pesos
el litro de gasolina. El conductor pregunta al sistema de navegación
las condiciones de tráfico y algunas alternativas para ir por la calle
Rt513 a este ó la calle 27 al este, y por una localización para ir por
un café y una gasolinera por la misma ruta. A simple vista se puede
observar que es posible ir por la calle Rt513 a tráves de la calle JFK
Dr que es el camino que se encuentra relativamente cerca de A. Pero
antes de trazar dicha ruta el servicio de la infraestructura debería
contestar como respuesta según las peticiones dadas por el conductor,
la interacción entre el conductor y el sistema de navegación puede ser
realizada ya sea por voz o con una interfaz touch screen. La
información solicitada por el conductor del auto A se puede calcular a
partir de datos disponibles en los autos y las instalaciones de la
carretera situados en los tramos de la carretera indicados. Por
ejemplo, el flujo de tráfico en el segmente de Rt513 se puede derivar
mediante la estimación de la velocidad media de los autos en
movimiento en ese segmento por un corto período de tiempo, una
congestión en ese segemente de carretera se puede establecer a partir
deuna consistentemente baja de velocidad media y / o  una alta
densidad de vehículos en ese tramo. Del mismo modo, el funcionmiento
de una estación de gasolina en la calle 27 se puede deducir de la
información enviada por la red que se encuentra en la gasolinera, que
específica el tipo de servicio que se ofrece, la dirección y los
precios.


Referencia imagen: Location-Aware Services over Vehicular Ad-Hoc Networks using
Car-to-Car Communication.

Para tomar en cuenta la información dada, el sistema de a borde del auto A
tiene que traducir consultas de usuario final en una secuencia de
consultas sensibles a la localización, cada una de estas preguntas se
debe encaminar hacia su lugar de interés, ya sea por la red ad-hoc o
tráves de la red móvil.


Referencias

Dikaiakos, M. and Florides, A., et al. (2007) Location-Aware Services over Vehicular Ad-Hoc Networks using Car-to-Car Communication. [online] Available at: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4346445 [Accessed: 20 May 2013].

Simulación de red ad-hoc


En esta entrada se creó una simulación de una red ad-hoc que es el tema
de esta semana de redes de la telecomunicación.

En la simulación se tiene en cuenta que se encuentra en un campo en el
que se crea la red se encuentra por default en 800x800 en donde cada
nodo de la red en el que se ingresa tiene una cierta probabilidad de
que a paresca cada tiempo de espera; Se tomaron en cuenta tomar en
lugar de una distribución exponencial, una distribución bernoulli ya
que tiene resultados muy similares a la distribución geoemtrica que es
el mismo resultado obtenido por una distribución exponencial.

Cada nodo tiene una id única que se genera de manera incremental, inician
con una vida de 100 en el que cada retraso se les baja una cantidad de
5 y en caso de que transmitan un mensaje se baja la energía al nodo
tomando en cuenta el tamaño del mensaje y multiplicandoló por un
porcentaje del radio de transmisión.

Los nodos tienen un movimiento en el eje x y y en el cual se crea un
valor aleatorio según la velocidad configurada para que este se
diferencié con cada eje x y y para crear el efecto de movimiento.


Las transmisiones de un nodo a otro se crean cuando un enemigo se
encuentra presente dicho enemigo tiene casi las mismas propiedades que
el nodo con la excepción de que este tiene un radio más chico por
default y otro color que lo distingue de los demás nodos.

Los nodos que transmitan bajarán su batería y una vez que lleguen a 0 este
quedará en una lista negra de nodos por eliminar del campo, de la
misma manera ocurre con los enemigos pero en el caso de ellos estos
tienen una vida de 20 por default y una vez que lleguen a 0 este
quedará en una lista negra de enemigos por eliminar del campo.

Ahora veamos un video de como funciona la simulación con una
configuración que se encuentra por default.



Ahora veamos un video de como funciona la simulación con una probabilidad
de 20% de que a paresca un nodo por tiempo determinado y con una dimensión
de 1000x1000.



Este es el código. 

Ideas de startups


Ahora se hablará sobre posibles oportunidades de negocio en el tema de
cómputo ubicuo.

En el salón de clases se hizo una lluvia de ideas en temas como
de hospitales inteligentes, publicidad de realidad aumentada,
licencias inteligentes, sensores en instrumentos deportivos entre
otros.

En tema sobre hospitales inteligentes se ve un area de oportunidad muy
grande, primeramente debido a que no existe un distruibidor en el area
aquí en México y segundo es muy preocupante que incremente el robo de
niños en los hospitales debido a que personal no autorizado ó en su
defecto personal entra y roba algún bebé. Con estas problematicas a
resolver lo que se propondría como posible negocio sería una diadema o
tarjeta que pueda ser reconocida de manera remota o en su defecto que
sea leída por medio de un sensor de acercamiento esto con el fin de
mantener un track de personal autorizado y los pacientes (incluyendo
bebés) el track puede ser posible debido a que existirá una especie
de red en el que cada nodo de la red será una puerta de acceso a cada
lugar en el hospital, y luego por un conjunto de permisos se le
abrirán puertas al usuario y cuando este fuera de un cierto area
establecida se alertará al personal ó algún familiar según que tipo de
configuración se le haya colocado al usuario.

Este tipo de sistemas pueden llegar a ser rentables estableciendolós
como servicios en los hospitales, en donde dicho hospital no se
preocuparía por capacitar al persona si no, esto se contratá por
servicio en donde llegará personal capacitado que podrá estar a la
orden del día o según el tiempo contratado.

Sobre publicidad de realidad aumentada que va más dirigido a una nueva
tendencia que se esta teniendo en países Europeos. La idea es simple
tu ves un cartel con los productos básicos, escaneas los productos que
te interesan por medio de un código de QR y al finalizar de eligir los
productos necesarios simplemente decimos que hemos finalizado y
esperamos en nuestro domicilio a que lleguén las cosas que ordenamos.

Tiene gran potencial de mercado actualmente la gente pide a domicilio
en las mini tiendas que existen por las colonias simplemente por que
no quieren salir de su casa y la gente solamente va a los
supermercados porque realmente no tienen en las mini tiendas lo que
necesitan.

La siguiente propuesta aún se encuentra mucho más interesante la idea
es crear una licencia que tenga la tecnología de NFC (Near Field
Communication) en el que el vehículo a manejar contendrá un sensor de
dicha tecnología en donde espera que si el usuario no tiene la licencia,
el carro no se encenderá y en caso contrario este se encenderá (puede
ser configurable a que solamente un usuario lo pueda manejar; para
evitar problemas de robo) esto con el fin de poder eliminar la cultura
de manejar sin licencia y por su puesto bajar el indice de robos.

La última propuesta es sobre tecnología que se incorpora en los
instrumentos deportivos que actualmente existen pero están en proceso
de trámites, donde la cuestión es si realmente se cumplen las reglas.
Uno de los ejemplos que actualmente existen en fútbol son dos sobre
detección de gol, en el que buscan evitar que siempre exístan errores
por el arbitro. El primero de los que actualmente exíste es sobre unas
técnicas que realizan sobre análisis de frames en el que toman dos
videos de dos diferentes ángulos y luego de un cálculo de
trigonometría básica determinan si la pelota realmente entro a la
portería. Otro que exíste es de una nueva generación de balones hechos
de latex en el que dentro de la pelota se incorporan sensores como
GPS y presión esto con el fin de identificar si el balon realmente
entró a la portería. Estos ejemplos pueden servir como posibles ideas
en negocios sobre cómputo ubicuo en instrumentos de deporte que
actualmente no han sido explotados a su máxima expresión.

Reflexión de Proyecto de Ubicuo


Al principio la idea del proyecto se fue evolucionando a como se
vieron las propuestas de los compañeros.

Al ir investigando sobre los productos emergentes y existentes nos
hizo reflexionar sobre las necesidaes del usuario, a partir de las
necesidades tomadas del usuario se realizaron unas encuestas en la fue
al principio muy díficil hacer ya que las personas no son muy
cooperativas y las que cooperaban eran personas que se encontraban
dentro de las edades de 15 a 32 años.

Después de ver las respuestas de las personas, nos dimos cuenta que
las personas no estan dispuestas a pagar cierta cantidad de dinero por
una aplicación ó servicio, así que optamos por una forma en la que el
usuario no tenga que pagar por un hardware extra (en algunos casos) ó
por comprar alguna licencia.

Al final optamos por una aplicación que las personas usarían de manera
gratuita y con un precio razonable extenderle las funcionalidades, esto
para enganchar a el usuario si le interesa realmente la aplicación, además
se aprovechó la tecnología de bluetooth que actualmente se tienen en los
smartphones ya que por medio de ella usamos como referencia si suena
la alarma para decir que un dispositivo ha sido pérdido o no.

Para poder usar la aplicación se tiene que tener un dispositivo
Android con la versión 4.2 el cual tenga una tecnología bluetooth
y cuando se quiere mantener el monitoreo de un artículo, dicho
artículo tiene que tener un dispositivo bluetooth que emita señal.
Luego de haber obtenido la señal que emite el artículo se toman en
cuenta la MAC Address esto para evitar cierto conflicto entre varios
artículos, una vez obtenida la referencia se guarda y verifica por
cada cierto intervalo configurado sí existe aún en el rango del
dispositivo en caso de no encontrarse este emite una alarma
previamente configurada.

Hubieron muchas díficultades debido a que hubo una mala organización
en el equipo, algunos compañeros tuvieron ciertas ineficiencias en
cuestiones de conocimiento en Android.

Como reflexión del equipo yo creo que al momento de crear el proyecto
se tienen que poner a desarrollar una idea sólida, y al mismo tiempo (en
caso que no se cuenten los conocimientos necesarios en el area) comenzar
a adaptarse a la plataforma en la que se desarrolla el software, una vez
establecida la idea se tiene que comenzar al desarrollo, en donde, si
se organiza el equipo de manera remota dicho equipo tiene que mantener
el contacto sobre algunas dudas y tener siempre en un repositorio
donde se puedan observar los cambios y avances realizados, en caso de
que el compañero se tenga que juntar de manera presencial con el equipo
estos deben de ir preparados sobre la idea de que se va trabajar en
que modulos se van a trabajar y cuanto se estima de tiempo para
trabajar.

Este proyecto me dio una idea de como hacer buenas selecciones para
hacer futuros trabajas y como cambiar la modalidad de trabajar con las
personas con las que se trabaja.

Críticas de Proyectos de Ubicuo


        SeguriLap

Yo creo que pudieron haber creado algunas pruebas ya realizadas dentro
de la presentación ya que suele pasar que en las presentaciones suelen
fallar las demos en vivo.

Hubiera estado interesante poder haber integrado como un autologin sin
poner la contraseña con solo reconocer la cara del usuario pero como
es un demo yo lo veo esto como una propuesta a futuro.

       
          CarNXP

Aquí creo que hubiera sido interesante ver como funcionaría el
producto demo en un automovil y ver como interactúa el usuario aunque
sea usando la técnica hombre trás de cortina para cubrir con algunas
características propuestas en el proyecto de manera inicial.

Después de haber visto los datos de lo que consume de gasolina un auto
hubiera sido interesante generar una simulación que genere datos por
medio de una distribución para poder trabajar con ellos.


          Despertador Inteligente

Ahora después de ver la descripción del proyecto me di cuenta que no
se tiene en cuenta sí realmente preveen algún tipo de accidente por
algún corto por medio del circuito y que quemé la almuahada del
usuario y pueda ocasionar un accidente.

También como propuesta a futuro sería interesante hacerles encuetas al usuario
después de utilizar y ver que tanto se comporta psicologicamente.

En la prueba final hubiera sido importante tener el caso en el que
usuario se levanta de la cama y vuelve para volver hacer sonar la
alarma


          Galería Inteligente

Después de ver la demostración en vivo sería bueno poder hacer que el
sensor pueda verificar cada cierto intervalo de tiempo configurado que
si realmente se encuentran los usuarios en caso de no encontrarse que
se detenga la interacción.


           Casa Inteligente

Yo creo que no era necesario hardware extra para poder realizar la
conexión de un arduino al raspberry pi, actualmente existen varios
tutoriales sobre como comunicar el raspberry pi con el arduino, aunque
se entiende que tienen poco conocimiento en eléctronica y no se quiere
estropear el hardware.


          Garage Inteligente

Hubiera sido bueno agregar la opción de cancelar la invitación del
cuadro  QR una vez generado porque podría darse el caso en el que el
usuario cancelé y la invitación siga vigente y alguien quien ha sido
aceptado pueda entrar al garage sin intervención de algún tercero.


         Alarma de Automovil

Yo creo que faltaron diagramas para tener algo más visual (diagramas,
casos de uso) y ver como realmente funciona, osea como es el proceso
que se hace a partir de los datos de entrada dados.


         Oficina Inteligente

Aquí yo creo que les faltó hacer trabajo colaborativo porque como
comentaron en la presentación se crearon distintos modulos de manera
independiente y no se contemplo una forma de como unir todos los
modulos.

Otro aspecto también pero más bien para propuesta a futuro sería hacer
un análsis de como se comporta el usuario con el sistema.

jueves, 16 de mayo de 2013

Detección de movimiento

En esta entrada hablaremos sobre la detección de movimiento, en la cual consiste ver la diferencia de un a imagen anteriormente obtenida con una actual, y a partir de la diferencia de los objetos encontrados se establece hacía que dirección se fueron. Pero antes de obtener las diferencias nosotros lo que debemos hacer es la detección de objetos, esto es realizado por medio de un BFS (Breadth First Search) por medio de este método creamos diferentes grupos para cada objeto y de la cual el fondo es descartado simplemente descartando el grupo con mayor cantidad de pixeles.

Una vez obtenidos los grupos estos son guardados en una lista en donde dicha lista se le verificará la diferencia  del centro de los objetos con otros objetos obtenidos anteriormente, dicha diferencia según su valor se establece si se esta moviendo hacía la derecha ( -> ), izquierda (<- ), abajo ó arriba y para saber si se esta alejando ( - ) ó acerando ( + ) se obtiene la diferencia del ancho y altura de la imagen tomando como referencia el penúltimo valor obtenido del ancho y la altura. El ejemplo que les proveeré contiene un generador que realice con el fin de poder realizar una prueba tomando imágenes del canvas y a partir de ahí pasar a lo que el procesamiento de la imagen para poder hacer la detección del movimiento.

A continuación veamos el código:


Para ejecutar el programa damos primero la cantidad de nodos y luego el tiempo de espera de movimiento:

Ahora veamos unos ejemplos con en unos videos de como realiza la detección del movimiento.

En este ejemplo podemos ver como se comporta el programa cuando esta detectando el movimiento de un objeto.



En estos dos vídeos podemos ver como se comporta cuando realiza la detección del movimiento de varios objetos. Se detectaron unos problemas al momento en el que se juntan dos objetos, ya que se detectaban como si fueran 3 objetos esto era debido a que generaba borde el objeto y se procesaba como si fuera otro objeto.





martes, 14 de mayo de 2013

Reporte de Proyecto

¿ De qué trata el proyecto ?

Primero daré una pequeña introducción al proyecto. Es un programa da ordenes a un drone para que se establesca dentro de la imagen de una camara, esto se puede realizar analizando la imagen tomada de la camara e identificando la posición del drone esto con el fin de identificar en que parte del area de la imagen se encuentra el drone y a partir de ahí decirle al drone que movimiento realizar para llegar al centro de la imagen la cual es nuestro caso ideal (estar en el centro de la imagen).

 ¿ Cuál es el propósito del proyecto ?

El propósito principal del proyecto es poder hacer un proyecto génerico para que se puedan realizar proyectos en donde el drone pueda realizar alguna cooperación con algún otro robot en la superficie, realizar alguna busqueda en la superficie ó seguir algún objetivo.

¿ Cuál es el diseño del software?

El software actualmente se compone de las siguientes partes:


¿ Qué librerías se utilizaron ?

Las librerías utilizadas son las siguientes:

   PIL >= versión 1.1.7
   Tkinter >= versión 8.5
   Numpy >= versión 1.7.0

Dichas librerías fueron usadas con Python versión 2.7.

Descripción de los procedimientos en el proyecto

Primero obtenemos una imagen del drone, una vez obtenida la imagen del drone (como la imagen de abajo).



Después realizamos una convolución para realizar la detección de bordes usando las máscaras de Prewitt, una vez obtenida la convolución se realiza una binarización de la imagen.


Después de realizar la binarización lo que pasaremos a hacer será la detección de objetos utilizando el BFS (Breadth First Search), se crean 3 grupos de objetos (cada color es un objeto); drone, fondo y ruido, esto se hace obteniendo el primer objeto con mayor cantidad de pixeles el cual llamaremos fondo, luego obtenemos el segundo mayor objeto con mayor cantidad de pixeles como drone y por último todos los demás pixeles que queden fuera de este grupo se denominan ruido.


Luego de obtener los 3 grupos pasaremos a clasificar el ruido a partir de que vecino se encuentre dentro del ruido, por ejemplo si una coordenada obtenida dentro del grupo de Ruido tiene más vecinos de fondo entonces dicha coordenada se clasifica como Fondo en caso contrario será clasificado como Drone.


 Ahora solamente tendremos el grupo de Fondo y Drone. En el grupo de Drone lo que buscaremos serán los ejes x y y mínimos y máximos, esto con el fin de obtener las dimensiones del Drone así como el centro de masa del Drone.


Obtenemos el centro de la imagen y obtenemos la diferencia del centro del drone y la imagen. Dicha diferencia nos ayudará a definir en que area se encuentra por las siguientes reglas:

Primero se tiene el centro de la imagen a partir del centro de la imagen se tiene una cierta tolerancia hacia el eje positivo del eje x se tienen brincos de 10 %, 30% y 50% al igual que en el eje negativo de x, esto también sucede en el eje y que tiene brincos de 15% y 45% en su eje negativo y positivo, y cada tolerancia en el eje x se tiene dividido en 5 partes y en el eje y dividido en 3 partes.

  • Usaremos el eje x para determinar si el drone debería irse hacía la izquierda ó derecha. Si la diferencia del drone y la imagen es mayor en valor absoluto a 10% en el eje negativo de x significa que el drone se encuentra en la izquierda de la imagen y debe irse hacía la derecha, en caso de que se encuentre a la derecha tendrá un valor positivo mayor al valor 10% del ancho de la imagen deberá hacerse hacia la izquierda ya que se encuentra el drone en la derecha. En caso encontrarse dentro del 10% del valor absoluto del ancho de la imagen significa que esta en el centro.
  • Usaremos el eje y para determinar si el drone debería irse hacía abajo ó arriba. Si la diferencia del drone y la imagen es mayor en valor absoluto a 15% en el eje negativo de y significa que el drone se encuentra en la parte de abajo de la imagen y deber irse hacía arriba en caso de que sea en el eje y positivo debería irse hacía abajo. En caso de encontrarse dentro del 15% del valor absoluto de la altura de la imagen significa que esta en el centro.
  • Usaremos las dimensiones del drone para determinar si se acerca o aleja, teniendo como límites que tenga un tercío de la imagen como mínimo en su tamaño normal y como máximo la mitad de la imagen como su tamaño máximo, si sale del límite máximo debería alejarse y si sale del tamaño normal debería acercarse.

Trabajo a futuro

  • Aplicación de velocidades del drone saber la velocidad de movimiento.
  • Existe cierto problema al momento que el drone se encuentra parcialmente visto dentro de la imagen, ya que este lo detecta como si se estuviera alejando y pide que se acerque el drone (como podrán ver en la imagen de abajo).

GitHub

Enlace directo al branch master del proyecto.
https://github.com/SaulG/proyectoVision/tree/master

Críticas de Privacidad

Alarma Inteligente

En la presentación les faltó sobre como se tratan los datos una vez
obtenidos ya que es uno de los aspectos importantes, entiendo que se
cubrió parte de que pueden ser expuestos los datos sí alguien los
accede pero existen maneras de poderlo encriptar para poder evitar que
alguien pueda llegar a aprovecharse de la información. Yo creo que el
punto importante y final que les puede ayudar a evitar problemas de
privacidad es la encriptación de la información y evitar el manejo de
ello por parte de la empresa dandoles pseudonombres a los usuarios.

Computadora Inteligente

Yo creo que en lugar de estar guardando imagenes del usuario para
poder estar realizando la autentificación, pueden solo estar guardando
datos de los polígonos que se forman en la cara esto para poder
encriptar bien los datos y también para que sea mas díficil de
interpetrar por alguna tercera persona.

Oficina Inteligente

Se tomaron muy bien las consideraciones sobre las credenciales de los
usuarios con los tags NFC, sin embargo no se tomaron en cuenta los
datos que se encuentran en la página web por ejemplo las medidas de
seguridad implementadas para evitar que algún tercero tenga acceso a
ellas otra de las cosas también a considerar es como proteger al
servidor sobre algún tipo de ataque.

Galería Inteligente

El punto aquí importante hubiera sido sobre como almacenan los datos
de los usuarios en el servidor bajo que tipo de encriptación sí
existe, también sería bueno colocar en términos y condiciones,
privacidad algún tipo de señalamiento de que ustedes almacenan los
datos y que una vez dentro del museo están deacuerdo con dicho
término. Yo creo que aquí si hay cosas que involucren privacidad,
nadamas que es díficil verlo cuando tu mismo eres la persona que lo
desarrolla aquí lo que les recomendaría sería realizar preguntas a
otro equipo para así apoyarse por medio de otras propuestas.

Despertador Inteligente

Aquí se les escapó la forma de como iban a crear las cuentas de los
usuarios solamente ví que daban una id única por usuario pero no
dijieron la forma en el que se iban a crear. Esto lo digo porque se
tiene que mantener una cierta sesión una vez que haya concedido acceso
al servidor y si la información se envía tal cual, entonces cualquiera
tiene acceso a los datos del usuario.

Carro Inteligente

Yo creo que la información del historial de las rutas del usuario
puede ser más seguro si se realiza un tunel SSH y no en HTTP, aunque
puede ser que haya una confusión en la presentación. Además me entro
en duda sí el raspberry pi accederá al tunel por medio 3G ó WiFi, porque
dicen que realizarán un acceso que ahora aquí dice que es por tunnel
SSH pero no dicen el como, y da duda sobre si podrán hacerles algún
tipo de ataque y no me refiero sobre la información que sale del
tunel sino el acceso que podría haber al raspberry pi.


Garage Inteligente

Creo que se vieron más puntos sobre el servidor que sobre sí el
dispositivo que se estará usando mantendra alguna información y como
será enviada por medio del dispositivo al web service.

Casa Inteligente

Yo creo que si se tiene que tener en mente que se tienen logs de la casa
en el servidor, también se tienen que considerar a encriptar o mantener seguro
porque si alguien accede al servidor y ve el log que esta dentro de la casa
con el simple hecho de ver las horas de actividad un ladrón puede entrar a
la hora indicada para robar en la casa.

sábado, 11 de mayo de 2013

Redes Satélites

En esta entrada hablaremos primeramente sobre los tipos de satélites que existen, la arquitectura que tienen, tipos de receptores y transmisores, topologías que existen, el porque los hackers quieren hackearlos, el como ellos tienen acceso a los satélites y al finalizar veremos algunos casos reales.

Los satélites hoy en día son usados para:
  • Transmitir en ciertas areas TV.
  • Para realizar una red de datos corporativos.
  • Para realizar una red de telefonía conmutada (ISP).
  • Transmitir y recibir internet.
  • Distribución de vídeos (cines).
  • Realizar comunicación con el ISP (el proveedor de servicio del internet).
Existen 4 tipos de satélite:

  • Satélites LEO (Low Earth Orbit, órbita baja) tienen una altitud de 500 - 2,000 km de la Tierra.
  • Satélites MEO (Medium Earth Orbit, órbita media) tienen una altitud de 8,000 - 20,000 km de la Tierra.
  • Satélites HEO (Highly Elliptical Orbit, órbita elíptica) tienen una altitud menor a los 35,786 km.
  • Satélites GO (Geostationary Orbit, órbita geoestacionario), tienen una altitud de 35,786 km.
A continuación veremos una imagen que nos muestra el tipo de órbita que realiza cada uno de los tipos de satélites antes mencionados.



La mayoría de los satélites se componen de la siguiente manera:


Las frecuencias utilizadas por las antenas son las siguientes:


Estas son las usadas por los satélites.


Las redes VSAT (Very Small Aperture Terminals) son redes privada de comunicación de datos vía satélite para intercambio de información. Se componen por estas características :
  • Tienen 2 tipos de comunicación satélital.
  • Se usa un pequeño disco como antena (diámetro 75cm - 2,4m).
  • Son administrados por el HUB (en este caso desde una estación maestra).
Existen varios tipos de topologías del VSAT, estas son algunas:
  • Transmisión simplex. La aplicación que tiene este tipo de topología  es la transmisión de difusión como los son la TV y servicios de video así como el servicio de radio.

  • Transmisión Duplex de Punto a Punto.  La aplicación que tiene este tipo de topología es el transporte de telefonía de voz, datos y IP (especialmente en configuraciones asimétricas), redes corporativas, contribución y distribución de programas de TV.

  • Transmisión de un punto a múltiples puntos. La aplicación que tiene este tipo de topología es para la creación de redes corporativas, negocios en servicio de TV, servicios de internet entre otros.

  • Servicio de antena móvil. La aplicación que tiene este tipo de topología es para el periodismo electrónico por satélite, para emisión y difusión de eventos especiales, servicios marítimos entre otros.

  • Red estrella. La aplicación que tiene este tipo de topología es usado para redes corporativas ó para la enseñanza a distancia.

  • Red malla. La aplicación que tiene este tipo de topología es para crear redes de datos y telefonía nacional e internacional.


Existen 3 formas de acceder a ellos:
  • FDMA (Frequency Division Multiple Access, Acceso Múltiple por división de frecuencia) es una técnica de multiplexación en múltiples protocolos de comunicaciones tanto digitales como analógicos, principalmente de radiofrecuencia, y entre ellos en los teléfonos móviles de redes GSM. 
    El acceso al medio se realiza diviendo el espectro disponible en canales, que corresponden a distintos rangos de frecuencia, asignando estos canales a los distintos usuarios y comunicaciones a realizar, sin interferirse entre sí. 

  • TDMA (Time Division Multiple Acces, Multiplexación por División de Tiempo) es una técnica  que permite la transmisión de señales digitales y cuya idea consiste en ocupar un canal de transmisión a partir de distintas fuentes, de esta manera se logra un mejor aprovechamiento del medio de transmisión. TDMA es una técnica de múltiplexación que distribuye las unidades de información en ranuras ("slots") alternas de tiempo, proveyendo acceso múltiple a un reducido número de frecuencias.

  • CDMA (Code Division Multiple Access, Multiplexación por División de Código) es un término genérico para varios métodos de multipleación o control de acceso al medio basados en la tecnología de espectro expandido pueden emplearse indistintamente espectro ensanchado, expandido, difuso o disperso. 

  • Los datos a transmitir simplemente se les aplica la función lógica XOR con el código de transmisión, que es único para ese usuario y se emite con un ancho de banda significativamente mayor que los datos.

Como se pudieron percatar los satélites son bien usados para casi las mayorías de las cosas que sucede en el mundo en cuestiones de tecnología y aquí es donde los hackers se involucran más; En la red se confía cierta información como de gobierno, clientes, ventas, multimedia, telefonía, acceso al banco, entre muchos otros, teniendo acceso a esta información se podría causar desde un simple robo hasta ocasionar un posible guerra.

Actualmente existen algunos tipos de ataques de satélite:

Servicio Denegado (DoS).
  • Jam Uplink es crear una interferencia en el enlace de subida.
  • Overpower Uplink es tener el dominio de un enlace de subida.
  • Jam Downlink es crear una interferencia en el enlace de subida.
Posicionamiento Orbital (Orbital Positioning).
  • Comando directo (Direct Commanding) es tener un acceso directo al satélite y poder controlar su funcionalidades de orbitación.
Algunos hackers buscan alguna vulnerabilidad en los ATM's que tienen comunicación por satélite. 

Actualmente el banco tiene dos problemas el primero es por parte de los usuarios y el segundo el sistema.

Por parte del usuario se tienen los problemas de una contraseña débil, son muy vulnerables al pishing y algunos les falta un poco de habilidades.

Por parte del sistema se tiene problemas porque los sistemas están fuera de tiempo, están configurados de una manera insegura y algunos tienen puertos inseguros o algunos simplemente dejan puertos abiertos.

Otro caso que me pareció muy interesante fue que unos hackers quieren comenzar a poner en órbita satélites para evitar la censura en la internet, esto debido a la propuesta de leyes como SOPA. Aquí les pongo un video sobre el proyecto que proponen y una liga a la noticia.



Noticia.
http://thehackernews.com/2012/01/hackers-launching-own-satellites-in.html

Existe una noticia muy relacionada sobre la censura también pero este va relacionada con la famosa página llamada ThePirateBay, en la cual están planeando tener servidores en las nubes con drones de baja órbita, esto para evitar que sigan operando.

Noticia.
http://thehackernews.com/2012/03/pirate-bay-plans-low-orbit-server.html

Otra noticia interesante es sobre los múltiples hackeos que han realizado los chinos, se dice que estos son realizados por un escuadrón en específico  que son entrenados para hacer diversos tipos de hacking. El último hackeo que han hecho ha sido a un satélite de USA y aún se sabe que información fue tomada.

Noticia.
http://thehackernews.com/2011/10/us-satellites-was-victim-by-chinese.html 

Entre los temas más predominantes del hacking en los satélites son sobre temas de dinero, censura e información gubernamentales.

Referencias.

Jim Geovedi, Raditya Iryandi, Raoul Chiesa. Hacking a Bird in the Sky
http://www.slideshare.net/geovedi/hacking-a-bird-in-the-sky-the-revenge-of-angry-birds

Satellite frequencies
http://www.inetdaemon.com/tutorials/telecom/satellite/frequencies.shtml

About VSAT Very Small Aperture Terminal
http://vsatcaribbean.com/vsat-satellite-basics-guide.html#About%20VSAT

FDMA
http://es.wikipedia.org/wiki/Acceso_múltiple_por_división_de_frecuencia

TDMA
http://es.wikipedia.org/wiki/Acceso_múltiple_por_división_de_tiempo

CDMA
http://es.wikipedia.org/wiki/Acceso_múltiple_por_división_de_código

ATM photo
http://www.networkinv.com/wp-content/uploads/bgan-atm-630x298.jpg

jueves, 9 de mayo de 2013

Detección de esquinas

En esta entrada hablare sobre la detección de esquinas, para ello lo primero que debemos realizar es un filtro mediano de los pixeles en la imagen después de obtener una diferencia de la imagen filtrada vs. la original (esto para disminuir el ruido que hay en la imagen) luego de haber obtenido la diferencia, esta se normaliza con la imagen, para así obtener las esquinas en la imagen que en este caso yo pondré pixeles de color blanco para representar una esquina.

Veamos primero el código explicado.


Para correr simplemente agregamos como parámetro la ruta de la imagen.



Haremos una prueba con la siguiente imagen.



Y lo que obtenemos es lo siguiente, resaltando que los pixeles blancos son las esquinas.



Una cosas curiosa fue haber detectado el círuclo y generar rayos cada 45 grados. Existen formas para mejorar la detección de las esquinas en este caso lo que hice fue hacer un filtro gaussiano para poder hacer que cada punto (sí existe solamente un pixel no visible a simple vista) pueda aumentar su visibilidad.


Ahora se realizó una prueba con la imagen anterior usando un filtro gaussiano.



Ahora mostraré un conjunto de pruebas realizadas detectando las esquinas usando un filtro gaussiano.

Prueba 1.


Prueba 2.