jueves, 7 de marzo de 2013

Laboratorio Visión Computacional Radios Desconosidos

Saludos compañeros, personas con interés y demás gente en la internet, el día de hoy mostraremos un pequeño método para identificar los centros de los círculos en una imagen sin saber el radio en espeficífico.

Estas ecuaciones como en el anterior post, nos ayudan a identificar el centro de un círculo y si sabemos cuál es el radio de este, solo es cuestion de sustituir:




Donde (a,b) es el centro del círculo, pero en esta ocasión desconocemos el radio.
¿Qué proceso se siguió?


Se fue generando radios desde una magnitud pequeña, y se fue aumentado hasta un cierto punto.

Esto quiere decir que el programa necesita dos parámetros, una magnitud de inicio y una magnitud final para los diferentes radios.

En esta fracción de código se muestra las iteraciones de los diferentes radios.

Aquí código







Para cada iteración con los radios, se usa el mismo proceso que en el anterior post, se sacan los diferentes centros, se realiza una pequeña votacion para cada uno de los centros posibles y decidimos si es centro y no.
En cada iteracion se va guardando los diferentes centros posibles  y posteriormente se busca verificar si estos centros obtenidos son aceptados o no.


Aquí el código de lo dicho anteriormente


¿Cómo decidimos si el centro es aceptado o no?
Se uso un método en donde nos ubicamos en el centro dado por la función, y posteriormente recorremos desde este centro de izquierda a derecha con respecto al tamaño del radio actual, de igual manera de arriba hacia abajo.

Y con un pequeño umbral si detecta tanta cantidad de pixeles de color blanco (Si es blanco significa que es un borde de la imagen), lo aceptamos como un círculo si no lo rechazamos.

Aquí el código de lo anterior



En caso de que sea aceptado solo pintamos el círculo nuevo con el radio estimado y proseguimos con el siguiente radio de prueba.

Este proceso es algo pesado y si lleva un tiempo en ejecutarse.

El umbral es un factor importante ya que es muy probable que salgan "círculos fantastma"  por diferentes ruidos de la misma imagen o la técnica de los bordes o entre otros factores.


Para sacar los centros de pruebas, solo se verificó los puros bordes y no se tomo en cuenta el fondo para evitar el mayor ruido posible.





Prueba uno

Prueba dos


Espero que les alla gustado es todo por hoy



martes, 5 de marzo de 2013

Laboratorio de ubicuo "Catálogo" AVE

Cosas que se necesitarian para el proyecto con respecto a Hardware:
  • Camara WEB
  • Arduino
  • Sensor


Nuestro proyecto como ya anteriormente hemos mencionado trata sobre la seguridad para las pc usadas para una sola persona y proteger su privacidad.




Para identificar el usuario se usaria la camara:
La camara se puede encontrar en diferentes partes desde el mercadito o tiendas especialisadas. Como steren

Aquí lugares en donde se puede concegir camaras web o componentes de computadora u electronicos

Steren 
Direcciones: MAPA
PcDomino
Direcciones: MAPA1  MAPA2



Con respecto el arduino anteriormente hemos ido a 5 Hz para la adquisicion del arduino y nuevamente ellos tambien nos pueden proveer de un sensor de proximidad

5 Hz
Dirección: MAPA



Estos sensores son infrarojos y tambien en 5 Hrz se pueden consegir ademas con electro abastos.


Electro abastos Dirección: MAPA

Con respecto a Software se planea usar:

  • Python
  • Opencv
  • Processing

Todas son de librerías libres



Entrada # 5 Lab Pedro


Laboratorio 
de 
Temas Selectos de Sistemas Inteligentes

By Pedro Miguel Martínez Caballero

En esta entrada consiste en en listar el material y software a utilizar que se tendrá que conseguir para la realización del proyecto grupal.

Materiales

Cámara Web


Este sera utilizado solamente para las computadoras que no cuenten con una cámara integrada, comúnmente las de escritorio y algunas laptops.

Este se puede conseguir en cualquier parte que venda accesorios para computadora.

Steren:


MercadoLibre:


Pcel:


Sensor de Proximidad


Se puede conseguir en:

5Hz:


MercadoLibre:


Arduino


Esta sera utilizado junto con el Sensor de Proximidad para detectar cuando el usuario no se encuentra frente a una computadora y el arduino envíe la instrucción a la computadora para que esta se bloquee.

Se puede conseguir en: 

5Hz:


MercadoLibre:


Nota:

Solamente pongo los lugares que conozco donde se pueda conseguir los materiales, existen mas lugares pero no los conozco.

Software

Arduino

Se puede descargar de la siguiente página

http://arduino.cc/en/main/software

OpenCV

Se utilizara junto con Python

http://www.neuroforge.co.uk/index.php/getting-started-with-python-a-opencv

Presentación para clase

Laboratorio Obed: Catalago Hardware y software

Para esta entrada se encargo buscar sobre posibles hardware y software que se pueda emplear para nuestro proyecto.

Proyecto
Nuestro proyecto es una computadora que detecta el rostro de su usuario predefinido y con esto poder desbloquear la computadora, si la cámara detecta a alguien que no es su usuario esta tendrá la función de bloquearse para evitar plagios o malos usos a la computadora por terceras personas.

Hardware

El equipo ha llegado a la conclusión de que no se necesita comprar ningún tipo de hardware, pero en esta entrada se mostrara lo que se usara en caso de que la maquina no cuente con ello


