Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Pointcloud Compression Implementation in 3d module.#24197

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
broweigit wants to merge47 commits intoopencv:5.x
base:5.x
Choose a base branch
Loading
fromstarga2er777:pcc_feature

Conversation

@broweigit
Copy link

@broweigitbroweigit commentedAug 27, 2023
edited by WanliZhong
Loading

Part of schedule#23624
Merged withopencv/opencv_extra#1100
Merged after#23985

This pull request aims to implement whole point cloud compression process, including compression to encode pointcloud data to a compressed binary file, and decompression to recover original pointcloud from it.

Below is the flowchart illustrating the process of point cloud compression.

procedure

Below is the visualization of reconstructed pointcloud after decompression.

7-3

The point cloud compression and decompression processes can be executed by utilizing the interface of the top-level classPointCloudCompression. User can specify two parameters:

"Resolution" marks the leaf size(least voxel size)of octree. It's related to geometry precision.

"Qstep" is parameter in RAHT algorithm, relates to attribute(color) precision.

(Update): We now add zlib support for Entropy compression and decompression. Since it outperforms out old method, we set it as default algorithm. It can be swapped by changing "codingMethod" initial value in the front of modules/3d/src/pcc.cpp

During the algorithm evaluation, the compression rate was evaluated usingbpp (bits per point), while the reduction quality was measured by means ofPSNR (Peak Signal-to-Noise Ratio).

Note that the calculation ofPSNR involves third-party tool(pc-error from MPEG), thus the function for computingPSNR has not been included in the test file.

The functiongenerateSphere() is used to generate a point cloud file for testing and then fill it with gradient colors. The test pointCloud is a sphere with origin (0,0,0), radius 10, and thickness 0.5. The test results are as follows.

resolutionqStepPSNR(geometry)PSNR(red)PSNR(green)PSNR(blue)
0.0011069.419203942.910993846.476897541.4283016
0.00051075.433574242.911021946.476387341.4280655
0.001569.419203946.430291248.809685245.5494642
0.0005575.433574246.433951448.814181545.5434763

The popular open source point cloud datasetdress_raw.ply is also used for testing. The test results are as follows

resolutionqStepPSNR(geometry)PSNR(red)PSNR(green)PSNR(blue)
0.51019.030899939.537112742.098435542.1456074
0.11033.010943739.511672242.040474842.0833495
0.5519.030899944.61732346.427136346.4688072
0.1533.010943744.609973846.382479246.4255845

Pull Request Readiness Checklist

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

  • I agree to contribute to the project under Apache 2 License.
  • 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
  • The PR is proposed to the proper branch
  • There is a reference to the original bug report and related work
  • There is accuracy test, performance test and test data in opencv_extra repository, if applicable
    Patch to opencv_extra has the same branch name.
  • The feature is well documented and sample code can be built with the project CMake

WanliZhong reacted with thumbs up emoji
starga2er777and others added30 commitsJune 15, 2023 17:15
@broweigitbroweigit changed the titlePcc featurePointcloud Compression Implementation in 3d module.Aug 27, 2023
@asmorkalov
Copy link
Contributor

[ RUN      ] PccTest.PointCloudCompressionTest[ERROR:0@66.152] global io_ply.cpp:24 readData File does not exist.[ERROR:0@66.152] global io_ply.cpp:39 parseHeader Provided file is not in PLY format*** longjmp causes uninitialized stack frame ***: terminated

@starga2er777
Copy link

@asmorkalov@opencv-alalek Hi! In this pull request we have implemented PCC(point cloud compression) algorithms as well as tests. In the repoopencv-extra we introduced a new .ply file named sphere.ply for running tests and created a pull request toopencv-extra branch 5.x. However, when running github checks for this PR, it fails every time and says the newly added file doesn't exist. I wonder if there's a solution.

@asmorkalov
Copy link
Contributor

Github actions CI and BuildBot expects, that the PR author has OpenCV Extra branch with the same name to be tested together. Here we have an issue. PR Autor: broweigit. Source code location: starga2er777. CI looks for branchpcc_feature in broweigit/opencv_extra and cannot find it. You need to re-create the both PRs on behalf of starga2er777.

WanliZhong and starga2er777 reacted with thumbs up emoji

@asmorkalovasmorkalov added this to the5.0 milestoneOct 5, 2023
@broweigit
Copy link
Author

Note that this is not the latest code. I think I have to revise this part and Update current stable code here. Also waiting for merging#23985 before moving on.

@broweigit
Copy link
Author

Now that the previous branch has been merged. So before working on this PR, I'd like to update our current code(or a previous stable version) and rebase on previous merged code, due to some API changes. I'll make a note after everything is ready. Thanks!

asmorkalov, savuor, and WanliZhong reacted with thumbs up emoji

@broweigit
Copy link
Author

Gosh that's quite a while. I'm sorry for that... Since I've done with my Undergraduate Thesis(and used this 3D compression branch btw), I think I shall soon work on this PR in my pace.

@asmorkalovasmorkalov modified the milestones:5.0,5.0-releaseSep 28, 2024
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@savuorsavuorAwaiting requested review from savuor

Assignees

No one assigned

Projects

None yet

Milestone

5.0-release

Development

Successfully merging this pull request may close these issues.

5 participants

@broweigit@asmorkalov@starga2er777@WanliZhong@TsingYiPainter

[8]ページ先頭

©2009-2025 Movatter.jp