jueves, 25 de abril de 2013

Lab 7: Detección de agujeros

En esta semana se encargo lo siguiente:

• Sacar los histogramas vertical y horizontal
• Graficar los histogramas
• Buscar los minimos locales
• Lozalizar intersección (pico del histograma horizontal o vertical)

• Dibujen encima de casa imagen una recta para cada pico del histograma lateral; independientemente para horizontal & vertical.
• Las intersecciones deberían coincidir con los agujeros.
• Es efectivamente un preprocesamiento de lo que requiere

Las imagenes con las que probe fueron las siguientes:


Gráfica de histograma vertical y horizontal




Prueba 2


Grafica de histograma vertical y horizontal






El código es el siguiente (se obtinenen los minimos locales, se sacan intersecciones y se pintan las liíneas):



El código para graficar es el siguiente (basaso en el código de la Dra. Elisa):

Tarea: Método de Codificación adaptativa

En esta entrada se nos pidio que hicieramos un código adaptativo para la compresión de datos y lo que se me ocurrio fue lo siguiente:

1-El texto se manda en partes, esos datos que se envían son en una cierta cantidad.
2- Los datos que entran se le busca un patron que se repita en esa misma cadena y se guardan en un diccionario.
3-Cuando la siguiente parte del mensaje va entrando lo que hace es buscar nuevos patrones además de adaptar los anteriores haciendolos mas grandes.
4- Cada patrón tendra su código binario
5- Se busca en las cadenas ese patron y se sustituye por su código binario.

Me quede solo en sacar lo que son los patrones, su valor en binario


El código es el siguiente:

Capturas



Y aquí nos muestra ya su valor en binario


martes, 23 de abril de 2013

Laboratorio #8 Computo Ubicuo


Usability Study of Indoor Mobile Navigation System in Commercial Facilities

Muchos usuarios utilizan los sistemas de información de posición de GPS. Sin embargo, ya que la información posicional calcula utilizando la señal GPS está disponible sólo en los lugares con la recepción de señal de satélite, es difícil utilizar el GPS para el posicionamiento en interiores.

Se llevo a cabo un experimentos de campo en los centros comerciales a gran escala para evaluar la usabilidad de la interfaz de navegación y la disponibilidad del servicio de navegación interior en un teléfono inteligente. Como resultado, se encontró que los usuarios les gustaría tener algunas funciones de los sistemas de navegación interior.

Al considerar los diversos servicios de terminal móvil utilizando sistemas como el sistema de posicionamiento en interiores, debemos tener en cuenta cuáles son los servicios preferencias de los usuarios, funciones de servicio, la interfaz de la operación, y la vista de la pantalla.

CARACTERÍSTICAS DE LA NAVEGACIÓN INTERIOR

Se desarrollo un sistema de navegación interior teniendo en cuenta la usabilidad. El servicio del sistema de navegación interior tiene las siguientes características.


  • Mostrando la posición actual del usuario en un mapa del piso.
  • Cambiar el mapa de suelo de acuerdo con el usuario, la posición de marca.
  • Mostrando rutas desde una posición actual a un destino.


Muestra una posición actual del usuario expresa con un círculo en el centro de la pantalla de visualización. A medida que el usuario se mueve de izquierda a derecha en un piso, el usuario,
 posición en la pantalla se actualiza por el sistema de navegación.





b) una ruta de navegación se muestra en un mapa del piso en la pantalla del terminal

b) Cuando el usuario llega a los puntos de eventos de navegación, como por ejemplo una intersección en la ruta o en frente de una escalera mecánica o el ascensor, una imagen de orientación como la que se muestra en la figura. 


Los participantes experimentaron uno o más escenarios entre 11 escenarios preparados de antemano. Cada escenario supone un situación y propósito de la navegación, por ejemplo, ir de compras con hombres y mujeres jóvenes, visitas a la familia, y así en. Los usuarios eligieron escenarios que eran adecuados para su propio atributos, y se movieron alrededor de la construcción de acuerdo con
el escenario utilizando el sistema de navegación.







