Polatory is a fast and memory-efficient framework for RBF (radial basis function) interpolation, developed by GSI Co. Ltd.
NOTE: This is a pre-release version. APIs subject to change without notice.
Features | License | Building | Contribution | Module Index | Acknowledgements
- Fast spline surface reconstruction from 2.5D/3D point cloud
- Fast interpolation of 1D/2D/3D scattered data (kriging prediction)
- Meshing isosurfaces
- Supports large number (millions) of input points
- Supports inequality constraints
Polatory runs on x86-64 processors and continuously tested on the following platforms.
OS | Toolchain |
---|---|
Ubuntu 16.04 LTS | GCC 5.4 and Clang 3.8 |
Ubuntu 16.04 LTS | GCC 7.3 and Clang 6.0 |
Windows | Visual Studio 2017 |
Kriging via RBF Interpolation (Benchmark)
Polatory can perform global kriging prediction via RBF interpolation. Although different terminology is used, both methods produce the same results. Here is the correspondence between kriging and RBF interpolation:
Kriging | RBF interpolation |
---|---|
Prediction | Interpolation (fitting + evaluation) |
Covariance function | RBF |
Nugget effect | Spline smoothing |
Simple kriging | Interpolant with no polynomial |
Ordinary kriging | Interpolant with polynomial of degree 0 |
Universal kriging | Interpolant with polynomial of degree >= 1 |
Weights | (Not computed) |
Standard errors | (Not computed) |
Rapidly decaying covariance functions are not supported in the current version, such as the spherical and the Gaussian models. The spherical model can be substituted by a similar one named cov_quasi_spherical9
.
Polatory is available under two different licenses:
- GNU General Public License version 3 for non-commercial use
- Commercial license (please contact at mizuno(at)gsinet.co.jp)
-
Install build tools
On Ubuntu 16.04 LTS, CMake >= 3.9 must be installed manually.
sudo apt install build-essential cmake git ninja-build
If you use Clang,
libomp-dev
is required.sudo apt install clang libomp-dev
-
Download and install Intel(R) MKL.
See https://software.intel.com/articles/installing-intel-free-libs-and-python-apt-repo for details.
cd wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB -O - | sudo apt-key add - sudo sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list' sudo apt update sudo apt install intel-mkl-64bit-2018.3-051
-
Install Eigen
sudo apt install libeigen3-dev
-
Install Google Test
git clone https://github.com/google/googletest.git cd googletest mkdir build && cd build cmake .. -GNinja ninja sudo ninja install
-
Install Ceres Solver
sudo apt install libgoogle-glog-dev cd git clone https://ceres-solver.googlesource.com/ceres-solver cd ceres-solver mkdir build && cd build/ cmake .. -GNinja -DCMAKE_LIBRARY_PATH=/opt/intel/mkl/lib/intel64 -DGFLAGS=OFF -DLAPACK=ON ninja sudo ninja install
-
Install FLANN
sudo apt install libflann-dev
-
Download and build Boost
cd wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.bz2 tar xjf boost_1_67_0.tar.bz2 cd boost_1_67_0 ./bootstrap.sh ./b2 install -j8 --prefix=.
-
Build polatory
cd git clone https://github.com/polatory/polatory.git cd polatory mkdir build && cd build cmake .. -GNinja -DBOOST_ROOT=~/boost_1_67_0 ninja
-
Install Visual Studio Community 2017
From the Workloads tab, select the following item.
- Desktop development with C++
From the Individual components tab, select the following item.
- Code tools > Git for Windows
-
Install libraries with vcpkg
cd /d C:\ git clone https://github.com/Microsoft/vcpkg.git cd vcpkg bootstrap-vcpkg.bat vcpkg install boost ceres flann eigen3 gtest --triplet x64-windows
To update vcpkg and installed libraries, run the following commands:
cd /d C:\vcpkg git pull bootstrap-vcpkg.bat vcpkg update vcpkg upgrade vcpkg upgrade --no-dry-run
-
Build polatory
Open Start > Visual Studio 2017 > x64 Native Tools Command Prompt for VS 2017.
cd /d %userprofile% git clone https://github.com/polatory/polatory.git cd polatory mkdir build cd build cmake .. -GNinja -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake ninja
We welcome your contributions! You can contribute to this project in several ways:
You can just click the ★Star button to show your interest.
Feel free to file an issue, if you have any questions, feature requests, or if you have found any unexpected results (please include a minimal reproducible example).
You can fork the source tree and make some improvements to it. Then feel free to create a PR. When sending a PR for the first time, please review and sign the Individual Contributor License Agreement.
Module | Description |
---|---|
common | Common utility functions and classes. |
fmm | Fast multipole methods (wrapper of ScalFMM). |
geometry | Geometric utilities. |
interpolation | RBF fitting and evaluation. |
isosurface | Isosurface generation. |
kriging | Parameter estimation and validation for kriging. |
krylov | Krylov subspace methods. |
numeric | Numerical utilities. |
point_cloud | SDF data generation from point clouds. |
polynomial | Polynomial part of RBF interpolant. |
preconditioner | The preconditioner used with Krylov subspace methods. |
rbf | Definition of RBFs/covariance functions. |
third_party | Third party libraries. |
Polatory utilizes the following libraries:
Library | License | Used |
---|---|---|
Boost | Boost Software License 1.0 | In several modules |
Ceres Solver | The 3-clause BSD license | In kriging module |
Eigen | Mozilla Public License 2.0 | In almost all modules |
FLANN | The 2-clause BSD license | In point_cloud module |
Google Test | The 3-clause BSD license | For unit testing |
Intel(R) MKL | Intel Simplified Software License | As a backend for Ceres Solver, Eigen and ScalFMM |
ScalFMM | The CeCILL-C license | In fmm module |