SlideShare a Scribd company logo
1 of 80
Perceptual Computing Workshop
Xavier Hallade, Technical Marketing
Engineer
@ph0b
Intel Confidential
Intel®
Perceptual Computing SDK 2013
Next Generation Interactivity for Intel®
Core™ Processor-Based Applications
Intel Confidential
Creative* Interactive Gesture Camera
For use with the Intel® Perceptual Computing SDK
 Small, light-weight, low-power
 Tuned for close-range interactivity
 Designed with ease of setup and
portability
 Includes:
 HD web camera
 Depth sensor
 Dual-array microphone
Sign up to purchase a camera at intel.com/software/perceptual
*Other brands and trademarks may be claimed as the property of their respective owners
Intel Confidential
Key Upcoming Items
 Creative* Senz3D – Q3 2013
 Integration in Intel devices – H2 2014
*Other brands and trademarks may be claimed as the property of their respective owners
Intel Confidential
What is Perceptual Computing?
Interactivity Beyond Touch, Mouse and Keyboard …
Facial
Tracking
Speech
Recognition
Close-range
Finger
Tracking
Augmented
Reality
Close-range
Gesture
Tracking
Facilitates Application Developers Implementation of:
 Games
 Entertainment
 Productivity
 Accessibility
 Immersive Teleconferencing
 Education
 Medical / Health
 Enterprises
 Retail
 Industrial
Intel Confidential
SDK Usage H/W Requirements
SDK Usage Mode Speech Certified
Dual-Array
Microphones
RGB Webcam Creative*
Camera
Close-range
Depth tracking
X
Speech
Recognition
X X
Face Recognition X X
Augmented
Reality
X X
 Close-range depth tracking requires Creative camera
 Speech requires dual-array microphones OR Creative* camera
 2H’13 4th Gen Ultrabook devices are required to have speech
certified microphones
 Dell XPS 13* has speech-certified microphones
 Facial tracking requires RGB Webcam OR Creative* Camera
 Augmented Reality requires RGB Webcam OR Creative* Camera
