Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Point cloud compression for 3d module #23624

Open
1 of 6 tasks
starga2er777 opened this issue May 16, 2023 · 0 comments
Open
1 of 6 tasks

Point cloud compression for 3d module #23624

starga2er777 opened this issue May 16, 2023 · 0 comments

Comments

@starga2er777
Copy link

starga2er777 commented May 16, 2023

Description

The purpose of this issue is to provide a plan outline for the OpenCV GSoC_2023 Ideas4(Point Cloud Compression). This outline will guide the development of our entire project in order to regulate the development process. Any suggestions will be appreciated!

The project is about implementing a point cloud compression algorithm based on the octree. The 3d module in branch 5.x has implemented octree and basic point cloud I/O functions. However, the current octree lacks attributes and functions to realize compression.

A new class will be created in 3d module of branch 5.x to implement all related compression algorithms.

PR Schedule:

Pull requests is planned to be submitted based on the following outline(all PR need code reviews, unit test and documentation):

  • Refactor relevant code in 3d module:

  • Implement basic octree compression (Reference: Octree-based Point-Cloud Compression)

    • Implement transformation between vector-based point clouds and octree-based point clouds
    • Implement entropy encoding & decoding
    • Implement basic octree compression based on octree
  • Implement compression of color attribute (Reference: Compression of 3D Point Clouds Using a Region-Adaptive Hierarchical Transform)

    • Implement color attribute encoding & decoding based on RAHT
    • Complete the compression algorithm based on the mentioned algorithms, then apply tests
  • Further enhancements on compression rate (Reference: G-PCC Codec Description)

    • Provide optimization options for advanced compression techniques
    • Implement Direct Coding Mode(DCM)
    • Implement Prediction Coding Mode(PDM)
  • Support for dynamic point clouds based on previous efficient algorithms (Reference: Real-time Compression of Point Cloud Streams)

    • Implement inter-frame coding
    • Implement key frame algorithm
    • Implement effective compression of real-time dynamic point cloud, streaming transmission and variable rate decompression
  • Optimization and formatting

    • Apply methods of optimizations
    • Construct tests, measure performance in correctness, time cost, reconstruction quality, etc
    • Provide user logs, including compression information and performance indicators
    • Ensure compatibility under prevailing platforms
    • Code reviews, format the code to OpenCV style

Other References:

@starga2er777 starga2er777 changed the title Point cloud compression algorithm for 3d module Point cloud compression for 3d module May 16, 2023
asmorkalov pushed a commit that referenced this issue Jul 25, 2023
GSoC: Modified PLY reader to support color attribute read/write #23805

* Modified PLY reader to support color attribute read/write
* Fix bugs & Modified OBJ reader for color IO
* Replace with correct test file
* Fix I/O of property [w] in OBJ files

### Pull Request Readiness Checklist

**Merged with opencv/opencv_extra#1075

[Issue for GSoC 2023](#23624)
The ply loader in 3D module doesn't support color attribute reading. I modified that to support color attribute reading & writing for the color attribute compression as described in proposal.

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
asmorkalov pushed a commit that referenced this issue Feb 29, 2024
[GSoC] Update octree methods and create frames for PCC #23985

## PR for GSoC Point Cloud Compression
[Issue for GSoC 2023](#23624)

* We are **updating the Octree method create() by using OctreeKey**: Through voxelization, directly calculate the leaf nodes that the point cloud belongs to, and omit the judgment whether the point cloud is in the range when inserted. The index of the child node is calculated by bit operation.
* We are also **introducing a new header file pcc.h (Point Cloud Compression) with API framework**.
* We added tests for restoring point clouds from an octree.
* Currently, the features related to octree creation and point cloud compression are part of the internal API, which means they are not directly accessible to users. However, our plan for the future is to **include only the 'PointCloudCompression' class in the 'opencv2/3d.hpp' header file**. This will provide an interface for utilizing the point cloud compression functionality.

The previous PR of this was closed due to repo name conflicts, therefore we resubmitted in this PR.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants