Juegos de Realidad Aumentada para el cálculo mental

En el segundo semestre del 2017 me propuse elaborar un conjunto de juegos de realidad aumentada para la matemática que se enmarcaron en el Proyecto «Matemáticas Extraterrestres»; este proyecto busca que los estudiantes mejoren sus habilidades de cálculo mental en operaciones de suma, resta, multiplicación y división.

El proceso me lleno de satisfacción al ser usadas dentro del aula de innovación en la Escuela «Jesús Nazareno»  donde trabajo (Perú), a la vez que recibió una mención honorífica en el Premio ILCE SINADEP a las prácticas innovadoras  en Ibeoramerica y el Caribe el 29 de noviembre del presente año.

Y cómo fue el caso de nuestra plataforma de creación de cuentos (http://cuentacuentos.org), esta también la ponga a disposición de los estudiantes, maestros y padres de familia que tengan ánimo de poder utilizar estas herramientas para entretenerse, aprender y afianzar sus habilidades de cálculo mental.

El enlace es: https://cuentacuentos.org/realidadaumentada/matematicas/

También les muestro un video ilustrativo del uso:

Juan Cadillo

 

 

Ruleta para contar cuentos

Con mucha alegría hoy se ha publicado una nueva herramienta digital más para motivar a los niños y niñas a crear sus cuentos, la herramienta es una ruleta para contar cuentos, su uso está orientado a combinar ideas motivadores para poder iniciar o desarrollar una historia fantástica.

Pueden visitarla en http://cuentacuentos.org

ruletacuentos

Juan Cadillo

Crear libros de cuentos con herramienta online

Estimados amigos y amigas:

Escribo esta nota con gran emoción ya que durante este inicio de semana se ha logrado mejorar algunos aspectos puntuales sobre la herramienta web para crear cuentos. El proyecto en el que estoy trabajando se denomina «Cuentacuentos – Storytelling» y se deriva del proyecto «En el recreo te cuento», que está permitiendo que los niños puedan crear sus cuentos de manera online.

intutivo

Espero puedan visitarnos en http://cuentacuentos.org

No olviden a lo hora de crear su primer cuento desbloquear la opción menús emergentes para el sitio.

Aquí una muestra de la interfaz para crear cuentos:

renovado

Espero sus comentarios.

Juan Cadillo

Herramienta gratuita para crear cuentos digitales

Estimados amigos y amiga:

Este post es para invitarlos a usar el sistema web que se ha desarrollado con el objetivo de propiciar la escritura creativa de cuentos.

La herramienta ha sido desarrollada pacientemente durante cerca de un año y finalmente ha sido publicada en http://cuentacuentos.org en ella se provee una interfaz fácil de manejar y los tutoriales para iniciar en el arte de escribir cuentos (storytelling). La gran ventaja lograda es que lo que se escribe es narrado gracias a los servicios de voz en la nube.

Para fines del 2016 esta previsto la apertura del registro de usuarios ya que aún no se ha terminado su desarrollo y se está en proceso de validación, pero una demo funciona está liberada  y a decir verdad  está bien lograda y al alcance de todos, además si te comunicas por este medio se te puede dar alcances de como usar realidad aumentada para voltear las hojas usando gestos de la mano.

Espero que puedan acceder ha esta herramienta que ha costado muchas horas de trabajo y pueda ayudar a los niños y niñas en las escuela a producir sus propios cuentos.

Juan Cadillo

 

En busca de votos al contar experiencia con las TIC

Estimados amigos y amigas:

El presente es para pedir su colaboración y votos para  mi experiencia en el Premio ConectaRSE para Crecer, este premio reconoce las historias de peruanos que han transformado sus vidas y la de su comunidad a partir del uso de las telecomunicaciones. Ayúdame a que la experiencia desarrollada a o largo de varios años pueda ser elegida de entre las 10 participantes en este  2014  y de esta forma se puede difundir en el Perú.

El sistema es sencillo te registras en la sitio http://testimoniodevida.com/ , ya sea con tu correo o mediante Facebook y le das a votar a la experiencia de Juan Cadillo, también puedes votar por otras cuatro experiencias más.

Juan Cadillo – Mundo Aumentado X

Demostración del uso de la Realidad Aumentada en las Matemáticas

Al iniciar Octubre del 2014, deseo mostrar algunas ideas consolidadas sobre el uso de la realidad aumentada desde dos puntos de vista; el desarrollo de las capacidades de programación de los niños que han logrado construir aplicaciones de realidad aumentada con Scratch en el sexto grado y el desarrollo de capacidades matemáticas en los niños del primer grado usando estas aplicaciones, realmente a mi entender la programación puede ser un factor diferenciador en las escuelas peruanas… aunque en la realidad estamos muy lejos de lograr avances ya que nuestros  tomadores de decisiones en el campo educativo ya sea en el sector privado o estatal no ven  con mucho entusiasmo estas oportunidades de cambiar nuestro modelo de consumo por el de producción.

Lamentablemente los especialistas en informática y programación están lejos de las aulas, no se trata de solo de usar computadoras o que el maestro use Jclic u otro programa  o quizá use Scratch; requerimos de un esfuerzo duro que aliente el desarrollo de software desde las escuelas, ya que debemos entender a todo nivel: «O programamos o nos programan». Entendiendo lo anterior debemos buscar que los niños encuentren soluciones a problemas locales que impliquen tener que construir programas  (de computadora). En el caso nuestro se usa como elemento motivador los videojuegos con realidad aumentada para solucionar problemas como el aprendizaje en las matemáticas, el trabajo con personas sordas, la necesidad de presentar contenidos, etc.

En fin, como defensor del desarrollo del pensamiento computacional queda seguir intentando demostrar sus beneficios.

Juan Cadillo

Ganador del Premio «Maestro que deja Huella 2014»

Estimados amigos y amigas:

El pasado 03 de julio del 2014, se realizó la elección del ganador del Premio «Maestro que deja Huella 2014», organizado por el grupo INTERBANCK. Al concurso se presentaron 4800 proyectos de todo el Perú. Siendo elegido como ganador el Proyecto que se viene desarrollando «Mundo Aumentado X» y su servidor como Maestro que deja huella 2014.

Esto es un gran mérito, ya que se compitió con proyectos que promovían el logro de competencias en la  ciencia, el arte, la lectura,  la matemática y la cultura bajo enfoques muy diversos y criterios de trabajo que promueven la participación de la comunidad dentro de la escuela.

Nuestra propuesta de trabajo que integra la tecnología bajo un enfoque constructivista y de gestión de información logró alzarse como el proyecto ganador, siendo un éxito que permitirá reforzar la infraestructura tecnológica  y proponer nuevas alternativas del uso de las TIC con apoyo de la empresa privada. La propuesta integro:

  • El desarrollo de las nociones básicas de las matemáticas.
  • La producción de cuentos usando una plataforma virtual
  • El desarrollo del pensamiento computacional a través del uso de la robótica, y la programación; donde lo más destacado que se logró fue la construcción de traductores para el lenguaje de señas peruanas.
  • El arte y la creatividad, la sensibilidad social.
  • La investigación en el Museo Arqueológico de Ancash, la elaboración de contenidos para libros de realidad aumentada y un gran etc.

Sin duda el premio «Maestro que deja Huella» del grupo INTERBANK, es alentadora en todo sentido para los maestros peruanos, y debería ser imitada por otros grupos y empresas privadas. Ya que permite una inversión de cinco mil  dólares en el proyecto del docente ganador así como la difusión de su propuesta.

Finalmente, deseo expresar mi reconocimiento a todos los maestros que vienen dando todo de si para que la educación alcance el nivel que requerimos, porque: «Somos arquitectos de sueños y valores, contagiamos  alegría. Aunque nos salgan canas nuestro espíritu nuca envejece ya que nunca dejamos de aprender»

 

 

 

Proyecto Mundo Aumentado X

El pase de diapositivas requiere JavaScript.

Mundo aumentado X, es el nuevo proyecto en el que estoy embarcado y tiene por objetivo «Diseño y desarrollo de aplicaciones Serious Game con realidad aumentada en un entorno Web para lograr desarrollar capacidades matemáticas y comunicativas en niños que cursan el primer grado de Educación Primaria – Perú»

El proyecto esta demandando varias horas de trabajo en la construcción de las aplicaciones tanto para las matemáticas como para comunicación; además de las primeras pruebas con los niños y los padres de familia. Se busca la participación de los padres de familia del proyecto piloto para alentar participación de estos,  logrando con esta participación empoderar a la escuela y  cumplir de una manera efectiva el logro de las capacidades formuladas con el compromiso de sus agentes.

El pase de diapositivas requiere JavaScript.

Estas son las primeras imágenes del proyecto.

Juan Cadillo

Realidad Aumentada aplicada a la Matemática

Luego de algún tiempo retomo la escritura en el blog, para comentarles el emprendimiento que se ha iniciado en favor de aplicar la tecnología de la Realidad Aumentada para poder reforzar los aprendizajes en matemática, fundamentalmente en los primeros grados.  El Informe Horizon 2010 elaborado por el eLearn Center de la UOC y el New Media Consortium   vaticinó que la realidad aumentada sencilla sólo tardaría de dos a tres años en imprimir una fuerte influencia en la educación; esta vaticinio se ha ido cumpliendo en estos cerca de 3 años; el grato reto que asumí fue poder ser referentes en el uso de esta tecnología; por fortuna se coincidió con la empresa mexicana  M.C. Ar  en este empeño y en estos meses estoy trabajando para ellos en el desarrollo de un sistema que pueda apoyar la enseñanza de las Matemáticas basándonos en la curricula de primer grado en México, que es muy similar en los contenidos a varias de las currículas latinoamericanas en especial la peruana.

Durante el desarrollo del proyecto se van construyendo  juegos de RA, que usan conceptos de las denominadas aplicaciones de computación basadas en el gesto. El lenguaje de programación que se eligió fue CSharp bajo el framework Microsoft XNA; dentro de este entorno se usaron  librerías de visión artificial basadas en OpenCV y adaptada a CSharp con la denominación de OpenCvSharp. Las aplicaciones construidas  logran interactividad a través de los gestos; usando para ello la detección de flujo de movimiento,  es decir, se determina el patrón aparente de movimiento de objetos, superficies, y los bordes en una escena visual que es causado por el movimiento relativo entre un observador (un ojo una cámara ) y la escena,

Experimentalmente se esta validando las aplicaciones en la  I.E. «Jesús Nazareno», bajo estrategias del juego didáctico; donde se introducen los juegos  para poder validar sus resultados, que espero poder comentar en este espacio. Estos son algunos de los conceptos que se están trabajando:

–        Clasificación de objetos.

–        Seriación de objetos.

–        Representación de la cardinalidad de un conjunto de objetos.

–        Identificación de números ordinales.

–        Identificación de la relación “mayor que”, “menor que”, “igual que”

–        Sumar y restar de números.

Videos ilustrativos de lo que se esta avanzando:

Juan Cadillo

Contando experiencias con la Realidad Aumentada

La Realidad aumentada es una tecnología que nos permite representar con el proyector o sobre la pantalla objetos sintéticos  que podemos manipular de diferentes manera; existe diferentes niveles de complejidad; la más  difundida esta basada en marcadores que permiten ubicar sobre el marcadores videos, imágenes u objetos tridimensionales que se pueden girar y verlos desde diferentes ángulos. Para ello necesitamos un programa de interpretación, por ejemplo  BuildAr Viewer o Aumentaty, una cámara web que capture la imagen y los markers necesarios para cada objeto.Por mi experiencia se ha logrado extender el uso de Realidad Aumentada a juegos en los que no es necesario usar estos marcadores o en su defecto dar una mayor interactividad usando Etoy y Scratch con niños de Educación Primaria en Huaraz-Perú.

Así mismo formo parte de un proyecto que buscan construir en los próximos seis meses un set de juegos para enseñar matemática a los niños del primer grado en México usando Realidad Aumenta, que espero tenga el resultado esperado.

Este es un pequeño avance de esta primera semana de trabajo:

Juan Cadillo

Trabajando Realidad Aumentada en el Aula: Los Dinosaurios

Estimados amigos comparto parte del trabajo realizado en el Proyecto: «Uso de las TICs en el Desarrollo de las habilidades del Siglo XXI»

En esta oportunidad se esta trabajando el desarrollo de la autonomía; para lograr este objetivo se les otorga mayor libertad a los alumnos para realizar sus trabajos; dentro de este proceso se tiene como siempre algunos altibajos como son la calidad de los productos obtenidos pero la experiencia indica que es parte del aprendizaje que van logrando los niños al tener ellos mismos que verificar la calidad de sus trabajos, y paulatinamente irán corrigiendo sus errores que por lo general el docente tiene a detectar con mayor facilidad . Para el trabajo se les va ofreciendo ayuda sobre el manejo de las TIC para crear sus Collage, Presentaciones sobre los Dinosaurios, Animaciones usando StopMotion y el uso de la Realidad Aumentada para crear presentaciones para sus libros.

Aquí las sesiones de clase usadas:

El trabajo con la Realidad Aumentada:

El trabajo con StopMotion

El trabajo con Autocollage y PhotoStory

Juan Cadillo

Robótica y videojuegos en la escuela

Es para mi una alegría poder compartir con ustedes la ponencia «Robótica y videojuegos en la escuela», que fue presentado el 24 de junio del presente,  en el III Congreso Virtual sobre la Educación y TIC – La Escuela del Futuro.

Juan Cadillo

Proyecto «Ancash museo abierto»

Dentro de todo el trabajo que se viene realizando para estimular la creatividad en los niños a través de diferentes estrategias que implican el uso de las TICs, se ha generado un sub proyecto al que hemos denominado «Ancash Museo Abierto». Dentro de él esperamos poder general un nuevo libro de realidad aumentada que esta orientado a difundir el desarrollo histórico de Ancash y el Perú; este libro esta orientado además a usar parte de las habilidades desarrolladas para aprender el lenguaje se señas en los niños y busca generar contenidos para las personas sordas.

Esta iniciativa recibe el apoyo de la Dirección Regional de Cultura de Ancash y del Museo Arqueológico de Ancash, a quiénes les ha parecido una idea genial el poder aportar con sus conocimientos para lograr producir un libro de realidad aumentada para niños sordos.

Dentro de las primeras actividades realizadas, esta la de aprender a usar una técnica de animación denominada Stop Motion, que es una técnica de que aparenta el movimiento de objetos estáticos por medio de una serie de imágenes fijas sucesivas. Para el trabajo trasteamos por Internet en especial youtube con los niños, buscando como usaban esta técnica Y  con un par de cámaras web y los dos ordenadores del aula nos pusimos a trabajar con plástilina, papel, plumones y colores; este es nuestro primer trabajo oficial al que espero le puedan dar un comentario para que los niños sientan que su trabajo es valorado.

Este es el avance para implementar el libro, dentro de la aplicación se ha considerado usar un menú que permita manejar de manera interactiva los videos creados dentro del proyecto.

 

Juan Cadillo

Medio Millón de visitas… y suena mejor si hablamos de la seguridad emocional

Hoy este espacio celebra un nuevo hito…. el medio millón de visitas fue alcanzado. Dios quiera que muy pronto se llegue al doble.

Bueno, es necesario ahora hablar de la seguridad emocional y el porque de su importancia para el éxito personal que se debe formar en los niños y niñas desde muy pequeños. La seguridad emocional es la seguridad en uno mismo… es decir es la capacidad de sentir seguridad sobre la capacidad de ejercer control sobre nuestros sentimientos y sobre nuestra autoeficacia.

Bandura considera que la autoeficacia en un modelo que confiere poder; por lo que debemos  desarrollar en los niños y niñas aptitudes que vayan construyendo una sólida creencia en sí mismos.  Para ello debemos enseñar que una tarea difícil debe ser descompuesta en varias sub tareas, ir reforzando las expectativas  personales de cada niño o niñas en el tiempo con el logro de cada sub tarea. En este camino se debe inculcar el optimismo y reforzarlo. Así una  fuerte seguridad en la propia habilidad para dominar nuevas actividades puede operar de manera generalizada ante diferentes tipos de desafíos educativos y de la vida.

Esto es básicamente lo que se desea en el proyecto «Uso de las TICs en el Desarrollo de las Habilidades del Siglo XXI»; reforzar la seguridad emocional a través de diferentes actividades muchas tecnológicas y otras no, porque lo importante es la formación integral y la oportunidad de que los niños y niñas se vayan formando en una cultura del éxito que les permita:

  • Comportarse con coherencia
  • Respeto por si mismos
  • Aprovechamiento de sus capacidades
  • Sentimientos positivos y motivación
  • Tomar decisiones
  • Comunicarse mejor  con el grupo
  • Conseguir nuevos amigos
  • Mejorar hábitos

Una de las tareas dentro del avance logrado es que los niños y niñas de 11 años vayan elaborando tutoriales cada vez de una manera más autónoma .. donde se apoyen uno a otros para conseguir el objetivo de comunicar lo que van aprendiendo. Es grato presentarles el siguiente tutorial elaborado para ilustrar como construir un probador de ropa virtual… en el video podrán apreciar comentarios de los actores respecto a su desempeño y como mejorarlo.

Juan Cadillo

Tendencias emergentes en Educación con TIC: Libros de Realidad Aumentada

La Asociación Espiral, Educación y Tecnología ha publicado el libro «Tendencias emergentes en Educación con TIC», este libro es fruto de una actividad colaborativa  en la que muchas investigadores  y docentes comparte sus experiencias y saberes sobre la evolución y perspectivas tecnológicas en la Educación para los próximos años.

Tendencias emergentes en Educación con TIC

En nuestro caso nos sentimos muy contentos de ser mencionados en esta publicación por el trabajo realizado con el primer libro de Realidad Aumentada que construimos en el 2011 (ver página 190  de la publicación Tendencias emergentes en Educación con TIC)  libro de Realidad Aumentada  “Conociendo el Museo Arqueológico de Ancash»; que fue premiada por Fundación Telefónica también en ese año. Esta fue una primera propuesta educativa novedosa para nuestro medio (2011) que se postulo a través de la construcción de contenidos en base a la experiencia recogida por los propios niños y niñas en el museo Arqueológico de Ancash. Nuestra labor a lo largo del tiempo ha mejorado, permitiendo construir en el 2012 un Libro de Realidad Aumentada sobre el Ajedrez y actualmente estamos construyendo contenido para un libro de Realidad Aumentada para el Lenguaje de Señas Peruanas (en esta ocasión la tecnología que se usará esta relacionada con CSharp y Opencv dejando por el momento Processing) en la que se esta utilizando mucho ingenio para que los niños puedan  conocer el lenguaje de señas para sordos, construyan aplicaciones usando este lenguaje en Scratch, así como aplicaciones de realidad aumentada para mejorar la interacción y apoyar el conocimiento de este lenguaje en otros escolares; es un largo camino aún y el resultado final es el libro que espero este terminado a fines de noviembre.

Por otro lado el trabajo con la realidad aumenta se ha extendido al punto de que nuestra experiencia permite que los propios niños pueden construir sus propias aplicaciones de realidad aumentada para lo cual se parte de experiencias de detección de color, uso mensajes y una cámara; permitiendo que los niños desarrollen un conocimiento intuitivo en una primera etapa y luego este quede reforzado con la práctica.

Aquí un ejemplo del trabajo con un probador de ropa virtual construido por los propios niños y niñas:

Juan Cadillo

Las TIC en el Arte – Desarrollo de las habilidades del siglo XXI

Como dice Judit Minian (1999) : Pensar informáticamente supone operaciones mentales distintas y por lo tanto una propuesta pedagógica específica. No se puede pensar que el poder de la tecnología por sí sólo va a conseguir que los viejos procesos funcionen mejor. Su uso debe servir para que las organizaciones sean capaces de romper los viejos moldes y creen nuevas formas de trabajo y funcionamiento.

El planteamiento debe ser cómo usar las tecnologías para hacer las cosas que todavía no podemos hacer y no sólo cómo poder usarlas para mejorar aquéllas que ya hacemos.

Dentro del Proyecto que se esta desarrollando se considera al arte como un elemento  de suma relevancia en el proceso educativo que deseamos realizar;  ya que el uso de la  creatividad esta inmerso en la aplicación de cualquier habilidad que se puede usar; y por medio del arte podemos  desarrollar la creatividad que todos los niños y niñas  tienen en potencia, estimular sus valores sociales, desarrolla todas las operaciones básicas del pensamiento y contribuir a la construcción de una autoestima positiva.

Consideramos que al insertar las  TIC como factor determinante en los procesos escolares ya sea la socialización y aprendizajes podremos obtener mejores resultados que los obtenidos tradicionalmente; para ello la tecnología debe insertarse acompañado de un nuevo paradigma y la forma como se percibe lo que aprendemos.  De poco nos pueden servir las herramientas si solo las utilizamos para hacer más de lo mismo. Es indispensable comprender que estamos en un proceso constructivo ya se del conocimiento, de nuestros valores, aspiraciones y formas de resolver nuestros problemas.

Por lo tanto aspiramos con el tiempo a lograr una escuela participativa y de producción genuina; donde la  recreación de contenidos estén adaptados a las necesidades reales de nuestro medio y que nuestros niños y niñas puedan resolver problemas a través del diálogo, el trabajo en equipo, la creatividad y la sensibilidad de poder analizar las consecuencias de sus actos.

A continuación les presento el trabajo con la realidad aumentada usando Scratch – Spot para poder ejecutar una popular melodía «Campanero», en el que como primer paso los niños han construido sus aplicaciones en la OLPC y logran reproducir las notas musicales logrando varias la programación para no solo reproducir manualmente la melodía sino aumatizarla. Como segundo paso  usando Spot los niños han usado  casi el mismo código para poder implementar la realidad aumentada y obtener un piano virtual.

Además en esta semana se ha trabajado en otros contenidos logrando que los niños puedan generar nuevas animaciones para ilustrar contenidos desarrollados en clase como es el caso que se ilustra en el video: «El poblamiento de América»

Juan Cadillo

Detalles Técnicos dentro del proyecto “Uso de las TICs en el desarrollo de las habilidades del Siglo XXI”

Dentro del proyecto “Uso de las TICs en el desarrollo de las habilidades del Siglo XXI”, se esta construyendo un conjunto de aplicaciones que posibiliten el uso efectivo de los contenidos preparados en base al trabajo con los niños y niñas.
En esta oportunidades les contaré del trabajo que vengo realizando en la construcción de una aplicación de realidad aumentada de la cual espero pueda motivar a los niños a aprender el lenguaje de señas; esta aplicación esta formada por varios componentes:

  • Componente de reconocimiento y ubicación del rostro
  • Componente de reconocimiento de voz
  • Componente de detección de movimiento y Menú
  • Componente de ubicación de contenidos

Veamos el primero:

Componente de reconocimiento y ubicación del rostro

La detección del rostro es uno de los elementos fundamentales en cualquier sistema de reconocimiento facial, en nuestro caso buscamos identificar un rostro y sobre su ubicación colocar contenido que ilustra el uso de un conjunto de señas. El identificador debe ser capaz de reconocer el rostro más grande dentro del flujo de video (esto debe ser independiente de la edad, el sexo y la orientación). Dentro del proyecto la implementación de este componente da pie a un conjunto de investigaciones de corte técnico para buscar una solución eficiente.
Algunos de los retos afrontados son la detección facial, el escalado, la pose, iluminación, la oclusión y la edad.
Por motivos de uso de plataformas el desarrollo se ha realizado sobre Csharp y OpenCVSharp; usando los algoritmos implementados para OpenCVSharp, siendo usadas las funciones de clasificación en cascada que usa la técnica de Viola y Jones.

detección de rostro

menurostro2
Este es el algoritmo en bruto que fue usado y optimizado para nuestro caso y es extraído de los ejemplos de OpenCvSharp 1.4.1

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;

namespace OpenCvSharp.Test
{
///

///

/// http://opencv.jp/sample/object_detection.html#face_detection
class FaceDetect
{
public FaceDetect()
{
// CvHaarClassifierCascade, cvHaarDetectObjects

CvColor[] colors = new CvColor[]{
new CvColor(0,0,255),
new CvColor(0,128,255),
new CvColor(0,255,255),
new CvColor(0,255,0),
new CvColor(255,128,0),
new CvColor(255,255,0),
new CvColor(255,0,0),
new CvColor(255,0,255),
};

const double Scale = 1.14;
const double ScaleFactor = 1.0850;
const int MinNeighbors = 2;

using (IplImage img = new IplImage(Const.ImageYalta, LoadMode.Color))
using (IplImage smallImg = new IplImage(new CvSize(Cv.Round(img.Width / Scale), Cv.Round(img.Height / Scale)), BitDepth.U8, 1))
{

using (IplImage gray = new IplImage(img.Size, BitDepth.U8, 1))
{
Cv.CvtColor(img, gray, ColorConversion.BgrToGray);
Cv.Resize(gray, smallImg, Interpolation.Linear);
Cv.EqualizeHist(smallImg, smallImg);
}

using (CvHaarClassifierCascade cascade = CvHaarClassifierCascade.FromFile(Const.XmlHaarcascade)) //
using (CvMemStorage storage = new CvMemStorage())
{
storage.Clear();

//
Stopwatch watch = Stopwatch.StartNew();
CvSeq faces = Cv.HaarDetectObjects(smallImg, cascade, storage, ScaleFactor, MinNeighbors, 0, new CvSize(30, 30));
watch.Stop();
Console.WriteLine(«detection time = {0}ms\n», watch.ElapsedMilliseconds);

//
for (int i = 0; i < faces.Total; i++)
{
CvRect r = faces[i].Value.Rect;
CvPoint center = new CvPoint
{
X = Cv.Round((r.X + r.Width * 0.5) * Scale),
Y = Cv.Round((r.Y + r.Height * 0.5) * Scale)
};
int radius = Cv.Round((r.Width + r.Height) * 0.25 * Scale);
img.Circle(center, radius, colors[i % 8], 3, LineType.AntiAlias, 0);
}
}

//
CvWindow.ShowImages(img);
}
}
}
}

Componente de reconocimiento de voz:

Se esta usando los componentes de reconocimiento de voz de Microsoft en especial el System.Speech.Recognition, que permite el reconocimiento de voz; para reducir los tiempos se ha construido una gramática simple como por ejemplo reconocer cuatro palabras: izquierda, derecha e izquierda.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.Speech.Synthesis;
using System.Speech.Recognition;
using System.Speech.Recognition.SrgsGrammar;

namespace voz
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpeechSynthesizer mysyn = new SpeechSynthesizer();
SpriteFont letraPuntaje, letraPuntaje1;
string texto;
//SpeechRecognitionEngine _Recognition = new SpeechRecognitionEngine();
private SpeechRecognitionEngine reconocedor = new SpeechRecognitionEngine();
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = «Content»;
}

