Giter Site home page Giter Site logo

kosmonaut3d / fusioncompute Goto Github PK

View Code? Open in Web Editor NEW
15.0 2.0 3.0 44.02 MB

Kinect Fusion realized with OpenGL Computer Shaders

License: GNU General Public License v3.0

Makefile 0.33% QML 3.85% GLSL 7.78% C++ 88.03%
compute-shaders computer-vision kinect kinectfusion opengl sdf tsdf-fusion tsdf-volume kifu volume-rendering

fusioncompute's Introduction

Fusion Reimplementation

Overview

This program implements a full Kinect Fusion algorithm, realized in OpenGL with ComputeShaders. It is based on the original paper and the follow up by Microsoft Research.

The algorithm works by processing a stream of depth images and building a coherent model of the full scene by merging all data into a single representation structure continuously in real time, while also providing a highly accurate pose estimation of the camera.

Algorithm Overview

As part of my thesis I implemented all of the core Kinect feature set in OpenGL compute, as well as having most parts implemented as a CPU reference, apart from the SDF integration and reference for ICP, due to performance limitations since the systems only work with a high enough framerate and the naive single-threaded CPU implementation can not keep up.

The program can be controlled with mouse input, using a comprehensive GUI.

Outputs

Locations

The compute shader code can be found in /resources/shaders.

The .cpp source code is located in /src

Getting Started

External Dependencies

The input used is a first-generation Kinect camera, but the algorithm can easily be adapted for any RGB-D input (with known camera parameters).

The application is built upon OpenFrameworks, which is a very thin, easy to use open source platform that is compatible with numerous operating systems and used for general visualization.

For access to data from the Kinect sensor, OpenFrameworks by default supplies a wrapper for libfreenect. The user's system must be setup with the correct open drivers, a guide can be found here: https://openkinect.org/wiki/Getting_Started

The Eigen library is used for decomposition of linear systems and comes pre-installed in /deps/Eigen

For the GUI a simple Dear Imgui wrapper is used, which comes as an openFrameworks addon.

Compilation

For compilation OpenFrameworks has to be installed and the OpenFrameworks Project Generator can then parse the folder and setup the locally used IDE for compilation.

The usual setup is to add the project to

openframeworks/apps/myApps/

For this path configuration there are provided solution files for Windows (Visual Studio 2019) or Linux (QTCreator).

Binaries

You can find Windows binaries linked in the github release.

fusioncompute's People

Contributors

kosmonaut3d avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

fusioncompute's Issues

Should work as the oF Kinect example does?

Hello, thanks for sharing!

Should this work with the first Kinect, right? (Not the newer Kinect One.)
I am trying to make it work on oF 0.11+ / Windows 10 / VS 2022 / debug/release 32/x64.

Also, I assume that uses the same driver as the oF Kinect bundled example?
I mean, that if that Example works, this repo should work too?

I downloaded the release folder into the project and it opens, but it seems like the driver is not detected properly.

image

I am reinstalling the driver (libsub) using the Zdig app as usual, bc now the oF example project is not working either.

In resume, once the oF example works should your repo work too, right?
Or it's using a different driver/approach?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.