Windows Mobile Support

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg
Showing posts with label Kinect SDK. Show all posts
Showing posts with label Kinect SDK. Show all posts

Saturday, 18 February 2012

Post Event - CodeCamp la Cluj-Napoca, 18 feb. 2012

Posted on 23:58 by Unknown
Ieri in Cluj-Napoca a avut loc un eveniment Codecamp, unde au participat peste 50 de persoane. S-a discutat despre:
  • Access Control Service
  • Windows Phone 7
  • Kinect
  • Line of Bussines Application on Silverlight

Cat de curand o sa punem toate prezentariile pe codecamp.ro. Eu am tinut o prezentare despre Kinect, unde am vorbit despre partea hardware a acestuia cat si despre SDK oficial lansat de Microsoft. Mai jos puteti sa gasiti prezentarea mea.Kinect SDK preview

View more PowerPoint from Radu Vunvulea
Cateva poze de la acest eveniment puteti sa gasiti pe contul meu de Facebook:
http://www.facebook.com/radu.vunvulea
Inregistrarea vocala o puteti gasi aici: http://www.livescribe.com/cgi-bin/WebObjects/LDApp.woa/wa/MLSOverviewPage?sid=V2bpHq7xsdtk ( multumim Razvan Burz)

Va asteptam pe toti si la alte evenimente IT din Cluj-Napoca.
Read More
Posted in Cluj, codecamp, Kinect SDK, prezentare | No comments

Monday, 13 February 2012

Kinect SDK preview

Posted on 12:23 by Unknown
Kinect este un dispozitiv periferic care permite utilizatorilor sa controleze un calculator sau o consola doar prin intermediul gesturiilor. Acesta a fost lansat impreuna cu XBOX 360 in 2010. In 1 februarie 2012 a fost lansata o versiunea finala a SDK-ului pentru PC. Acesta ne permite sa scriem aplicatie pentru PC care sa foloseasca senzorii de pe Kinect. Ce trebuie sublineat aici este ca acest SDK se poate folosi doar pentru aplicatii non-comerciale in cazul in care aveti un Kinect pentru XBOX si nu pentru PC.
Din punct de vedere hardware, acest device contine:
  • camera video de 640x480 folosita pentru capturarea imaginii
  • camera cu infrarosu folosita pentru a calcula la ce distanta se afla obiectele
  • un microfon pentru capturarea sunetului
Camera cu infrarosu este cea care diferentiaza acest device de orice alt device de pe piata. Aceasa ne permite sa putem stii cu precizie la ce distanta se afla fiecare obiect. SDK-ul care este disponibil in acest moment nu ne permite doar sa capturam imagii si sa calculam distante fata de camera. In mod automat acesta identifica fiecare utilizator care este in fata deviceului separat si ne ofera date despre pozitia acestuia.
Dar haideti sa o luam cu inceputul. Pentru a putea sa folosim Kinect pe PC avem nevoie de Visual Studio 2010 si de SDK-ul de Kinect care poate sa fie downloadat de aici.
Odata instalat, putem sa adaugam referinta Microsoft.Kinect la proiectul nostru. In acest moment merita sa mentionam doua lucruri importante:
  • pentru a conecta Kinectul la PC avem nevoie de un adaptor( o mufa normala de USB nu furnizeaza destula energie)
  • daca vrem sa avem mai multe deviceuri conectate, acestea trebuie sa fie conectate pe controale USB diferite