/// <summary>

protected override void Initialize()
{
// TODO: Add your initialization logic here
reconocedor.SetInputToDefaultAudioDevice();
texto = «derecha»;
SrgsDocument doc = new SrgsDocument();
SrgsRule rules = new SrgsRule(«rules», new SrgsOneOf(«derecha», «izquierda», «arriba», «abajo»));
doc.Rules.Add(rules);
doc.Root = rules;
doc.Culture = reconocedor.RecognizerInfo.Culture;
doc.Language = «es-ES»;
reconocedor.LoadGrammar(new Grammar(doc));//

reconocedor.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(reconocedor_SpeechRecognized);

reconocedor.RecognizeAsync(RecognizeMode.Multiple);
base.Initialize();
}

/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
List<string> nombre = new List<string>();
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
letraPuntaje = Content.Load<SpriteFont>(«letra»);

foreach (InstalledVoice voz in mysyn.GetInstalledVoices())
{
nombre.Add(voz.VoiceInfo.Name.ToString());
}

// TODO: use this.Content to load your game content here
}
void reconocedor_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{

///destripa el datagrmaa

foreach (RecognizedWordUnit word in e.Result.Words)
{

texto = word.Text;
}
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}

/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name=»gameTime»>Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Add your update logic here

base.Update(gameTime);
}

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name=»gameTime»>Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here

