Tuesday, October 23, 2012

Candescent NUI [20148]

I've uploaded a new version of Candescent NUI [20148].

You can download it here [binary] or [source].

Upgrade to Kinect SDK 1.6

I've updated the dll in the lib folder to the new version. No other changes were necessary.

IDisposable for IDataSourceFactory
IDataSourceFactory now implements IDisposable (call Dispose() instead of DisposeAll())

Near Mode Optional

The near mode is now optional (the Kinect SDK DataSourceFactory now takes an optional parameter in the constructor.

this.dataSourceFactory = new SDKDataSourceFactory(useNearMode: false);

And...  stay tuned for some other news! :-)


  1. your work is cited by some papers, do you know about that?



  2. Hi Tcboy

    Thanks for the links! I didn't know that. The first article has a nice summary of how the algorithm works.

    The second link doesn't work unfortunately...

    - Stefan

  3. Hi, great work! In Core\Shape\DepthMap.cs (http://candescentnui.codeplex.com/SourceControl/changeset/view/20148#228884), in FillRate { ... for (int x... { for (int y... , I wonder whether IsSet(y,y) is correct or should be IsSet(x,y).

  4. Hi Anton


    Yes, that looks like it's obviously wrong. I'll correct it!

    - Stefan

  5. https://dl.dropbox.com/u/18371015/06269439.pdf

  6. some how i think she was just using your application without much improvement
    i think you deserve more credits for that
    but she didnt even informed you...

  7. Hi TcBoy

    Thanks for the download!

    Actually I've exchanged some e-mails with Yi Li. I gave her permission to publish papers that are based on my project and the reference to the project site is okay, too. I didn't write any papers myself, so that's okay.

    She promised to send me a draft of the paper, but unfortunately that never happened.

    - Stefan

  8. Hi stefan..
    currrently my final year project is about develop an interactive surface that interact with finger tips. i want to ask if u can help me tell how to implements your hand tracking in my project. some how i dont know where to ask. i totally lost. if kindly u can give some tips for the touch detection.
    which is better using openni or kinect sdk? which one a lot easy and had many tutorial to refer?

    hope to receive ur feedback soon.
    u can email me at mriduwan@gmail.com


  9. Hi zach

    If you have a Kinect for Windows hardware you should use Kinect SDK, if you have a Kinect for Xbox you should use OpenNI. You can use Candescent NUI with both (given the right hardware).

    You should start by downloading it and then having a look at the samples project.

    - Stefan

  10. Hi. how do i make this work on 32 bit? thanks

  11. Hello Stefan.

    I just want to ask.. Did you use Open CV or Emgu CV in this project? because i'm working on something like this with Kinect+Emgu and I'm really having a hard time. I hope you could help me. Thank you very much.

  12. @klomster
    You could download the source and compile it yourself. Just replace the DLLs in the lib folder with the 32 bit versions and set the project output to x86.

    I didn't use any 3rd party graphics library (pure .NET + OpenNI / Kinect SDK)

  13. This comment has been removed by the author.

  14. hey stefan..

    thank for answering my question.

    now i already started my project. but i have some PROBLEM to use your finger tips detection to enable me to control window apps such paint. i want to ask u that how can i use your finger tips detection to control windows. did i need to use an third party driver such multi-touch vista. secondly, i got no idea how to develop the multi-touch apps such as your image manipulation. did u got an tutorial that i can refer with..
    hope that u can help me.

  15. For controlling windows please have a look at the project CCT.NUI.MouseControl

    There is also a sample for MultiTouch in CCT.NUI.WPFSamples (TouchWindow)

  16. hey stefan..

    im zach, i want to ask how to enable mouse control to detect multi-touch from finger tips in window. i want to use mouse control to detect multiple finger point and use it in window apps such as paint. can help me give same sample? that translate fingertips point into window.
    thank you.

  17. The multi-touch sample only works in applications you write yourself.

    The mouse control sample uses Win32 functions to control the mouse, which can't be used for multiple touch points.

  18. hi stefan..

    i want to ask how to change the video control size in wpf sample. your using 640x480 currently. i to reduce it to 320x240.

  19. hello stefan..

    sory for interupt..but i want to ask..can i specific kinect multitouch point in KinectMultiTouchDevice.cs to trigger with the z-point value..

    urgent..need ur help..

  20. For OpenNI you can change the resolution in config.xml,
    for KinectSDK you can change it in the class SDKDataSourceFactory.

    About triggering touch at a specific range:
    You can for example change Minimum and Maximum Depth Threshold in ClusterDataSourceSettings. Or you could add a filter in the class KinectMultiTouchDevice.

  21. if i just want to resize the window..and make another window in same xaml file..how? i want a window with 640x480 and 320x240 size..want to have both..how can i manipulate the video control. other thing..how can i specific touch gesture for example like flick, pan, rotate based on number of finger.
    thank in advanced.

  22. Hello,stefan..
    i ran your code and find i can detect my finger only if stand at one meter.I want to detect finger When stand at about two meters away.
    hope that u can help me.

  23. http://yanwen.us/docs/kinect.pdf

    found some random paper using your work
    I didnt read it though
    Not sure whether if he cited you, or did not give you any credits.

  24. Hi TcBoy

    Thanks for the paper! They are clearly using my code and there's no reference to me or my project in the paper. And they are claiming this to be their work:

    "Different from any existing approaches, our methods are
    based on inexpensive commodity depth sensor such as Kinect
    or Xtion, and our methods do not require any additional tools,
    databases or machine training process. Furthermore, not only
    are we able to detect the position of palms and fingertips, but
    also we can find the direction of each finger correctly, so that
    users can acquire more comprehensive gesture information."

    That's what I'd call plagiarism.

    - Stefan

    1. Hah, I didn't have time to read through it yet.
      Will read it later~

      but the original link I pasted here seems to be down
      Luckily, I found it in IEEE Xplore library
      And luckily I can access it via my university network.


      Anyway, are you going to pursue on this matter?
      Or just ignore it?

    2. A quick glance on the paper and I noticed several things
      1) As Chinese, their writing skill and English level is considered not bad.
      2) While they clearly using your code, but they did provide explanation on the techniques, like K-means and Convex Hull. And they provide some mathematical equations to make the paper seems professional.
      3) I am not sure why they need the skin color hand segmentation part (section 2A). It is their own technique, but it seems no benefits at all.
      First they extract skin color objects, and then from these skin objects, they find the nearest one from the sensor. (they should just skip the skin part, and straight away find the nearest objects)
      4) The rest should be just using your code. (Did your code works like what they explain in Section 3A & 3B?)

      Since your code is open source (BSD license), they can pretty much do anything with it as long as they do not distribute it.
      But they should at least give you credits for that. =(

  25. Hi TcBoy

    Yes, my code works exactly like they describe it. Minus the skin detection part. You can easily look up how a K-means or Graham scan algorithm works.

    The open source license is one thing. But you've also got rules for academic publishing which they violated.

    I wrote them an e-mail telling them to add a reference. One of them answered and told me he did so. Since then this gives the 404: http://yanwen.us/docs/kinect.pdf

    I don't know if it's possible to change a document when it's been added to the ieeexplore site.

    - Stefan

  26. This comment has been removed by the author.

  27. As far as I know, I think it is NOT possible to change a published paper.
    The only possibility is to add some kind of Errata.
    But different publisher may have different rules... so that's the tricky part.

    If you need the PDF from ieeexplore:

  28. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6507660
    This paper did mention "Candescent NUI" in one of his sentence, but did not add any reference
    I actually found this paper because it cited that paper did not cited you

    If you don't have access to ieeexplore then let me know

  29. Hi TcBoy

    It would be nice if you could send it to me, I don't have access.


    1. https://dl.dropboxusercontent.com/u/18371015/06507660.pdf

  30. http://scholar.google.com/scholar?q=candescent+nui&btnG=&hl=en&as_sdt=0%2C5

    enjoy, most of them are downloadable

  31. http://www.iplab.cs.tsukuba.ac.jp/paper/international/lee_hcii2013.pdf

    did you read this paper?
    the UI looks familiar...
    this paper is published in a top-tier conference..... (HCII)

  32. hi Stefan, previously I showed you a paper that did not give you any reference and credits.
    What happened next?
    Did you contact the journal committee?

  33. Hi TcBoy!

    Thanks for your updates, I really appreciate it!

    I'll answer your questions tomorrow via e-mail.


  34. Hello,I have downloaded the code,thank you very much!But..I can not use it.I think it less a Main function,but I do not know how to write.Would you please help me? It is my mail" fionazhangchina@163.com".Thank you!

  35. I am using your code but it detects the hand withing 1-1.5 meter. I need to make it approx 3 meter