https://github.com/ucl/scikit-surgerygoicp
https://github.com/ucl/scikit-surgerygoicp
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/ucl/scikit-surgerygoicp
- Owner: UCL
- License: gpl-3.0
- Created: 2020-06-04T16:50:32.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-03-24T13:28:12.000Z (over 4 years ago)
- Last Synced: 2025-07-20T17:05:10.091Z (12 months ago)
- Language: C++
- Size: 1.81 MB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
scikit-surgerygoicp
------------------
[](https://travis-ci.org/github/UCL/scikit-surgerygoicp)
[](https://ci.appveyor.com/project/tdowrick/scikit-surgerygoicp)
Purpose
-------
This is a re-wrapping of the GoICP algorithm in https://github.com/aalavandhaann/go-icp_cython using PyBind11.
`pip install scikit-surgerygoicp`
Working on Ubunutu (Python 3.6, 3.7, 3.8), Mac (3.6, 3.7, 3.8) and Windows (3.6, 3.7)
Usage
-----
Only the below classes have been wrapped:
* GoICP
* POINT3D
* ROTNODE
* TRANSNODE
A simplified usage is shown below. See `Testing/test.py` for a full example.
```
import numpy as np;
from sksurgerygoicppython import GoICP, POINT3D, ROTNODE, TRANSNODE;
def loadPointCloud(filename):
pcloud = np.loadtxt(filename, skiprows=1);
plist = pcloud.tolist();
p3dlist = [];
for x,y,z in plist:
pt = POINT3D(x,y,z);
p3dlist.append(pt);
return pcloud.shape[0], p3dlist;
goicp = GoICP();
Nm, a_points = loadPointCloud('./Testing/Data/model_bunny.txt');
Nd, b_points = loadPointCloud('./Testing/Data/data_bunny.txt');
goicp.loadModelAndData(Nm, a_points, Nd, b_points);
goicp.setDTSizeAndFactor(300, 2.0);
goicp.BuildDT();
goicp.Register();
print(goicp.optimalRotation()); # A python list of 3x3 is returned with the optimal rotation
print(goicp.optimalTranslation());# A python list of 1x3 is returned with the optimal translation
```
Credits
-------
https://github.com/aalavandhaann/go-icp_cython
https://github.com/yangjiaolong/Go-ICP
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 ```-```
replacing `````` with the Github issue number
and `````` 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.