Pentru a putea accesa datele de pe Kinect, este nevoie sa obtinem o instanta a acestuia. Pe un sistem pot sa existe mai multe deviceuri conectare. Odata ce obtinem o instanta a deviceului este nevoie sa initializam senzori pe care urmeaza sa ii folosim. Nu este obligatoriu sa inializam doar un singur senzor de pe device. Putem sa iniailizam oricati senzori avem nevoie.
KinectSensor kinect = KinectSensor.KinectSensors[0];
kinect.Start();
kinect.SkeletonStream.Enable();
kinect.ColorStream.Enable();
Este foarte importat la in momentul in care aplicatia se inchide si am terminat sa folosim Kinectul sa apelam Stop(). In caz contrat sunt sanse ca la urmatoarea pornire a aplicatiei sa nu mai putem conecta la Kinect.
Dupa initializare, trebuie sa pornim explicit fiecare senzor pe care vrem sa il folosim. In exemplul urmator o sa pornim streamul video si o sa ne inregistram la evenimentul care este aruncat cand un nou frame este disponibil.
kinect.ColorStream.Enable(ColorImageFormat.RgbResolution1280x960Fps12);
kinect.ColorFrameReady += new EventHandler<ColorImageFrameReadyEventArgs>(kinect_ColorFrameReady);
...
void kinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
{
ColorImageFrame frame = e.OpenColorImageFrame();
}
Pentru fiecare stream la care ne inregistram o sa fim notificati cand un nou frame este disponibil. Ce trebuie mentionat aici este cand lucram cu frameurile pentru depth. Rezultatul o sa vina tot ca si o insiruire de biti, exact la fel ca si pentru streamul video, doar ca
primii 13 biti ne dau distanta in milimetrii a punctului respectiv. Mai jos putem vedea cum sa extragem dintr-un frame distanta in milimetrii la care se afla obiectul dintr-o locatia data:
void kinect_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)
{
DepthImageFrame frame = e.OpenDepthImageFrame();

short[] pixelInfos=new short[frame.PixelDataLength];
frame.CopyPixelDataTo(pixelInf os);

int distanceInMillimeters = pixelInfos[pixelPosition] >> DepthImageFrame.PlayerIndexBitmaskWidth;
}
Un alt lucru pe care Kinectul il face automat este sa identifice unic fiecare persoana care este in fata senzorului. In acest mod putem sa izolam si sa identificam fiecare jucator. Acesta informatie se poate extrage si din frameul de mai sus in felul urmator:
int playeNumber = depthFrame[pixelPosition] & DepthImageFrame.PlayerIndexBitmask;
Cea ce diferentea Kinectul de toate deviceurile care sunt pe piata in acest moment nu este ca identifica fiecare jucator separat sau calitatea imaginii video ci datele care ne sunt returnate despre fiecare jucator. Kinectul poate sa identifice mai multe puncte a fi ecarui jucator( “articulatii”). Pentru fiecare din aceste puncte ne sunt returnate pozitiile in spatiu (x,y,z). Fara sa scrim nici un algoritm, putem automat sa identificam pozitia unei persoane, daca aceasta are mana intinsa, daca sta aplecata sau daca a ridicat un picior. Mai jos gasiti punctele de pe un jucator la care se face tracking.
Asa cum primeam de la senzorul video cate un nou frame, exact la fel primim cate un frame de tip SkeletonFrame care contine toate punctele. In acest moment trebuie sublineat ca fiecare frame o sa contina toate punctele, chiar daca la o parte din acestea nu se poate face tracking. Daca pentru un punct s-a putut face tracking atunci propietatea TrackingState o sa fie egala cu SkeletonTrackingState.Tracked.
Fiecare punct a unui jucator se identifica unic printr-un enum de tip JointType. De exemplu capul are valorea JointType.Head, iar coloana vertebrala JointType.Spline.
Mai jos gasiti un exemplu de cod care ne permite sa iteram prin punctele la care se face tracking si sa afisam pozitia acestora:
void kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
SkeletonFrame frame = e.OpenSkeletonFrame();
Skeleton[] skeletons=new Skeleton[frame.SkeletonArrayLength];

