Sunday, April 1, 2012

Candescent NUI 14079

The new version can be downloaded here: [binary] or [source]

I've also changed the status from Alpha to Beta. On April 18th it will be one year since I've uploaded Candescent NUI to Codeplex! :-)

Filtering (some) false positives
The FingerPoint object now has a FrameCount property that tells you how many frames the finger is visible (this is used to filter some false postives and prevent fingers from disappearing in a frame)

New settings for the hand data source
int FramesForNewFingerPoint  (default 3)
int FramesForDiscontinuedFingerPoint (default 2)
These define how many frames a finger must be visible to be reported through the interface. This introduces a bit of lag (66ms) but prevents some false positives. Can be set to 0 to turn off.
 
Thread for Kinect SDK
Hand detection is now done in a separate thread for Kinect SDK (depth frames are put in a queue and then processed)

WPF samples for Kinect SDK
Enabled WPF samples for Kinect SDK. There are some performance issues though, and the interface is shifted in the pin code interface

Other
Fixed cluster layer in WPF samples

24 comments:

  1. it would be nice if this works with kinect xbox 360 ..but good job

    ReplyDelete
  2. @TcBoy: Thanks!

    @Anonymous:
    It does "work" with the Kinect for XBOX, if you comment out this line in KinectSensorAdapter.cs (or if you use OpenNI):
    //this.sensor.DepthStream.Range = DepthRange.Near;

    Since the Kinect for XBOX with Kinect SDK does not support the near mode, you'll only be able to detect the hand and fingers between 800 - 900mm, which is a very narrow band. Farther away than 900m it's hard to distinguish the fingers at 640x480.

    ReplyDelete
    Replies
    1. hey can you specify me how use this command with kinect xbox 360 DepthStream.Range=DepthRange.Default because the program dond work with this command and i need use it..

      Delete
  3. Dear Stefan,

    can you tell me, how many hands can be tracked simultanesously?

    Thank you in Advanced.

    ReplyDelete
  4. Hi Miu

    Default is 2, but you can increase the setting ClusterCount in the class ClusterDataSourceSettings to the max. number of hands you expect.

    - Stefan

    ReplyDelete
  5. Hi Stefan,

    thank you for your fast answere.

    I have changed the ClusterCount to 3, but it doesn't seem to work fluently. There is a big delay between my hands and the yellow hands in the app.

    Do i have to set some other Setting to make it work?

    Everything works fine with 2 hands.

    Thank you again.

    ReplyDelete
  6. Haven't tried more than two hands for a a long time, I'll look into it.

    ReplyDelete
  7. This would be great, if it works with >6 Hands. Maybe you have to invite some friends to test it;-)

    ReplyDelete
  8. Hi Stefan,
    WE are building an application where we would be using finger detection, so there is any possible way of increasing the threshold so that the whole application runs even when the user is at a certain distance from kinect instead of being closer to it , only for finger detection.

    ReplyDelete
  9. Hi Anonymous

    There are not enough pixels at distances > 1 meter for the algorithm to work reliably.

    - Stefan

    ReplyDelete
  10. CCT.NUI (16705)
    CCT.NUI.MouseControl
    can't create any node of the requested type!

    ReplyDelete
  11. Having some proplems. Same as above guy. can't create any node of the requested type!

    ReplyDelete
  12. Did you install NITE? Must be a problem with the installation.

    ReplyDelete
  13. hi
    run this posion:
    “sensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30) ”
    it is error:"The feature is not supported by this version of the hardware"
    I do not know the Reason。
    please tell me。

    ReplyDelete
  14. Sorry I would like to ask....
    How do I know in the program the initial hand point coordinates (x, y, z) of the point of it?
    Forward to your reply and thank you very much!

    ReplyDelete
  15. Sorry I would like to ask....
    How do I know in the program the initial hand point coordinates (x, y, z)?
    Forward to your reply and thank you very much!

    ReplyDelete
  16. Hi bear

    You can register for an event that is raised whenever a hand is detected. The initial coordinates would then be the coordinates for the first time the event is raised (you'll get a hand id so you can determine if the event is for the same hand).

    - Stefan

    ReplyDelete
  17. Hi, I am using Visual Studio 2010 + Kinect for Xbox 360 + Kinect SDK and tried starting up the CCT.NUI.WPFSamples project, however the error message received is "the feature is not supported by this version of the hardware". Please help, thanks.

    ReplyDelete
  18. Hi, I am using Visual Studio 2010 + Kinect for Xbox 360 + Kinect SDK and tried starting up the CCT.NUI.WPFSamples project, however the error message received is "the feature is not supported by this version of the hardware". Please help, thanks.

    ReplyDelete
  19. @klomster:
    It does "work" with the Kinect for XBOX, if you comment out this line in KinectSensorAdapter.cs (or if you use OpenNI):
    //this.sensor.DepthStream.Range = DepthRange.Near;

    Since the Kinect for XBOX with Kinect SDK does not support the near mode, you'll only be able to detect the hand and fingers between 800 - 900mm, which is a very narrow band.

    ReplyDelete
  20. Hi,Stefan
    I'm using VS2010 with Kinect for XBOX and Kinect SDK.
    I'm trying to count number of my right hand's fingers and display it in label control when using CCT.NUI.Samples.ImageManipulation.
    Would you mind telling me Which parameter do I have to refer?

    ReplyDelete
  21. Hi rymd Ryo

    It's not possible to tell if the hand is the left or right one.

    But you can access the finger count in the method UpdateHandTrackData in the ImageForm like this:

    newHand.FingerCount

    - Stefan

    ReplyDelete
  22. Hi stefan

    How to comment the line //this.sensor.DepthStream.Range = DepthRange.Near;

    I am getting an warning message "Changes to 64 bit applications are not allowed."

    - Ganapathy

    ReplyDelete