50
Connect with your

Connect with your

  • Upload
    misae

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

Connect with your. Hi I’m Justin Weinberg I’m a Carnegie Mellon Graduate Manager Consultant at Sogeti Founder of the North Texas Silverlight User Group. Wow!. 3D Depth Sensors. Microphone Array. Motorized Tilt. RGB Camera. That’s not USB?. You’ll need this. http ://openkinect.org/. - PowerPoint PPT Presentation

Citation preview

Page 1: Connect  with your

Connect with your

Page 2: Connect  with your

• Hi I’m Justin Weinberg• I’m a Carnegie Mellon Graduate• Manager Consultant at Sogeti• Founder of the North Texas Silverlight User

Group

Page 3: Connect  with your
Page 4: Connect  with your
Page 5: Connect  with your
Page 6: Connect  with your
Page 7: Connect  with your
Page 8: Connect  with your
Page 9: Connect  with your
Page 10: Connect  with your
Page 11: Connect  with your

Wow!

Page 12: Connect  with your

Motorized TiltRGB Camera

3D Depth SensorsMicrophone Array

Page 13: Connect  with your

That’s not USB?

You’ll need this..

Page 14: Connect  with your

http://openkinect.org/ http://www.openni.org/

http://research.microsoft.com/kinectsdk/

Page 15: Connect  with your

http://research.microsoft.com/kinect/

http://www.microsoft.com/express

Page 16: Connect  with your

Color Camera Streams

Depth / Depth with Player Streams

Skeletal Tracking

Audio Functionality

http://research.microsoft.com/kinect/

Page 17: Connect  with your

Demo 0Hello Tilt

Page 18: Connect  with your

Kinect NUI Big Picture Runtime nui = new Runtime();

nui.VideoFrameReady += ...

nui.VideoStream.Open(...)

