Home
Accesso / Registrazione
 di 

PhotoGallery Con il Kinect della Microsoft XBox360

KinectGallery

Il KinectGallery è un progetto che permette di visualizzare una photogallery attraverso il semplice movimento delle mani.Immaginate di poter visualizzare le offerte del giorno di un negozio semplicemente posizionandosi di fronte allo pannello illustrativo.

In questo modo i proprietari delle rispettive attività non dovranno piu preoccuparsi dello stato di degrado delle loro risorse hardware; in quanto non saranno direttamente maneggiate dall'utente finale.
Inoltre visualizzare in questo modo le informazioni risulta essere interessante e allo stesso tempo divertente!

Materiale richiesto per il progetto:
Microsoft Kinect Sensor(acquistabile semplicemente da un negozio di elettronica o da un ipermercato);
Microsoft Visual C# 2010(consiglio di utilizzare la versione Express Edition scaricabile gratuitamente da questo link: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express)
Microsoft Kinect SDK scaricabile gratuitamente da questo link: http://www.kinectforwindows.org/download/;
Coding4Fun ToolKit scaricabile gratuitamente da questo link: http://coding4fun.codeplex.com/
Picasa scaricabile direttamente da questo link: http://picasa.google.com/

Implementiamo il progetto:

Il progetto è composto fondamentalmente in 3 sezioni:

Implementazione del Software per il riconoscimento dello Skeletal(termine utilizzato dal framework Kinect per il riconoscomento del corpo);
Implementazione del Driver per la gestione del cursore del mouse;
Implementazione della photogallery tramite Picasa.

Iniziamo con l'implementazione del software per il riconoscimento dello Skeletal:

Lo Skeletal( come dice la parola stessa) è una mappatura di tutti i punti fondamentali di un corpo che si presenta davanti al kinect.
Questo Skeletal è composto da tanti Joint che indicano singolarmente i punti di giunzione dello Skeletal appena mappato.

Per avere un'idea ancora più chiara della spiegazione prima accennata analizziamo l'immagine qui sotto:

Tutti i cerchi arancioni illustrati in questa immagine sono i joint.
In questo progetto non utilizzeremo tutti i joints che ci fornisce l'sdk ma andremo ad utilizzare solo quelli elencati qui sotto:

Head;
Hand_Right;
Hand_Left;

Elencati i Joints di cui abbiamo bisogno per l'implementazione del software procediamo alla creazione del progetto.

Creazione di un progetto Windows Form:

Per prima cosa, come da titolo, creiamo un progetto “Windows Form” e assegnamoli un titolo a scelta.
Creato il progetto clicchiamo con il tasto destro su di esso e andiamoli ad assegnare il riferimento alle librerie dell'SDK di Microsoft Kinect:

Assegnate le librerie risulterà fondamentale importare le librerie con una direttiva using:

“using Microsoft.Research.Kinect.Nui;
using Coding4Fun.Kinect.Wpf;”


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Research.Kinect.Nui;
using Coding4Fun.Kinect.WinForm;

namespace SkeletalArcticle
{
    public partial class Form1 : Form
    {
        Runtime nui;
        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            nui = new Runtime();
            nui.Initialize(RuntimeOptions.UseSkeletalTracking);
            nui.SkeletonFrameReady += new EventHandler(nui_SkeletonFrameReady);
        }

        void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
        {
            SkeletonFrame allSkeletons = e.SkeletonFrame;

            //get the first tracked skeleton
            SkeletonData skeleton = (from s in allSkeletons.Skeletons
                                     where s.TrackingState == SkeletonTrackingState.Tracked
                                     select s).FirstOrDefault();
            try
            {

                Joint HandRight = skeleton.Joints[JointID.HandRight].ScaleTo(640, 480, .5f, .5f);
                SetCursorPosition(skeleton.Joints[JointID.HandRight]);
               
            }
            catch (System.NullReferenceException ex)
            {

            }

        }
        private void SetCursorPosition(Joint joint)
        {
            var scaledJoint = joint.ScaleTo(640, 480, .5f, .5f);
            Point point = new Point();
            point.X = (int)scaledJoint.Position.X;
            point.Y = (int)scaledJoint.Position.Y;
            Cursor.Position = point;
        }

    }
}

Codice Sorgente Gestore Skeletal Viewer e Driver Mouse;

Creazione del Web Album Con Picasa:
Dopo avere creato il software per gestire il movimento della mano e associarlo al cursore del mouse, passiamo alla creazione di un web gallery 3d con picasa.
In particolare ci occuperemo della creazione di una photo gallery 3d.
Per prima cosa apriamo Picasa e selezioniamo un set di foto che ci interessa!

Successivamente andiamo su “Cartella->Esporta Come Pagina HTML” e selezioniamo l'effetto grafico Caroussel 3D.

Alla fine dell'elaborazione verrà aperto il browser web predefinito con la galleria 3d avviata e funzionante.
Avviamo il software da noi prima implementato in C# e muoviamo la mano in direzione del Kinect!!!

Et voilà!

Osservazioni Finali e Ringraziamenti:
Tengo a precisare che tutti gli strumenti utilizzati in questo articolo sono gratuiti e di libero utilizzo in ambito hobbystico.
Ringrazio inoltre “Saverio Caminiti” per l'implementazione della slide 3d delle foto.

Antonio Blescia
Ricercatore Informatico
Bari.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di telegiangi61

Ottimo articolo

Ottimo e interessante articolo,
non sapevo che il sensore Kinect si potesse utilizzare al di fuori della Xbox.

Esistono quindi dei driver per sistemi Windows(come immagino), ma volendo farne uso simile, come presentazione interattiva di immagini su sistemi Linux based, o perchè no, su dispositivi Android (esempio tablet con uscita hdmi per TV), ci sono già esempi di codice, o applicazioni gia' distribuite?

Ricordo che quando negli anni '80 si iniziava a parlare di Realtà Virtuale, stavo cercando di fare qualcosa di simile, ma l'unico mezzo era un guanto con alcuni sensori tattili, il Power Glove della Nintendo, che aveva un prezzo proibitivo e prestazioni non esaltanti.

ritratto di Antonio Blescia

Se vuoi utilizzare il kinect

Se vuoi utilizzare il kinect su altri OS ti consiglio di dare un'occhiata a questa libreria.
URL: http://openkinect.org/wiki/Main_Page

ritratto di Fabrizio87

Ormai un po' di tempo che

Ormai un po' di tempo che sento parlare all'università Kinect,
Ci fanno tante tesi sopra, soprattutto quelli che fanno ingegneria biomeccanica.

ma sicuramente la cosa più interessante a differenza del control della Wii e la sua integrazione nel Visual studio, da parte della Microsoft rendendolo più stabile che progetti similari ottenuti per ingegneri inversa

ritratto di divivoma

in qualche articolo abbiamo

in qualche articolo abbiamo visot il kinect anche interfacciarsi con..indovinate un pò... Arduino ;) vedi ad es :
http://it.emcelettronica.com/robot-comandato-da-kinect-e-arduino

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 12 utenti e 42 visitatori collegati.

Ultimi Commenti