wentaoyuan/pcn

Noisy results from rendering

mengyuest opened this issue · 5 comments

Hi I used your code in ./pcn/render/ to generate partial pointclouds from ShapenetV1 models under Ubuntu16.04 with Blender 2.79. But seems like the results are quite noisy and in low resolution (compared to the ones in the ./shapenet/test/ on Google drive).

As shown in the figure below, the upper one (purple airplane) is my rendering result, and the lower one (blue airplane) is the result from your dataset (./shapenet/test/partial/02691156/6ca6c7920c62773073d96deff5ddb8e5.pcd). My points are less than yours (245 points vs 1992 points) and much more noisy from another angle of view. Is it because the partial point clouds in the testset are generated from a different set of camera intrinsic (other than width:160 height:120 with focal:100)? Thanks for your help.

image

image

mine-02691156-6ca6c7920c62773073d96deff5ddb8e5.txt

pcn-6ca6c7920c62773073d96deff5ddb8e5.txt

What are the size of the depth images you use? My data was generated with 320x240 depth scans, which should give you 1000~2000 points on average for an airplane. I'm not sure what you mean by the point clouds being noisy. It's really hard to see it from your visualization. The provided data do not contain any noise.

Thanks for the reaching out. Here(pcn_render.zip) is the minimal system for this test (I only fixed the pose angle and changed the resolution for the depth map). There are some pre-generated figures under ./figs. Or if you want to run it, first use blender -b -P render_depth.py shapenet_lite ./model.list ./tmp 1 then python3 process_exr.py model.list ./tmp/intrinsics.txt ./tmp 1.

This time I ran it with the resolution as you suggested (width = 320, height = 240 and focal = 200) and got 1032 points. The following figures are the mesh model, and then the pcl visualizations for the same two point clouds but from different angles (The red one was generated from this python code, and the green one was fetched from the test dataset in google drive)

Notice that there are many noisy points in the red point clouds-"noisy" means they are not belong to the mesh surfaces. One of the possible reason is that they are lying on the boundary of the 2d depth images, and due to some numerical reason, they are not back-projected to the right place in 3d space. But I just wonder why this did not happen in the green point clouds. Do you use any post-processing methods (like filtering or outlier detection, or re-sampling from multiple pointclouds) for that? Thanks for your help.

aero-mesh
screenshot from 2019-03-01 14-43-22
screenshot from 2019-03-01 14-44-24

@mengyuest Do you have some new findings?

Hi there. Right now the only solution I could come up with is using filtering method. Check this outlier removal from open3d and hope that helps~

Leerw commented

What are the size of the depth images you use? My data was generated with 320x240 depth scans, which should give you 1000~2000 points on average for an airplane. I'm not sure what you mean by the point clouds being noisy. It's really hard to see it from your visualization. The provided data do not contain any noise.

Is 320x240 and focal=100 for all categories?