GithubHelp home page GithubHelp logo

tum_cv_challenge_ss23's Introduction

TUM Computer Vision Challenge SS2023

Poster

Usage

The GUI can be started by running main.m. This will open a window where you can choose images of a room. The program will then reconstruct a 3D Model of this room.

More information about the user interface can be found in +gui/README.md

Project structure

+benchmark/
+gui/
  createGui.m
  +cb/
+logic/
  +pointcloud/
  +reconstruct3D/
+plotting/
+util/
config/
README.txt
main.m
pipeline.m

The program started using main.m. All GUI related files are located in the subfolder +gui/. The program logic is located in +logic/.

+util/ includes utility scripts for example for working with the demo data. The code in +plotting/ is for plotting related functions (usually for debugging)

+benchmark/ contains a complete toolset for benchmarking 3d reconstruction and model detection. More information can be found in +benchmark/README.md

Toolboxes:

(command: ver) MATLAB Version 9.14 (R2023a) Computer Vision Toolbox Version 10.4 (R2023a) Image Processing Toolbox Version 11.7 (R2023a) Lidar Toolbox Version 2.3 (R2023a) Medical Imaging Toolbox Version 1.1 (R2023a) Signal Processing Toolbox Version 9.2 (R2023a) Statistics and Machine Learning Toolbox Version 12.5 (R2023a)

Data

Data to large to be transmitted/handled by git is accessible over lrz.de.

  • Test Data: Demo Images and Pointclouds. Download this data into the root of the project
  • Benchmark Data: Results from Benchmarks. Download this into +benchmark/demoData/ to analyse the results

Coding conventions

Code Documentation

Each function should include a comment explaining what it does and defining the input an output parameters. The comment should look as follows:

% FUNCTIONNAME - short description of your function
%   Optional longer description of your function
% Inputs:
%   inputParam: Description of the input parameter
%   optionalParam = "default value": Description of the optional input parameter
% Outputs:
%   outputParam: Description of the output parameter

Naming conventions

Variables

  • Use camelCase for variables.

Functions

  • Use camelCase for functions.
  • No indention inside a function. Only indent if/for/while statements.
  • Use Name=Value for function arguments instead of "Name", "Value". E.g.:
function outputVar = helloWorld(inputVar)
% HELLOWORLD displays hello world and checks if 1 is actually 1
% Inputs:
%   inputVar: some input that is irrelebant
% Outputs:
%   outputVar: some output that is always 1
disp("hello world!");
if 1 ~= 1
  disp("Everything is a lie");
  status = callInCaseOfEmergency(destroyWorld=true)
end
outputVar = 1;
end

tum_cv_challenge_ss23's People

Contributors

danielsanjosepro avatar lole-elol avatar lufixsch avatar mariusghica avatar saminoelazizhanna avatar

Stargazers

 avatar  avatar

Watchers

 avatar

tum_cv_challenge_ss23's Issues

Plane detection

Detect and fit planes in the point cloud in order to detect walls, flor and ceiling

Create a program to create a 3D reconstruction with 2 pictures

Description: Input 2 images with different sizes and calibration matrices. Output: 3D points of the features.

  • Check functions of the CV toolbox to do the task
  • Implement what we did in the homework, but faster and easier with the toolbox
  • Only a prototype is enough, details should come later

Is filtering of the negative points in the z direction necessary?

@danielsanjosepro correct me if I am wrong, but in the function getTriangulatedPointsMultiView both outliers, and negative points in z direction are filtered. When plotting, the y axis is the height and the xz plane represents the ground. But if the points are filtered in the z direction, we lose points, am I right?

This is the change in the code in the function getTriangulatedPointsMultiView:

valid_index = valid_index & (reprojectionErrors < max_reprojection_error);

If the negative points in the z direction are not filtered, I get such a result. This is a sample with 30 images from the delivery area.

3D_Reconstruction_DeliveryArea

To achieve this result I am applying preprocessing, which I will push tomorrow and aggresive denosing would still be helpful, but just by the way.

Create Input Image GUI

  • GUI that should be able to load n images with different formats
  • The formats should be modified if possible, otherwise don't accept them
  • Some feedback to show the user which pictures have been uploaded

Match featureless points

a completely flat wall has no features, so we can match points in flat walls between pictures to generate a more dense point cloud reconstruction.
-> Do something with those areas to generate points in planes

Dense Point Cloud generation

Generate more points and use epipolar geometry to get better feature matching after finishing the 3D reconstrucion

Resizing images lead to a sheared 3d reconstruction

Resizing images shears reconstruction since camera parameters are wrong. Parameters should be scaled as well if that even works.
Delivery area with 2 pictures:
image
Delivery area with 2 pictures scaled by 0.5:
image

3d Model Detection Pipeline

Create modelDetection pipeline which takes a point cloud and returns all useful 3d models for displaying the room

Preprocess Point cloud

Filter outliers and cluster point cloud in order to find useful features

  • remove outliers (zscore)
  • cluster point cloud
  • remove clusters with few points (alternative way to remove outliers)

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.