sábado, 10 de diciembre de 2011

Detector de movimiento en visual basic 2008

Detector de movimiento

Por que un detector de movimiento de esta calidad??
Es necesario un detector de movimiento de este tipo ya que los anteriores no tenian esa sencillez de deteccion de movimiento ademas este software tiene 4 diferentes modos para la deteccion de movimiento y es muy util para el proyecto ya que cuando una persona presente su exposicion el software detectara si mueve sus manos o el cuerpo de un lado para el otro asi se le podra exijir mas y que saque mayor personalidad al momento de exponer y tambien observar con mayor detalle sus deficiencias.


Chicos que han visitado el blog les agradesco su interes aqui les dejares unos links sobre una persona que que realizo una webcam que detecta movimiento y mediante un boton avisa si hay o no hay movimiento


Visiten este blog


Rolando Pari Sucasaire - Sistemas

Descargar

Sensor de Movimiento Webcam

El nuevo software de sonido (SoundCatcher) en visual y agregado en flash.

Por que nos cambiamos a visual basic??


Los motivos de porque nos cambiamos a visual y no nos quedamos con java es por que no encontravamos un software mejor que el que habiamos mostrado anteriormente de sonido ademas de no encontrar un software de deteccion de movimiento en webcam mejor al cambiarnos de plataforma se nos facilito arto el trabajo ya que en opencv habian muchos software de deteccion de movimiento en webcam trabajados en c++ y bueno buscando softwares en visual encontramos este de audio el SoundCatcher que es abstante bueno y es lo que buscabamos y de webcam tambien encontramos uno bastante bueno en estos momentos no hay nada preparado para mostrar pero ya veran el software de webcam que encontramos que esta buenisimo.


SoundCatcher + software creado por Dario en flash

Que es SoundCatcher??

Es un software en visual basic que al momento de reconocer sonido en un dispositivo de entrada, inicia una grabacion de sonido y grafica espectogramas en tiempo real.
A este software le agregamos un panel de en Adobe Flash que es capaz de indicar la cantidad de saturacion en el microfono del computador, dando por resultado mensajes que indican que tan fuerte o bajo está el nivel de sonido. La mayor complicacion de este pequeño proyecto fué encontrar la manera de combinar nuestro flash con el proyecto existente dentro de Visual.


Aqui el sitio donde fue descargado el codigo de SoundCatcher: SoundCatcher(Por Jeff Morton)


Aqui un video de como funcion y ciertos errores que les puede ocurri al trtar de hacerlo funcionar


Descargar

SoundCatcher(Por Jeff Morton)Archivo descargable

domingo, 13 de noviembre de 2011

Graficador de espectros de audio en java

Aqui mostraremos lo siguiente que encontramos el graficador de sonido en java bueno no hay mucho que explicar ya que el codigo lo encontramos el blog de Rolando palermo Rodríguez Cruz y ahi se encuentra con mas detalles la informacion del codigo


sábado, 29 de octubre de 2011

Continuación de la segunda revisión


