jueves, 7 de marzo de 2013

Laboratorio 5-Detección de círculos de diferentes tamaños


Para esta semana se nos pidió realizar un programa capaz de detectar círculos de diferentes tamaños a partir de una imagen.

Lo que utilice para realiza esto es a partir de lo realizado en clase ver entrada:

http://m8sem.blogspot.mx/2013/03/deteccion-de-circulos.html

Partiendo de este código que ya detectaba los círculos simplemente elimine el error que se marcaban los centros de otras figuras que no eran círculos.

Como ya lo había mencionado en la entrada de clase, los círculos detectados serán pintados de Azul y su centro sera marcado.

Para confirmar que sea un circulo obtendremos el radio y su área.




Ejemplo:







Obteniendo la distancia entre el punto de partida y el centro obtenemos el radio.


Código:



martes, 5 de marzo de 2013

Laboratorio 5 -Catalogo

Para esta semana se nos pidió elaborar un catalogo que contenga el material a utilizar así como el sitio donde lo podemos conseguir, al igual que el software.

Arduino UNO:

http://www.5hz-electronica.com/

En 5hz podemos encontrar desde Arduino UNO hasta mega cuentan con los diferentes tipos de Arduino y en caso de no existir stock se puede realizar el pedido.




Sensor de Proximidad:

http://www.seeedstudio.com/

En seedstudio tienda estadounidense podemos encontrar
diferentes tipos de sensores de proximidad el que
nosotros usaríamos seria algo como el de la imagen, el cual
es un sensor de proximidad infrarrojo de 80cm, esta no es la
única opción existen diferentes tipos de sensores como
ultrasonido entre otros.


Bocina/buzzer:



http://www.steren.com.mx/

En steren podemos encontrar diferentes tipos de buzzers,
diferentes potencias tonos,variaciones y velocidades.


Foco interno

http://www.steren.com.mx/

Al igual que el buzzer en esteren podemos conseguir una gran cantidad de focos de diferente intensidad y tipo en este caso el mas apropiado para nosotros seria el foco de kripton 2.2volts




Software

En cuanto a software se trabajaría con el ide de Arduino el cual podemos obtener de la siguiente pagina:
http://www.arduino.cc/

Detección de círculos

Para esta semana la actividad consistió en realizar un programa capaz de identificar círculos a partir de una imagen.


Lo que utilice para realizar esto fue partiendo de lo que ya se tenia de detección de figuras y centros:
por lo que para poder realizarlo se tiene que contar con todo lo que se necesita para detección de figuras- formas ver esta entrada:http://m8sem.blogspot.mx/2013/02/clase-2-deteccion-de-formas.html


Partiendo de esto para no estar buscando los centros de nuevo una ves que se obtiene el centro de una figura lo que hago es lo siguiente:

Envió en una función llamada círculos el valor inicial en el cual se detecto la figura, este valor es donde se recorre toda la imagen y se encuentra un pixel blanco dando a entender que inicia una nueva figura,el centro de dicha figura obtenido con una formula ya empleada en la entrada anterior,la cantidad de pixeles que conforma la figura en este caso representara el área de la figura y por ultimo el color que tiene actualmente la figura, esto en dado caso de que si sea un circulo re-pintarlo de color azul para marcarlo.

Con todo esto podemos hacer uno de algunas formulas para confirmar si la figura es o no un circulo

Formulas a utilizar:


La formula para obtener el área de un circulo, para poder utilizar esta formula necesitamos el radio.

Para obtener el radio utilizaremos la formula de distancia:

Con la formula de distancia podremos obtener el radio ya que tenemos 2 puntos el punto de inicio donde se detecto una nueva figura y el punto donde se ubica el centro, estos serán nuestros valores de (x1,x2)(y1,y2).

Una ves que obtenemos el radio podemos utilizar la formula del área de un circulo con pi*r^2 el resultado nos dará el área de la figura que en caso de coincidir con el área en cantidad de pixeles que ya tenemos(puede haber una variación mínima de pocas décimas) podremos saber si la figura es un circulo.

Ejemplos:

Imagen original:
Circulo detectado:
Corrida:


Otro ejemplo

Imagen Original:
Circulo detectado:
En este caso el centro de la bandera y el del circulo casi están posicionados en el mismo punto.
Corrida:




Otro ejemplo:

Imagen original:


Circulo detectado:
El punto extra en el circulo del medio es el centro de la imagen total

Corrida:


Aclaro que el otro cambio de color es por lo utilizado anteriormente en formas y figuras todo lo que sea un circulo sera pintado de azul.

El código que realice es el siguiente:

Para saber si es un circulo:



Llamado de función círculos y pintado de los círculos:



Código Completo:

Fuentes: