This repo implements a compatibility wrapper for the L1-Skeletonization method atop https://github.com/HongqiangWei/L1-Skeleton, allowing for .ply files to be processed into Cloud Volume skeletons. L1-Skeletonization is a robust and efficient point-cloud based method, and may be useful as an alternative to volumetric methods such as Kimimaro.
- Build the container using
docker build -t pointcloudl1 - < Dockerfile
- The program can be run interactively/graphically by forwarding a X-Server socket into the container (run the
PointCloudL1binary with no flags); see jasonkena#3 (comment)
- Generate the
.skelfile for any isotropic.plyby running
./pointcloudl1.sh <ply input path> <skel output path> <path to config json>
l1_skeleton.pyprovides various convenience functions to convert thenparrays into.plyfiles,.skelfiles into Cloud Volume skeletons, a Python function to wrap the call to the shell script, etc.generate_skeleton.pyprovides an example of how to run multiple skeletonization jobs concurrentlyviewer.pydemonstrates how to visualize the point clouds and skeletons
The two most important settings are Down Sample Num (which specifies the number of points to approximate the skeleton) and Init Radius Para (specifies the initial size of the expanding sphere). The GUI automatically calculates reasonable settings for Init Radius Para, but the CLI requires you to manually specify it.
In practice, I keep Init Radius Para constant and downscale the input point cloud by an appropriate factor.
- Adding random noise to the input point cloud aids the convergence of the skeletonization on "barely-disconnected" components; see this
- The repo can be compiled natively on Arch Linux; see jasonkena#2
Please cite the original paper:
@article{huang2013l1,
title={L1-medial skeleton of point cloud.},
author={Huang, Hui and Wu, Shihao and Cohen-Or, Daniel and Gong, Minglun and Zhang, Hao and Li, Guiqing and Chen, Baoquan},
journal={ACM Trans. Graph.},
volume={32},
number={4},
pages={65--1},
year={2013}
}
