Skip to main content

A template project, to enable people to build nicely structured C++ projects.

Project description

scikit-surgerypclcpp

Build Status Build status

scikit-surgerypclcpp implements image guided surgery algorithms, using PCL, in C++ and wrapped in Python.

scikit-surgerypclcpp is part of the SNAPPY software project, developed at the Wellcome EPSRC Centre for Interventional and Surgical Sciences, part of University College London (UCL).

Features

  • Support for Python Wheels, thanks to Matthew Brett's multibuild.
  • Iterative Closest Point (ICP) algorithm to register two N (rows) x 3 (columns, x, y, z) point sets., using either normal ICP (exact point match), or LM-ICP.
  • Downsampling of point clouds via pcl::VoxelGrid filter.
  • Removal of outlier points from point clouds via pcl::StatisticalOutlierRemoval.
  • Filtering of points using pcl::PassThrough filter.
  • Filter of points using pcl::pcl::RadiusOutlierRemoval filter.
  • Course registration of 2 point clouds, computing surface normals, SIFT Keypoints, FPFH descriptors, RANSAC to match keypoints, then SVD to compute rigid transformation.
  • Generalized Iterative Closest Point (GICP) algorithm to register two N (rows) x 3 (columns, x, y, z) point sets, using surface normals or distance to reject matches.

Look in Code/PythonBoost/sksLibPython.cpp for python method names, and in the containing folder, to see header files with the method signatures.

Caveat

As of 2020-05-19 and Issue 2, there are a few build issues, that are proving problematic, and we have limited time to resolve them.

  • C++ tests are turned off, so currently the CI builds build the python wheel and then runs python unit tests.
  • To turn C++ tests on for CI, add the ctest commands into travis_cmake_build.sh and appveyor.yml and turn -DBUILD_TESTING:BOOL=ON
  • If you turn C++ tests on in the CI build, Mac should work fine, Linux has problems liking to LZ4 due to FLANN 1.9.1 so it was downgraded to 1.8.1, and on Windows, we get multiply defined symbols due to Boost. Good luck fixing Windows/Linux.
  • C++ tests will still default to -DBUILD_TESTING:BOOL=ON in your local build.
  • There was problems with all the templating, so PCL_NO_PRECOMPILE was set in the PCL build and in this project build, and compilation and python unit testing was successful.

So, as of 2020-05-23, Issue 2 was closed, with ICP, Voxel Grid downsampling and Statistical Outlier Removal working. So, unless someone has made changes to the build, and fixed the above points, (at which point they should edit this README file and remove this caveat), then you should assume this caveat is still valid.

Installing

You can pip install the latest Python package as follows:

pip install scikit-surgerypclcpp

Developing

Cloning

You can clone the repository using the following command:

git clone https://github.com/UCL/scikit-surgerypclcpp

Build instructions

Still not for the faint-hearted. It depends if you are a C++ developer familiar with CMake or a hybrid C++/Python developer primarily interested in writing Python extensions.

The simplest advice really is to read appveyor.yml, as this will always be up to date.

Preferred Branching Workflow for Contributions.

We welcome contributions to this project. Please use the following workflow.

  1. Raise issue in this project's Github Issue Tracker.
  2. Fork repository.
  3. Create a feature branch called <issue-number>-<some-short-description> replacing <issue-number> with the Github issue number and <some-short-description> with your description of the thing you are implementing.
  4. Code on that branch.
  5. Push to your remote when ready.
  6. Create pull request.
  7. We will review code, suggest and required changes and merge to master when it is ready.

Licensing and copyright

Copyright 2018 University College London. scikit-surgeryopencvcpp is released under the BSD-3 license. Please see the license file for details.

Acknowledgements

Supported by Wellcome and the EPSRC.

The project was generated, using CMakeCatchTemplate and CMakeTemplateRenamer.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

scikit_surgerypclcpp-0.3.0-cp38-cp38-manylinux1_i686.whl (646.0 kB view hashes)

Uploaded CPython 3.8

scikit_surgerypclcpp-0.3.0-cp38-cp38-macosx_10_13_x86_64.whl (591.2 kB view hashes)

Uploaded CPython 3.8 macOS 10.13+ x86-64

scikit_surgerypclcpp-0.3.0-cp37-cp37m-win_amd64.whl (598.5 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

scikit_surgerypclcpp-0.3.0-cp37-cp37m-win32.whl (510.6 kB view hashes)

Uploaded CPython 3.7m Windows x86

scikit_surgerypclcpp-0.3.0-cp37-cp37m-manylinux1_i686.whl (646.8 kB view hashes)

Uploaded CPython 3.7m

scikit_surgerypclcpp-0.3.0-cp37-cp37m-macosx_10_13_x86_64.whl (587.4 kB view hashes)

Uploaded CPython 3.7m macOS 10.13+ x86-64

scikit_surgerypclcpp-0.3.0-cp36-cp36m-win_amd64.whl (596.3 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

scikit_surgerypclcpp-0.3.0-cp36-cp36m-win32.whl (492.0 kB view hashes)

Uploaded CPython 3.6m Windows x86

scikit_surgerypclcpp-0.3.0-cp36-cp36m-manylinux1_i686.whl (646.8 kB view hashes)

Uploaded CPython 3.6m

scikit_surgerypclcpp-0.3.0-cp36-cp36m-macosx_10_13_x86_64.whl (587.4 kB view hashes)

Uploaded CPython 3.6m macOS 10.13+ x86-64

scikit_surgerypclcpp-0.3.0-cp35-cp35m-win_amd64.whl (596.3 kB view hashes)

Uploaded CPython 3.5m Windows x86-64

scikit_surgerypclcpp-0.3.0-cp35-cp35m-win32.whl (492.2 kB view hashes)

Uploaded CPython 3.5m Windows x86

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page