lunes, 2 de septiembre de 2013

Configuracion de Xbee Serie2 + arduino

Las imágenes fueron tomadas del libro Wireless Sensor Network el cual facilito en las referencias. 
Esta entrada en un complemento del este video.

Materiales y Diagramas

ROUTER

ºXbee configurado como ROUTER.
ºAlimentación de 3.3v
ºResistencia de 330 ohms
ºFotoresistencia












COORDINADOR

ºXbee configurado como CORDINADOR.
ºAlimentación de 3.3v
ºLed














Código Arduino



Referencias
[LIBRO] Wireless Sensor Network

miércoles, 29 de mayo de 2013

Ultima entrega - Transformada "Haar"

Que tal para esta ultima entrega se nos encargo hacer un python que comprimiera una imagen y se nos dio como base la transformada de Wavelet.

El proceso a seguir para el desarrollo de este programa es el siguiente:

Diagrama de flujo.


Como se muestra en la imagen anterior, el algoritmo actúa en sobre un imagen(no importa el tipo) y mediante una serie de procesos obtiene la imagen comprimida.

Introducción

La comprensión consiste en sustituir una cadena de datos por otra mas corta cuando se guarda un archivo. Ciertos metodos son reversibles("lossless data compression"), porque permite la reconstrucción exacte de la original. Pero con otros("lossy data compression""), la información original solo se recupera aproximadamente, ya que se descarta una parte de los datos.

Pero ambos metodos intentan cumplir objetivos:

  • El código de compresión debe ser lo mas compacto posible que el original.
  • Eliminar toda o casi toda la redundancia existente en la imagen original. 

Foto tomada de:
http://tesis.bnct.ipn.mx/dspace/bitstream/123456789/5745/1/ALGORITMODECOMPR.pdf

Comparación entre los diferentes tipos de compresión.



Transformada de Haar

Propiedades

  • Lineal.
  • Real.
  • Muy rápida (de orden O(N)).


Se basa en una clase de matrices que cumplen

  • Son ortogonales (traspuesta = inversa).
  • Sus valores son 0 ó potencias de dos.

Distribución de pixeles


Linealidad 
  • Se basa en sumas, restas y divisiones
  • Supongamos 2 números a y b vecinos.
  • Transformada que sustituye a y b por su media(m) y su diferencia(d):

m = (a + b) / 2 
d = b - a


Idea

Si a y b estan cercanos almacenar su diferencia es mas eficiente. 

Algoritmo






Todas estas transformaciones sucesivas aplicadas a un vector se pueden ver de forma matricial:








Codificación 


Pruebas

*Todas la imagenes que se toman deben tener un ancho de potencia de 2, esto por la dimension de la matriz que usa los wavelet(por lo general es de 8*8).


Imagen de 128 * 128 pixeles





Detalles de los umbrales y su calidad reflejada en las imagenes.

Obviamente el resultado se ve aceptable aunque no es lo mejor; la calidad depende mucho del valor de umbral mientras mas pequeño sea la calidad de la imagen de conserva un poco mas pero su compresión no es del todo buena.

En la siguiente imagen su toma la imagen original, un imagen con umbral de 20 y la ultima con umbral de 300.

Observen como cambia drásticamente la calidad dependiendo de la memoria que ocupa en disco.




Imagen de 1024 * 1024 pixeles


Imagen original



Imagen con un umbral de 100



Propiedades de las imagenes



Referencias

http://compresiondeimagenes.wikispaces.com/9.+LA+APLICACI%C3%93N+DE+LA+TRANSFORMADA+DE+HAAR+WAVELET+A+IM%C3%81GENES+DE+TAMA%C3%91O+COMPLETO

http://www.redusers.com/noticias/wp-content/uploads/2011/06/paper4.pdf

presentacion

lunes, 27 de mayo de 2013

Ultimo resumen - Redes

The Design Space of Wireless Sensor Networks


Datos del paper


Introducción

En el pasado, las redes inalámbricas de sensores han encontrado su camino en una amplia variedad de aplicaciones y sistemas con enormes requisitos y características diferentes.
Como consecuencia, se está convirtiendo cada vez más difícil discutir requisitos típicos sobre los problemas de hardware y software.

Diseño Espacial

La investigación inicial en las redes inalámbricas de sensores fue principalmente motivado por las aplicaciones militares,

Este tipo de aplicaciones consideradas por estos proyectos dieron lugar a un crecimiento de una red de sensores inalámbricos a gran escala (miles de miles de nodos, que cubren grandes áreas geográficas), alambre, ad hoc, multi-hop, nodos de sensores que se despliegan al azar en el área de interés.
Recientemente, hay muchas aplicaciones civiles de redes inalámbricas que se han considerado, como ambiental y monitoreo de especies, la agricultura, la producción y entrega, atención médica, etc.

En primer lugar, debe haber ser notable variabilidad entre las aplicaciones con respecto a la dimensiones. En segundo lugar, una dimensión debe tener un significado impactante en el diseño e implementación de técnicas y soluciones.

Despliegue

El despliegue de nodos de sensores en el entorno físico puede tomar varias formas. Los nodos pueden ser desplegados al azar (por ejemplo, por dejarlos caer desde un avión) o en puntos elegidos deliberadamente.

La implementación puede ser un la actividad de una sola vez, en donde la instalación y el uso de un sensor red son actividades estrictamente separadas. Sin embargo, el despliegue también puede ser un proceso continuo, con más nodos siendo desplegados en cualquier momento durante el uso de la red por ejemplo, para reemplazar los nodos fallidos o para mejorar en ciertos lugares interesantes.

Movilidad

Los nodos sensores pueden cambiar su ubicación después de inicial despliegue. La movilidad puede resultar de las influencias ambientales tales como el viento o el agua, los nodos sensores pueden estar unidos o realizadas por entidades móviles. 

En otras palabras, la movilidad puede ser o bien un efecto secundario incidental o puede ser un deseo del sistema (por ejemplo, para mover los nodos a interesante ubicaciones físicas), en el que la movilidad caso pueden ser ya sea activo (es decir, del automóvil) o pasiva (por ejemplo, unidos a un objeto que no este bajo el control del nodo sensor). 

Movilidad puede aplicar a todos los nodos dentro de una red o sólo a subconjuntos de nodos. El grado de la movilidad también puede variar de movimientos ocasionales con largos períodos de inmovilidad en el medio, a los viajes constantes. La movilidad tiene un gran impacto en el grado esperado de dinámica de la red y por lo tanto, influye en el diseño de la red, protocolos y algoritmos distribuidos de trabajo. La velocidad de movimiento también puede tener un impacto, por ejemplo en la cantidad de tiempo durante el cual los nodos permanecen dentro de un rango de comunicación entre sí.

Gastos, Tamaño, Recursos y Energía

En función de las necesidades reales de la aplicación, el factor de un solo nodo sensor puede variar desde el tamaño de un caja de zapatos (por ejemplo, una estación meteorológica) a un tamaño microscópico (por ejemplo, para aplicaciones militares, donde los nodos sensores debe ser casi invisibles).

Del mismo modo, el coste de un solo dispositivo puede variar de cientos de Euros (para redes de muy pocos, pero poderosos nodos) a unos pocos centavos de dólar (a gran escala redes con nodos muy simples). 

Puesto que los nodos sensores son dispositivos autónomos sin ataduras, su energía y otros recursos son limitados por el tamaño. Variando el tamaño y costo directamente. Por lo tanto, la energía y los otros recursos disponibles en un nodo sensor también pueden variar en gran medida de sistema a sistema. El poder puede ser ya sea almacenada (por ejemplo, en baterías) o rescatados del entorno (por ejemplo, la energía solar).

Modalidad Comunicación

Para una comunicación inalámbrica entre los nodos de sensores, hay numerosas opciones en la comunicación que se pueden utilizar como radio. 

Tal vez la modalidad más común es ondas de radio, desde estos no requieren una línea de visión despejada y comunicación sobre las ondas gamas puede ser implementado con relación bajo de  consumo de energía y relativamente con una pequeña antena (unos pocos centímetros de la frecuencia).

Utilizando haces de luz para la comunicación requiere un línea directa y puede interferir con la luz ambiente y la luz del día, pero permite mucho menos consumo de energia en comparación con la comunicación por radio. 

Sonido o ultrasonido se utilizan normalmente para la comunicación bajo el agua o para medir distancias basado en mediciones de tiempo de vuelo. A veces, múltiples modalidades se utilizan para un único sistema.

Infraestructura

Las diversas modalidades de comunicación pueden ser utilizados en diferentes maneras de construir una red de comunicación efectiva. 

Dos formas comunes son las llamadas de red basada en obras de infraestructura, por un lado y las redes ad hoc sobre la otra mano. 

En las redes basadas en infraestructura, los nodos sensores pueden sólo comunicarse directamente con la llamada estación de base de servicios. La comunicación entre los nodos sensores se transmite a través la estación base. Si hay múltiples estaciones base, estos tienen que ser capaces de comunicarse entre sí. El número de estaciones base depende del alcance de la comunicación y el área cubierta por los nodos sensores. 

En las redes ad hoc, los nodos pueden comunicarse directamente con uno al otro sin una infraestructura. Los nodos pueden actuar como routers, mensajes de reenvío a través de múltiples saltos en nombre de otros nodos.

El despliegue de una infraestructura es costosa el proceso, y la instalación de una infraestructura puede muchas veces no sea ​​factible, se prefieren las redes ad hoc para muchas aplicaciones.

Cobertura

El alcance efectivo de los sensores conectados a un nodo sensor define el área de cobertura de un nodo sensor. La cobertura de la red mide el grado de cobertura del área de interés por los nodos sensores. 
  • Con cobertura normal, sólo partes dispersas de la área de interés están cubiertos por los nodos sensores. 
  • Con cobertura densa, el área de interés es completamente (o casi completamente) cubierta por los sensores.
  • Con una cobertura redundante, multiples sensores cubren la misma ubicación física. El real grado de cobertura está determinada principalmente por la exactitud de observación y la redundancia necesaria. 

La cobertura puede variar a través de la red. Por ejemplo, los nodos pueden ser desplegados más densamente en ubicaciones físicas interesantes. El grado de cobertura también influye en la información y algoritmos de procesamiento. Alta cobertura es una clave para robustos sistemas y pueden ser explotados para ampliar la vida de la red. 

Conclusión

Las redes tienen amplia cobertura, tiempo de vida y los casos de éxito son las aplicaciones en el ambito militar, esto porque puedes tener un localizador de arma y detectar francotiradores, minas, personas heridas en combate.
Existen diferentes formas de enviar información que todos lleguen a un a un nodo centro(master) y los nodos sean quienes esten enviado información, y se hace procesos relacionados con las respuestas.

Tambien hay que tener cuidado al momento de ahorrar energia, para ocupar los minimos nodos posibles.

Bibliografia 

Titulo: The Design Space of Wireless Sensor Networks 
Autores: Kay Romer and Friedemann Mattern
PDF

viernes, 24 de mayo de 2013

Ultima entrega - Red ad hoc

Se simulo una red ha doc en 3D con matplotlib.

Para la creación de este código se trabajo con un compañero, dejando la estructura igual lo que cambiaba era la aplicación.

La idea

Este programa puede simular el aparecimiento de una enfermedad en un pais, donde los nodos intrusos es cuando una enfermedad aparece en una ciudad, y los nodos son los "hospitales" que se encuentran cercas y se comunican para pedir medicinas, por ejemplo.

Los Nodos

Para esta parte del código lo primero que se hizo fue poner nodos estáticos a manera de ejemplo, esto mas que nada para entender el como se trabajaba con 3D.

El código que nos ayudo para esta tarea lo pueden encontrar en la documentación.


Resultado de correr el ejemplo de la documentación.

Una vez entendiendo el comportamiento y el como se dibujaba se creo una clase que simulara el mismo comportamiento. Esto con el fin de estructurarlo y manipularlo mas sencillo.


Nota: El metodo crea_nodo_test() no esta funcionando en la version final, porque esta la usábamos cuando estábamos en la fase de pruebas. 

Uniones

Con los nodos ya establecidos teníamos que saber que nodos se comunicaban con que nodos, para ellos se definió un variable radio la cual simulaba el radio imaginario de cada nodo, si un nodo estaba dentro del rango dibujamos un linea que los uniera.




Nodo Intruso

Teniendo los nodos ya unidos y estáticos  ahora tenemos que crear un nodo intruso, el cual el objetivo de los sensores es detectarlo y mandar aun mensaje a sus vecinos.

El nodo intruso, aparece en diferentes lugares simulando que aparece una enfermedad en varias partes del mundo, o animales, etc.

La logica es sencilla, el intruso aparece y si esta dentro del radio(x,y,z) de un nodo, este alerta a sus vecinos.





En esta parte del codigo hacemos las llamadas a los metodos



Teniendo la base de la Red lo que sigue es enviar mensajes y estar actualizando los estados de los nodos.



CODIGO COMPLETO






VIDEO


martes, 21 de mayo de 2013

Resumen de Paper

Effective Intrusion Detection Using Multiple Sensors in Wireless Ad Hoc Networks 






Introducción

Con el rápido desarrollo de las aplicaciones de red inalámbrica, la seguridad se convirtió en uno de los principales problemas que las redes inalámbricas se enfrentan hoy en día. Mientras que los cortafuegos pueden llegar a ser un eficaz primera línea de defensa. Sin hilos transmisiones están sujetos a espionaje y bloqueo de la señal.
La seguridad física de cada nodo es importante para mantener la seguridad integral de la toda la red. Redes inalámbricas ad hoc son totalmente dependientes de la participación colectiva de todos los nodos en encaminamiento de la información a través de la red. Estos son algunos de los principales problemas que se enfrentan a las redes inalámbricas hoy en día. Como el uso de estas redes crecen, los usuarios exigir comunicaciones seguras y de baja latencia y eficiente.

Detección de intrusiones es una de las técnicas clave para proteger una red de los intrusos. Un Sistema de detección es un sistema que intenta detectar y alertar en intentos de intrusión en un sistema o red, donde una intrusión es considerado como no autorizada o cualquier actividad no deseada en ese sistema o de la red. Extenso investigación se ha hecho en este campo [1, 2, 4, 5, 7, 8] y sistemas IDS eficientes han sido diseñados para cable redes. Estos sistemas suelen supervisar usuario, el sistema y las actividades a nivel de red continua y normalmente tener una entidad de toma de decisiones centralizada. Si bien estos arquitecturas han demostrado ser eficaces [1], la mayor parte de la técnicas no producirán los resultados esperados cuando se aplica a redes inalámbricas, debido a algunas propiedades inherentes que los redes inalámbricas poseen, como se ha mencionado más

IDS clasificación

Tradicionalmente, los sistemas IDS para redes fijas se divide en dos categorías: basados ​​en la red y basados en host IDS.
Los sistemas basados ​​en red (NIDS) o pasivamente escuchan de forma activa en la red, y capturar y examinar paquetes individuales que fluye a través de una red. En contraste a los cortafuegos, NIDS puede analizar todo el paquete, no sólo Direcciones IP y puertos. Son capaces de mirar el carga dentro de un paquete, para ver qué especial acogida Se está accediendo a la aplicación, y con que opciones y para generar alertas cuando un atacante intenta explotar un bug en dicho código, mediante la detección de firmas de ataques conocidos. Red IDS es independiente del host, y se puede ejecutar como "cuadro negro" monitores para cubrir las redes enteras de sistemas.

En la práctica, la exploración activa ralentiza la red considerablemente, y se puede analizar de forma eficaz una limitada ancho de banda de red. NIDS menudo requieren hosts dedicados o equipo especial, y por lo tanto pueden ser propensos a la ataque a la red. Algunas intrusiones basado en red fiable sistemas de detección se describen en [1, 5, 7, 8]. Mientras IDS basados ​​en red miran todo el tráfico en un redes, sistemas basados ​​en host de detección de intrusiones [1, 2, 3, 6] tienen que ver con lo que está sucediendo en cada host individual. Ellos son capaces de detectar las acciones tales como intentos de acceso fallidos repetidos o cambios críticos archivos del sistema, y normalmente actúan por acceder a los archivos de registro o supervisar el uso de sistema en tiempo real. Para garantizar la efectiva clientes operación, Host IDS tienen que ser instalado en todos los alojar en la red, a la medida de host específico configuración. IDS basados ​​en host no dependen de la red ancho de banda, sino que se utilizan para redes más pequeñas, donde cada uno anfitrión dedica poder de procesamiento a la tarea de supervisión del sistema. Como se ha mencionado, estos sistemas son en host dependiente, y puede ralentizar considerablemente los hosts que tienen clientes IDS instalados.

Sistemas IDS son funcionalmente dividido en dos clases - sistemas de detección de mal uso de la detección de anomalías y. La detección de anomalías basa sus ideas sobre el comportamiento estadístico modelado. Inicialmente, un modelo estadístico se basa en el tiempo que puede ser usado para predecir con precisión el comportamiento del usuario en base los patrones de uso del sistema anterior (o un tráfico de red sobre la base de los patrones de tráfico anteriores). Este modelo detecta detecciones de intrusión de una manera muy precisa y consistente, y tiene un nivel bajo de falsas alarmas, bajo condición de que el sistema sigue bajo vigilancia estática comportamiento patrones. Esta clase de sistemas IDS está bien adaptado para detectar desconocida o previamente no encontrado ataques. El mal uso sistemas de detección de monitorear redes y hosts para conocer patrones de ataque. Esta clase de sistemas IDS es útil en redes con los patrones de comportamiento muy dinámicas, y es una selección de muchos productos comerciales IDS. Sin embargo, una base de datos se actualiza con frecuencia (y grandes) de ataque conocido firmas deben mantenerse. Ambas clases de IDS puede ser utilizado en sistemas IDS basados ​​en host y en red.

Los problemas relacionados con las redes inalámbricas

Un número de problemas generales con los sistemas IDS incluir los costos elevados debido a la gestión local, el fracaso a escalabilidad exposición, los requisitos de ajuste basado en características específicas de un sistema en particular, la necesidad de frecuentes actualizaciones de base de datos y el comportamiento pasivo (incapacidad para hacer las decisiones sobre el tipo de medidas que deben tomarse). Poco la investigación se ha hecho en el ámbito de los sistemas IDS diseñado para redes inalámbricas.

El estructural y diferencias de comportamiento entre alámbrico e inalámbrico móvil redes hacen diseños IDS existentes inaplicable al redes inalámbricas. Como se discutió anteriormente, las redes inalámbricas no tienen una comunicación fija, bien protegida medio - en su lugar, toda la comunicación se lleva a cabo en un abrir ambiente de aire. Esto hace que sea imposible controlar el tráfico de red en los cuellos de botella (la captura y por lo tanto analizar mayoría de los paquetes que pasan a través de la de red). Por lo tanto, el monitoreo de la red inalámbrica en el anuncio redes hoc se realiza en cada nodo de la red. Este enfoque es ineficiente en términos de ancho de banda de red y el aumento de consumo de potencia de cálculo - recursos que son muy limitados en una red inalámbrica. Supervisión basada en host también contribuye a una mayor cantidad de procesamiento en cada host, reduciendo los tiempos de duración de la batería y ralentizar el anfitrión. Móvil Física seguridad del host es un problema, ya que cada host contiene pública y claves privadas usadas para cifrar la información sobre el red, y si son capturados, la red está sujeta a espionaje.

IDS basados ​​en agentes para inalámbrica ad hoc redes

Una implementación de agente móvil es elegido, para apoyar tales características del sistema de IDS como movilidad de los sensores, enrutamiento inteligente de los datos de intrusión a lo largo de la red y la aplicación de peso ligero.


Arquitectura Modular IDS

El Sistema de Detección de Intrusos propuesta (IDS) es construido sobre un marco de agentes móviles. Es un no monolítica sistema y emplea varios tipos de sensores que realizan ciertas funciones específicas, tales como:

  • Supervisión de la red: Sólo ciertos nodos tener agentes sensor de paquetes de red vigilancia, ya que estamos interesados ​​en la preservación total de potencia de cálculo y la energía de la batería de hosts móviles. 
  • Control Host: Cada nodo en la publicidad móvil red hoc será controlado internamente por una agente de host de supervisión. Esto incluye la supervisión actividades a nivel de aplicación del sistema-nivel. 
  • Toma de decisiones: Cada nodo decidirá sobre la nivel de alerta de intrusión en una base de nivel de host. Ciertos nodos recopilar información de intrusos y tomar decisiones colectivas sobre la red intrusiones nivel. 
  • Acción: Cada nodo tendrá un módulo de acción que se encarga de resolver las intrusiones situación en un host (por ejemplo, bloqueo de salida de un nodo, matar un proceso, etc.)

Referencias


Kay Romer and Friedemann Mattern Institute for Pervasive Computing
http://cps.cse.wustl.edu/images/8/8c/Wsn-design04.pdf

Intento de Simulación de ad hoc.

La tarea de esta semana tenia que simular,  una red ad hoc.

Para mi ejemplo lo trata te aterrizar en un "guerra" donde existen satélites, tanques y militares.
Los satélites solo se pueden comunicar con los tanques y con los mismos satélites, los tanques se pueden comunicar con los satélites y militares así como también de los mismo tanques y los militares pueden avisar a los tanques y a otros militares.

El objetivo era, que si algún tanque o militar detectaba a un intruso, llamemoslo "Taliban".
El militar que lo detectaba avisa al resto de su equipo gastando energia de su comunicador dependiendo la distancia a la que llega el mensaje.

Cuando este comunicador se quedaba sin bateria, el militar quedaba incomunicado hasta que lo volviera a cargar.
 
Movimiento

Como es una "guerra" y el objetivo es avanzar y lentamente sin ser descubiertos y si en esos movimientos detectan algún "taliban" llamar al resto del equipo con su posición.

Detectar Intrusos

El convoy avanza y detecta un taliban. El militar que lo detecta cuenta con un "dispositivo" que tiene energía limita, esta energía se consume dependiendo la distancia a la que tenga que enviar un mensaje.

Lo mensajes tienen un tiempo de vida, la cual son los reintentos que se puede enviar a todo el equipo de convoy, este puede ser un numero fijo y después muere.

Reglas del Mensaje

Cada unidad cuenta con un dispositivo que tiene, por decir un ejemplo, 3 cargas de energía y si envía un mensaje a un militar consume 1 carga multiplicada por la distancia, para enviar un mensaje a un tanque este gasta 2 cargas multiplicada por la distancia.

Las reglas son las mismas dependiendo si el mensaje lo envía un satélite o un tanque. Obviamente los costos aumentan dependiendo de la jerarquía.

Reglas generales

Los radios de cada elemento tienen que ser configurables.

Se tiene que adaptar dependiendo la localización de intrusos... si detectan muchos intrusos en cierta área, llamar a otros militares o otro tanque que sirvan como refuerzos.


Lo unico que logre implementar fueron posicionar satelites,tanques y militares de forma random, radios configurables y vida en mensajes.

Me falto enviar mensajes cuando detectaban un taliban, la vida del mensaje, los movimientos, adaptacion y tiempo

Codigo completo






Critica a nosotros mismo

Retroalimentacion de nosotros mismos

Objetivos Principales a futuro:
 
-Intentar usar un base de datos que se este refrescando con sucesos, hechos, llegas, graficas de tempertaruas y que al mismo tiempo todo la tabla le este pegando a un web service para que el usuario tenga una retroalimentación mas detallada.

-Lo módulos que nosotros usamos fueron individuales, nos falta juntarlos para que todo funcionara completo.

-La validación de personas con openCV fue una idea estupenda y lo logramos complemetar pero no lo unificamos con el hardware con el que contábamos.


Buenos puntos:
  • Los puntos buenos, fueron que se logro implementar lo módulos por separado y funcionando.
  • Identificar diferentes usuarios dependiendo del token.
  • Se logro comuncación xbee serie 2.
  • Validación de Rostro.


Malos puntos:
  • Teniamos otras prioridades sobre este proyecto que hizo que no le dedicaramos al 100%
  • No cumplir con los tiempos que se establecieron la final.
  • Pedir los materiales a tiempo.
  • No hicimos pruebas con tiempo sobre los materiales nuevos.
  • Utilizar tecnología nueva, en tan poco tiempo para aprenderla.

El porque:

Obviamente todos en el equipo trabajaron pero tomamos demasiado tiempo en unir los módulos que nos marcaban errores al momento de intentarlos unir. Si nos hubiéramos tomado un poco mas de tiempo para hacer pruebas el proyecto hubiera sido un éxito.

Tiempos

Los tiempos fueron los que técnicamente nos mataron, salirnos de los tiempo y creer que estaba fácil y dejarlo para después, fue algo que al final nos costo muy caro.

Subestimar

 Exceso de confianza sobre los problemas a atacar. Nos paso con la aplicación y los multi-nodos.


La ultima critica

SeguriLap
Este proyecto tiene potencial ya que si funciona el metodo principal, falta pulirlo que esas son las "florecitas en el programa" pero yo entiendo que por tareas y trabajo este se complique, pero que el corazon del programa ya esta listo.

CarNFX
Los problemas que tuviero fueron los mas comunes que sucede en todos los equipos, falta de una buena planeación, estaria con ganas que tuvieran un demo en vivo, pero si confio en que lo hayan terminiado.

Los problemas que se encontraron en los protocolos son los mas comunes, yo tambien me tope con ellos, pero con un parseo logramos implementar lo que necesitabamos.

Para futuros planes me gustaria trabajar con ellos, ya sin presiones de tarea y enfocarnos al 100% porque este proyecto me gusta para dedicarle tiempo y pulirlo bien.


Alarma inteligente
Me gusto mucho la idea, el demo tambien lo lograron y obviamente las expectativas finales aunque falto los implementar algunos sensores mas especificos, para que funcionara al 100%.

Vitrina inteligente
El demo fue exelente, fue lo que esperaba ver, pero obviamente se activa despues de tanto segundos y queda reproduciendo la sonido hasta que acabe y si esa persona es la misma, pues estaria en un "ciclo infinito". Pero so

Casa Inteligente
El principal problema fue como mensionan ellos la compatibilidad entre arduino y la raspberry, pero lo que hice yo fue usar un arduino como puente, la presentacion esta completa y si tomaron en cuenta o al menos la mayoria de los comentarios en los blogs. La aplicacion como la tarea fuete tiene muchas areas de oportunidad que mejorar pero la idea la tiene.

Garage Inteligente
Este es un de los proyectos mas complejos tanto en su definicion como en su esctructura. Lograron implementar todo lo que lograron, pero lo pesado de este proyecto lo hicieron super. Tambien implementaron su propio reconocimiento de codigos QR lo cual se basaba en los pixeles tipo cuadros de esquinas y si cumplian con las esquina

Seguridad en carro
Fue un demo(video) entretenido que lograron sacar con sensores normales pero su logica igual que todos funciono, su aplicacion logro logearse desde distintos celulares y conservar el mismo estado, aun que la interfaz fue muy basica, logro con su objetivo.

Localizador de dispositivos
Fue un proyecto interesante lograron su objetivo pero muy basico, falta mucho implementar la interfaz grafica pero lo basico si lo logro. Me gusto la parte de buscar base al bluetooth y es chistosa la voz que te retroalimenta con el estatus del objeto perdido.

Plan de Negocios

Para esta entrada se nos encargo hacer un plan de negocios, para una idea de proyecto de computo ubicuo.

El proyecto del cual hablare es un proyecto pasado, llamado estacionamiento inteligente.


Resumen

"Estacionamiento inteligente" trata de optimizar las llegadas de los usuario a un sistema. Este te asigna un cajón dependiendo al lugar que vayas para optimizar tiempos.


Además que te ayuda a guiarte en el transcurso para llegar a tu cajón mostrando de manera visual flechas que apunte a tu cajón. Este comportamiento solo lo tendrán aquellos estacionamientos que nosotros catalogemos como pequeños, lo estacionamientos grandes contaran con un sistema de programación natural(colonia de hormigas) es cual nos ayudara a elegir el mejor lugar.

Además y como nunca falta el usuario dañino, el estacionamiento contara de sensores de presión para el caso que se estacione en un lugar "no asignado" el sistema sea capaz de reconocerlo y no asignarlo.

Como empresa el objetivo es evitar o controlar el caos en grandes lugares como lo es en estadios, auditorios, salones, etc.

Por que?

Actualmente, los sistemas mas sofisticados de estacionamiento(localizados en el municipio de San Pedro), tienden a únicamente cobrar el lugar del cajón, y en el caso de que el estacionamiento este semi-lleno es usuario tiene que navegar por todo el estacionamiento intentando encontrar un lugar, lo que provoca perdida de tiempo y recursos.

El sistema Estacionamientos inteligentes sera parte de las nuevas tecnologías adaptativas y actualizadas.

Adaptativas = El sistema se adapta a las entradas que vaya recibiendo y controlara el flujo de capacidad del usuario.

Actualizado = Se usara la tecnología mas moderna y adecuada para que el sistema funcione de una manera inadecuada, provocando caos.

Definición y Justificación del Negocio


Agilizar la llegada de clientes asignándoles en lugares inteligentes para cuidar los recursos y el tiempo utilizado en buscas un cajón.

Misión

Reconocernos como una empresa confiable, segura y eficaz para facilitar la calidad vida de nuestros clientes; basandonos en los régimen de calidad.

Vision

Que nuestros sistemas estén implementados en todo México para después llegar a competir con otros paises mejorando el rendimiento al igual de brindar soluciones integras a nuestros clientes.

Factores clave

Algunos factores fundamentales del éxito en nuestra empresa es debido a que consideramos las opiniones de nuestros clientes para así poder hacer cambios al sistema de manera que los beneficie y los haga sentir más cómodos con nuestro sistema.

Así como también, es que nuestro sistema es innovador y ofrece servicio de calidad a cualquier usuario, evitando favoritismo.
 
Ser el único estacionamiento que se "adapte" a los clientes, nos hace competir y ponernos ensima de nuestro competidores de una manera elegante.

Ánalisis FODA

Fortalezas:
   Adaptación del sistema
   No usar equipo innecesario.
   Fácil instalación

Oportunidades:
  Precios
  No es necesario la intervención de actuadores(personas que cobran el accesos

Debilidades:
  Ser empresa nueva
  
Amenazas:
  Robo de comportamiento en el sistema.
  Empresas con experiencia

Tipo de organización propuesta.

El sistema contara con ingenieros certificados en el área de programación para ayudar en cualquier incoveniete que pudiera tener con el estacionamiento.

Nuestra empresa trabaja de forma colectiva, entre todos lo miembros, ya que contamos con un líder que es el encargado del lugar así de como su buen funcionamiento, el líder cuenta con personas capaz en cada área lo que ayuda a cumplir tiempos dentro del contrato.

La jererquia es algo importante para mantener el control asi de como administrar el trabajo realizado, asi que se cuenta con un lider por area y por local. Todos ellos trabajando bajo el mismo principio siendo igual de productivos.

Mercadotecnia e imagen

Mercado potencial

Dentro de nuestro mercado laboral, el numero de cliente potenciales son aquellas que cumplan con las siguientes características:
  • Frecuenten plazas comerciales con sus automoviles.
  • Tengan problemas con los lugares del estacionamiento.

Mercado meta

Dentro de nuestra área de marcado el sistema va dirigido a toda persona que tenga un automovil. El enfoque es estar en cada plaza comercial, quintas, estadios, autodromos. El objetivo a mediano plazo es ser reconocidos localmente como los mejores en este campo y poco a poco expandirnos a otras campos usando la misma idea "adapatación".

La meta a largo plazo es competir contra Japón y cambiar la forma tradicional de los estacionamientos, agilizar tiempos, herramientas, y calidad de vida.

Publicidad y Promoción

A corto y mediano plazo establecer conexiones y buscar patrocinio con gobierno y nuevas plazas en construción para nosotros estar como control de accesos por default.

Buscar el apoyo con "gobierno" para buscar competir con las empresas locales y buscar una aliansa, socios lo que sea necesario para que el nombre se conserve y la empresa cresca.

La promociones serán tratadas directamente con la proveedores y por ser empresa nueva, se les dejara buen precio y lo que sea necesario para entrar a posicionarnos.

Conclusiones

Para que la empresa crezca necesitamos gente entregada a lo que hace para que con pocas personas abarquemos lo que hacer 20.

Analizar todos los sitemas que existen actualmente y buscar que se le puede implentar para hacer una versión mejorada del producto, estudiar como son los principios de los usuarios a este comportamiento y poco a poco mejorarlo y con ello mejorar los precios y las tecnologías relacionadas.

jueves, 16 de mayo de 2013

Reporte Final - Detección de mentiras - python

Para este proyecto el objetivo fue detectar las iris de las personas, esto con el fin de detectar mentiras según la posición.

Liga al repo

Introducción 

Dicen que poder los gestos es algo muy bueno, sobre todo cuando se trata de negocios, estar a punto de   hacer un testamento, sabes donde exactamente estuvieron tus hijos la noche pasada, tu novia, platicar con tu maestra y preguntarle sobre el examen final.... todo esto se puede saber con las preguntas adecuadas y sabiendo interpretar el lenguaje corporal, un poco mas especifico, el lenguaje del ojo.

"Los ojos nos hablan, pero a veces sabemos interpretar lo que nos están diciendo. Con un entrenamiento adecuado podremos detectar hasta el más sutil de los detalles."

Con un entrenamiento adecuado... eso te lleva a pensar, porque gastar 5, 10, 15, 20 años de mi vida intentando detectar esos detalles si puede hacer un programa en días que haga lo mismo y con el mismo fin.

Bueno obviamente un sistema jamas sera tan perfecto como lo es el cuerpo humano, pero si nos ayuda a detectarlas mas fácil, pues porque decirles que no?




Lo primero - detectar los ojos.

En lo que tenemos que enfocarnos es en detectar ojos en una imagen o video, esto es sencillo si se trabaja con openCV y con unas cuantas cascadas(archivos XML).

CODIGO DETECTAR OJOS

Tener una cascada bien entrenada nos facilita mucho la detección; estas son algunas características de las cascadas proporcionadas por openCV:


Recortar el área que nos interesa

Una vez que tenemos los ojos detectados, en nuestra aplicación lo que nos interesa es trabajar unicamente con el area detectada esto para evitar procesamiento innecesario.

Paso 1/2 .- Hacer una copia de la imagen original porque openCV no nos permite modificarla directamente.



Paso 2/2 .-  Usar cv.SetImage(param1, param2)
Esta función recibe 2 parámetros:
param1 = es la imagen de la cual queremos sacar el recorte
param2 = son las dimensiones del rectángulo que nos interesa. Este segundo parámetro esta formado por 4 parámetros: (izquierda, arriba, ancho, alto). Los primeros dos son las coordenadas "x, y" de donde empieza tu rectángulo.

Lo que hace este metodo es recortar la imagen que se le pasa como parametro.


Ahora para nuestra aplicación no nos importa tomar el area de los DOS ojos, con que tengamos uno es suficiente para empezar hacer pruebas.



Detectar la pupila.

Ya con el área recortada, ahora nos interesa saber donde esta las pupila, para ellos usamos otra función de openCV llamada:

cv.HoughCircles(imagen, storageCir, cv.CV_HOUGH_GRADIENT, dp, minDist, param1, param2, minRadius, maxRadius)



Donde los parámetros que nos importa son:

<<Esto es un Copy-Paste de la documentación.>>

minDist = Minimum distance between the centers of the detected circles. If the parameter is too small, multiple neighbor circles may be falsely detected in addition to a true one. If it is too large, some circles may be missed
param2 The second method-specific parameter. in the case of CV_HOUGH_GRADIENT it is the accumulator threshold at the center detection stage. The smaller it is, the more false circles may be detected. Circles, corresponding to the larger accumulator values, will be returned first


Una idea excelente es hacer estos parámetros dinámicos,  porque cada combinación es unica de cada imagen o para círculos muy parecidos.

NOTA: Antes de aplicar cv.HoughCircles, la imagen tiene que pasar por filtros de todo tipo, para que su detección sea mas sencilla.


Un problema que se detecto en este punto es que la pupila tiene que ser de un radio especifico asi que si te colocabas muy cerca o muy lejos de la cámara web, había muchas posibilidades que detectara círculos falsos o no detectara nada.

Algoritmo

Con la pupila detectada... como sabremos que nos están mintiendo.

El algoritmo trata de sacar un punto promedio, este es el centro de la pupila que se obtiene de un "entrenamiento" previo(con el ojo statico), después del entrenamiento se hace una resta de punto centro de la pupila detectada menos el punto promedio y si el resultado es muy grande(sobrepasa un umbral) significa que el ojo esta en otra posición = NOS MIENTE.


Limitaciones

  • El detector de pupilas funciona mejor en lugares como habitaciones, donde la única luz que hay es la que entra por la ventanas.
  • En cuartos oscuros o a altas horas de la noche, no es muy eficiente.
  • Solo detecta pupilas de un radio determinado, así que si estas muy cerca o lejos de la cámara, no detectara la pupila.


Mejoras

  • Detectar bien los círculos(pupilas).
  • Dimensionar la imagen original para mayor velocidad de procesamiento.
  • Hacer los radios de los círculos adaptativos dependiendo del área que ocupa el “ojo” en el cuadro.
  • Detectar dilatación.

Resultados



Código Completo





Referencias


http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/ref/OpenCVRef_BasicFuncs.htm#decl_cvSetImageROI

http://blogrobotica.linaresdigital.com/2011/01/mezclando-dos-imagenes-en-una-con.html

http://visionlabs.cl/blog/?p=43

http://www.isseu.com/reconocimiento-de-cara-con-opencv/

http://opencv.willowgarage.com/documentation/python/core_operations_on_arrays.html#index-5479

http://stackoverflow.com/questions/10716464/what-are-the-correct-usage-parameter-values-for-houghcircles-in-opencv-for-iris

http://opencvpython.blogspot.mx/2013/03/histograms-2-histogram-equalization.html?m=1

http://opencv.willowgarage.com/documentation/cpp/imgproc_feature_detection.html#cv-houghcircles



martes, 14 de mayo de 2013

Tarea 11 - (LAB)Redes - Satélites

Los satélites juegan un papel importante en estos tiempos y aunque parezcan que no hacen nada, ellos no dejan de trabajar(enviar información).

Algunas de la aplicaciones por la cuál un satélite puede ser creado son:

Servicios fijos




Gracias a los enlaces fijos o punto a punto, a grandes distancias, hacia antenas fijas, los satélites hacen posible una gran variedad de aplicaciones: portar telefonía, datos, TV y contenido Internet entre centros de distribución y a las cabeceras de red, las redes de negocios que enlazan terminales distribuidos (VSAT) llevando así a cabo una conectividad a gran escala con una flexibilidad incomparable.

En numerosas zonas del planeta las redes terrestres son fragmentarias o incluso inexistentes. La conexión vía satélite abre así una puerta al mundo para los que habitan las zonas peor atendidas.

Teledifusión




Desde hace varios años la principal aplicación de los satélites de telecomunicaciones es la teledifusión directa de TV o radio: las cadenas de TV y de radio transmiten desde estaciones terrenas a los satélites, que las reenvían a vastas zonas de cobertura sobre la Tierra, directamente al domicilio del usuario.

Un único satélite puede suministrar varios cientos de cadenas de televisión a todo un país e incluso a todo un continente. La digitalización de la transmisión de las señales ha elevado enormemente el potencial de los satélites en términos de cantidad de cadenas, lo que ha abierto la puerta a los paquetes de programación vía satélite. Las emisiones las pueden recibir tanto los usuarios privados como los públicos mediante claves que dan acceso a la conexión satélite.


Servicios para telefonía móvil




Las comunicaciones móviles —voz, datos, vídeo, hacia pequeños terminales que uno puede mover y que no tienen necesidad de estar orientados con precisión— constituyen otro pilar de las aplicaciones de los satélites de telecomunicaciones. En la actualidad los satélites hacen posible encontrarse en un entorno profesional estándar con enlaces de alta velocidad por todo el mundo.

Al seguir la máxima de las comunicaciones “cualquiera, en cualquier lugar, en cualquier momento”, la actitud del ciudadano ante la comunicación cambia una vez más. No queda duda alguna de que las comunicaciones móviles son el futuro y las tendencias presentes indican que algún día, los teléfonos móviles, vinculados de forma permanente a Internet y conectados con todo el mundo, contendrán la totalidad de nuestro conocimiento e identidad.

Servicios interactivos de banda ancha




Los satélites hacen posible que todos nos beneficiemos de un acceso a Internet al crear un enlace bidireccional de banda ancha entre un hogar —por muy lejos que se encuentre de las redes terrestres— y una estación conectada a la troncal de Internet.

Los satélites de última generación ofrecen de ahora en adelante un acceso real a la alta velocidad. A finales de 2010, el lanzamiento de Hylas 1 y de Ka-Sat, dos satélites ultramodernos desarrollados y fabricados por Astrium y que ofrecen una cobertura multihaz en banda Ka, introdujo una revolución radical en el concepto de Internet vía satélite para todos.



Comunicaciones protegidas




En las operaciones militares de hoy en día son primordiales las comunicaciones eficaces, rápidas y, ante todo, seguras. Las comunicaciones militares consisten en enlaces protegidos con una gran flexibilidad de cobertura.

Hay momentos en que la información tiene que llegar, como sea, a las personas indicadas, y sólo a las personas indicadas, allí donde estén, por muy hostil que sea el entorno. Las fuerzas armadas cuentan con exigencias muy específicas para sus comunicaciones, y se han convertido en grandes usuarios de la tecnología vía satélite, que, en comparación con las redes basadas en tierra, permite una cobertura inmediata y amplia, una mayor flexibilidad en términos de potencia y frecuencias y —un aspecto que reviste una importancia crítica— una libertad con respecto a los acontecimientos que podrían interferir con las emisiones terrestres.



Clima




Para el pronostico del clima y la observación del clima actual se utilizan dos tipos de satélites:

  • Los satélites en las órbitas polares  siempre van al mismo lugar  y ven ese lugar en la misma hora todos los días. Estos tipos de satélites tiene una resolución mas baja de lo común ya que están cerca de la superficie terrestre.
  • Los satélites geoestacionarios para esta tarea, siempre están verificando el mismo lugar todos los días a todas horas.
Mecanismos de interceptar comunicaciones satelitales.

Malversación

Este concepto típicamente plantea una alta preocupación en comparación con el anterior debido a su naturaleza. Debido a que los métodos de ejecución son pasivos e indetectables, pueden ser empleados como formas efectivas de recolectar inteligencia. Estos métodos son considerables al "wire-tapping", permitiendo al agresor obtener información sobre su blanco y usarlo a su ventaja.

Este concepto es aplicado a la tecnología satelital en el sentido que los códigos de encriptación empleados para una comunicación dada pueden ser violados, ya sea por un informante en cubierto o por esfuerzos para romper el código. El resultado de estos esfuerzos es que la fuerza hostil gana control del satélite, su información y capacidades.

Attack to Orbital Positioning

Esta se basa mas en triangulaciones de antenas terrestres y tratar de enviar mensajes falso al satélite y esperar alguna contestación.

Seguridad en los satélites

Evitar la alteración de la señal

Es la solución más simple y más fácilmente empleables para evitar estaciones de escucha hostiles, así como la detección del propio satélite. Este concepto requeriría un transmisor adaptable capaz de transmitir señales de alta resistencia con una anchura del haz mínimo, como para no proporcionar oportunidad para cualquiera de los sistemas de interceptación de datos pasivos o activos. Una transmisión de ancho de haz minimizado se dirige a una estación de recepción específico y evita cualquier actividad de comunicación adicional en su órbita.
Este estrecho ancho de haz puede llevarse a cabo en un número de maneras diferentes. Un ejemplo sería el empleo de un dirigible parábola antena, una antena de tipo plato diseñado específicamente para operaciones de alta ganancia y una anchura de haz mínimo, típicamente 1.6o frente a 16o a 20o en configuraciones de antena típicas. Otro ejemplo sería el uso de un haz de láser enfocado dirigido a un receptor dedicado. Las vigas de amplitud 'se puede variar para transmitir una señal digital a través de la distancia al tiempo que proporciona un área de cobertura mínima y por lo tanto una oportunidad mínima para la interceptación de la señal.

Conclusión

La seguridad en los satélites es algo que se tiene que cuidar porque podría ser "gota que derramo el vaso" y empezar un guerra porque algún chino hackeo un satélite "gringo".

Tambien puede un buen punto de partida para un plagio, porque podemos conseguir television de paga gratis, saber la posición de alguien, a través del gps, ver películas de estreno antes que en los cines.

A un lado de todo lo malo que podría pasar, los satélites previenen desastres naturales, advirtiendo a la gente que un huracán se aproxima o que un "volcan" esta a punto explotar. Si fuéramos amigos de USA estoy seguro que usaríamos sus satélites para ver lo que pasa con el "popo" porque México aun no cuenta con la tecnologia suficiente. 


REFERENCIAS

http://www.astrium.eads.net/es/articles/satelites-para-toda-clase-de-aplicaciones.html




Tarea #6 - Clase - Simulación de localización - python

Para esta entrada se nos encargo hacer un python que fuera capaz de localizar o simular la localización de un dispositivo en un area rodeado por 3 antenas.

El proceso por el cual lo simulamos fue triangulación, que googleando un poco entontraremos que:
Según wikipiedia:
La triangulación, en geometría, es el uso de la trigonometría de triángulos para determinar posiciones de puntos, medidas de distancias o áreas de figuras.

Implementación

Los datos que conocemos son las coordenadas de las antenas así como su intensidad.
Para esta simulación y para hacerla practica supondremos que el dispositivo a localizar SIEMPRE estará dentro del rango de las TRES antenas.
Las coordenadas del dispositivo no las conocemos.

Con los puntos aclarados creamos nuestra simulación:

Lo primero que tenemos que averiguar es la distancia de las antenas al dispositivo. Esto lo podemos hacer con el teorema de Pitágoras, donde lo que nos interesa es encontrar la hipotenusa(intensidad) de cada antena.



Lo encerramos en valor absoluto porque como se trata de una "imagen" las coordenadas pueden ser negativas, pero la distancia se mantiene.

Una vez que sabemos la intensidad del dispositivo con respecto a cada antena, buscamos sus coordenadas de posicionamiento. Para esto, estaremos incrementando el radio de cada antena hasta que encuentre el dispositivo.



Después buscamos en donde hay mas intersecciones de las intensidades de las antenas y ese punto sera en donde se encuentre nuestro dispositivo.

Este metodo se tiene que hacer con un mimino de TRES antenas porque de ser menor, abrir positivos falsos en donde pueda estar el dispositivo.

Código Completo
Es necesario tener instalado PYGAME.



Resultados





Ubicuo #11(LAB) - Crítica constructiva, Privacidad

Alarma inteligente

Liga a la entrada: http://ubicomputo.blogspot.mx/2013/05/actividad-5-privacidad.html

En este proyecto el principal problema de privacidad es la localización por el GPS. Una de las tareas mas sencillas es que después de usar el dispositivo o que llegue a un determinado punto, toda la información que recabo sea eliminada, el unico inconveniente es que no contara con un historial .. pero a quien le importa cuando lo que necesita es no ser localizado.

Otra forma en la que estoy pensando, es por ejemplo que esos datos(rutas) se guarden en una base de datos local de manera enfuscada. Y que para entrar a ver cualquier ruta previa, tenga que acceder con contraseña.

Computadora inteligente 

Liga a la entrada: http://aveoctavo.blogspot.mx/2013/05/presentacion-de-privacidad.html

Tecnicamente este proyecto casi no cuenta o tendra problemas directamente de privacidad, porque lo unico que hace es tomar imagenes y base a esa imagenes identificar quien puede acceder.

El problema aqui es, cuando sean personas muy parecidas o hermanos gemelos, porque ahi en cuando la privacidad se rompera por "dejar entrar a otra persona que no este registrada".

Al igual como todo Software que se vende a un cliente hay que tener cuidado porque el código fuente se puede recuperar con ingeniería inversa. Una practica estupenda seria ofuscar el código fuente y tener mucho cuidado con no dejar dependencias entre código(una clase se "casé" con otra clase) porque esto lo hace mas vulnerable.

Alarma de dispositivos inteligentes 

Liga a al entrada: http://gtdsoftwa.blogspot.mx/2013/05/presentacion-ubicuo-privacidad.html

Por ser una aplicación para android el unico inconveniente que yo detecto y que no han detectado(hicieron muy buena entrada) es el problema del cogido fuente.

Actualmente existen herramientas para recuperar el código fuente a partir de un APK y la unica manera de protegerse es ofuscar su código; porque aunque estas herramientas sean buenas no hacen milagros.

Galeria inteligente

Liga a la entrada: http://ultimo-sem.blogspot.mx/2013/05/entrega-5.html

En el trabajo tenemos un problema similar a este, porque al cliente en donde pongamos nuestro sistema se tiene o tienen que tener instalado una base de datos.

Ahi que tener cuidado porque independientemente que la entrada sea con contraseña, la base de datos es la mas importante así que TODO tiene que estar ofuscado y todo lo que tenga que ver con agregar datos, eliminarlos, modificarlos hacerlos desde aplicación abriendo y CERRANDO cuando sea necesarios. Una practica erronea de programación es mantener viva la conexión mientras la aplicación vive.

Tienen que manejar triggers para purificar la base de datos y esta no cresca de manera "loca" después de varios dias o por algún tipo de ataque o broma que haga que la base de datos cresca de manera extraña y peligrosa.

Despertador inteligente 

Liga a la entrada: http://3-its.blogspot.mx/2013/05/avance-5.html

Aqui aplica el mismo comentario que en "Alarma de dispositivos inteligentes" hay que ofuscar el código fuente de la aplicación(APK) para que no se pueda recuperar.

Y mencionar "...en caso de hacer root al dispositivo no nos hacemos responsables...".

Seguridad en casa

Liga a la entrada: http://3puntosteam.blogspot.mx/2013/05/privacidad.html

Inquietudes:
Ofuscar el código fuente del APK.
Ofuscar el código de la base de datos.

Me encanto la idea de manejar la privacidad en forma de alertas. Así no te haces responsable por "acuerdos bajo el agua".

CarNPX

Liga a la entrada: http://inteligentsystems.wordpress.com/2013/05/07/fase-5-privacidad/

Configurar la privacidad en cualquier momento y usar la información solo para fines informáticos es algo clave en este tipo de proyectos ya que los principales problemas son por uso de datos sin consentimiento de ellos mismos.







jueves, 9 de mayo de 2013

Tarea#9 Vision(LAB) - Detección de esquinas


Para esta entrada se nos encargo hacer un python que fuera capaz de detectar esquinas en una imagen.
Liga al repo.

Se convierte la imagen orignal a escala a grises.

El procedimiento es muy parecido al filtro promedios, primero obtenemos todos los vecinos(tambien los diagonales para mas precisión) del pixel actual, los ordenamos de menor a mayor y sacamos la media. Este valor se lo asignamos a una nueva imagen, esto para no planchar los pixeles actuales y el procedimiento calcule medias que no deben ser.




Después se recorre toda la imagen pixel por pixel y se hace una diferencia de pixeles; la imagen de grises menos la filtrado y el resultado se lo planchamos o lo asignamos al pixel de la imagen, siempre respetando las posiciones.




Esta diferencia hará que las esquinas de las imagenes se "corten", por lo tanto se mostraran solo unos puntos(pequeñísimos pixeles) muy difusos; en algunos casos tambien pintaran pixeles que representan los lados de las figuras, para esto aplicamos binarización y los puntos difusos quedan eliminados.




Me falto implementar la parte de unirlas, pero no es muy complicado porque una vez que tenemos los puntos esquinas podemos usar el famosísimo "BFS para unirlos.
Se debe agregar un regla que si BFS ya paso por un punto marcado como esquina lo elimine de los "próximos a visitar".


Resultados
Imagen original

Esquinas con ruido

Salida binarizada


miércoles, 8 de mayo de 2013

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.


y un vídeo que me ayudo mucho para esta tarea: (TIENEN QUE VERLO - OBLIGATORIO)


Implementación

Lo primero que se hace es "auto-completar" la cadena binaria respetando los espacios de la paridad.
Lo que hice fue agregar un "*" en el lugar que tiene que ser respetado, lo hago de esta manera para que mas adelante me sea mas fácil trabajar.



Ahora que ya tenemos la cadena auto-completada, se tiene que formar un fila por cada elemento de paridad detectado; supondremos que llegaste a esta entrada sabiendo como se hace o viendo el vídeo en el apartado de Teoría



Con las filas de paridad ya definidas, lo que sigue es checar si existe "error" en cada ellas. Para ello si procesan de forma individual y se suman sus bits; si la suma es cero o numero par, esa fila se etiqueta con un 0 si la suma salio impar se etiqueta con un uno.
Los unos significan que existe error y por lo tanto se tiene que modificar un bit de la entrada original para que la sumatoria cambie. El objetivo es que todas las sumas de las columnas sean ceros o números pares.



Mientras haya errores osea sumatorias impares, si repite el proceso.



Al final solo quitamos los espacios de paridad y listo



Código completo


Resultados

Referencias
http://elisa.dyndns-web.com/~elisa/teaching/comp/info/correct.pdf
http://codigojavaoracle.com/redes/codigo-hamming-detectar-errores-por-paridad/