spriteBatch.Begin();
spriteBatch.DrawString(letraPuntaje, texto, new Vector2(60, 180),
Color.PaleVioletRed, MathHelper.ToRadians(0), new Vector2(0, 0), 2f, SpriteEffects.None, 0);
spriteBatch.End();
base.Draw(gameTime);
}

}
}

Componente de detección de movimiento y Menú

Respecto a este componente básicamente se cuenta en número de pixeles blancos dentro de una imagen en blanco y negro dentro de una región de la imagen ver la figura inferior.

blancoynegro

Componente de ubicación de contenidos

Este es el componente más importante y esta relacionado con el trabajo de los niños y niñas de la I.E. «Jesús Nazareno». Ellos están aprendiendo de una manera muy dinámica el lenguaje de señas, este aprendizaje está siendo alentado por los padres de familia y afortunadamente con la participación de especialistas del Centro de Educación Especial «Señor de la Soledad» se ha podido mejorar la interpretación de las señas. Para ello se usan gif animados los que son ubicados sobre la posición de ubicación del rostro y se coordinan en base a estructuras CASE.

bailar trabajar comer barrer

Aquí la primera versión del Software

Juan Cadillo

Tutorial de Realidad Aumentada con Scratch Spot

Hace varios meses que me encontré con Spot (Augmented Environments Lab at the Georgia Institute of Technology) un versión modificada de Scratch, que tiene la virtud de poder adquirir las imágenes en tiempo real como fondo dentro Scratch; si bien Scratch 2.0 en su versión beta tiene esta posibilidad; los creadores de Spot han implementado el seguimiento de marcadores que se puede usar para hacer proyectos de Realidad Aumentada con los niños (si bien esta limitada como muchos por la cantidad de luz para poder obtener un buen seguimiento), Spot cuenta con 3 tipos de marcadores implementados y pueden ser descargado el software desde http://www.augmentedenvironments.org/lab/research/children/arscratch/

