Upload
vasco-quintero
View
105
Download
0
Embed Size (px)
Citation preview
Qué puede hacerse Fundamentos Primeros ejemplos Primer Juego
Mis cosas: CityFirefliesMis cosas: CityFireflies
http://cityfireflies.com/ https://vimeo.com/25071870
Mis cosas: Sonic SkateMis cosas: Sonic Skate
De otros: El primero. De otros: El primero. VideoplaceVideoplace
http://youtu.be/dmmxVA5xhuo?t=1m30s Myron Krueger, 1975
Messa di VoiceMessa di Voice
http://www.tmema.org/messa/messa.html
https://www.youtube.com/watch?v=STRMcmj-gHc
Golan Levin and Zach Lieberman
with Jaap Blonk and Joan La Barbara
levelHeadlevelHead
https://www.youtube.com/watch?v=UJYKSFANuaQ Julian Oliver
En el navegador: En el navegador: justareflektor.com justareflektor.com
https://www.justareflektor.comVincent Morisset and
Aaron Koblin
HAND FROM ABOVEHAND FROM ABOVE
http://www.creativeapplications.net/openframeworks/hand-from-above-openframeworks/ Vincent Morisset and
Aaron Koblin
.
Nuestro problema: Una cámara nos da un array de pixels, nada de información de lo que hay en ellos
¿Como identificar qué se está viendo?
Técnicas BásicasTécnicas Básicas
Un uso habitual es preparar la imagen para posteriores procesos.
.
Background SustractionBackground Sustraction
Se utiliza para detectar variaciones en una imagen respecto a otra de referencia. Simplemente se restan los valores de alguna caracteristica de cada pixel entre una imagen y otra
Fuente: http://se.inf.ethz.ch/courses/2013b_fall/rpl/lectures/10_RobotPerception.pdf
BlobsBlobs
Regiones con una caracteristica constante en una imagen
http://golancourses.net/2012spring/03/29/interact-reactive-environments/
Tracking de BlobsTracking de Blobs
Seguimiento del movimiento de las regiones a lo largo de una secuencia de imagen: Una mano que se mueve, una persona que anda, un coche que pasa
http://golancourses.net/2012spring/03/29/interact-reactive-environments/
Abriendo la cámaraAbriendo la cámara
import processing.video.*;
void setup() { video = new Capture(this, width, height);video.start();
void draw(){ if (cam.available() == true) { cam.read(); } image(cam, 0, 0);
Código de ejemplolibraries -> video-> capture -> GettingStartedCapture
Leyendo pixels de la Leyendo pixels de la imagenimagen
Código de ejemplolibraries -> video-> capture -> frameDifferencing(sobre la extraccion de color): http://processing.org/reference/red_.htmlBG sustraction
color pink = color(255, 102, 204);loadPixels();for (int i = 0; i < (width*height/2)-width/2; i++) { pixels[i] = pink;}updatePixels();
Pixels de la pantalla:
video.loadPixels(); // Make its pixels[] array available
Pixels de la pantalla:
Un filtroUn filtro
loadPixels(); for (int i = 0; i < numPixels; i++) { pixelBrightness = brightness(video.pixels[i]); if (pixelBrightness > threshold) { // If the pixel is brighter than the pixels[i] = white; // threshold value, make it white } else { // Otherwise, pixels[i] = black; // make it black } } updatePixels(); Código de ejemplo
libraries -> video-> capture ->Brightness threshold
Siguiendo el pixel mas Siguiendo el pixel mas brillantebrillante
Código de ejemplolibraries -> video-> capture ->Brightness Tracking
float pixelBrightness = brightness(pixelValue); // If that value is brighter than any previous, then store the // brightness of that pixel, as well as its (x,y) location if (pixelBrightness > brightestValue) { brightestValue = pixelBrightness; brightestY = y; brightestX = x; }
EN ESTE TIPO DE APLICACIONES ES MUY IMPORTANTE CONFIGURAR BIEN EL ENTORNO
Un primer inicio de Un primer inicio de “juego”“juego”
Instalando opencvInstalando opencvSketch->import library->add library…
Opencv for processing by Greg Borenstein