frame.CopySkeletonDataTo(skeletons);
foreach (Skeleton skeleton in skeletons)
{
foreach (Joint joint in skeleton.Joints)
{
if (joint.TrackingState != JointTrackingState.Tracked)
{
continue;
}

Console.Write(joint.JointType);
Console.Write(joint.Position.X);
Console.Write(joint.Position.Y);
Console.WriteLine(joint.Position.Z);
}
}
Impreuna cu acest SDK, Kinectul devine un device foarte usor de folosit. De la o capturare de imagine, pana la calcularea distantei la care se afla un obiect sau pozitia mainii fata de corp a unei personae, totul se poate foarte usor, apeland API cu care vine insotit acest device.
Daca pentru XBOX 360 exista o multime de jocuri care folosesc acest device, pentru PC nu exita aproape nici o aplicatie. Cauza principal este suportul pentru PC care doar acupa a aparut dar si modul de licentiere a acestui device(SDK-ul este disponibil doar pentru uz non-comercial - daca deviceul este pentru XBOX 360). Potentialul acestui device este extreme de mare, din aceasta cauza merita studiat. El este doar la inceput si mai mult ca sigur o mai auzim de el.
Cu aceasta ocazie va invit pe data de 18 februarie la o prezentare detaliata a acetui device. Mai multe informatii puteti sa gasiti aici:
http://codecamp-cluj-2012.eventbrite.co.uk/
http://vunvulearadu.blogspot.com/2012/02/intalnire-codecamp-la-cluj-napoca-18.html
Read More
Posted in Kinect SDK | No comments
Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

  • E-Learning Vendors Attempt to Morph Mobile
    The sign should read: " Don't touch! Wet Paint !" I had a good chuckle today after receiving my latest emailed copy of the eLe...
  • Content Types - Level 6: Rich Media
    Level 6: Rich Media NOTE: This is part 7 of 7 and the conclusion of this continuing series; please see earlier posts for more background inf...
  • CDN is not the only solution to improve the page speed - Reverse Caching Proxy
    I heard more and more often think like this: “If your website is to slow, you should use a CDN.” Great, CDN is THE solution for any kind of ...
  • Publishing our CellCast Widget for iPad
    The rush has been on this week as our development team worked to design a new version of our CellCast Widget specifically for Apple's up...
  • NetCamp 2012 - Windows 8 development experience
    During this week I participate to NetCamp 2012.  This was the 6th NetCamp event and is organizing by Evensys. NetCamp is a dedicated event f...
  • SQL - UNION and UNION ALL
    I think that all of us used until now UNION in a SQLstatement. Using this operator we can combine the result of 2 queries. For example we wa...
  • Password/Token/PIN definition
    Password, Token, PIN, Passcode… every day we use this items when we need to authenticate in different systems. I observed that there are tim...
  • Shared Access Signature and URL encoding on Windows Azure
    Playing a little with Shared Access Signature was quite nice. In this moment this new functionality has a great potential. Playing a little ...
  • Content Types - Level 4: Reference
    Level 4: Reference Materials & Static Content NOTE: This is part 5 of 7 in a continuing series; please see earlier posts for more backgr...
  • Content Types - Level 5: Courseware
    Level 5: Content and Courseware NOTE: This is part 6 of 7 in a continuing series; please see earlier posts for more background information. ...