Para poder usarlo descargue el software desde el enlace, descomprima todo en una carpeta, conecte su cámara web y a dar rienda suelta a su imaginación.

En mi caso he implementado un piano virtual (la codificación usada se ve en el video) que es una remembranza de la investigación que realice para poder implementar un piano usando processing y las librerias de opencv.

Aquí el video:

Y el piano que implemente usando processing ya hace casi dos años:

Juan Cadillo León

Oportunidades para fomentar el desarrollo del liderazgo de las TIC

Vivimos en sociedades donde se requiere de liderazgo. Las personas deben asumir responsabilidades, poder  hacer lo que piensan y provoquen cambios. Esto es necesario desde la familia, la escuela, el vecindario, el equipo de fútbol, la empresa, etc.

Por ello es importante determinar qué factores son claves para el desarrollo del liderazgo, y apuntar a su consolidación desde la educación o mejor dicho desde la Escuela.

Es por ello que desde este espacio se apunta a aportar en esta dirección a través del relato de  la experiencia que se viene desarrollando dentro del proyecto “Uso de las TICs en el desarrollo de las habilidades del Siglo XXI”.

Nuestro proyecto apunta a formar una psicología positiva en los niños (Richard Wiseman) formando una actitud sana y positiva (ver http://wp.me/pFuUb-5u), que a través de la solución de problemas postulados en los diversos cursos de formación permita:

  • Crear relaciones entre los estudiantes de colaboración, compromiso entre ellos y la comunidad.
  • Una actitud positiva, creando profecías positivas de su vida (piensan que la  suerte no te dejará en la vida)
  • Uso de la intuición, en base a un espíritu constructivo que alienta  la acción mediante el uso de las TIC.
  • Visión positiva de la vida a través los proyectos en etapas, recompensando  los logros a través de actividades de difusión de los logros y esfuerzos de los niños a sus padres y familiares. Un aspecto básico es el compromiso que los niños aportan a cada actividad.

A ello complementamos ofreciendo técnicas algorítmicas que con el tiempo esperamos sean útiles para sistematizar información y la oportunidad de poder construir un discurso que les permita comunicar sus ideas.

Sin duda que es un camino largo pero es necesario recorrerlo e ir perfeccionándolo para conseguir varones y mujeres líderes.  Además como dice Jhon C Maxwell (Ver http://wp.me/pFuUb-ay) “el liderazgo se desarrolla día a día y no en un día”.

La oportunidad que nos ofrecen las TIC dentro de los proyectos escolares son amplias, porque son un medio  que rompe barreras, es económica luego de que se ha hecho la inversión inicial (que es punto de quiebre entre los que tienen y no tienen en muchas escuelas), bien llevada permite el desarrollo de las capacidades algorítmicas en los niños, permite el desarrollo de la creatividad por lo muchos recursos expresivos que se pueden desarrollar a través de ella. Sin duda que a través de las TICs se puede desarrollar liderazgo en la Escuela y es eso lo que espero poder demostrar a través del proyecto que se ha postulado y es motivo de escribir estas líneas.

Aquí una muestra  de los primeros pasos trabajados con el proyecto en si:

Trabajo con el lenguaje se señas peruanas:

Juan Cadillo

El Flujo Óptico

En esta semana me puse a revisar algunos algoritmos de ejemplo que traen las librerías de OpenCvSharp, y me dí con el de flujo óptico. Cuando trabaje con processing deseaba poder implementar algún algoritmo de este tipo, pero las librerías de opencv para processing no me soportaban la cámara y por la inexperiencia de esos días no entendía como hacerlo y me conforme con la detección de movimiento para poder construir juegos para niños. Ahora con un poco más de experiencia y armado de un marco mucho más rico de funciones dentro de OpenCV para C#,  he adaptado el algoritmo de ejemplo que trae y  poder mover un pequeño cuadrado (pensar que para animar un simple cuadrado tuve que romperme la cabeza con processing… hace algunos años).

Algo de teoría

Flujo óptico

El flujo óptico sucede cuando nos movemos en una dirección determinada. Si miramos hacia el punto al que nos dirigimos (el centro de expansión) éste no muestra movimiento, mientras que si miramos al espacio circundante, el campo visual parece expandirse. Este efecto, nuestro cerebro lo percibe con  precisión, y  contribuye al control de la locomoción.

El objetivo inmediato del análisis de imágenes basado en el flujo óptico es determinar el campo de movimiento (representación bidimensional de un movimiento tridimensional)

Algoritmo de Lucas-Kanade

Asumen constantes los vectores de velocidad u y v en una pequeña porción de la imagen.

lucas_a

lucas1

lucas_b

donde la matriz A contiene las derivadas espaciales de la imagen, el vector v corresponde al vector de flujo óptico (u,v) y el vector b contiene las derivadas temporales de la imagen.

lucas_c

lucas2

lucas_d

Para poder realizar el cálculo de flujo óptico tiene que ser posible la inversión de la matriz

lucas_e

Shi y Tomassi definen en las propiedades que debe cumplir una región para que el flujo óptico se estimado apropiadamente utilizando la técnica de LK. Sean λ1 y λ2 los valores propios de la matriz $$A^TA$ para cierta región R de la imagen, entonces se debe cumplir que:

  • min (λ1 y λ2) > λmin) existe en R
  • (λ1 / λ2) < t

Veamos la implementación del algoritmo original ofrecido dentro de los ejemplo de OpenCvSahrp

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OpenCvSharp.Test
{
/// <summary>
/// Lucas & Kanade アルゴリズムによるオプティカルフローの計算
/// </summary>
/// <remarks>http://opencv.jp/sample/optical_flow.html#optflowHSLK</remarks&gt;
class OpticalFlowLK
{
public OpticalFlowLK()
{
using (IplImage srcImg1 = Cv.LoadImage(Const.ImagePenguin1, LoadMode.GrayScale))
using (IplImage srcImg2 = Cv.LoadImage(Const.ImagePenguin1b, LoadMode.GrayScale))
using (IplImage dstImg = Cv.LoadImage(Const.ImagePenguin1b, LoadMode.Color))
{
// (1)速度ベクトルを格納する構造体の確保,等
int cols = srcImg1.Width;
int rows = srcImg1.Height;
using (CvMat velx = Cv.CreateMat(rows, cols, MatrixType.F32C1))
using (CvMat vely = Cv.CreateMat(rows, cols, MatrixType.F32C1))
{
Cv.SetZero(velx);
Cv.SetZero(vely);

// (2)オプティカルフローを計算
Cv.CalcOpticalFlowLK(srcImg1, srcImg2, Cv.Size(15, 15), velx, vely);

// (3)オプティカルフローを描画
for (int i = 0; i < cols; i += 5)
{
for (int j = 0; j < rows; j += 5)
{
int dx = (int)Cv.GetReal2D(velx, j, i);
int dy = (int)Cv.GetReal2D(vely, j, i);
Cv.Line(dstImg, Cv.Point(i, j), Cv.Point(i + dx, j + dy), Cv.RGB(255, 0, 0), 1, Cv.AA, 0);
}
}

// (4)オプティカルフローの表示
Cv.NamedWindow(«ImageLK», WindowMode.AutoSize);
Cv.ShowImage(«ImageLK», dstImg);
Cv.NamedWindow(«velx», WindowMode.AutoSize);
Cv.ShowImage(«velx», velx);
Cv.NamedWindow(«vely», WindowMode.AutoSize);
Cv.ShowImage(«vely», vely);
Cv.WaitKey(0);
Cv.DestroyAllWindows();
}
}

}
}
}

Aquí el video de la implementación del algoritmo en tiempo real:

Y este video con el movimiento detectado sobre un cuadrado:

Juan Cadillo

Efectos en tiempo real con processing y opencv

En estos días he tenido que recordar algunos conceptos del trabajo con processing (processing.org) debido que estoy  formando un grupo de trabajo con jóvenes de la Universidad Nacional «Santiago Antúnez de Mayolo». Cuyo objetivo es desarrollar aplicaciones de realidad aumentada dirigido a la Educación y el Marketing.

Y para desempolvar mis conocimientos  se me ocurrió demostrar un efecto de explosión de una figura, pero en este caso se captura en tiempo real el flujo de video y se le aplica un efecto sobre los pixeles deformándolos en el espacio 3D. Sin duda processing es el lenguaje más fácil para hacer este efecto y lo comparto con ustedes, espero que puedan mejorarlo y postear alguna aporte más.

import hypermedia.video.*;
PImage img; // The source image
PImage movementImg;
int cellsize = 2; // Dimensions of each cell in the grid
int columns, rows; // Number of columns and rows in our system
OpenCV cam;

void setup() {
size(800,600,P3D);
cam = new OpenCV( this );
cam.capture( 600, 480 );

movementImg = createImage(600, 480,RGB);
columns = movementImg.width/ cellsize; // Calculate # of columns
rows = movementImg.height / cellsize; // Calculate # of rows
}

void draw() {
cam.read();
cam.flip(OpenCV.FLIP_HORIZONTAL);
movementImg = cam.image();

for ( int i = 0; i < columns; i++) {
// Begin loop for rows
for ( int j = 0; j < rows; j++) {
int x = i*cellsize + cellsize/2; // x position
int y = j*cellsize + cellsize/2; // y position
int loc = x + y*movementImg.width; // Pixel array location

color c = movementImg.pixels[loc];
// Calculate a z position as a function of mouseX and pixel brightness
float z = (mouseX / float(width)) * brightness(movementImg.pixels[loc]) – 20.0;
// Translate to the location, set fill and stroke, and draw the rect
pushMatrix();
translate(x + 20, y + 10, z);
fill(c, 204);
noStroke();
rectMode(CENTER);
rect(0, 0, cellsize, cellsize);
popMatrix();

}
}

}

Aquí una demostración

Juan Cadillo

Aplication for TVprogram Making Languaje in Spanish

A inicios del mes de febrero del presente, me tope con una aplicación muy interesante denominada TVML,  esta aplicación ha sido construida por el NHK Science and Technical Research Laboratories de Japón, cuyo objetivo es usando un player facilitar la escritura de guiones con los cuales se puede programar televisión en tiempo real.  La última versión del reproductor es TVML II que está disponible en este sitio. También tiene un conjunto muy bueno de muestras para aprender a trabajar con esta aplicación.

Lamentablemente las versiones para la voz están en japones e inglés, por lo que su uso queda muy limitado en el español, siendo su uso por la licencia no comercial. Además la complejidad si bien es cierto de sus scripts no es muy alta se requiere mucho trabajo para poder entender su uso.

Estas limitaciones son muy importantes para poder usarlas en las escuelas, por lo que me he planteado el reto de poder usar este software con niños en Perú.

Para cumplir mi objetivo he divido el reto en tres partes:

  • Cambiar las voces al español y elaborar un complemento que permita automatizar la función de construcción de los scripts, de tal forma que pueda ser usado por niños fácilmente usando la lógica para presentar un programa de TV.
  • Desarrollar un proyecto de innovación que permita en base al trabajo de los niños en el aula escolar, el uso de la aplicación para mostrar  sus avances, investigaciones y trabajos usando además otras herramientas informáticas  que permitan construir contenido de manera lúcida.
  • Como no podía ser de otra forma, usar los contenidos y combinarlos con la Realidad Aumentada.

El primer punto de este trabajo lo he iniciado, logrando integrar  voces del español dentro de los scripts de TVML, y hoy terminé la primera versión de un traductor de código, que en marzo debo testear con los niños una vez que se inicie el trabajo escolar. La segunda parte la inicio mañana a través de la planificación de los objetivos y actividades. Y el tercer paso lo iré cumpliendo según se logre la segunda etapa.

Aquí los primeros avances:

Voz en español:

Vistas del traductor:

aplicación que automatiza   el lenguaje TVML

aplicación que automatiza el lenguaje TVML

tvmlprueba2 tvmlprueba4 tvmlprueba5 tvmlprueba6

Espero contarles más del avance en este año.

Juan Cadillo León