Aqui continuando con el segundo avance mostraremos informacion de softwares no terminados que detectan movimiento con un webcam y lenguaje java encontramos 2 sitios se los dejaremos marcados con la respectiva descarga del codigo fuente aqui:



  • http://joelbecker.net/





  • Java – JMF – Detección de Movimiento (Motion Detect)





  • sábado, 22 de octubre de 2011

    Avance proyecto (Segunda revisión)


    Esta es el siguiente avance que tenemos referente a nuestro proyecto que es la reproducción un tipo de formato de audio los formatos que logramos reproducir son WAV OGG y aquí se muestra el código que utilizamos para la reproducción de un sonido WAV que es un platillo de batería todo código referente al audio es sacado es de este sitio código reproducción de audio y como al principio mostramos el main que llama la clase para la reproduccion de el audio "wav2.wav".


    Codigo que se utilizo para la reproducción del audio



    public class Main {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
    // TODO code application logic here
    new AePlayWave("wav2.wav").start();
    }
    }

    Esta es la clase que llamad en el main para la reproduccion


    package soundex;

    import java.io.File;
    import java.io.IOException;
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.DataLine;
    import javax.sound.sampled.FloatControl;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.SourceDataLine;
    import javax.sound.sampled.UnsupportedAudioFileException;

    public class AePlayWave extends Thread {

    private String filename;

    private Position curPosition;

    private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb

    enum Position {
    LEFT, RIGHT, NORMAL
    };

    public AePlayWave(String wavfile) {
    filename = wavfile;
    curPosition = Position.NORMAL;
    }

    public AePlayWave(String wavfile, Position p) {
    filename = wavfile;
    curPosition = p;
    }

    public void run() {

    File soundFile = new File(filename);
    if (!soundFile.exists()) {
    System.err.println("Wave file not found: " + filename);
    return;
    }

    AudioInputStream audioInputStream = null;
    try {
    audioInputStream = AudioSystem.getAudioInputStream(soundFile);
    } catch (UnsupportedAudioFileException e1) {
    e1.printStackTrace();
    return;
    } catch (IOException e1) {
    e1.printStackTrace();
    return;
    }

    AudioFormat format = audioInputStream.getFormat();
    SourceDataLine auline = null;
    DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);

    try {
    auline = (SourceDataLine) AudioSystem.getLine(info);
    auline.open(format);
    } catch (LineUnavailableException e) {
    e.printStackTrace();
    return;
    } catch (Exception e) {
    e.printStackTrace();
    return;
    }

    if (auline.isControlSupported(FloatControl.Type.PAN)) {
    FloatControl pan = (FloatControl) auline
    .getControl(FloatControl.Type.PAN);
    if (curPosition == Position.RIGHT)
    pan.setValue(1.0f);
    else if (curPosition == Position.LEFT)
    pan.setValue(-1.0f);
    }

    auline.start();
    int nBytesRead = 0;
    byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];

    try {
    while (nBytesRead != -1) {
    nBytesRead = audioInputStream.read(abData, 0, abData.length);
    if (nBytesRead >= 0)
    auline.write(abData, 0, nBytesRead);
    }
    } catch (IOException e) {
    e.printStackTrace();
    return;
    } finally {
    auline.drain();
    auline.close();
    }

    }
    }


    miércoles, 5 de octubre de 2011

    Avance del proyecto (Primera revision)


    Informacion sobre JMF

    Sobre JMF la informacion fue bastante escasa ya que manuales para el uso del framework no hay ademas de ser antiguo y tener pocas actualizaciones que lo hacen incompatible con algunos codecs en lo que es reproduccion de audio pero si hay foros en la que publican el uso que le dieron al framework orientado a la utilizacion de webcam y publican los codigos la pagina que fue abstante util fue jc-mouse(Captura de video con webcam) en la que utilizamos arios codigos para nuestro proyecto.


    Codigos que se utilizaron para conectar la webcam


    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.media.*;
    import javax.media.cdm.CaptureDeviceManager;
    import java.io.*;
    import java.awt.*;
    import javax.swing.JOptionPane;
    /**
    * @web http://jc-mouse.blogspot.com/
    * @author Mouse
    */
    public class jmfVideo {
    //Controlador universal de windows
    private String dispositivo = "vfw:Microsoft WDM Image Capture (Win32):0";
    private Player player = null;

    public Component Componente(){
    Component componente_video;
    try {
    // Se obtiene el dispositivo
    CaptureDeviceInfo device = CaptureDeviceManager.getDevice(dispositivo);
    //se obtiene la fuente de datos de captura
    MediaLocator localizador = device.getLocator();
    //El localizador es del tipo "vfw://0" video para windows
    //se crea el PLAYER y se ejecuta
    player = Manager.createRealizedPlayer(localizador);
    player.start();
    } catch (IOException ex) {
    Logger.getLogger(jmfVideo.class.getName()).log(Level.SEVERE, null, ex);
    } catch (NoPlayerException ex) {
    Logger.getLogger(jmfVideo.class.getName()).log(Level.SEVERE, null, ex);
    } catch (CannotRealizeException ex) {
    Logger.getLogger(jmfVideo.class.getName()).log(Level.SEVERE, null, ex);
    }
    //Si se pudo crear el PLAYER, se obtiene el componente de video
    if ((componente_video = player.getVisualComponent()) != null) {
    //se da un tamaño al componente
    componente_video.setSize(320, 240);
    return componente_video;
    } else {
    JOptionPane.showMessageDialog(null,"No se pudo crear el video...");
    return null;
    }
    }

    }

    public class video extends javax.swing.JFrame {
    jmfVideo b = new jmfVideo();
    /** Creates new form video */
    public video() {
    initComponents();
    this.setTitle("WebCam - by Mouse");
    //formulario al centro de la pantalla
    this.setLocationRelativeTo(null);
    //se da un tamaño al jFrame
    this.setSize(320, 240);
    //se coloca un layout tipo CAJA
    getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
    //se añade el componente de video
    this.add( b.Componente());
    }

    Video de captura de video con jmf


    jueves, 15 de septiembre de 2011

    Herramientas finales para el desarrollo


    El framewoork a utilizar



    Como habíamos mencionado en las publicaciones anteriores el lenguaje que utilizaremos para el desarrollo del software es java y el framework
    Que encontramos es el "java media framework" este framework utilizar por su sencillez de usar para tareas complejas y su manipular de elementos de audio y video es muy útil para el desarrollo de nuestro trabajo ya que nuestro proyecto se trata de detectar el sonido de voz y movimiento.


    analisis de la plataforma de desarrollo

    Si nuestro software tiene éxito en su desarrollo en java el software seria de multiplataforma.


    Perifericos a utilizar en el proyecto


    Webcam: Logitech Webcam c/mic C270 HD

    Esta webcam fue escogida por ser reconocida entre las de mejor calidad por su buena calidad de captura de videos y fotos también por sus positivas críticas sobre el producto y ser un producto económico y de calidad ya que también tiene una alta definición d e720 pixeles con pantalla panorámica con mayor fluidez y nitidez y con una calidad de fotos de 3 megapíxeles.


    El micrófono Logitech a sido escogido por el filtro de ruido es muy útil ya que en una disertación existen muchas intervenciones de ruidos como de autos, camiones, etc. y hasta los mismos alumnos así que con este filtro se hace mucho más fácil la detección de la nitidez de la voz del estudiante.





    Diagramas

    Diagrama cass de uso





    Diagrama de secuencia





    Diagrama de estaddo (software)



    Diagrama de estado (Camara)



    Diagrama de estado (Microfono)














    Factibilidad

    Motivos de estudio


    Como se origino el estudio

    El estudio nace de la total ausencia de en el mercado, de un software que sea capaz de cubrir la necesidad de una ayuda para las personas que tiene problemas para hablar en publico. Es sabido que gran parte de la población mundial sufre de distintos problemas para expresarse en público. Tartamudeo, olvido del tema, temblores y hasta inclusive dolores estomacales son algunos de los síntomas que se presentan en personas que sienten “nervios” o vergüenza estando frente a un grupo de personas atentas a juzgar y evaluar sus conocimientos. Se concibe la idea en base a nuestros propios problemas para expresarnos en público teniendo como base nuestra propia experiencia, y la oportunidad de solucionarlo, quizás, de manera definitiva.

    Problemas basicos

    Entre los primeros problemas que se pudieron identificar dentro de la concepción del proyecto estuvieron los siguientes.

    • Desconocimiento de la implementación de detectores de movimiento.
    • Plataforma en la cual trabajar.
    • Saber si convenía mas “grabar y evaluar” o “Evaluar mientras se graba"

    Procedimientos

    Para la concepción del sistema se ha pensado en testear el software con los mismos programadores y diseñadores ya que, como se detallaba anteriormente, los 2 integrantes del grupo sufren este tipo de problemas, a futuro, pensamos implementarlo a un grupo de niños para comprobar “que tan amigable” puede llegar a ser con los mas pequeños, puesto que, es sistema también está pensado para ellos.

    Dentro de las ventajas que incluía el enfocar el software a tutores o profesores se enumeraron las siguientes:

    • El desarrollo (en términos metodológicos) es mas fácil puesto que no necesita investigación sobre métodos de enseñanza o el “como llegarle a los mas pequeños”
    Dentro de las desventajas que incluía el enfocar el software a tutores o profesores se enumeraron las siguientes:
    • Se necesita de una herramienta totalmente aprobada por la visión de cada profesor en su forma de evaluar. No pudiendo ser enfocado de manera general
    • El nivel de presión de los alumnos con problemas para hablar en publico aumentaría aun mas al estar evaluado, además de por el profesor por un software informático.

    Factibilidad tecnica

    El mundo de la informática y la computación nos ofrecen una cantidad considerable de opciones para el desarrollo del sistema. Además de los distintos motores de programación, se cuenta con un scripts y técnicas para utilizar tanto el reconocimiento de movimiento como el de sonido. De esta manera se le puede sacar el máximo provecho a nuestros conocimientos sin derroche de tiempo.

    Factibilidad economica

    Se tiene pensado crear el software con herramientas 100% gratuitas, puesto que se tiene en claro el gran potencial de herramientas sin costo y la cantidad de ayuda que se puede conseguir desde la red global al trabajar con estos sistemas. Además, el software no requiere más periféricos que una cámara y un micrófono de gama media. De esta manera, se determina que los costos económicos del proyecto son mínimos y no afecta la creación del mismo.

    domingo, 11 de septiembre de 2011

    Tegnologias a usar

    Para el proyecto se utilizarán dos tecnologías en especial que son la de “Reconocimiento de voz” y la de “Detección de movimiento”. Además Se utilizará un software adicional para diseñar el personaje digital.

    Reconocimiento de voz.

    Un sistema de reconocimiento de voz es una herramienta computacional capaz de procesar la señal de voz emitida por el ser humano y reconocer la información contenida en ésta, convirtiéndola en texto o emitiendo órdenes que actúan sobre un proceso. En su desarrollo intervienen diversas disciplinas, tales como: la fisiología, la acústica, el procesamiento de señales, la inteligencia artificial y la ciencia de la computación.

    Utilidad.

    Una herramienta de reconocimiento de voz nos ayudaría para medir varias aspectos en una exposición común y corriente:
    • Cuando el expositor se queda callado por mucho tiempo.
    • Cuando tartamudea.
    • Cuando está hablando a volúmenes incorrectos.

    Programas que utilizan la tecnología.

    Entre los destacables tenemos:






    Detección de movimiento.

    Un detector de movimiento es un dispositivo electrónico equipado de sensores que responden un movimiento físico. El sistema puede estar compuesto, simplemente, por una cámara de vigilancia conectada a un ordenador, que se encarga de generar una señal de alarma o poner el sistema en estado de alerta cuando algo se mueve delante de la cámara.

    Programas que utilizan la tecnología.

    Entre los destacables tenemos:

    Diseño del personaje digital.

    Utilizaremos una herramienta de modelado de gráficos en 2D o 3D para crear y animar nuestro personaje digital. Blender + Makehumans parece una apuesta interesante, debido a que nuestra habilidad como dibujantes deja bastante que desear, Makehumans, bajo ciertos parámetros crea un humano digital rápidamente. Luego, con Blender se le puede dar movimiento.

    Lenguaje de programación.

    Nos gustaría diseñar el software bajo Java, puesto que es multiplataforma y de código libre, además que es muy poderoso. De todas formas, esta es una idea tentativa, puede que mas adelante encontremos algún lenguaje que se acomode mas aun a nuestro requerimientos.

    miércoles, 7 de septiembre de 2011

    inicios del proyecto primeras etapas

    Motivación:

    La idea de este proyecto nace de la total ausencia en el mercado informático de un software capaz de satisfacer la ayuda necesaria para poder hacer una buena disertación cuando se tienen problemas para hablar en público. Cabe destacar que nosotros mismos tenemos este tipo de problemas, por lo que el software comenzaría por ayudarnos a nosotros mismos.

    Descripción del problema:

    La habilidad para hablar en público es una de las más complejas para el ser humano. Nos exponemos delante de un grupo de personas y se ponen a prueba nuestros conocimientos y habilidades. La mayor parte de las personas sienten ansiedad a la hora de enfrentarse a un auditorio, es uno de los miedos más frecuentes, que afecta de manera clínica a un porcentaje muy amplio de la población (20 %). Y no por falta de formación o conocimientos, incluso, aunque dispongamos de las habilidades necesarias, el miedo o tensión pueden bloquearnos y disminuir la eficacia de dichas presentaciones.

    Potenciales Usuarios:

    Los potenciales usuarios del sistema serían todas aquellas personas (Colegiales, universitarios e inclusive trabajadores) que necesitan entrenarse para mejorar su capacidad de exponer antes de la misma, o bien, si necesitan un apoyo a la hora de disertar.

    Viabilidad


    Necesidades del negocio en el sistema propuesto:

    En las áreas, laborales, universitarias y colegiales no se explota mucho el desarrollo de habilidades para hablar en público y casi no hay talleres para mejorar la confianza y autoestima de las personas para que el momento de hablar en público sea correcto y gratificante en vez de una tortura. El proyecto se sustenta en esta ausencia dentro del mercado para presentarse como un software innovador dentro del área.

     

    Estudio de los beneficios que producirá el sistema:

    Los beneficios que entregaría este software son los siguientes:
    • Aumentar la confianza del expositor a la hora de Hablar en público.
    • Mejorar la expresión corporal y verbal del expositor.
    • Aumentar el autoestima del usuario.

    Funcionalidad del proyecto:

    Cuando el usuario comience a exponer el software, mediante las cámaras y el micrófono, monitoreará las acciones físicas y verbales, avisando de manera auditiva cuando se está incurriendo en un error para tratar de solucionarlo en el momento. Por ejemplo, estar hablando muy bajo, tartamudeando, teniendo poca expresión corporal etc. Una vez detenido el programa este entregará una evaluación respecto a como lo hizo el expositor y sugerencias para mejorar el error más repetitivo.

    jueves, 1 de septiembre de 2011

    Ayudante de exposición, los inicios.

    El día que llegamos a clases y supimos que debíamos crear un proyecto informatico no transaccional. Nuestra primera impresion fué O.o . 

    No podíamos encontrar un proyecto original y atractivo para crear, entonces, Adrían tuvo la idea y dijo: "Podríamos crear un sistema que fuera capaz de dar ayuda a personas que tengan problemas para disertar, yo nunca he podido encontrar uno y la verdad es que con mis propios problemas para hablar en público esto sería genial". Ahí la chispa simplemente encendío, ibamos a hacer un software que ofreciera todo la ayuda necesaría a una persona para mejorar su capacidad de hablar en público y/o pulir la esperticie ya obtenida.

    Al día de hoy ya casí toda la parte de "informarse" está lista y solo necesitamos comenzar a programar.


    Datos del proyecto:

                El sistema propuesto es un software que sea capaz de detectar voz y movimientos, para hacer notar al cuando expositor está incurriendo en un error a la hora de exponer, esto datos serán procesados por el software y se le darán indicaciones de como hacerlo mejor en el futuro y una puntuacion que puede tratar de superar. Se quiere usar una interfaz amigable y un personaje digital como el “ayudante” o “compañero” de exposición, todo esto para lograr que el software sea accesible tanto a niños como adultos.



             Este software contará con una interfaz atractiva simple en diseño, para facilitar su uso, pero a la vez con todo lo necesario para lograr grabar y analizar la presentacion, recibir puntuaciones y consejos, y configurar las camaras y el microfono que se usaran para capturar el sonido y el movimiento.



    En la proxima entrada les contaremos sobre los primeros pasos que hicimos para armar este proyecto.

    Juan Carlos