*Other brands and trademarks may be claimed as the property of their respective owners
Intel Confidential
Programming Language and Framework
Support
• C++, C#, Java
• Supported Frameworks
– processing
– openFrameworks
– Unity Pro
– Havok
Intel Confidential
Programming Language and Framework
Support
• Unsupported but Verified
– Cinder
– OGRE
– XNA / Monogame
– Bullet Physics
Intel Confidential
PXCSession, PXCImage, PXCAudio, PXCCapture, PXCGesture,
PXCFaceAnalysis, PXCVoice
UtilCapture, UtilPipeline
C#
PXCMSession
PXCMImage
PXCMAudio
PXCMCapture
PXCMGesture
PXCMFaceAn
alysis
PXCMVoice
UtilMCapture
UtilMPipeline
pxcupipeline
Unity*
Pro
Processing
openFrame
works*
Applications
Core Functionalities
Module Interaction
Additional Language and
Framework Support
SDK API Hierarchy
*Other brands and trademarks may be claimed as the property of their respective owners
Intel Confidential
SDK files
• Samples are located in:
– $(PCSDK_DIR)bin (executables)
– $(PCSDK_DIR)samples (source code)
– $(PCSDK_DIR)framework (framework and game engines)
– $(PCSDK_DIR)demo
Intel Confidential
Resources
• Perceptual Computing Forums
– http://software.intel.com/en-us/forums/intel-
perceptual-computing-sdk
• Perceptual Computing IDZ Portal
– http://intel.com/software/perceptual
• Github
– http://github.com/IntelPerceptual
Intel Confidential
User Experience considerations
• Reality inspired, not cloning
– Wrapping fingers around objects
• Literal, not abstract
– Universal visual cues – switches and nobs
• Consistency!!!
• Extensible – prepare for future improvements
• Manage persistence
– Sometimes the hand will go out of the view
Intel Confidential
Process Overview – prop 1
• Subclass the SDK Pipeline Object
• Enable features in the constructor
• Reimplement OnAlert|Gesture|NewFrame…() methods
• Instantiate the object and call LoopFrames() on it.
Intel Confidential
Hello World – C++
class GesturePipeline: public UtilPipeline {
public:
GesturePipeline(void):UtilPipeline(), m_render(L"Gesture Viewer") {
EnableGesture();
}
virtual void PXCAPI OnGesture(PXCGesture::Gesture *data) {
if (data->active) m_gdata = (*data);
switch (data->label) {
case PXCGesture::Gesture::LABEL_NAV_SWIPE_LEFT: break; //do something
case PXCGesture::Gesture::LABEL_NAV_SWIPE_RIGHT: break; //do something
default: break;
}
}
virtual bool OnNewFrame(void) {
return m_render.RenderFrame(QueryImage(PXCImage::IMAGE_TYPE_DEPTH),
QueryGesture(), &m_gdata);
}
protected:
GestureRender m_render;
PXCGesture::Gesture m_gdata;
};
Intel Confidential
Process Overview – prop 2
• Declare The SDK Pipeline Object
• Select Features and Initialize
• Acquire A Frame
• Query The Data
• Cleanup
You can also subclass the pipeline object and reimplement OnXXX methods
Intel Confidential
Declare The SDK Object – C++/C#
• C++
UtilPipeline pipeline;
• C#
UtilMPipeline pipeline;
pipeline = new UtilMPipeline();
Intel Confidential
Select Features and Initialize – C++/C#
• Select Features Using .Enable*() Methods
• Use Init() To Set Features and Enable SDK Access
pipeline.EnableGesture();
pipeline.EnableImage(PXCImage::COLOR_FORMAT_RGB24);
//C# PXCImage.ColorFormat.COLOR_FORMAT_RGB24
pipeline.Init();
Intel Confidential
Declare The SDK Object - Frameworks
• Unity
private PXCUPipeline pipeline;
pipeline = new PXCUPipeline();
• Processing
private PXCUPipeline pipeline;
pipeline = new PXCUPipeline(this);
Intel Confidential
Select Features and Initialize - Frameworks
• Select Features using PXCUPipeline.Mode enum
• Use Bitwise OR (|) for Multiple Features
• Use Init() To Set Features and Enable SDK Access
pipeline.Init(PXCUPipeline.Mode.COLOR_VGA|
PXCUPipeline.Mode.DEPTH_QVGA|
PXCUPipeline.Mode.GESTURE);
Intel Confidential
Capture A Frame
• Poll For A Frame Using AcquireFrame(bool);
– Can be blocking or non-blocking
– AcquireFrame(true) is blocking, AcquireFrame(false) is non-
blocking
• Returns true If A Frame Is Available
if(pipeline.AcquireFrame(false))
{
}
Intel Confidential
Retrieve The Data
• Data Is Retrieved via Query*(<T>)
– QueryRGB(), QueryLabelMapAsImage(), etc…
• Unity
Texture2D rgbTexture = new
Texture2D(640,480,TextureFormat.ARGB32, false);
Pipeline.QueryRGB(rgbTexture);
• processing
PImage rgbTexture = createImage(640,480,RGB);
pipeline.QueryRGB(rgbTexture);
Intel Confidential
Clean Up
• Use ReleaseFrame() To “Free Up The Pipeline”
pipeline.ReleaseFrame();
Intel Confidential
SDK Features
• User Tracking
– Hand Detection
– Finger Detection
– Static Pose Detection
– Dynamic Gesture
Detection
Intel Confidential
User experience on Gestures
• Innate vs. learned gestures
– Aim for lower cognitive load
• Actionable gestures
– What if the user turns the head, drinks coffee…
• Prevent Occlusion!!!
• Left-right gestures easier than up-down
• Grabbed objects
– Make it obvious where objects can be dropped
Intel Confidential
In This Section
• Tracking Hands
• Tracking Fingers
Intel Confidential
Key Concepts
• PXCGesture
– Gesture and node tracking interface
• PXCGesture::GeoNode
– Geometric Node, struct for tracking data
• PXCGesture::GeoNode::Label
– Enum indicating tracked node
Intel Confidential
X
Z
Y
Hands and fingers tracking
GeoNode:
– PXCPoint3DF32 positionWorld;
– PXCPoint3DF32 positionImage;
– pxcU64 timeStamp;
– pxcU32 confidence;
– pxcF32 radius;
– Label body;
– PXCPoint3DF32 normal;
– pxcU32 openness;
o HAND_FINGERTIP
PXCGesture::GeoNode::LABEL_BODY_HAND_*
PXCGesture::GeoNode::LABEL_FINGER_*
o HAND_UPPER
o HAND_MIDDLE
o HAND_LOWER
Intel Confidential
Retrieve The Geonodes data – C++
PXCGesture gesture = pipeline->QueryGesture();
if(gesture)
{
PXCGesture::GeoNode node;
gesture->QueryNodeData(0,
PXCGesture::GeoNode::LABEL_BODY_HAND_PRIMARY,
&node);
}
Intel Confidential
Retrieve The Geonodes data - C#
PXCMGesture gesture = pipeline.QueryGesture();
if(gesture)
{
PXCMGesture.GeoNode node;
gesture.QueryNodeData(0,
PXCMGesture.GeoNode.Label.LABEL_BODY_HAND_PRIMARY,
out node);
}
Intel Confidential
Retrieve The Geonodes Data - Frameworks
• Unity
PXCMGesture.GeoNode node;
pipeline.QueryGeoNode(PXCMGesture.GeoNode.LABEL_BODY
_HAND_PRIMARY, out node);
• processing
PXCMGesture.GeoNode node = new
PXCMGesture.GeoNode();
pipeline.QueryGeoNode(PXCMGesture.GeoNode.LABEL_BODY
_HAND_PRIMARY, node);
Intel Confidential
Gesture recognition
~30cm
Blob Intermediate images, help separating:
• Background
• Hands
GeoNode Skeleton nodes
• Hand openness
• Open Hand: Fingertips, middle, elbows
• Closed Hand: up, middle, bottom
Gesture • THUMB UP/DOWN, PEACE, BIG5
• WAVE, CIRCLE, SWIPE LEFT/RIGHT/UP/DOWN
Alert • FOV_LEFT/_RIGHT/_TOP/_BOTTOM
• FOV_BLOCKED/_OK
• GEONODE_ACTIVE/INACTIVE
Intel Confidential
Select Features and Initialize – C++
• Only Need To Enable Gestures, Images Optional for
Feedback or Visualization
pipeline.EnableGesture();
pipeline.Init();
Intel Confidential
Select Features and Initialize - Frameworks
• Only Need ‘GESTURE’, Images Optional for Feedback or
Visualization
pipeline.Init(PXCUPipeline.Mode.GESTURE);
Intel Confidential
Key Concepts
• PXCGesture
– Gesture and node tracking interface
• PXCGesture::Gesture
– Gesture, struct for detected gestures
• PXCGesture::Gesture::Label
– Enum indicating detected gesture
Intel Confidential
class PXCGesture: public PXCBase
{
struct GeoNode {} // geometric node data structure
struct Gesture {} // pose/gesture data structure
struct Blob {} // label map data structure
struct Alert {} // event data structure
QueryProfile(…); // Retrieve configuration(s)
SetProfile(…); // Set active configuration
SubscribeGesture(Gesture::Handler); // Event setup
SubscribeAlert(Alert::Handler); // Event setup
ProcessImageAsync(images, …); // Data processing
QueryGestureData(…);// Retrieve pose/gesture data
QueryNodeData(…); // Retrieve geometric node data
QueryBlobData(…); // Retrieve label map data
};
Algorithm Modules: PXCGesture
Module interface
Intel Confidential
Retrieve The Data - C#
PXCMGesture gesture = pipeline.QueryGesture();
if(gesture)
{
PXCMGesture.Gesture gest;
gesture.QueryGestureData(0,
PXCMGesture.GeoNode.Label.LABEL_BODY_HAND_PRIMARY,0,
out gest);
}
Intel Confidential
Retrieve The Data - Frameworks
• Unity
PXCMGesture.Gesture gest;
pipeline.QueryGesture(PXCMGesture.GeoNode.LABEL_BODY
_HAND_PRIMARY, out gest);
• processing
PXCMGesture.Gesture gest = new
PXCMGesture.Gesture();
pipeline.QueryGesture(PXCMGesture.GeoNode.LABEL_BODY
_HAND_PRIMARY, gest);
Intel Confidential
Accessing Gesture Data
• C++
if(gest->active)
{
if(gest->label==PXCGesture::Gesture::LABEL_HAND_WAVE)
{
//Do stuff!
}
}
• C#/Frameworks:
if(gest.active)
{
if(gest.label==PXCMGesture.Gesture.Label.LABEL_HAND_WAVE)
{
//Do stuff!
}
}
Intel Confidential
Other Resources
http://bit.ly/11PquG1 - sources Fly
http://intel.ly/ZK14uR - Hand skeletal tracking
Intel Confidential
SDK Features
• Video Capture
– RGB (VGA and HD)
– Depth
– Blobs
– IR/Confidence
Intel Confidential
Available Video Streams
• RGB
– VGA (640x480)
– HD (1280x720)
– 30 FPS
Intel Confidential
Available Video Streams
• Labels/Blobs
– QVGA (320x240)
– 30/60 FPS
Intel Confidential
Available Video Streams
• Depth
– QVGA (320x240)
– Must Convert to Color Space
– 30/60 FPS
Intel Confidential
Available Video Streams
• IR
– QVGA (320x240)
– Must Convert to Color Space
– 30/60 FPS
– 16 bits
Intel Confidential
Retrieve The Data (C++)
• Data Is Retrieved via QueryImage() And Accessing The
Data Buffers
• Image Is Retrieved as PXCImage, Data Is Accessed Via
PXCImage::ImageData.planes
PXCImage rgb = pipeline.QueryImage(PXCImage::IMAGE_TYPE_COLOR);
PXCImage::ImageData rgbData;
rgb->AcquireAccess(PXCImage::ACCESS_READ, &rgbData);
//Data can be loaded from rgbData.planes[0]
rgb->ReleaseAccess(&rgbData);
Intel Confidential
Retrieve The Data (C#)
• Image Data Can Be Retrieved Via QueryBitmap()
System.Drawing.Bitmap rgb;
PXCMImage rgbImage =
pipeline.QueryImage(PXCMImage.ImageType.IMAGE_TYPE_COLOR);
rgbImage.QueryBitmap(pipeline.QuerySession(), out rgb);
Intel Confidential
Retrieve The Data - Frameworks
• Image Data Can Be Retrieved Via QueryBitmap()
System.Drawing.Bitmap rgb;
PXCMImage rgbImage =
pipeline.QueryImage(PXCMImage.ImageType.IMAGE_TYPE_COLOR);
rgbImage.QueryBitmap(pipeline.QuerySession(), out rgb);
Intel Confidential
• Track any 2D planar surfaces
– Position, orientation and other
parameters
• Track limited 3D objects
– Based on 3D models
• Track face orientation
SDK Features
Intel Confidential
Algorithm Modules: PXCDVTracker
D’Fusion Studio Computer Vision – PerC SDK version
Intel Confidential
Algorithm Modules: PXCDVTracker
D’Fusion Studio Computer Vision – PerC SDK version
Intel Confidential
class PXCDVTracker: public PXCBase
{
enum TargetType
{
TARGET_UNDEFINED,
TARGET_PLANE,
TARGET_OBJECT3D,
TARGET_FACE,
TARGET_PLANEBLACKBOX,
TARGET_MARKER
};
typedef struct
{
TrackingStatus status; // (-1) not initialized, 0 not tracking (recognition in process), 1 tracking
pxcF64 position[3]; // Resulting pose (X,Y, Z)
pxcF64 orientation[4]; // Quaternion to express the orientation
int index; // Recognized keyFrame index (-1 none)
} TargetData;
QueryProfile(…); // Retrieve configuration(s)
SetProfile(…); // Set active configuration
GetTargetCount(…); //
ActivateTarget(…); // Retrieve object tracking data
GetTargetData(…); //
ProcessImageAsync(…); // Data processing
};
Algorithm Modules: PXCDVTracker
Module Interface
Intel Confidential
SDK Features
• User Tracking
– Face Detection
– Face Location Detection
– Face Feature Detection
– Face Recognition
Intel Confidential
Face Detection/Tracking
•Locate and track
multiple faces
•Unique identifier
for each face
Algorithm Modules: PXCFaceAnalysis
Face tracking and analysis
Landmark Detection
•6/7-point detection
including eyes,
nose, and mouth
Facial Attribute Detection
•Age-group including
baby/youth/adult/senior
•Gender detection
•Smile/blink detection
Face Recognition
•Similarity among a set of
faces
Intel Confidential
class PXCFaceAnalysis: public PXCBase
{
class Detection {
QueryProfile(…);
SetProfile(…);
QueryData(…);
};
class Landmark {
QueryProfile(…);
SetProfile(…);
QueryLandmarkData(…);
QueryPoseData(…);
};
class Recognition {
QueryProfile(…);
SetProfile(…);
CreateModel(…);
};
class Attribute {
QueryProfile(…);
SetProfile(…);
QueryData(…);
};
QueryProfile(…);
SetProfile(…);
ProcessImageAsync(…);
}
Algorithm Modules: PXCFaceAnalysis
Module interface
Face location detection/tracking
configuration and retrieve data
Face landmark detection configuration
and data retrieval
Face attribute detection configuration and
data retrieval
Face recognition confirmation and data
retrieval
Face analysis overall configuration and
data processing
Intel Confidential
• Nuance* Voice Command and Control
– Recognize from a list of predefined commands
• Nuance Voice Dictation
– Recognize short sentences (<30 seconds)
• Nuance Voice Synthesis
– Text to speech for short sentences
SDK Features
Intel Confidential
class PXCVoiceRecognition: public PXCBase
{
struct Recognition {} // Recognized data structure
struct Alert {} // Event data structure
QueryProfile(…); // Retrieve configuration(s)
SetProfile(…); // Set active configuration
SubscribeRecognition(…);// Recognition event setup
SubscribeAlert(…); // Alert event setup
CreateGrammar(…); //
AddGrammar(…); // Command list construction
SetGrammar(…); //
DeleteGrammar(…); //
ProcessAudioAsync(…); // Data processing
};
Algorithm Modules: PXCVoiceRecognition
Module Interface
Intel Confidential
class MyHandler: public PXCVoiceRecognition::Recognition::Handler, public PXCVoiceRecognition::Alert::Handler
{
public:
MyHandler(std::vector<pxcCHAR*> &commands) { this->commands = commands; }
virtual void PXCAPI OnRecognized(PXCVoiceRecognition::Recognition *cmd)
{
wprintf_s(L"nRecognized: <%s>n", (cmd->label>=0)?commands[cmd->label]:cmd->dictation);
}
virtual void PXCAPI OnAlert(PXCVoiceRecognition::Alert *alert)
{
switch (alert->label)
{
case PXCVoiceRecognition::Alert::LABEL_SNR_LOW:
wprintf_s(L"nAlert: <Low SNR>n");
break;
case PXCVoiceRecognition::Alert::LABEL_VOLUME_LOW:
wprintf_s(L"nAlert: <Low Volume>n");
break;
case PXCVoiceRecognition::Alert::LABEL_VOLUME_HIGH:
wprintf_s(L"nAlert: <High Volume>n");
break;
default:
wprintf_s(L"nAlert: <0x%x>n",alert->label);
break;
}
Algorithm Modules: PXCVoiceSynthesis
Voice recognition example – callback handlers
Intel Confidential
class PXCVoiceSynthesis: public PXCBase
{
public:
PXC_CUID_OVERWRITE(PXC_UID('V','I','T','S'));
struct ProfileInfo {
enum Language {
LANGUAGE_US_ENGLISH=1,
};
enum Voice {
VOICE_MALE,
VOICE_FEMALE,
};
PXCCapture::AudioStream::DataDesc outputs; // output format, need bufferSize to limit the latency.
Language language;
Voice voice;
pxcU32 reserved[6];
};
virtual pxcStatus PXCAPI QueryProfile(pxcU32 pidx, ProfileInfo *pinfo)=0;
pxcStatus __inline QueryProfile(ProfileInfo *pinfo) { return QueryProfile(WORKING_PROFILE,pinfo); }
virtual pxcStatus PXCAPI SetProfile(ProfileInfo *pinfo)=0;
virtual pxcStatus PXCAPI QueueSentense(pxcCHAR *sentence, pxcU32 nchars, pxcUID *id)=0;
virtual pxcStatus PXCAPI ProcessAudioAsync(pxcUID id, PXCAudio **audio, PXCScheduler::SyncPoint **sp)=0;
};
Algorithm Modules: PXCVoiceSynthesis
Module Interface
Intel Confidential
// Queue the sentence to the speech synthesis module
pxcUID tuid = 0;
sts = vtts->QueueSentence(cmdl.m_ttstext, wcslen(cmdl.m_ttstext), &tuid);
…
while (1)
{
PXCSmartPtr<PXCAudio> audio;
PXCSmartSP sp;
// Read audio frame
sts = vtts->ProcessAudioAsync(tuid, &audio, &sp);
if (sts < PXC_STATUS_NO_ERROR)
break;
sts = sp->Synchronize();
if (sts < PXC_STATUS_NO_ERROR)
{
if ((sts == PXC_STATUS_PARAM_UNSUPPORTED) || (sts == PXC_STATUS_EXEC_TIMEOUT))
wprintf_s(L"Error in ProcessAudion");
if (sts == PXC_STATUS_ITEM_UNAVAILABLE)
wprintf_s(L"Voice synthesis completed successfullyn");
break;
}
return 0;
Algorithm Modules: PXCVoiceSynthesis
Speech synthesis example - generation
Intel Confidential
User Experience on Face Recognition
• More expressions will be available in the future SDK
• Give feedback on distance
• Give feedback on lightening
– So user avoid shadows
• Notify the user if moving too fast to be tracked
Intel Confidential
Overall Visual feedback
• Give instant feedback acknowledging command
– Gesture, voice, or anything else
• Show what’s actionable
• Show the current state
• Consider physics
Intel Confidential
https://perceptualchallenge.intel.com
Backup
Intel Confidential
class aPXCInterface: public PXCBase {
public:
PXC_CUID_OVERWRITE(PXC_UID(‘M’,’Y’,’I’,’F’));
// configurations & inquiries
struct ProfileInfo {
…
};
virtual pxcStatus PXCAPI QueryProfile(pxcU32 idx, ProfileInfo *pinfo)=0;
virtual pxcStatus PXCAPI SetProfile(ProfileInfo *pinfo)=0;
// data processing
virtual pxcStatus PXCAPI ProcessDataAsync(…, PXCScheduler::SyncPoint **sp)=0;
};
Each interface has a unique ID used by
PXCBase::QueryInterface
Consistent way of querying and
setting configurations
Asynchronous execution returns SP for
later synchronization
Core: PXCSession
Module interface conventions
PXC interfaces derive from the PXCBase
class
SDK interfaces contain only pure virtual
functions
No exception handling or dynamic_cast
(replaced with PXCBase::DynamicCast)
Intel Confidential
• Users are notified when SDK
accesses Personally Identifiable
Information (PII)
• Can also launch a viewer from
the taskbar icon that shows any
apps currently accessing the
sensor and what, in particular,
they are accessing
Core: Privacy Notification
Keeping users informed
Intel Confidential
• Image Capture:
– 8-bit RGB in RGBA/RGB24/NV12/YUY2
– Creative* camera supports up to 1280x720@30p.
– 16-bit depthmap, confidence map and vertices.
– Creative camera supports up to QVGA@60p
– Depthmap smoothing by default
• Audio capture:
– 1-2 channel PCM/IEEE-Float audio streams
– Creative camera supports 44.1kHz and 48KHz
• Device properties:
– Standard camera properties such as brightness and exposure.
– Depth-related properties such as confidence threshold, depthmap value range etc.
I/O Modules
Audio and video capture
Intel Confidential
1. Enumerate and create capture device
QueryDevice Query capture device names
CreateDevice Create a capture device instance
2. Enumerate and select streams
QueryStream Query stream type
CreateVideoStream Select a video stream
CreateAudioStream Select an audio stream
3. Perform stream operations
QueryProfile Query stream configurations
SetProfile Set a stream configuration
ReadStreamAsync Read samples from the stream
I/O Modules: PXCCapture
PXCCapture interface hierarchy
Intel Confidential
SetDeviceProperty/QueryDevice
Property
• Color stream properties
– CONTRAST, BRIGHTNESS, HUE, SATURATION …
• Depth stream properties
– DEPTH_SMOOTHING, SATURATION_VALUE, …
• Audio stream properties
– MIX_LEVEL
• Misc. properties
– ACCELEROMETER_READING
I/O Modules: PXCCapture
Device properties
Intel Confidential
• Alert and callback interface used for low-
frequency events and notifications
• Subscribe to events
PXCGesture::SubscribeAlert
PXCGesture::SubscribeGesture
PXCVoiceCommand::SubscribeAlert
PXCVoiceCommand::SubscribeCommand
• Implement the callback handler
Algorithm Modules: PXCGesture
Alerts and callback notifications
class Handler: public PXCBaseImpl<PXCGesture::Gesture::Handler>
{
public:
virtual pxcStatus PXCAPI OnGesture(Gesture *gesture) {
…
}
};
Intel Confidential
class MyPipeline: public UtilPipeline {
public:
MyPipeline(void):UtilPipeline() {
EnableGesture();
}
virtual void PXCAPI OnGesture
(PXCGesture::Gesture *data) {
printf_s(“%dn”,data->label);
}
};
int wmain(int argc, WCHAR* argv[]) {
MyPipeline pipeline;
pipeline.LoopFrames();
return 0;
}
class MyPipeline: UtilMPipeline {
public MyPipeline():base() {
EnableGesture();
}
public override void OnGesture
(ref PXCMGesture.Gesture data) {
Console.WriteLn(data.label);
}
};
class Program {
static void Main(string[] args) {
MyPipeline pipeline=new MyPipeline();
pipeline.LoopFrames();
pipeline.Dispose();
}
}
C++ C#
Enable Finger Tracking
Gesture Callback
Data Flow Loops
UtilPipeline Class
Gesture Recognition “Hello World”
Intel Confidential
• Multiple processing modules on single
input device
– Live streaming or file-based
recording/playback
– Synchronized image (or audio) processing
UtilPipeline pp;
pp.EnableImage(PXCImage::COLOR_FORMAT_RGB32);
pp.EnableImage(PXCImage::COLOR_FORMAT_DEPTH);
for (;;) {
if (!pp.AcquireFrame(true)) break;
PXCImage *color, *depth;
color=pp.QueryImage(PXCImage::IMAGE_TYPE_COLOR);
depth=pp.QueryImage(PXCImage::IMAGE_TYPE_DEPTH);
pp.ReleaseFrame();
}
pp.Close();
UtilPipeline Class
UtilPipeline-based application
Color and depth are synchronized
Intel Confidential
Speech Recognition:
Voice command and control, short sentence dictation, and
text to speech synthesis
SDK Usage Modes Today
1
1 New usage modes may be added in the future
Close-range Depth Tracking (6 in. to 3 ft.):
Recognize the positions of each of the user’s hands, fingers,
static hand poses and moving hand gestures.
Facial Analysis:
Face detection and recognition (six and seven point landmark and
attribution detection, including smiles, blinks, and age groups)
Augmented Reality:
Combine real-time images from the camera and close-range tracking
from the depth sensor with 2D or 3D graphical images.
Intel Confidential
Your SDK ‘One-Stop-Shop”
intel.com/software/perceptual
@PerceptualSDK (Twitter)
CHALLENGE INFO
DOWNLOAD SDK
ORDER CAMERA
DOCUMENTS
DEMO APPS
SUPPORT
Intel Confidential
Intel® Perceptual Computing Challenge
The $1Million 2013 Application Development Contest*
Enter Phase 2: perceptualchallenge.intel.com/
 Focus: Games, Productivity, Creative UI
& Multi-modal
 Process: Developers submit working
prototypes, panel judged
 Two Phases:
 Phase 1 (CLOSED): See Winner
Showcase at http://goo.gl/EnNHv
 Phase 2: March (GDC) to September -
$800,000+ in prizes
 Categories: Perceptual Gaming,
Productivity, Creative User Interface
and Open Innovation
 Available in 16 countries
*Terms and Conditions Apply
Intel Confidential
Speech Recognition & Dragon Assistant*
Perceptual
Computing SDK
Runtime
Speech Recognition
Application
Drivers & Hardware
Dragon Assistant*
Dragon Assistant*
Engine and
Language Pack
• Perceptual Computing speech recognition applications require Dragon Assistant* Engine and
Language Packs to be installed on target platform
• For app developers, Engine and Language Packs are available on SDK download site (THESE
ARE FOR DEVELOPER INTERNAL USE ONLY AND NOT TO BE DISTRIBUTED).
• For consumers, Dragon Assistant* (with Engine) is expected to available as follows:
• Expected to be bundled with Creative* Camera (when available)
• Expected to be pre-installed on speech-certified 4th Gen Core Ultrabook devices in late
2013
SDK Speech APIs
use the Dragon
Assistant* Engine
and Language
Packs
Intel Confidential
Sample Snippet (processing)
• Declarations
import intel.pcsdk.*;
PXCUPipeline pxc;
int[] cm = new int[2]; //color map dimensions
int[] dm = new int[2]; //depth map dimensions
short[] buffer;
Pimage rgb, depth;
Intel Confidential
Sample Snippet (processing)
• Initialization
void setup()
{
pxc = new PXCUPipeline(this);
if(!pxc.Init(PXCUPipeline.Mode.COLOR_VGA|PXCUPipeline.Mode.GESTURE))
println(“Error initializing PerC SDK”);
if(pxc.QueryRGBSize(cm))
rgb = createImate(cm[0], cm[1], RGB);
if(pxc.QueryDepthMapSize(dm))
{
buffer = new short[dm[0]*dm[1]];
depth = createImage(dm[0], dm[1], RGB);
}
size(640,480);
}
Intel Confidential
Sample Snippet (processing)
• Main Loop
void draw()
{
if(pxc.AcquireFrame(false))
{
pxc.QueryRGB(rgb);
pxc.QueryDepthMap(buffer);
pxc.ReleaseFrame();
}
RemapDepth();
image(rgb,0,0,320,240);
image(depth,320,0);
}
Intel Confidential
• Color streams
 RGB24 640x480 25fps, 30fps
 RGB24 640x360 25fps, 30fps
 RGB24 1280x720 25fps, 30fps
• Depth streams (16-bit integer, 0-32000)
 320x240 25fps, 30fps, 50fps, 60fps
 UVMAP (Depth  Color)
 Confidence Map (16-bit integer)
• Vertices streams (real world coordinates in
3D fixed-point integers)
• Audio streams (At least 2-array MIC)
 44.1KHz mono/stereo
Camera Streams
Visual Computing
Products
Intel Confidential
Image Conversion
Visual Computing
Products
RGB24 RGB32 NV12 YUY2 GRAY
RGB24 Y Y Y
RGB32 Y Y Y
NV12 Y Y Y
YUY2 Y Y Y Y Y
GRAY Y Y Y Y
DEPTH Y
VERTICES Y
For instance, raw DepthSense color image format is RGB24, with
AcquireAccess(PXCImage::ACCESS_READ, PXCImage::COLOR_FORMAT_RGB32, &data)
SDK framework will convert color image data from RGB24 to RGB32

More Related Content

What's hot

pcDuino Presentation at SparkFun
pcDuino Presentation at SparkFunpcDuino Presentation at SparkFun
pcDuino Presentation at SparkFunJingfeng Liu
 
[02][cuda c 프로그래밍 소개] gateau intro to_cuda_c
[02][cuda c 프로그래밍 소개] gateau intro to_cuda_c[02][cuda c 프로그래밍 소개] gateau intro to_cuda_c
[02][cuda c 프로그래밍 소개] gateau intro to_cuda_claparuma
 
Cloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & InferenceCloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & InferenceMr. Vengineer
 
Introduction to pcDuino
Introduction to pcDuinoIntroduction to pcDuino
Introduction to pcDuinoJingfeng Liu
 
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012Andrés Gómez
 
2013 09-02 senzations-bimschas-part3-wiselib
2013 09-02 senzations-bimschas-part3-wiselib2013 09-02 senzations-bimschas-part3-wiselib
2013 09-02 senzations-bimschas-part3-wiselibDaniel Bimschas
 
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
2013 09-02 senzations-bimschas-part2-smart-santander-experimentationDaniel Bimschas
 
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...Shinya Takamaeda-Y
 
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbedDaniel Bimschas
 
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Intel® Software
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」Shinya Takamaeda-Y
 
WISEBED Tutorial @ ADHOCNETS 2011
WISEBED Tutorial @ ADHOCNETS 2011WISEBED Tutorial @ ADHOCNETS 2011
WISEBED Tutorial @ ADHOCNETS 2011Daniel Bimschas
 
ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)Shinya Takamaeda-Y
 
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)Shinya Takamaeda-Y
 
Denis Nagorny - Pumping Python Performance
Denis Nagorny - Pumping Python PerformanceDenis Nagorny - Pumping Python Performance
Denis Nagorny - Pumping Python PerformanceSergey Arkhipov
 
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...INFOGAIN PUBLICATION
 

What's hot (19)

Ieee 1149.1-2013-tutorial-ijtag
Ieee 1149.1-2013-tutorial-ijtagIeee 1149.1-2013-tutorial-ijtag
Ieee 1149.1-2013-tutorial-ijtag
 
pcDuino Presentation at SparkFun
pcDuino Presentation at SparkFunpcDuino Presentation at SparkFun
pcDuino Presentation at SparkFun
 
David-FPGA
David-FPGADavid-FPGA
David-FPGA
 
[02][cuda c 프로그래밍 소개] gateau intro to_cuda_c
[02][cuda c 프로그래밍 소개] gateau intro to_cuda_c[02][cuda c 프로그래밍 소개] gateau intro to_cuda_c
[02][cuda c 프로그래밍 소개] gateau intro to_cuda_c
 
Cloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & InferenceCloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & Inference
 
Introduction to pcDuino
Introduction to pcDuinoIntroduction to pcDuino
Introduction to pcDuino
 
Cuda 2011
Cuda 2011Cuda 2011
Cuda 2011
 
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
 
2013 09-02 senzations-bimschas-part3-wiselib
2013 09-02 senzations-bimschas-part3-wiselib2013 09-02 senzations-bimschas-part3-wiselib
2013 09-02 senzations-bimschas-part3-wiselib
 
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
 
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...
 
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
 
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
 
WISEBED Tutorial @ ADHOCNETS 2011
WISEBED Tutorial @ ADHOCNETS 2011WISEBED Tutorial @ ADHOCNETS 2011
WISEBED Tutorial @ ADHOCNETS 2011
 
ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)
 
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
 
Denis Nagorny - Pumping Python Performance
Denis Nagorny - Pumping Python PerformanceDenis Nagorny - Pumping Python Performance
Denis Nagorny - Pumping Python Performance
 
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
 

Similar to Perceptual Computing Workshop à Paris

IoT Getting Started with Intel® IoT Devkit
IoT Getting Started with Intel® IoT DevkitIoT Getting Started with Intel® IoT Devkit
IoT Getting Started with Intel® IoT DevkitVasily Ryzhonkov
 
Intel IoT Edge Computing 在 AI 領域的應用與商機
Intel IoT Edge Computing 在 AI 領域的應用與商機Intel IoT Edge Computing 在 AI 領域的應用與商機
Intel IoT Edge Computing 在 AI 領域的應用與商機Amazon Web Services
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitSulamita Garcia
 
Developing new zynq based instruments
Developing new zynq based instrumentsDeveloping new zynq based instruments
Developing new zynq based instrumentsGraham NAYLOR
 
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesDPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesJim St. Leger
 
Kinect v2 Introduction and Tutorial
Kinect v2 Introduction and TutorialKinect v2 Introduction and Tutorial
Kinect v2 Introduction and TutorialTsukasa Sugiura
 
FIPS 140-2 Validations in a Secure Enclave
FIPS 140-2 Validations in a Secure EnclaveFIPS 140-2 Validations in a Secure Enclave
FIPS 140-2 Validations in a Secure EnclavewolfSSL
 
Intels presentation at blue line industrial computer seminar
Intels presentation at blue line industrial computer seminarIntels presentation at blue line industrial computer seminar
Intels presentation at blue line industrial computer seminarBlue Line
 
HiPEAC 2022_Marco Tassemeier presentation
HiPEAC 2022_Marco Tassemeier presentationHiPEAC 2022_Marco Tassemeier presentation
HiPEAC 2022_Marco Tassemeier presentationVEDLIoT Project
 
HiPEAC Computing Systems Week 2022_Mario Porrmann presentation
HiPEAC Computing Systems Week 2022_Mario Porrmann presentationHiPEAC Computing Systems Week 2022_Mario Porrmann presentation
HiPEAC Computing Systems Week 2022_Mario Porrmann presentationVEDLIoT Project
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth Pilli
 
VLSI Training presentation
VLSI Training presentationVLSI Training presentation
VLSI Training presentationDaola Khungur
 
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...Edge AI and Vision Alliance
 
DPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway ApplicationDPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway ApplicationMichelle Holley
 

Similar to Perceptual Computing Workshop à Paris (20)

IoT Getting Started with Intel® IoT Devkit
IoT Getting Started with Intel® IoT DevkitIoT Getting Started with Intel® IoT Devkit
IoT Getting Started with Intel® IoT Devkit
 
Perceptual Computing
Perceptual ComputingPerceptual Computing
Perceptual Computing
 
Начало работы с Intel IoT Dev Kit
Начало работы с Intel IoT Dev KitНачало работы с Intel IoT Dev Kit
Начало работы с Intel IoT Dev Kit
 
Intel IoT Edge Computing 在 AI 領域的應用與商機
Intel IoT Edge Computing 在 AI 領域的應用與商機Intel IoT Edge Computing 在 AI 領域的應用與商機
Intel IoT Edge Computing 在 AI 領域的應用與商機
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer Kit
 
Developing new zynq based instruments
Developing new zynq based instrumentsDeveloping new zynq based instruments
Developing new zynq based instruments
 
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesDPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith Wiles
 
Bindu_Resume
Bindu_ResumeBindu_Resume
Bindu_Resume
 
Deep Learning Edge
Deep Learning Edge Deep Learning Edge
Deep Learning Edge
 
Kinect v2 Introduction and Tutorial
Kinect v2 Introduction and TutorialKinect v2 Introduction and Tutorial
Kinect v2 Introduction and Tutorial
 
FIPS 140-2 Validations in a Secure Enclave
FIPS 140-2 Validations in a Secure EnclaveFIPS 140-2 Validations in a Secure Enclave
FIPS 140-2 Validations in a Secure Enclave
 
CV_Arshad_21June16
CV_Arshad_21June16CV_Arshad_21June16
CV_Arshad_21June16
 
Intels presentation at blue line industrial computer seminar
Intels presentation at blue line industrial computer seminarIntels presentation at blue line industrial computer seminar
Intels presentation at blue line industrial computer seminar
 
HiPEAC 2022_Marco Tassemeier presentation
HiPEAC 2022_Marco Tassemeier presentationHiPEAC 2022_Marco Tassemeier presentation
HiPEAC 2022_Marco Tassemeier presentation
 
HiPEAC Computing Systems Week 2022_Mario Porrmann presentation
HiPEAC Computing Systems Week 2022_Mario Porrmann presentationHiPEAC Computing Systems Week 2022_Mario Porrmann presentation
HiPEAC Computing Systems Week 2022_Mario Porrmann presentation
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latest
 
VLSI Training presentation
VLSI Training presentationVLSI Training presentation
VLSI Training presentation
 
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
 
DRIVE PX 2
DRIVE PX 2DRIVE PX 2
DRIVE PX 2
 
DPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway ApplicationDPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway Application
 

More from BeMyApp

Introduction to epid
Introduction to epidIntroduction to epid
Introduction to epidBeMyApp
 
Introduction ciot workshop premeetup
Introduction ciot workshop premeetupIntroduction ciot workshop premeetup
Introduction ciot workshop premeetupBeMyApp
 
Présentation des APIs cognitives IBM Watson
Présentation des APIs cognitives IBM WatsonPrésentation des APIs cognitives IBM Watson
Présentation des APIs cognitives IBM WatsonBeMyApp
 
Crédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursCrédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursBeMyApp
 
Cisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroCisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroBeMyApp
 
Tumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleTumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleBeMyApp
 
Building your first game in Unity 3d by Sarah Sexton
Building your first game in Unity 3d  by Sarah SextonBuilding your first game in Unity 3d  by Sarah Sexton
Building your first game in Unity 3d by Sarah SextonBeMyApp
 
Using intel's real sense to create games with natural user interfaces justi...
Using intel's real sense to create games with natural user interfaces   justi...Using intel's real sense to create games with natural user interfaces   justi...
Using intel's real sense to create games with natural user interfaces justi...BeMyApp
 
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsIntroduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsBeMyApp
 
Audio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchAudio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchBeMyApp
 
Shaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestShaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestBeMyApp
 
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart CityBeMyApp
 
Tools to Save Time
Tools to Save TimeTools to Save Time
Tools to Save TimeBeMyApp
 
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateurBeMyApp
 
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...BeMyApp
 
[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technologyBeMyApp
 
HP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapHP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapBeMyApp
 
Webinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoWebinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoBeMyApp
 
HP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsHP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsBeMyApp
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillBeMyApp
 

More from BeMyApp (20)

Introduction to epid
Introduction to epidIntroduction to epid
Introduction to epid
 
Introduction ciot workshop premeetup
Introduction ciot workshop premeetupIntroduction ciot workshop premeetup
Introduction ciot workshop premeetup
 
Présentation des APIs cognitives IBM Watson
Présentation des APIs cognitives IBM WatsonPrésentation des APIs cognitives IBM Watson
Présentation des APIs cognitives IBM Watson
 
Crédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursCrédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et Parcours
 
Cisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroCisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - Intro
 
Tumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleTumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensemble
 
Building your first game in Unity 3d by Sarah Sexton
Building your first game in Unity 3d  by Sarah SextonBuilding your first game in Unity 3d  by Sarah Sexton
Building your first game in Unity 3d by Sarah Sexton
 
Using intel's real sense to create games with natural user interfaces justi...
Using intel's real sense to create games with natural user interfaces   justi...Using intel's real sense to create games with natural user interfaces   justi...
Using intel's real sense to create games with natural user interfaces justi...
 
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsIntroduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
 
Audio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchAudio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy Touch
 
Shaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestShaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the Best
 
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
 
Tools to Save Time
Tools to Save TimeTools to Save Time
Tools to Save Time
 
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
 
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
 
[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology
 
HP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapHP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit Recap
 
Webinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoWebinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco Marcellino
 
HP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsHP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond Firewalls
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pill
 

Recently uploaded

Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 

Recently uploaded (20)

Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 

Perceptual Computing Workshop à Paris

  • 1. Perceptual Computing Workshop Xavier Hallade, Technical Marketing Engineer @ph0b
  • 2. Intel Confidential Intel® Perceptual Computing SDK 2013 Next Generation Interactivity for Intel® Core™ Processor-Based Applications
  • 3. Intel Confidential Creative* Interactive Gesture Camera For use with the Intel® Perceptual Computing SDK  Small, light-weight, low-power  Tuned for close-range interactivity  Designed with ease of setup and portability  Includes:  HD web camera  Depth sensor  Dual-array microphone Sign up to purchase a camera at intel.com/software/perceptual *Other brands and trademarks may be claimed as the property of their respective owners
  • 4. Intel Confidential Key Upcoming Items  Creative* Senz3D – Q3 2013  Integration in Intel devices – H2 2014 *Other brands and trademarks may be claimed as the property of their respective owners
  • 5. Intel Confidential What is Perceptual Computing? Interactivity Beyond Touch, Mouse and Keyboard … Facial Tracking Speech Recognition Close-range Finger Tracking Augmented Reality Close-range Gesture Tracking Facilitates Application Developers Implementation of:  Games  Entertainment  Productivity  Accessibility  Immersive Teleconferencing  Education  Medical / Health  Enterprises  Retail  Industrial
  • 6. Intel Confidential SDK Usage H/W Requirements SDK Usage Mode Speech Certified Dual-Array Microphones RGB Webcam Creative* Camera Close-range Depth tracking X Speech Recognition X X Face Recognition X X Augmented Reality X X  Close-range depth tracking requires Creative camera  Speech requires dual-array microphones OR Creative* camera  2H’13 4th Gen Ultrabook devices are required to have speech certified microphones  Dell XPS 13* has speech-certified microphones  Facial tracking requires RGB Webcam OR Creative* Camera  Augmented Reality requires RGB Webcam OR Creative* Camera *Other brands and trademarks may be claimed as the property of their respective owners
  • 7. Intel Confidential Programming Language and Framework Support • C++, C#, Java • Supported Frameworks – processing – openFrameworks – Unity Pro – Havok
  • 8. Intel Confidential Programming Language and Framework Support • Unsupported but Verified – Cinder – OGRE – XNA / Monogame – Bullet Physics
  • 9. Intel Confidential PXCSession, PXCImage, PXCAudio, PXCCapture, PXCGesture, PXCFaceAnalysis, PXCVoice UtilCapture, UtilPipeline C# PXCMSession PXCMImage PXCMAudio PXCMCapture PXCMGesture PXCMFaceAn alysis PXCMVoice UtilMCapture UtilMPipeline pxcupipeline Unity* Pro Processing openFrame works* Applications Core Functionalities Module Interaction Additional Language and Framework Support SDK API Hierarchy *Other brands and trademarks may be claimed as the property of their respective owners
  • 10. Intel Confidential SDK files • Samples are located in: – $(PCSDK_DIR)bin (executables) – $(PCSDK_DIR)samples (source code) – $(PCSDK_DIR)framework (framework and game engines) – $(PCSDK_DIR)demo
  • 11. Intel Confidential Resources • Perceptual Computing Forums – http://software.intel.com/en-us/forums/intel- perceptual-computing-sdk • Perceptual Computing IDZ Portal – http://intel.com/software/perceptual • Github – http://github.com/IntelPerceptual
  • 12. Intel Confidential User Experience considerations • Reality inspired, not cloning – Wrapping fingers around objects • Literal, not abstract – Universal visual cues – switches and nobs • Consistency!!! • Extensible – prepare for future improvements • Manage persistence – Sometimes the hand will go out of the view
  • 13. Intel Confidential Process Overview – prop 1 • Subclass the SDK Pipeline Object • Enable features in the constructor • Reimplement OnAlert|Gesture|NewFrame…() methods • Instantiate the object and call LoopFrames() on it.
  • 14. Intel Confidential Hello World – C++ class GesturePipeline: public UtilPipeline { public: GesturePipeline(void):UtilPipeline(), m_render(L"Gesture Viewer") { EnableGesture(); } virtual void PXCAPI OnGesture(PXCGesture::Gesture *data) { if (data->active) m_gdata = (*data); switch (data->label) { case PXCGesture::Gesture::LABEL_NAV_SWIPE_LEFT: break; //do something case PXCGesture::Gesture::LABEL_NAV_SWIPE_RIGHT: break; //do something default: break; } } virtual bool OnNewFrame(void) { return m_render.RenderFrame(QueryImage(PXCImage::IMAGE_TYPE_DEPTH), QueryGesture(), &m_gdata); } protected: GestureRender m_render; PXCGesture::Gesture m_gdata; };
  • 15. Intel Confidential Process Overview – prop 2 • Declare The SDK Pipeline Object • Select Features and Initialize • Acquire A Frame • Query The Data • Cleanup You can also subclass the pipeline object and reimplement OnXXX methods
  • 16. Intel Confidential Declare The SDK Object – C++/C# • C++ UtilPipeline pipeline; • C# UtilMPipeline pipeline; pipeline = new UtilMPipeline();
  • 17. Intel Confidential Select Features and Initialize – C++/C# • Select Features Using .Enable*() Methods • Use Init() To Set Features and Enable SDK Access pipeline.EnableGesture(); pipeline.EnableImage(PXCImage::COLOR_FORMAT_RGB24); //C# PXCImage.ColorFormat.COLOR_FORMAT_RGB24 pipeline.Init();
  • 18. Intel Confidential Declare The SDK Object - Frameworks • Unity private PXCUPipeline pipeline; pipeline = new PXCUPipeline(); • Processing private PXCUPipeline pipeline; pipeline = new PXCUPipeline(this);
  • 19. Intel Confidential Select Features and Initialize - Frameworks • Select Features using PXCUPipeline.Mode enum • Use Bitwise OR (|) for Multiple Features • Use Init() To Set Features and Enable SDK Access pipeline.Init(PXCUPipeline.Mode.COLOR_VGA| PXCUPipeline.Mode.DEPTH_QVGA| PXCUPipeline.Mode.GESTURE);
  • 20. Intel Confidential Capture A Frame • Poll For A Frame Using AcquireFrame(bool); – Can be blocking or non-blocking – AcquireFrame(true) is blocking, AcquireFrame(false) is non- blocking • Returns true If A Frame Is Available if(pipeline.AcquireFrame(false)) { }
  • 21. Intel Confidential Retrieve The Data • Data Is Retrieved via Query*(<T>) – QueryRGB(), QueryLabelMapAsImage(), etc… • Unity Texture2D rgbTexture = new Texture2D(640,480,TextureFormat.ARGB32, false); Pipeline.QueryRGB(rgbTexture); • processing PImage rgbTexture = createImage(640,480,RGB); pipeline.QueryRGB(rgbTexture);
  • 22. Intel Confidential Clean Up • Use ReleaseFrame() To “Free Up The Pipeline” pipeline.ReleaseFrame();
  • 23. Intel Confidential SDK Features • User Tracking – Hand Detection – Finger Detection – Static Pose Detection – Dynamic Gesture Detection
  • 24. Intel Confidential User experience on Gestures • Innate vs. learned gestures – Aim for lower cognitive load • Actionable gestures – What if the user turns the head, drinks coffee… • Prevent Occlusion!!! • Left-right gestures easier than up-down • Grabbed objects – Make it obvious where objects can be dropped
  • 25. Intel Confidential In This Section • Tracking Hands • Tracking Fingers
  • 26. Intel Confidential Key Concepts • PXCGesture – Gesture and node tracking interface • PXCGesture::GeoNode – Geometric Node, struct for tracking data • PXCGesture::GeoNode::Label – Enum indicating tracked node
  • 27. Intel Confidential X Z Y Hands and fingers tracking GeoNode: – PXCPoint3DF32 positionWorld; – PXCPoint3DF32 positionImage; – pxcU64 timeStamp; – pxcU32 confidence; – pxcF32 radius; – Label body; – PXCPoint3DF32 normal; – pxcU32 openness; o HAND_FINGERTIP PXCGesture::GeoNode::LABEL_BODY_HAND_* PXCGesture::GeoNode::LABEL_FINGER_* o HAND_UPPER o HAND_MIDDLE o HAND_LOWER
  • 28. Intel Confidential Retrieve The Geonodes data – C++ PXCGesture gesture = pipeline->QueryGesture(); if(gesture) { PXCGesture::GeoNode node; gesture->QueryNodeData(0, PXCGesture::GeoNode::LABEL_BODY_HAND_PRIMARY, &node); }
  • 29. Intel Confidential Retrieve The Geonodes data - C# PXCMGesture gesture = pipeline.QueryGesture(); if(gesture) { PXCMGesture.GeoNode node; gesture.QueryNodeData(0, PXCMGesture.GeoNode.Label.LABEL_BODY_HAND_PRIMARY, out node); }
  • 30. Intel Confidential Retrieve The Geonodes Data - Frameworks • Unity PXCMGesture.GeoNode node; pipeline.QueryGeoNode(PXCMGesture.GeoNode.LABEL_BODY _HAND_PRIMARY, out node); • processing PXCMGesture.GeoNode node = new PXCMGesture.GeoNode(); pipeline.QueryGeoNode(PXCMGesture.GeoNode.LABEL_BODY _HAND_PRIMARY, node);
  • 31. Intel Confidential Gesture recognition ~30cm Blob Intermediate images, help separating: • Background • Hands GeoNode Skeleton nodes • Hand openness • Open Hand: Fingertips, middle, elbows • Closed Hand: up, middle, bottom Gesture • THUMB UP/DOWN, PEACE, BIG5 • WAVE, CIRCLE, SWIPE LEFT/RIGHT/UP/DOWN Alert • FOV_LEFT/_RIGHT/_TOP/_BOTTOM • FOV_BLOCKED/_OK • GEONODE_ACTIVE/INACTIVE
  • 32. Intel Confidential Select Features and Initialize – C++ • Only Need To Enable Gestures, Images Optional for Feedback or Visualization pipeline.EnableGesture(); pipeline.Init();
  • 33. Intel Confidential Select Features and Initialize - Frameworks • Only Need ‘GESTURE’, Images Optional for Feedback or Visualization pipeline.Init(PXCUPipeline.Mode.GESTURE);
  • 34. Intel Confidential Key Concepts • PXCGesture – Gesture and node tracking interface • PXCGesture::Gesture – Gesture, struct for detected gestures • PXCGesture::Gesture::Label – Enum indicating detected gesture
  • 35. Intel Confidential class PXCGesture: public PXCBase { struct GeoNode {} // geometric node data structure struct Gesture {} // pose/gesture data structure struct Blob {} // label map data structure struct Alert {} // event data structure QueryProfile(…); // Retrieve configuration(s) SetProfile(…); // Set active configuration SubscribeGesture(Gesture::Handler); // Event setup SubscribeAlert(Alert::Handler); // Event setup ProcessImageAsync(images, …); // Data processing QueryGestureData(…);// Retrieve pose/gesture data QueryNodeData(…); // Retrieve geometric node data QueryBlobData(…); // Retrieve label map data }; Algorithm Modules: PXCGesture Module interface
  • 36. Intel Confidential Retrieve The Data - C# PXCMGesture gesture = pipeline.QueryGesture(); if(gesture) { PXCMGesture.Gesture gest; gesture.QueryGestureData(0, PXCMGesture.GeoNode.Label.LABEL_BODY_HAND_PRIMARY,0, out gest); }
  • 37. Intel Confidential Retrieve The Data - Frameworks • Unity PXCMGesture.Gesture gest; pipeline.QueryGesture(PXCMGesture.GeoNode.LABEL_BODY _HAND_PRIMARY, out gest); • processing PXCMGesture.Gesture gest = new PXCMGesture.Gesture(); pipeline.QueryGesture(PXCMGesture.GeoNode.LABEL_BODY _HAND_PRIMARY, gest);
  • 38. Intel Confidential Accessing Gesture Data • C++ if(gest->active) { if(gest->label==PXCGesture::Gesture::LABEL_HAND_WAVE) { //Do stuff! } } • C#/Frameworks: if(gest.active) { if(gest.label==PXCMGesture.Gesture.Label.LABEL_HAND_WAVE) { //Do stuff! } }
  • 39. Intel Confidential Other Resources http://bit.ly/11PquG1 - sources Fly http://intel.ly/ZK14uR - Hand skeletal tracking
  • 40. Intel Confidential SDK Features • Video Capture – RGB (VGA and HD) – Depth – Blobs – IR/Confidence
  • 41. Intel Confidential Available Video Streams • RGB – VGA (640x480) – HD (1280x720) – 30 FPS
  • 42. Intel Confidential Available Video Streams • Labels/Blobs – QVGA (320x240) – 30/60 FPS
  • 43. Intel Confidential Available Video Streams • Depth – QVGA (320x240) – Must Convert to Color Space – 30/60 FPS
  • 44. Intel Confidential Available Video Streams • IR – QVGA (320x240) – Must Convert to Color Space – 30/60 FPS – 16 bits
  • 45. Intel Confidential Retrieve The Data (C++) • Data Is Retrieved via QueryImage() And Accessing The Data Buffers • Image Is Retrieved as PXCImage, Data Is Accessed Via PXCImage::ImageData.planes PXCImage rgb = pipeline.QueryImage(PXCImage::IMAGE_TYPE_COLOR); PXCImage::ImageData rgbData; rgb->AcquireAccess(PXCImage::ACCESS_READ, &rgbData); //Data can be loaded from rgbData.planes[0] rgb->ReleaseAccess(&rgbData);
  • 46. Intel Confidential Retrieve The Data (C#) • Image Data Can Be Retrieved Via QueryBitmap() System.Drawing.Bitmap rgb; PXCMImage rgbImage = pipeline.QueryImage(PXCMImage.ImageType.IMAGE_TYPE_COLOR); rgbImage.QueryBitmap(pipeline.QuerySession(), out rgb);
  • 47. Intel Confidential Retrieve The Data - Frameworks • Image Data Can Be Retrieved Via QueryBitmap() System.Drawing.Bitmap rgb; PXCMImage rgbImage = pipeline.QueryImage(PXCMImage.ImageType.IMAGE_TYPE_COLOR); rgbImage.QueryBitmap(pipeline.QuerySession(), out rgb);
  • 48. Intel Confidential • Track any 2D planar surfaces – Position, orientation and other parameters • Track limited 3D objects – Based on 3D models • Track face orientation SDK Features
  • 49. Intel Confidential Algorithm Modules: PXCDVTracker D’Fusion Studio Computer Vision – PerC SDK version
  • 50. Intel Confidential Algorithm Modules: PXCDVTracker D’Fusion Studio Computer Vision – PerC SDK version
  • 51. Intel Confidential class PXCDVTracker: public PXCBase { enum TargetType { TARGET_UNDEFINED, TARGET_PLANE, TARGET_OBJECT3D, TARGET_FACE, TARGET_PLANEBLACKBOX, TARGET_MARKER }; typedef struct { TrackingStatus status; // (-1) not initialized, 0 not tracking (recognition in process), 1 tracking pxcF64 position[3]; // Resulting pose (X,Y, Z) pxcF64 orientation[4]; // Quaternion to express the orientation int index; // Recognized keyFrame index (-1 none) } TargetData; QueryProfile(…); // Retrieve configuration(s) SetProfile(…); // Set active configuration GetTargetCount(…); // ActivateTarget(…); // Retrieve object tracking data GetTargetData(…); // ProcessImageAsync(…); // Data processing }; Algorithm Modules: PXCDVTracker Module Interface
  • 52. Intel Confidential SDK Features • User Tracking – Face Detection – Face Location Detection – Face Feature Detection – Face Recognition
  • 53. Intel Confidential Face Detection/Tracking •Locate and track multiple faces •Unique identifier for each face Algorithm Modules: PXCFaceAnalysis Face tracking and analysis Landmark Detection •6/7-point detection including eyes, nose, and mouth Facial Attribute Detection •Age-group including baby/youth/adult/senior •Gender detection •Smile/blink detection Face Recognition •Similarity among a set of faces
  • 54. Intel Confidential class PXCFaceAnalysis: public PXCBase { class Detection { QueryProfile(…); SetProfile(…); QueryData(…); }; class Landmark { QueryProfile(…); SetProfile(…); QueryLandmarkData(…); QueryPoseData(…); }; class Recognition { QueryProfile(…); SetProfile(…); CreateModel(…); }; class Attribute { QueryProfile(…); SetProfile(…); QueryData(…); }; QueryProfile(…); SetProfile(…); ProcessImageAsync(…); } Algorithm Modules: PXCFaceAnalysis Module interface Face location detection/tracking configuration and retrieve data Face landmark detection configuration and data retrieval Face attribute detection configuration and data retrieval Face recognition confirmation and data retrieval Face analysis overall configuration and data processing
  • 55. Intel Confidential • Nuance* Voice Command and Control – Recognize from a list of predefined commands • Nuance Voice Dictation – Recognize short sentences (<30 seconds) • Nuance Voice Synthesis – Text to speech for short sentences SDK Features
  • 56. Intel Confidential class PXCVoiceRecognition: public PXCBase { struct Recognition {} // Recognized data structure struct Alert {} // Event data structure QueryProfile(…); // Retrieve configuration(s) SetProfile(…); // Set active configuration SubscribeRecognition(…);// Recognition event setup SubscribeAlert(…); // Alert event setup CreateGrammar(…); // AddGrammar(…); // Command list construction SetGrammar(…); // DeleteGrammar(…); // ProcessAudioAsync(…); // Data processing }; Algorithm Modules: PXCVoiceRecognition Module Interface
  • 57. Intel Confidential class MyHandler: public PXCVoiceRecognition::Recognition::Handler, public PXCVoiceRecognition::Alert::Handler { public: MyHandler(std::vector<pxcCHAR*> &commands) { this->commands = commands; } virtual void PXCAPI OnRecognized(PXCVoiceRecognition::Recognition *cmd) { wprintf_s(L"nRecognized: <%s>n", (cmd->label>=0)?commands[cmd->label]:cmd->dictation); } virtual void PXCAPI OnAlert(PXCVoiceRecognition::Alert *alert) { switch (alert->label) { case PXCVoiceRecognition::Alert::LABEL_SNR_LOW: wprintf_s(L"nAlert: <Low SNR>n"); break; case PXCVoiceRecognition::Alert::LABEL_VOLUME_LOW: wprintf_s(L"nAlert: <Low Volume>n"); break; case PXCVoiceRecognition::Alert::LABEL_VOLUME_HIGH: wprintf_s(L"nAlert: <High Volume>n"); break; default: wprintf_s(L"nAlert: <0x%x>n",alert->label); break; } Algorithm Modules: PXCVoiceSynthesis Voice recognition example – callback handlers
  • 58. Intel Confidential class PXCVoiceSynthesis: public PXCBase { public: PXC_CUID_OVERWRITE(PXC_UID('V','I','T','S')); struct ProfileInfo { enum Language { LANGUAGE_US_ENGLISH=1, }; enum Voice { VOICE_MALE, VOICE_FEMALE, }; PXCCapture::AudioStream::DataDesc outputs; // output format, need bufferSize to limit the latency. Language language; Voice voice; pxcU32 reserved[6]; }; virtual pxcStatus PXCAPI QueryProfile(pxcU32 pidx, ProfileInfo *pinfo)=0; pxcStatus __inline QueryProfile(ProfileInfo *pinfo) { return QueryProfile(WORKING_PROFILE,pinfo); } virtual pxcStatus PXCAPI SetProfile(ProfileInfo *pinfo)=0; virtual pxcStatus PXCAPI QueueSentense(pxcCHAR *sentence, pxcU32 nchars, pxcUID *id)=0; virtual pxcStatus PXCAPI ProcessAudioAsync(pxcUID id, PXCAudio **audio, PXCScheduler::SyncPoint **sp)=0; }; Algorithm Modules: PXCVoiceSynthesis Module Interface
  • 59. Intel Confidential // Queue the sentence to the speech synthesis module pxcUID tuid = 0; sts = vtts->QueueSentence(cmdl.m_ttstext, wcslen(cmdl.m_ttstext), &tuid); … while (1) { PXCSmartPtr<PXCAudio> audio; PXCSmartSP sp; // Read audio frame sts = vtts->ProcessAudioAsync(tuid, &audio, &sp); if (sts < PXC_STATUS_NO_ERROR) break; sts = sp->Synchronize(); if (sts < PXC_STATUS_NO_ERROR) { if ((sts == PXC_STATUS_PARAM_UNSUPPORTED) || (sts == PXC_STATUS_EXEC_TIMEOUT)) wprintf_s(L"Error in ProcessAudion"); if (sts == PXC_STATUS_ITEM_UNAVAILABLE) wprintf_s(L"Voice synthesis completed successfullyn"); break; } return 0; Algorithm Modules: PXCVoiceSynthesis Speech synthesis example - generation
  • 60. Intel Confidential User Experience on Face Recognition • More expressions will be available in the future SDK • Give feedback on distance • Give feedback on lightening – So user avoid shadows • Notify the user if moving too fast to be tracked
  • 61. Intel Confidential Overall Visual feedback • Give instant feedback acknowledging command – Gesture, voice, or anything else • Show what’s actionable • Show the current state • Consider physics
  • 64. Intel Confidential class aPXCInterface: public PXCBase { public: PXC_CUID_OVERWRITE(PXC_UID(‘M’,’Y’,’I’,’F’)); // configurations & inquiries struct ProfileInfo { … }; virtual pxcStatus PXCAPI QueryProfile(pxcU32 idx, ProfileInfo *pinfo)=0; virtual pxcStatus PXCAPI SetProfile(ProfileInfo *pinfo)=0; // data processing virtual pxcStatus PXCAPI ProcessDataAsync(…, PXCScheduler::SyncPoint **sp)=0; }; Each interface has a unique ID used by PXCBase::QueryInterface Consistent way of querying and setting configurations Asynchronous execution returns SP for later synchronization Core: PXCSession Module interface conventions PXC interfaces derive from the PXCBase class SDK interfaces contain only pure virtual functions No exception handling or dynamic_cast (replaced with PXCBase::DynamicCast)
  • 65. Intel Confidential • Users are notified when SDK accesses Personally Identifiable Information (PII) • Can also launch a viewer from the taskbar icon that shows any apps currently accessing the sensor and what, in particular, they are accessing Core: Privacy Notification Keeping users informed
  • 66. Intel Confidential • Image Capture: – 8-bit RGB in RGBA/RGB24/NV12/YUY2 – Creative* camera supports up to 1280x720@30p. – 16-bit depthmap, confidence map and vertices. – Creative camera supports up to QVGA@60p – Depthmap smoothing by default • Audio capture: – 1-2 channel PCM/IEEE-Float audio streams – Creative camera supports 44.1kHz and 48KHz • Device properties: – Standard camera properties such as brightness and exposure. – Depth-related properties such as confidence threshold, depthmap value range etc. I/O Modules Audio and video capture
  • 67. Intel Confidential 1. Enumerate and create capture device QueryDevice Query capture device names CreateDevice Create a capture device instance 2. Enumerate and select streams QueryStream Query stream type CreateVideoStream Select a video stream CreateAudioStream Select an audio stream 3. Perform stream operations QueryProfile Query stream configurations SetProfile Set a stream configuration ReadStreamAsync Read samples from the stream I/O Modules: PXCCapture PXCCapture interface hierarchy
  • 68. Intel Confidential SetDeviceProperty/QueryDevice Property • Color stream properties – CONTRAST, BRIGHTNESS, HUE, SATURATION … • Depth stream properties – DEPTH_SMOOTHING, SATURATION_VALUE, … • Audio stream properties – MIX_LEVEL • Misc. properties – ACCELEROMETER_READING I/O Modules: PXCCapture Device properties
  • 69. Intel Confidential • Alert and callback interface used for low- frequency events and notifications • Subscribe to events PXCGesture::SubscribeAlert PXCGesture::SubscribeGesture PXCVoiceCommand::SubscribeAlert PXCVoiceCommand::SubscribeCommand • Implement the callback handler Algorithm Modules: PXCGesture Alerts and callback notifications class Handler: public PXCBaseImpl<PXCGesture::Gesture::Handler> { public: virtual pxcStatus PXCAPI OnGesture(Gesture *gesture) { … } };
  • 70. Intel Confidential class MyPipeline: public UtilPipeline { public: MyPipeline(void):UtilPipeline() { EnableGesture(); } virtual void PXCAPI OnGesture (PXCGesture::Gesture *data) { printf_s(“%dn”,data->label); } }; int wmain(int argc, WCHAR* argv[]) { MyPipeline pipeline; pipeline.LoopFrames(); return 0; } class MyPipeline: UtilMPipeline { public MyPipeline():base() { EnableGesture(); } public override void OnGesture (ref PXCMGesture.Gesture data) { Console.WriteLn(data.label); } }; class Program { static void Main(string[] args) { MyPipeline pipeline=new MyPipeline(); pipeline.LoopFrames(); pipeline.Dispose(); } } C++ C# Enable Finger Tracking Gesture Callback Data Flow Loops UtilPipeline Class Gesture Recognition “Hello World”
  • 71. Intel Confidential • Multiple processing modules on single input device – Live streaming or file-based recording/playback – Synchronized image (or audio) processing UtilPipeline pp; pp.EnableImage(PXCImage::COLOR_FORMAT_RGB32); pp.EnableImage(PXCImage::COLOR_FORMAT_DEPTH); for (;;) { if (!pp.AcquireFrame(true)) break; PXCImage *color, *depth; color=pp.QueryImage(PXCImage::IMAGE_TYPE_COLOR); depth=pp.QueryImage(PXCImage::IMAGE_TYPE_DEPTH); pp.ReleaseFrame(); } pp.Close(); UtilPipeline Class UtilPipeline-based application Color and depth are synchronized
  • 72. Intel Confidential Speech Recognition: Voice command and control, short sentence dictation, and text to speech synthesis SDK Usage Modes Today 1 1 New usage modes may be added in the future Close-range Depth Tracking (6 in. to 3 ft.): Recognize the positions of each of the user’s hands, fingers, static hand poses and moving hand gestures. Facial Analysis: Face detection and recognition (six and seven point landmark and attribution detection, including smiles, blinks, and age groups) Augmented Reality: Combine real-time images from the camera and close-range tracking from the depth sensor with 2D or 3D graphical images.
  • 73. Intel Confidential Your SDK ‘One-Stop-Shop” intel.com/software/perceptual @PerceptualSDK (Twitter) CHALLENGE INFO DOWNLOAD SDK ORDER CAMERA DOCUMENTS DEMO APPS SUPPORT
  • 74. Intel Confidential Intel® Perceptual Computing Challenge The $1Million 2013 Application Development Contest* Enter Phase 2: perceptualchallenge.intel.com/  Focus: Games, Productivity, Creative UI & Multi-modal  Process: Developers submit working prototypes, panel judged  Two Phases:  Phase 1 (CLOSED): See Winner Showcase at http://goo.gl/EnNHv  Phase 2: March (GDC) to September - $800,000+ in prizes  Categories: Perceptual Gaming, Productivity, Creative User Interface and Open Innovation  Available in 16 countries *Terms and Conditions Apply
  • 75. Intel Confidential Speech Recognition & Dragon Assistant* Perceptual Computing SDK Runtime Speech Recognition Application Drivers & Hardware Dragon Assistant* Dragon Assistant* Engine and Language Pack • Perceptual Computing speech recognition applications require Dragon Assistant* Engine and Language Packs to be installed on target platform • For app developers, Engine and Language Packs are available on SDK download site (THESE ARE FOR DEVELOPER INTERNAL USE ONLY AND NOT TO BE DISTRIBUTED). • For consumers, Dragon Assistant* (with Engine) is expected to available as follows: • Expected to be bundled with Creative* Camera (when available) • Expected to be pre-installed on speech-certified 4th Gen Core Ultrabook devices in late 2013 SDK Speech APIs use the Dragon Assistant* Engine and Language Packs
  • 76. Intel Confidential Sample Snippet (processing) • Declarations import intel.pcsdk.*; PXCUPipeline pxc; int[] cm = new int[2]; //color map dimensions int[] dm = new int[2]; //depth map dimensions short[] buffer; Pimage rgb, depth;
  • 77. Intel Confidential Sample Snippet (processing) • Initialization void setup() { pxc = new PXCUPipeline(this); if(!pxc.Init(PXCUPipeline.Mode.COLOR_VGA|PXCUPipeline.Mode.GESTURE)) println(“Error initializing PerC SDK”); if(pxc.QueryRGBSize(cm)) rgb = createImate(cm[0], cm[1], RGB); if(pxc.QueryDepthMapSize(dm)) { buffer = new short[dm[0]*dm[1]]; depth = createImage(dm[0], dm[1], RGB); } size(640,480); }
  • 78. Intel Confidential Sample Snippet (processing) • Main Loop void draw() { if(pxc.AcquireFrame(false)) { pxc.QueryRGB(rgb); pxc.QueryDepthMap(buffer); pxc.ReleaseFrame(); } RemapDepth(); image(rgb,0,0,320,240); image(depth,320,0); }
  • 79. Intel Confidential • Color streams  RGB24 640x480 25fps, 30fps  RGB24 640x360 25fps, 30fps  RGB24 1280x720 25fps, 30fps • Depth streams (16-bit integer, 0-32000)  320x240 25fps, 30fps, 50fps, 60fps  UVMAP (Depth  Color)  Confidence Map (16-bit integer) • Vertices streams (real world coordinates in 3D fixed-point integers) • Audio streams (At least 2-array MIC)  44.1KHz mono/stereo Camera Streams Visual Computing Products
  • 80. Intel Confidential Image Conversion Visual Computing Products RGB24 RGB32 NV12 YUY2 GRAY RGB24 Y Y Y RGB32 Y Y Y NV12 Y Y Y YUY2 Y Y Y Y Y GRAY Y Y Y Y DEPTH Y VERTICES Y For instance, raw DepthSense color image format is RGB24, with AcquireAccess(PXCImage::ACCESS_READ, PXCImage::COLOR_FORMAT_RGB32, &data) SDK framework will convert color image data from RGB24 to RGB32