Tarea #6  Detección de agujeros

En esta semana tuvimos que realizar la actividad de detectar agujeros, para poder realizar esto reutilice código que tenia anteriormente y el procedimiento fue el siguiente:

1-Primero se convierte la imagen con la que vamos a trabajar a escala de grises:

2- Se realiza una sumatoria de las filas y columnas de la imagen.



El código para obtener la imagen a escala de grises y sacar los histogramas es el siguiente:


3- Teniendo ya lo anterior se comienza a buscar lo que son los minimos locales para cada vector (horizontal y vertical). Sacamos un promedio para poder filtrar más los datos obtenidos:
4- Ahora teniendo lo anterior vamos a tomar lo que son las intersecciones de las líneas horizontales con las verticales.
5-Teniendo las intersecciones lo que aremos es utilizar el bfs (Para poder usarlos vamos a llamar a la función convolución para poder detectar bordes) para poder colorear donde supuestamente hay agujeros. Es código anteriormente utilizado.


6-Ponemos el centro del agujero y el numero de id en la imagen.


Pruebas

Imagen utilizada (Imagen tomada de internet):


Imagen de Salida:




Histograma d ela imagen:





Pruueba con imagen tomada por mi:







jueves, 18 de abril de 2013

Laboratorio de VIsión: Relleno de elipses

Hola compañeros en esta ocasión lo que se hara sera rellenar los elipses detectados de un color aleatorio. Como no tengo terminado lo que es detectar los elipses lo hice sacando su area y sus semidiametros.

Primero que nada use el bfs para trabajar por formas cuando ya tenia cada una de las formas trabaje con cada una de ellas sacando sus semidiametros y usando la formula del elipse para obtener el aea A=pi*a*b donde a y b son sus semidiametros si el are era igual quiere decir que es un elipse :






Código de detección del elipse:


Imagen original:


Resultado Obtenido:


Porcentajes:





martes, 16 de abril de 2013


Laboratorio de Computo Ubicuo #7

El artículo que seleccione utiliza un modelo idealizado de radio y propone una conectividad simple basado en el método de localización de tales dispositivos en ambientes al aire libre sin restricciones, nos aporta:

  • exploración detallada y la clasificación del espacio de diseño y trabajo realizado en el área de la localización
  • una implementación sencilla del modelo y presenta los resultados iniciales



GPS-less Low-Cost Outdoor Localization for Very Small Devices

Las redes inalámbricas de sensores amplían nuestra capacidad para monitorear y controlar el mundo físico. En el caso de las aplicaciones como monitoreo ambiental del agua y del suelo, el etiquetado pequeño discretamente, animales, etiquetado y objetos de peso ligero en una fábrica o en entornos hospitalarios entre otros requiere dispositivos que utilizan como nodos sensores pequeños, ligeros, discretos y sin ataduras. En estos sitemas necesitamos nodos para poder ubicarse en diferentes entornos ya sea diferntes escalas de distancia. El problema de localización es un reto como ya fue mencionado antes, en aplicaciones sensibles al contexto, localización permite la selección inteligente de los dispositivos adecuados, y puede apoyar la coordinación entre los dispositivos útil


El Sistema de Posicionamiento Global (GPS) resuelve el problema de la localización en entornos al aire libre para los nodos de clase en PC, en este caso se buscan consideraciones practicas que son en tamaño, el factor de forma, las restricciones económicas y  el poder de los nodos de impedir el uso de GPS en todos los nodos.

El problema de la localización de estos dispositivos  se aborda con los siguientes objetivos de diseño:

• RF-based:. Nos enfocamos en pequeños nodos que tienen algún tipo de frecuencia de radio de corto alcance (RF) transceptor. El objetivo principal es aprovechar este radio para la localización,eliminación del costo, el poder y los requisitos de tamaño de un receptor GPS.

