Giter Club home page Giter Club logo

fesd's People

Watchers

 avatar

fesd's Issues

Filter circles

We need to filter the circles for their correct size for structure detection. We cannot use the OpenCV radius since it is not the accurate radius but rather a projected radius.

Point cloud projection

The point cloud as it currently is does not have a correct projection. Each camera has a different v- and h-fov which needs to be accounted for. Hopefully we can just multiply the position of the point with a projection matrix. Blocks #14

Floor Detection

This Paper describes how to detect Floors, Ceilings and Walls. I need to find a way to detect this using our current data stream model #6 Depends on it!

ImGui Logger

A global log would be nice to have for now you always have to watch the console.

Multi Camera alignment

Align multiple Cameras based on the point-cloud. Once this is done the actual thesis work can begin.

Refactor Color Schemes

Create a class for color schemes and don't store it in the Point class.

Something like this:

static enum class CMAP
	{
		VIRIDIS,
		MAGMA,
		INFERNO,
		HSV,
		TERRAIN,
		GREY
	};

class ColorScheme{
public:
    static void onImGuiUpdate(CMAP &cmap);
    static std::array<float, 4> getColorFromDepth(float depth, float depth_scale, CMAP cmap);
}

Or maybe more abstracted:

 static std::array<float, 4> getColorFromCmap(CMAP cmap, float val, float min, float max);

Multi Camera Pointcloud not working

When opening a point cloud for 2 cameras only one is showing. The slowdown is still slowing down significantly and the memory usage rises but only one is showing. This blocks #14

Record Depth stream

A major feature is the recording of the depth stream for future playback.

Remove the need for Balls

Balls are useless. Lets do something else. Lets just detect the floor for every camera. With the floors we can determine the height of the cameras. Using the point clouds use some fancy ransac or something to find salient points.

Implement ImGui

Quite a low priority, but implementing ImGui might help tweak the parameters and will need to be done anyways.

Pointcloud shader

A lot of the pointcloud code can be moved into the shader. This is not high priority, since the recordings can be created without using pointclouds and therefore good results can be achieved. However, when playing back the recordings, this leads to delays and synchronisation problems.

A point in a pointcloud is basically just a function for the distortion of the hfov and vfov which is applied to the depth. In the Center of the image wont be any distortion and therefore it will just reflect the depth.

The current vertex shader looks like this:

#version 330 core

// Positions/Coordinates
layout(location = 0) in vec3 aPos;
// Colors
layout(location = 1) in vec3 aColor;

// Outputs the color for the Fragment Shader
out vec3 v_Color;

// Controls the scale of the vertices
uniform float u_Scale;

// Inputs the matrices needed for 3D viewing with perspective
uniform mat4 u_MVP;

void main()
{
	// Outputs the positions/coordinates of all vertices
	gl_Position = u_MVP * vec4(u_Scale * aPos, 1.0);
	// Assigns the colors from the Vertex Data to "color"
	v_Color = aColor;
}

For each vertex I receive the position and the color a new. but in theory I only need to receive the vertex offset and the depth. The color is depth dependend and can be hardcoded within the shader. So the new shader would look something like this:

#version 330 core

// Positions/Coordinates
layout(location = 0) in vec2 aPosFun;
// Depth
layout(location = 1) in float aDepth;
// X sign
layout(location = 2) in bool xSign;
// Y sign
layout(location = 3) in bool ySign;
// Z sign
layout(location = 4) in bool zSign;

// Outputs the color for the Fragment Shader
out vec3 v_Color;

// Controls the scale of the vertices
uniform float u_Scale;

// Edge Length
uniform float u_EdgeLength;

// Inputs the matrices needed for 3D viewing with perspective
uniform mat4 u_MVP;

vec3 getColorFromDepth(float depth);

void main()
{
	// Outputs the positions/coordinates of all vertices
       vec4 pos = vec4(aPosFun.x * aDepth + u_EdgeLength * (xSign ? 1 : -1), 
                       aPosFun.y * aDepth + u_EdgeLength * (ySign ? 1 : -1), 
                                   aDepth + u_EdgeLength * (zSign ? 1 : -1), 
                       1.0f);

	gl_Position = u_MVP * u_Scale * pos;
	// Assigns the colors from the Vertex Data to "color"
	v_Color = getColorFromDepth(depth);
}

vec3 getColorFromDepth(float depth)
{
   // A very long and ugly method
}

Record and Label Data

Record different actions, with different camera setups. For now manually align the cameras and store the alignment, so it can be used to complete possible missing, or wrong skeletons.

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.