Skip to main content

Generate orthographic projections from a Point Cloud.

Project description

Orthographic Projector

A Rust-based Python library for generating cubic orthographic projections from point clouds.

Prerequisites

  • Python 3.10 or later
  • rustc 1.77.2 or later
  • pip

Setup

From PyPI

pip install orthographic-projector
# or
python -m pip install orthographic-projector

From source

# Clone this repository
https://github.com/akaTsunemori/orthographic_projector.git

# cd into the project folder
cd orthographic_projector

# Setup and activate the conda environment
conda env create -f environment.yml
conda activate orthographic-projector

# Compile the project into a python module using maturin
maturin develop -r

Usage

import cv2
import numpy as np
import open3d as o3d
import orthographic_projector
import time


def save_projections(projections):
    for i in range(len(projections)):
        image = projections[i].astype(np.uint8)
        image_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
        cv2.imwrite(f"projection_{i}.png", image_bgr)


# Load the point cloud through open3d
PC_PATH = "./examples/redandblack_vox10_1550.ply"
pc = o3d.io.read_point_cloud(PC_PATH)
points, colors = np.asarray(pc.points), np.asarray(pc.colors)

# orthographic_projector parameters
precision = 10
filtering = 2
crop = True
save = True

t0 = time.time()
# The generate_projections function can be used for generating the projections
images, ocp_maps = orthographic_projector.generate_projections(
    points, colors, precision, filtering
)
# The crop parameter could optionally be passed to the generate_projections function,
# but it can also be called after the generation process
if crop:
    images, ocp_maps = orthographic_projector.apply_cropping(images, ocp_maps)
t1 = time.time()
print(f"Done. Time taken: {(t1-t0):.2f} s")

# The save_projections function is just an example intended for visualization of the results
if save:
    save_projections(images)

This example is also available in the examples/example_generate_projections.py folder.

Results

These are the generated projections to be expected from the provided example.

Spoiler Projection 1 Projection 2 Projection 3 Projection 4 Projection 5 Projection 6

References

  • Orthographic projector

    [1] A. Javaheri, C. Brites, F. Pereira, and J. Ascenso, “Joint geometry and color projection-based point cloud quality metric,” IEEE Access, vol. 10, pp. 90 481–90 497, 2022.

  • Source for the example point cloud

    [3] E. Alexiou, I. Viola, T. M. Borges, T. A. Fonseca, R. L. De Queiroz, and T. Ebrahimi, “A comprehensive study of the rate-distortion performance in mpeg point cloud compression,” APSIPA Transactions on Signal and Information Processing, vol. 8, 2019

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated, you can simply open an issue.

License

MIT License


GitHub @akaTsunemori

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orthographic_projector-0.2.0.tar.gz (4.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orthographic_projector-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl (257.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

Details for the file orthographic_projector-0.2.0.tar.gz.

File metadata

File hashes

Hashes for orthographic_projector-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a24de78619120c24f06c439c82d48ad7b9022c21b91f305e93ccb3098d7ba28e
MD5 503b6ac03742b6b394b50f6f48cb4bd6
BLAKE2b-256 fb78d1ef458c1326e5e3118f27f201732859c484ff49cb77f46e73d1437bc4c4

See more details on using hashes here.

File details

Details for the file orthographic_projector-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for orthographic_projector-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 209226af995d12826634971a682d40ae26876105433e35fd7a27ae05ddae0c88
MD5 9941bfe11dcc9712f23cde03808d4068
BLAKE2b-256 11d6e9c7a01b9a0d4c4444052fe6605dc64438b7a46536b3d1d852603019a7df

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page