GithubHelp home page GithubHelp logo

pose_regularization's Introduction

Total Variation Regularization of Pose Streams

This repository contains the implementation of the method proposed in

@article{esposito2019total,
  title={Total Variation Regularization of Pose Signals
         with an Application to 3D Freehand Ultrasound},
  author={Esposito, Marco and Hennersperger, Christoph and Göbl, Rüdiger and Demaret, Laurent and Storath, Martin and Navab, Nassir
           and Baust, Maximilian and Weinmann, Andreas},
  journal={IEEE Transactions on Medical Imaging},
  volume={38},
  number={10},
  pages={2245-2258},
  year={2019},
  doi={10.1109/TMI.2019.2898480}, 
  publisher={ IEEE }
}

(PREPRINT available here) for the regularization of 6-degrees-of-freedom pose streams, such as the output of a tracking system. The method has the ability to compensate for significant jitter, while maintaining the features of the original signal (e.g. sudden and sharp variations in the movement direction).

This is achieved by minimizing the following functional:

equation

where the equation term penalizes the deviation of the output signal equation from the original signal equation, and equation penalizes large variations within consecutive poses of the output stream. The joint action of the two functionals, balanced by the coefficient equation, allows to find the desired trade-off between the fidelity to the original signal and the regularity of the output.

This implementation includes first- and second-order regularization for the equation term, and a first-order regularizer for equation. Each regularizer can be combined with an L1, L2 or HUBER penalization.

For further details on the algorithm, the reader is referred to the published paper. Practical instructions to use the algorithm, including a brief description of the action of each parameter, is provided in the documentation of each interface (Doxygen for C++, MATLAB help, Python docstrings).

License

This software is released under the LGPLv3 license. Hence, it can be used and included into proprietary software; however, any modification to the code of the library itself must be released publicly.

Usage

The software is implemented in C++. A MATLAB and a Python interface are also provided.

C++

The library can be built using CMake. There are no external dependencies. C++11 is required.

MATLAB

A compile.m script is provided in the matlab/wrapper folder. This script can be executed to compile a mex extension.

After running the compile script, the matlab directory must be added recursively to your path to use the contained functions.

Alternatively, the mex file can be copied together with the scripts into your path.

More details are available in the respective page.

Python

Coming soon as a PyPI package.

Meanwhile, the Cython extension can be built from source and installed as detailed in the respective instructions.

pose_regularization's People

Contributors

marcoesposito1988 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

pose_regularization's Issues

Deep learning

Do you plan to have a pytorch or tensorflow of this function?
So that could be directly minimized as an auxilairy loss inside a network a training time.

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.