void nui_VideoFrameReady(object sender,  ImageFrameReadyEventArgs e)   {                          //Process e.ImageFrame.       }

Page 19: Connect  with your

1 2 3 4

9 10 11 12

8765

13 14 15 16

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

ImageFrame.Image.BitsWith camera data

you might expect Byte[,]

What you actually get is Byte[]:

Page 20: Connect  with your

BGR32 Formatwidth in pixels

heig

ht in

pix

els Stride: Bytes Per Row

Bytes per pixel * Width

4 Bytes Per pixel

Byte Array:

Page 21: Connect  with your

Demo 1Hello Colorful World

Page 22: Connect  with your

Depth data500mm 500mm500mm 500mm

2000mm2030mm2010mm2000mm

500mm500mm500mm2500mm

Page 23: Connect  with your

Depth dataMax resolution for raw depth data is 640 x 480

2 bytes per pixel of depth data

distance(0,0) = byte0 | byte1 << 8

11011110 pixel pixel pixel

0000101011101010000001011110101000001110

11011110

00001010

Page 24: Connect  with your

Demo 2Depth

Page 25: Connect  with your

Depth + Player Data500mm 500mm500mm 500mm

2000mm2030mm2010mm2000mm

500mm500mm500mm2500mm

player 1

player 1

player 1 player 1player 1

player 1 player 1

Page 26: Connect  with your

Depth + Player DataMax resolution is 320 x 240

11011001 00001011

Player: byte0 & 7

00000001

0000011111011001

&

Depth(0,0) = byte0 >> 3 | byte1 << 5

Still 2 bytes per pixel

But player is last 3 bits in first byte

11011 00001011001

Page 27: Connect  with your

Depth + Player Indexdistance

In mm11 bits per pixel

distance In mm

distance In mm

11011001 XXXX0111player player player

distance In mmplayer

distance In mmplayer

distance In mmplayer

distance In mmplayer player

distance In mmplayer

distance In mm

distance In mm

player

distance In mmplayer

distance In mmplayer

000 = No player001 = Player 1010 = Player 2

11011001 XXXX010111011001 XXXX0111

Page 28: Connect  with your

Demo 3Depth + Player Data

Page 29: Connect  with your

Skeletal Tracking

Page 30: Connect  with your

skeletonFrame.Skeletons                                where skeleton.TrackingState == SkeletonTrackingState.Tracked

skeletonFrame.Skeletons

from skeleton in skeletonFrame.Skeletons                where skeleton.TrackingState == SkeletonTrackingState.PositionOnly

Page 31: Connect  with your

hand_left

wrist_left

elbow_left

shoulder_left

hand_right

wrist_right

elbow_right

shoulder_right

hip_left

head

hip_right

knee_left knee_right

ankle_rightankle_left

foot_left foot_right

hip center

spine

shoulder_center

Skeleton.Joints[JointId enum]Joint.Position (X,Y,Z,W) Skeletons are mirrored

X, Y, Z in left handed cartesian system+Z is out from sensor.W always returns 1 at this moment.

Page 32: Connect  with your

Demo 3Skeletal Tracking

Page 33: Connect  with your

Demo 4Putting Visuals

Together

Page 34: Connect  with your

Kinect Audio

Page 35: Connect  with your
Page 36: Connect  with your

Kinect Audio API

Microphone Array DMO

Implementation

Beamforming and Sound Localization

Features

Page 37: Connect  with your

Beam Forming

Page 38: Connect  with your

Beam Forming-0.875 radians-50 degrees

0.875 radians 50 degrees

.0175 radians

10 degrees

Page 39: Connect  with your

MicArrayModeMicArrayAdaptiveBeam Adaptive beam forming. Raises

beamforming eventsMicArrayExternBeam Your app chooses a beam (0 -10), May be

broke. Use with MicArrayBeamAngle.MicArrayFixedBeam Always use the center beam.MicArraySimpleSum All inputs are used (No beamforming)MicArraySingleBeam Perform beam forming. An internal source

localizer selects the beam.MicArraySingleChan One input is used. Set last 8 bits to choose

the input source.

SoundSourcePosition

SoundSourcePositionConfidence BeamChanged Event

Page 40: Connect  with your

Accousting Echo Cancellation

Page 41: Connect  with your

AEC

bool NoiseFill // Clip removes residual audio but leaves gaps. This fills with noise if true

bool CenterClip // After AEC, some echo residuals will remain. Setting to true removes.

int EchoLength – Sets an adaptive filter to the AEC algorithm (in MS). Recommended values are 128, 256, 512, 1024. For most offices and homes, use 256ms

int FrameSize // Size of a frame in samples Allowed values are : 80, 128, 160, 240, 256, 320. System default for microphone array only is 320All other modes default is 160

int SpeakerIndex – Device index of speaker apply AEC process to

Page 42: Connect  with your

Noise Suppression

Page 43: Connect  with your

Noise Supressionbool NoiseSuppression – True enables, false disables.

Page 44: Connect  with your

Automatic Gain Control

Page 45: Connect  with your

Automatic Gain Control

bool AutomaticGainControl – True enables, false disables.

Page 46: Connect  with your

Demo 5Recording Audio

Page 47: Connect  with your

Audio @!%!#!! Gotchas

Use Microsoft.Speech not System.Speech

Must run in an MTA

AEC SystemModes crash if no speaker output.

Must plug Kinect into Wall

DevicePairGuid / Qualitymetrics = crash

Should run in ThreadMode Priority Highest

Page 48: Connect  with your

Demo 6Speech recognition

Page 49: Connect  with your

Demo 7Kinect Effect

(Thanks SoulSolutions!)

Page 50: Connect  with your

Creative Commons Acknowledgments• Flickr by Ian Lewis• Flickr by major nelson• Flickr by markodesign• Flickr by stephantom• Flickr by Abstract Machine• Flickr By Aixo.co.kr• Flickr By Andresmh• Flickr by Antony Bennison• Flickr by Ars Electronica• Flickr By bm.iphone• Flickr by campuspartymexico• Flickr by Chris Jagers• Flickr By ci_polla Paola Sucato• Flickr by creepyhalloweenimages• Flickr by cvander• Flickr by IMAL.org• Flickr by Institut Douglas• Flickr by Joshua and AmberFlickr by Logon Sakai• Flickr by openexhibits• Flickr by Paul_Clarke

• Flickr by petyr.rahl• Flickr by pt• Flickr by Stilldavid• Flickr by y3rdua• Flickr by yesyesnono• Flickr by yum9me• Flickr by Jeff Howard• Flickr by jhscreenwm• Flickr by Kyle McDonald• Flickr by Morten Rand-Hendriksen• Flickr by Stuart Herbert• Flickr by Visiophone• Flickr by orkomedix• Michael Zöllner and Stephan Huber at the University of Konstanz• Openclip by J_Alves• Openclip by jetxee• Openclip by molumen• Openclip by shokunin• Openclip by Jhnri• Openclip by Machovka• Adafruit image of Hector MartinThanks!!