Cámara web
En caso de que se este trabajando con una computadora casera, es decir, no una 
laptop sera necesario adquirir una cámara web (como muestra la imagen).
Cabe destacar que no es necesario comprar una cámara de mucha potencia ya que no se tiene pensada una especial, solo con que funcione


Sensor de proximidad
Si es que nos sobra tiempo, el equipo a decidido implementar este sensor para dar una mejor función a nuestro sistema.
  • Costo: $250
  • Tienda: 5 Hertz
  • Link: Sensor







Arduino

 En dado caso de que se implemente el sensor proximidad el arduino tendrá que

 ser usado para su funcionamiento.





Lo necesario
Computadora o laptop
 Es uno de los componentes principales de nuestro sistema ya que aquí es donde
se estarán llevando acabo los hechos, es parte importante pero no hay elección especifica para nuestro sistema ya que se tiene contemplado que funcionara en cualquier maquina con cámara web








Software
Para este apartado el lenguaje de programación a emplearse es:
  • Python
  • Opencv
En dado caso de que sea implementado el sensor se utilizara:
  • Processing (para la programacion del sensor)

lunes, 4 de marzo de 2013

Visión computacional Círculos

Círculos

Buenas compañeros y gente bloggera. En esta ocasión se realizo un pequeño programa que identifica el centro de un círculo. Bueno comencemos:

Para empezar  este proceso se realizó con un proceso similar al de reconocimiento de lineas. Solo que en esta ocasión se utilizaron otras formulas parecidas al de lineas.

El círculo como la linea tiene su propia forma de expresarse con ecuaciones. Las siguientes ecuaciones pueden representar a un círculo:


Donde (a,b) es el centro del círculo. X e Y son los puntos en la circunferencia en algún ángulo.

Ahora si queremos identificar el  centro es cuestión de despejar a,b que es el centro del círculo , quedando las ecuaciones de la siguiente manera:



Usando estas ecuaciones podemos calcular un suspuesto centro de tal punto en la imagen, ya sea circulo o no.


Posteriormente se hace un pequeño cálculo  para ver que punto tiene mas frecuencias de ser centro y con esto identificar el centro o punto mas factible.


Para sacar los ángulos se utilizaron los gradientes de la imagen, en anteriores posts hemos hablado de como sacarlos.

  • Para el coseno de ángulo se realiza gx / g
  • Para el seno del ángulo se realiza gy / g

Y sustituyendo el punto de X e Y sacamos el posible centro. Y reciclamos este proceso.



Aquí el código de esto:

Termina


Posteriormente se saca un pequeño umbral, sacando el promedio de los votos menos el punto mas votado, 

Se compara todos los puntos y si fue muy votado cierto punto sobrepasando al umbral, quiere decir que es un posible centro.

Aquí el código de esto

Termina

Ya para finalizar, para pintar el nuevo circulo se utilizaron las formulas originales del circulo.

Aquí el código de esto
Y esto es todo aquí unas pequeñas imagenes de esto:

Primero con un solo circulo de aproximadamente 100 pixeles de radio:


Ahora con varios círculos de aproximadamente 45 pixeles de radios:



Aquí en este detecta cuatro puntos pero al parecer dos puntos están cercas aquí existe una pequeña falla posiblemente en el umbral.


Y bueno eso es todo

Posdata: Este programa funciona si se sabe con exactitud el radio del círculo que se esta buscando.

Posdata 2: EL código nuevamente como el anterior fue basado en el código de la doctora Satu Elisa Schaeffer


Laboratorio de Telecomunicaciones . NS2

Instalando y ejecutando NS2

Buenas compañeros y personas que nos vistan, en esta ocasión  hablaremos sobre laspruebas realzadas con un simulador network, en este caso "ns2" junto con nam y xgraph.


  • NS2: Es una herramienta que se utilizar para jeecutar diferentes tipos de redes: protocolos entre mas.
  • Nam: Esta herramienta nos permite visualizar lo que sucede en NS2.
  • xgraph:  Esta herramienta nos permite gráficar resultados del nam o ns2.

Para instalar estas útiles herramientas se pueden realizar de tres formas:

La primera desde la terminal:

  • sudo apt-get install nam
  • sudo apt-get install ns2
  • sudo apt-get install xgraph


Ahora si lo queremos instalar desde synaptic, solo abrimos el gestor de paquetes y buscamos por sus respectivos nombres, lo seleccionamos e instalamos.



Interfaz de nam


Esta es la interfaz de la simulación que nos arroga nam. Podemos controlar el tiempo de la simulación, iniciar esta, pausar, adelantar, analizar, reiniciar entre más cosas interesantes.


Para realizar las diferentes pruebas, se siguieron unos tutoriales y ejemplos de este sitio web: Tutorial web.


Primer Vídeo:

En este video se muestra dos nodo, donde un nodo le envía datos al otro.
Cabe de destacar que las extenciones de ns2 es .tcl y para correrlo desde la terminal solo es necesario poner

 -> ns programa.tcl

Descargar ejemplo aquí



Segundo vídeo:

En este ejemplo se muestra una pequeña topología de 4 nodos, en donde dos nodos envían paquetes a un tercer nodo y este mismo reinvia estos paquetes a un cuarto nodo con cierta perdida de paquetes.

Las perdidas de paquete se meustran en medio con unos cuadrados multicolores de forma vertical.

Descargar ejemplo aquí




Tercer vídeo:

Usando xgraph

En este otro ejemplo se meustra la ejecucion de un tcl que genera una pqueña gráfica de la velocidad de transferencia contra tiempo.

Descarga ejemplo aquí




La gráfica que vemos en la pantalla:


Esto es todo nos vemos a la próxima.