• Receptor basado en: Para escalar bien a las grandes redes distribuidas, la responsabilidad debe recaer en la localización del nodo receptor que debe ser localizado y no con los puntos de referencia.

• Ad hoc: Con el fin de facilitar la implementación, queremos una solución que no requiere planificación previa o extensa infraestructura.

• Capacidad de respuesta: Capaz de localizar dentro de un tiempo de respuesta razonablemente bajo.

• Bajo consumo de energía:.. Pequeños nodos sin ataduras tienen capacidades de procesamiento y modestos recursos limitados de energía, minimizar los costos de computación y el mensaje para reducir consumo de energía.

• Adaptable fidelidad: la precisión de nuestros algoritmos de localización debe ser adaptable  a la granularidad de los puntos de referencia disponibles.


Trabajos relacionados

La localización  normalmente se basan en alguna forma de comunicación entre los puntos de referencia con posiciones conocidas y el nodo receptor que necesita ser traducido.

Clasifican los enfoques de localización distintos en dos grandes categorías basadas en el nivel de detalle de la información inferida durante esta comunicación.


  • Enfoques fine - grained information tales como la distancia a un punto de referencia sobre la base de fuerza de la señal o mediciones de tiempo entran en la categoría de métodos de localización de grano fino.
  • Coarse-grained information  tales como la proximidad a un punto de referencia dado se clasifican como los métodos de localización de grano grueso.
Fine-Grained Localization

Son métodos de localización se pueden clasificar además en búsqueda de intervalo y métodos direccionalidad basada, en función de si los rangos o ángulos relativos a puntos de referencia se infieren, también incluyen los métodos de la señal de coincidencia de patrones.


En los métodos de búsqueda de intervalo, los intervalos del nodo receptor a varios puntos de referencia se determinan por una de varias técnicas de sincronización. La posición del nodo a continuación, puede ser calculada utilizando multilateración.

Timing :La distancia entre el nodo receptor y un punto de referencia puede deducirse de la hora del vuelo de la señal de comunicación.

El tiempo de vuelo se puede calcular usando la técnica de avance de tiempo que mide la cantidad de la temporización de la unidad de medición tiene que ser avanzado a fin de que la señal recibida para encajar en la ranura de tiempo correcta. Esta técnica se utiliza en GPS  y Sistema de Posicionamiento Local Pinpoint (LPS). GPS mide unidireccional tiempo de vuelo, mientras que LPS mide el tiempo de ida y vuelta.

Intensidad de señal:se han centrado tradicionalmente en la predicción de la media de la intensidad de señal recibida a una distancia dada del transmisor (a gran escala modelos de propagación), así como la variabilidad de la intensidad de la señal en estrecha proximidad proximidad a un lugar (modelos a pequeña escala o desvanecimiento).

Coincidencia de patrones de señal: Resulta el fenómeno de múltiples caminos para uso sorprendentemente buena: por combinar el patrón de trayectos múltiples con características de señal de otros, se crea una firma única de un lugar determinado.

Direccionalidad: Otra forma de estimación de localización es calcular el ángulo de cada punto de referencia con respecto al nodo móvil en un cierto marco de referencia la posición del nodo móvil, entonces se puede calcular usando métodos de triangulación

Referencia:
Link1 


Tarea 5: Visión Computacional

Esta entrada es para la detección de elipses:



Primero que nada lo que realizamos es identificar los pixeles de borde de un objeto, para poder realizar lo anterior lo realice con el bfs que es una función que ya tenia para poder trabajar con lo que son las formas y solo traerme los pixeles de los bordes en cada una de ellas, el código es el siguiente:


Los puntos seleccionados son al azar ya que se selecciona un punto y despues otro de una misma figura, y después de hacer esto es calcular sus pendientes lo cual lo realizo con la formula m=Gy/Gy la pendiente se reliza para cada punto, después de esto checamos si las pendientes son iguales si lo son esos puntos son descartados.

