Git Product home page Git Product logo

pointclound_skeleton_rootsystem_py's Introduction

skeletons-from-poincloud

This repository contains two implementations of finding skeletons from pointcloud data in Python.

Skeltree

This implementation is from this paper.

Workings:

  1. It divides the the the space containing the points into boxes and connects boxes which have points which seem to be part of the same object.
  2. Then it reduces the connections trying to maintain the general direction of the connection (the directionof the connection being in either x,y or z direction).

L1-Medial-Skeleton

This algorithm is only implemented partially, here a link to the paper.

Workings:

  1. It selects a random set of points (we will call centers) from the total number of points and iteratively moves these points towards the medial center of the points in the neighborhood but adding a 'repulsion force' for other centers close by.
  2. Gradaully increasing the neighborhood size, this results in the centers lining up.
  3. Then it tries to connect (make branches of the skeleton) for the centers which line up nicely. The criteria for 'lining up nicely' is based on the eigenvectors of the set of points in the respective neighborhoods.
  4. It uses several complicated implementation procedures (here is their c++ implementation to connect different branches.

Step 3 and 4 are complicated to implement properly and are not well explained in the paper and therefor eventuelly I quit working on this. I had a try at this which can be seen by setting the variable try_make_skeleton to True

Using the code

Both files L1-skeleton.py and skelTree.py will by default use the provided pointclouds in Data and should plot the outputs. Simply run python 'one of the files' and all should be good.

In both implementation one can adjust the number of centers or number of boxes used or import a different pointcloud.npy file at the start of the main. Search: "__main__": .

Requirements

The following python packages are used:

  • pptk
  • matplotlib
  • scipy
  • pickle

pointclound_skeleton_rootsystem_py's People

Contributors

marcschotman avatar

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.