This git contains a reimplementation of the Paper ( Adaptive feature-conserving compression for large scale point clouds. It is a practical implementation of a bilateral filtering method that takes multiple point properties into account: (Position, Normals, Colours, Intensity, ... ). In contrast to other compression approaches, this is a lossy compression (e.g. downsampling).
The main idea is to not modify the behaviour of the point cloud in engineering tasks and fixed workflows while reducing the time and computational requirements.
If you just want to test this tool, a docker reduced docker is available:
docker run -v {local_input_folder}:/in -v {local_output_folder}:/out eickeler/pointcloud_optimizer -i /in/{input_filename.ply} -o /out/{output_filename.ply} -r 0.4
{local_input_folder} --- local input folder of the file you want to compress. Use $(pwd) for current directory.)
{local_output_folder} --- local output folder (take care the tool will just overwrite existing data without notice)
{input_filename.ply} --- filename including the suffix. For now, only ply is supported
{output_filename} --- filename including the suffix
Warning:
If you execute this tool in a wsl2 (mounting) context, the io-performance will be very low. Reading and writing might take a while > 1000s.
short | option | description | default |
---|---|---|---|
-i | --input_path | input path [*.ply] | - |
-o | --output_path | output path [*.ply] | - |
-c | --config_path | path to a given configuration file. Non-existing attributes will be taken from doc/default.json | doc/default.json |
-r | --compression_ratio | remaining points factor | - |
-p | --points | remaining points count | - |
- | --update_cost | Writes the cost as scalar filed | false |
- | --estimate_normals | Estimate normals | [knn=5] |
- | --version | Displays version information and exits. | - |
A full development environment based on debian bullseye is available. After starting up the docker you will be able to connect via port localhost:2243. This can be used by your favorite IDE (Clion).
git clone https://github.com/FelixEickeler/cms_pointcloud_optimizer.git
git submodule init
cd cms_pointcloud_optimizer/docker
Change the docker-compose.yml, volumes if you need to change mounts or want to change the ports. To start the docker built / run:
UUID="$(id -u)" GID="$(id -g)" docker-compose run cms_optimizer_dev
This command might take a significant amount of time. So be sure to grab a coffee.
To start the docker as daemon (development purpose):
UUID="$(id -u)" GID="$(id -g)" docker-compose up -d cms_optimizer_dev
docker-compose exec -u simpl cms_optimizer_dev bash
You now can connect with ssh on port 2243 and the username:simpl, pw: theoldone Do not forget to shutdown the docker after use with docker-compose down
Building should be straight forward:
git clone https://github.com/FelixEickeler/cms_pointcloud_optimizer.git && cd cms_pointcloud_optimizer
git submodule init && git submodule update
mkdir _build && cd _build
cmake ..
make -j 8