Ya cuando tenemos las pendientes de los dos puntos tenemos que checar en donde es que se intersectan sus pendientes, como saben para poder hacer lo anterior trabajaremos con las ecuaciones de las rectas de cada uno de los puntos que son:
punto 1:   y1=m1x1+b1
punto 2:  y2=m2x2+b2

Si queremos que se intersecten en este caso la (x,y) deben de ser la misma en las dos ecuaciones, pero primero debemos obtener el valor de b1 y de b2.

Para obtener el valor de b1 y b2 utilizamos la misma formula anterior solo que ahora (x,y) tienen el valor de las coordenadas de nuestro pixel donde nos encontramos. Despejamos la ecuacion anterior y otenemos la ecuacion para encontrar b.
b1=y1-m1x1

Ahora ya encontrada la b seguimos con el paso de encontrar (x,y) el punto donde se intersectan, para encontrar primero la x igualamos las ecuaciones de punto1 y punto 2 anteriores:

punto 1:   y1=m1x1+b1
punto 2:  y2=m2x2+b2


m1x+b1 =m2x+b2



De lo anterior despejamos x y nos queda de la siguiente manera:
x=(b2-b1)/(m1-m2)

ya sacando lo que es x vamos a obtener el valor de y esto lo encontramos facilmente sustituyendo la x en una de las ecuaciones anteriores:

y1=m1x1+b1
y=m1*x+b1
y=m1((b2-b1)/(m1-m2))+b1

Ahora ya tenemos donde se intersectan lo que son sus tangentes, nos toca sacar su punto medio y para sacar e punto medio entre dos puntos utilizamos la siguiente formula:

Xm = (x1 + x2)/2
Ym = (y1 + y2)/2

Punto medio:
P = (Xm, Ym)

Después de sacar el punto medio necesitamos obtener la linea que pasa por la intersección y el punto medio.


Obteniendola lo que nos importa es la linea marcada de rosa ya que estos cuentan como centros potenciales para un elipse.


Los pasos anteriores se repiten para cada par de puntos seleccionados y asi se tiene que ir votando cierto pixel para poder seleccionar el que tuvo mas votos y en este caso seria nuestro centro del elipse, de ahi solo se pasaria a dibujarlo.

Hasta el momento lo que tengo hasta el punto de obtener el punto medio entre los dos pixeles sacar la recta para poder checar los posibles centros potenciales.


El código es:





martes, 9 de abril de 2013

Laboratorio 6 Cómputo Ubicuo

En esta entrada daremos nuestros puntos de  vista y recomendaciones de la ultima presentacion de cada equipo acerca de Diseño de Prototipo

 Equipo 1: Alarma inteligente para carros 

En este caso el Hardware que utilizaran se me hace bueno, ya que son materiales que hemos usado y además es lo que tienen más a la mano y no estan comprando cosas que realmente cuestan.
En el caso de los sensores a utilizar hubiese sido mejor dar a conocer cuales son los sensores que se utilizaran además de para se tiene pensado utilizar cada uno.


Me gusto la idea más acerca de que se puede aplicar una Webcam  cuando se tiene una computadora o una laptop que no cuente con esta, ya que esto facilitaria a los usuarios comprarla en caso de no tenerla.


Equipo 3: Oficina personalizada 

Acerca de las nuevas propuestas que se dieron en la presentación me gusto la del acceso por internet ya que asi es más facil accesar para una persona, además una buena idea seria acceder mediante una aplicación donde uno como usuario pueda acceder en el celular.

Equipo 4: Localizador de personas

La idea acerca de lo del comando de voz me parece muy bien ya que serviria de mucho para personas que sufren problemas de visión y solo pueden escuchar.
Y que el cambio que se dio de no reconocer a personas ya que era molesto para ellas pues esa bien, la idea de personas pienso que hubiera diso mejor adaptarlo a solo niños pequeños. Y acerca de los componentes caros si tienen razón ya que la mayoría de la gente compraria cosas baratas que funcionaran bien.