Categories

  • .NET
  • .NET nice to have
  • #if DEBUG
  • 15 iunie 2011
  • 15 octombrie 2011
  • 2011
  • abstracta
  • action
  • adaugare
  • ajax
  • Amsterdam
  • Android
  • aplicatii
  • App Fabric
  • Apple iSlate
  • array
  • as
  • ASP.NET
  • AsReadOnly
  • Assembly comun
  • async
  • Asynchronous programming
  • asyncron
  • Autofac
  • AutoMapper
  • az
  • Azure
  • Azure AppFabric Cache
  • Azure backup solution
  • Azure Storage Explorer
  • azure. cloud
  • backup
  • BCP utility
  • bing maps v7
  • BitArray
  • BlackBerry
  • blob
  • BlobContainerPublicAccessType
  • breakpoint
  • bucuresti
  • C#
  • cache
  • CallerMemberName
  • CellCast
  • Certificate
  • CES
  • change
  • ChannelFactory
  • clasa
  • classinitialize
  • clean code
  • click event
  • close
  • Cloud
  • Cluj
  • cluj-napoca
  • Code contracts
  • code retrat
  • codecamp
  • CollectionAssert
  • Compact Edition
  • compara
  • Comparer T .Default
  • CompareTo
  • comparison
  • comunitate
  • concurs
  • Conditional attribute
  • configurare
  • connection string
  • container
  • content type
  • control
  • Convert
  • convertAll
  • convertor
  • cross platform
  • CRUD
  • css
  • custom properties
  • custom request
  • DACPAC
  • Daniel Andres
  • data sync service
  • database
  • date time
  • datetime
  • debug
  • default
  • delegate
  • dependency injection
  • deploy
  • DeploymentItem
  • design patterns
  • Dev de Amsterdam
  • development stoage
  • dictionary
  • diferente
  • digging
  • director
  • Directory.Exist
  • disable
  • dispatcher
  • dispose
  • dropdown
  • dynamic
  • EF
  • email
  • encoding
  • entity framework
  • enum
  • enumerable
  • Environment.NewLine
  • error
  • error 404
  • error handling
  • eveniment
  • event
  • ews
  • excel
  • exception
  • exchange
  • exita
  • explicit
  • export
  • extension
  • field
  • File.Exist
  • finalize
  • fire and forget
  • Fluent interface pattern
  • format
  • func
  • GC.SuppressFinalize
  • generic
  • getdirectoryname
  • globalization
  • gmail
  • hackathon
  • Hadoop
  • handle
  • HTML
  • html 5
  • Html.ActionLink
  • http://www.blogger.com/img/blank.gif
  • HttpModule
  • IComparable
  • IE
  • ienumerable
  • IIS
  • image
  • implicit
  • import
  • int
  • internationalization
  • Internet Explorer
  • interop
  • Ioc
  • IP Filter
  • iPhone
  • iQuest
  • IStructuralEquatable
  • ITCamp
  • itspark
  • java script
  • javascript
  • July 2012
  • KeyedByTypeCollection
  • KeyNotFoundException
  • Kinect SDK
  • lambda expression
  • LightSwitch Microsoft Silverlight
  • linq
  • list
  • lista
  • lista servicii
  • liste
  • Live Connect
  • Live ID
  • load
  • localization
  • lock
  • m-learning
  • MAC
  • Mango
  • map
  • mapare
  • mapare propietati
  • messagequeue
  • meta properties
  • method
  • MethodImpl
  • Metro App
  • Microsoft
  • Microsoft Sync Framework
  • mlearning
  • mlearning devices
  • Mobile Apps
  • mobile in the cloud
  • mobile learning
  • mobile services
  • Mobile Web
  • mongoDb
  • monitorizare
  • msmq
  • multitasking
  • MVC
  • MVC 3
  • MVVM
  • namespace
  • nextpartitionkey
  • nextrowkey
  • Ninject
  • nivel acces
  • no result
  • normalize
  • nosql
  • null expcetion
  • null object pattern
  • NullReferenceException
  • OAuth API
  • office
  • offline
  • Open ID
  • openhackeu2011
  • operations
  • operator
  • optimization
  • option
  • outputcache
  • OutputCacheProvider
  • override
  • paginare
  • pagination
  • path
  • persistare
  • Portable Library tool
  • Post event – CodeCamp Cluj-Napoca
  • predicate
  • predictions
  • prezentare
  • process
  • proiect
  • property
  • propietati
  • query
  • ReadOnlyCollection
  • ReadOnlyDictionary
  • referinta
  • reflection
  • remote
  • reply command
  • request
  • request response
  • resouce
  • REST
  • REST Client
  • RESTSharp
  • ronua
  • rss
  • rulare
  • salvare in fisier
  • sc
  • schimbare timp
  • select
  • select nodes
  • send
  • serializare
  • serialization
  • Server.Transfer. Resposen.Redirect
  • service bus
  • ServiceBase
  • servicecontroller
  • sesiune
  • session
  • Session_End
  • Session_Start
  • setup
  • Sibiu
  • signalR
  • Silverlight
  • sincronizare
  • Single Responsibility Principle
  • SkyDrive
  • skype
  • smartphones
  • smtp
  • Snapguide
  • sniffer
  • socket
  • solid
  • spec#
  • sql
  • Sql Azure
  • SQL CE
  • sql server 2008 RC
  • SRP
  • startuptype
  • stateful
  • stateless
  • static
  • stergere
  • store
  • store procedure
  • stream
  • string
  • string.join
  • struct
  • StructuralEqualityComparer
  • submit
  • switch
  • Symbian
  • Synchronized
  • system
  • tabele
  • table
  • techEd 2012
  • tempdata
  • test
  • testcleanup
  • testinitialize
  • testmethod
  • thread
  • timer
  • ToLower
  • tool
  • tostring
  • Total Cost Calculator
  • trace ASP.NET
  • transcoding
  • tuplu
  • tutorial
  • TWmLearning
  • type
  • unit test
  • unittest
  • UrlParameter.Optional
  • Validate
  • validation
  • verificare
  • video
  • view
  • ViewBag
  • virtual
  • visual studio
  • VM role
  • Vunvulea Radu
  • wallpaper
  • WCF
  • WebBrower
  • WebRequest
  • where clause
  • Windows
  • windows 8
  • Windows Azure
  • Windows Azure Service Management CmdLets
  • windows live messenger
  • Windows Mobile
  • Windows Phone
  • windows service
  • windows store application
  • Windows Task
  • WinRT
  • word
  • workaround
  • XBox
  • xml
  • xmlns
  • XNA
  • xpath
  • YMesseger
  • Yonder
  • Zip

