Kinect Fusion is a revolutionary algorithm originally proposed by by Newcomb et. al., that they developed with the co-operation of Microsoft, to work with the Kinect sensor. Taking an excerpt from the original paper, it can be defined as follows:
… an accurate real-time mapping of complex and
arbitrary indoor scenes in variable lighting conditions, using only a
moving low-cost depth camera and commodity graphics hardware.
Microsoft provides the algorithm as part of the Kinect SDK. To make use of the algorithm, there are examples (called the Kinect Fusion Explorer WPF and D2D, for C# and C++ examples respectively) bundled with the SDK in C++ and C# that can be used to develop any application for 3D scene reconstruction and 3D mapping, using the Kinect sensor. However, navigating and making sense of the (roughly 3,800 lines of) code is a bit of a monumental task. Understanding how the functions are arranged and use the Kinect Fusion dll’s is extremely important in developing an understanding of the algorithm prior to implementation.
During my research, I developed a complete flow chart of the code, in order to visualize the entire Kinect Fusion Explorer applications, along with the function calls, inputs taken and outputs rendered on screen (or saved in a file). This helped me a lot in order to understand the Kinect Fusion process flow, and edit it according o my own requirements for my research work.
The developed process flow chart is in two pages, and is given below (click for full size image, or download the complete flow chart in PDF). Feel free to use it for your understanding, or any other use. However, i would appreciate if a citation to this blog post, or my web page is given.
The Function calls used in the example code are given in red. Each block summarizes the use of that function.
Lastly, for all the people who consider working on Kinect Fusion as a daunting task, here are a few words of wisdom that really helped me get started 🙂