Equipo 6: Despertador Inteligente
Hasta el momento me parece muy buena su idea, me gusto mucho como explican para que se utiliza cada cosa y de que usen una opción más que fue lo del buzzer, además el software que escogieron es muy completo.

Equipo 7: Casa segura
Falto poner en la presentación un poquito mas información acerca de lo que va a realizar cada cosa. En si deben de enfocar mejor el proyecto a cosas más pequeñas por el momento, lo digo por el tiempo que queda.

Equipo 8: Garage Inteligente

En este caso ya que cuentan con el reconocedor de códigos qr seria bueno que tomaran mucho más en cuenta lo que es la seguridad.







Presentación Proyecto de Visión Computacional


sábado, 6 de abril de 2013

Tarea 3: Codificación Huffman

La codificación de Huffman es un algoritmo que es usado en la compresión de datos, es una forma de codificación estadistica.

La lóngitud para cada simbolo no es la misma ya que los simbolos utilizados con mas frecuencia se le asignan códigos más cortos mientras que los simbolos menos frecuentes se les asigna un código mas largo.

Ejemplo de como trabaja:

En esta caso dare como entrada una cadena la cual es la siguiente:




Paso 1

Buscamos la frecuencia de los caracteres unicos en el texto anterior:






Paso 2
Cada uno de los caracteres se crea como un arbol y los agrego a una lista, cada arbol tiene su simbolo asociado y su numero de frecuencia.





Paso3 Los ordenamos de menor a mayor según las frecuencias





Paso4
De lo anterior se seleccionaran los primeros dos arboles de la lista y formaremos un nuevo arbol con ellos, antes de realiar el arbol borraremos los dos arboles de la lista:





La raiz del nuevo arbol sera la suma de las frecuencias de las raices de los dos arboles a unir y los arboles seran ahora nodos hijos de esta:




Paso 5
Agregamos a la lista el nuevo arbol creado ordenando de menor a mayor:




Realizamos el paso 4 y 5 de lo anterior hasta que solo quede un arbol en la lista:


.
.
.
.
.
.

.
.
.

.
.
.

.
.
.
Paso 6
Ya después de haber obtenido el arbol final tenemos que comenzar a recorrerlo para poder obtener el código binario de cada uno de los caracteres, como es un arbol binario sabemos que tiene las siguientes etiquetas que unen un nodo con otro:



Este árbol contiene las palabras clave nuevas para cada letra, y el nodo raiz que en este caso es el 11 sera el número de caracteres en el texto que son 11.





Paso 7
Convertir el texto original con sus valores de código bianrios por huffman:

Texto origina: Hola alicia
Comprimido: 000001110100101011011101111110
Paso 8

El paso 8 es descomprimirlo, en este caso recorro la cadena ya comprimida caracter por caracter y voi buscando en el arbol si es un cero me voi a la izquierda si es un uno a la derecha hasta encontrar el ultimo nodo que no tenga hijos, ejemplo:





Mi código es el siguiente:




Realice dos pruebas una donde utilizo una gran cantidad de texto en la cadena de entrada pero que los caracteres son repetidos y otro en donde es un texto más pequeño y existen una mayor cantidad de diferentes caracteres:

Mejor Caso:

Texto grande con caracteres identicos mayor, sería el mejor caso ya que no recorreria el arbol muchas veces.:



Peor Caso:

Texto pequeño con caracteres identicos menor, sería el peor caso ya que el arbol lo recorrera muchas veces por que los caracteres casi no se repiten y son diferentes:



Si nos damos cuenta que mientras más se repita un caracter en una cadena el código dado por el algoritmo de huffman se hace más pequeño.  

Y que los caracteres que más se repiten son los que tienen un código binario de menor digitos.

Intenete dibujar el arbol :s pero no alcanse a terminarlo y me lo empalmaba:


Es del ejemplo Hola alicia lo hice con networkx:

Código: