Sunday, July 17, 2011

Candescent NUI Release Notes (8638)

There is a new release of Candescent NUI on CodePlex.

Changes
  1. Replaced xn.Point3D with CCT.NUI.Core.Point
    This makes most of the code independent from OpenNI
  2. Introduced an optional maximal cluster depth setting
    The default ist 150mm. The hand should not take up more than 15cm depth so the rest (of the arm) is filtered.
  3. Fixed a bug that prevented the convex hull from drawing
  4. Improved the finger detection algorithm (less false positives)
  5. Increased speed
  • Clustering 7ms -> 6ms
    (15% improvement)
  • Hand and finger detection 16ms -> 12ms
    (25% improvement)
Get the source or binary version.

    8 comments:

    1. Been busy. can't wait to get to this next week. I still have to make something out of this soon. can you add a funtionality that scans only a smaller area than the entire screen for hands? this way we can use the SDK to speed it up by looking for areas awound the hand while we're motion tracking the skeleton. also, how adaptive can we get with the distance?

      ReplyDelete
    2. I think this should be possible, I'll write a new clustering data source that allows to specify filter volumes (three dimensional areas) and only points in these volumes are processed.

      ReplyDelete
    3. That's great news thanks. we will be able to merge both your SDK and OpenNI and also, I need to integrate OpenCV for face detection / recognition.

      ReplyDelete
    4. have you tried this library? I've used it before for object recognition - but with the point cloud data it can be far more effective.

      http://www.chrisevansdev.com/computer-vision-opensurf.html

      ReplyDelete
    5. No, I didn't know that library, I'll have a look at it if I find time.

      Will you use depth data from OpenNI or the SDK?

      ReplyDelete
    6. Jay, have a look at the VolumeFilterClusterDataSource in the Samples project in changeset 8798. It allows you to add filter volumes. Only points in one of these will be used for clustering.

      Example:
      dataSource.AddVolume(new Volume(300, 0, 0, 340, 480, 10000));

      This will restrict clustering to about the right half of the 3D space the kinect sees.

      ReplyDelete
    7. Still haven't found time to work on it. i'll be moving back to OpenNI in a bit and will start using that. will let you know when I try it out. should be next week.

      ReplyDelete
    8. Looking forward to see what you'll do with it.

      ReplyDelete