Blog Archive

  • ▼  2013 (139)
    • ▼  November (17)
      • Service Bus - Optimize consumers using prefetch an...
      • Extract relative Uri using MakeRelativeUri method
      • Sync Group - Let's talk about Performance
      • [PostEvent] Slides from MSSummit 2013, Bucharest
      • How to get the instance index of a web role or wor...
      • Sync Group - A good solution to synchronize SQL Da...
      • Throttling and Availability over Windows Azure Ser...
      • How to monitor clients that access your blob storage?
      • Digging through SignalR - Dependency Resolver
      • [Event] Global Day of Coderetreat in Cluj-Napoca! ...
      • Windows Azure Service Bus - What ports are used
      • Debugging in production
      • Simple load balancer for SQL Server Database
      • [PostEvent] MSSummit 2013, Bucharest
      • How to read response time when you run a performan...
      • VM and load balancer, direct server return, availa...
      • Bugs that cover each other
    • ►  October (12)
    • ►  September (10)
    • ►  August (7)
    • ►  July (8)
    • ►  June (15)
    • ►  May (12)
    • ►  April (17)
    • ►  March (16)
    • ►  February (9)
    • ►  January (16)
  • ►  2012 (251)
    • ►  December (9)
    • ►  November (19)
    • ►  October (26)
    • ►  September (13)
    • ►  August (35)
    • ►  July (28)
    • ►  June (27)
    • ►  May (24)
    • ►  April (18)
    • ►  March (17)
    • ►  February (20)
    • ►  January (15)
  • ►  2011 (127)
    • ►  December (11)
    • ►  November (20)
    • ►  October (8)
    • ►  September (8)
    • ►  August (8)
    • ►  July (10)
    • ►  June (5)
    • ►  May (8)
    • ►  April (9)
    • ►  March (14)
    • ►  February (20)
    • ►  January (6)
  • ►  2010 (26)
    • ►  December (1)
    • ►  November (1)
    • ►  October (1)
    • ►  June (2)
    • ►  May (1)
    • ►  April (4)
    • ►  March (1)
    • ►  February (1)
    • ►  January (14)
Powered by Blogger.

About Me

Unknown
View my complete profile