{"id":43680089,"url":"https://github.com/jingdao/point_cloud_scene_completion","last_synced_at":"2026-02-05T01:32:21.929Z","repository":{"id":42178424,"uuid":"295017451","full_name":"jingdao/point_cloud_scene_completion","owner":"jingdao","description":"Point Cloud Scene Completion of Obstructed Building Facades with Generative Adversarial Inpainting","archived":false,"fork":false,"pushed_at":"2020-12-14T17:23:40.000Z","size":26036,"stargazers_count":21,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-08-08T04:14:38.648Z","etag":null,"topics":["building-facade","deep-learning","generative-adversarial-network","point-cloud","scene-completion"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jingdao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-12T20:04:06.000Z","updated_at":"2023-03-11T20:16:08.000Z","dependencies_parsed_at":"2022-09-22T11:31:52.824Z","dependency_job_id":null,"html_url":"https://github.com/jingdao/point_cloud_scene_completion","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/jingdao/point_cloud_scene_completion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingdao%2Fpoint_cloud_scene_completion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingdao%2Fpoint_cloud_scene_completion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingdao%2Fpoint_cloud_scene_completion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingdao%2Fpoint_cloud_scene_completion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jingdao","download_url":"https://codeload.github.com/jingdao/point_cloud_scene_completion/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jingdao%2Fpoint_cloud_scene_completion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29105620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T00:52:08.035Z","status":"ssl_error","status_checked_at":"2026-02-05T00:52:07.703Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["building-facade","deep-learning","generative-adversarial-network","point-cloud","scene-completion"],"created_at":"2026-02-05T01:32:20.720Z","updated_at":"2026-02-05T01:32:21.901Z","avatar_url":"https://github.com/jingdao.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Point Cloud Scene Completion\r\n\r\nSupplemental material for the **Sensors** journal paper\r\n*Point Cloud Scene Completion of Obstructed Building Facades with Generative Adversarial Inpainting*.\r\nThe paper can be accessed through the following [link](https://www.mdpi.com/1424-8220/20/18/5029/htm).\r\nIf you find this code or data useful, please cite our paper as follows:\r\n\r\n```\r\nChen, J., Yi, J., Kahoush, M., Cho, E. and Cho, Y. (2020). “Point Cloud Scene Completion\r\nof Obstructed Building Facades with Generative Adversarial Inpainting.” MDPI Sensors, 20(18), 5029\r\n```\r\n\r\n```\r\n@Article{s20185029,\r\nAUTHOR = {Chen, Jingdao and Yi, John Seon Keun and Kahoush, Mark and Cho, Erin S. and Cho, Yong K.},\r\nTITLE = {Point Cloud Scene Completion of Obstructed Building Facades with Generative Adversarial Inpainting},\r\nJOURNAL = {Sensors},\r\nVOLUME = {20},\r\nYEAR = {2020},\r\nNUMBER = {18},\r\nARTICLE-NUMBER = {5029},\r\nURL = {https://www.mdpi.com/1424-8220/20/18/5029},\r\nISSN = {1424-8220},\r\nDOI = {10.3390/s20185029}\r\n}\r\n```\r\n\r\n## Data preparation\r\n\r\nGround truth and input files:\r\n[input/groundtruth](https://www.dropbox.com/s/w16uog65u7flfp3/input_and_ground_truth.zip?dl=1)\r\n\r\nAfter unzipping the file there will be an input folder containing all the input files, and a ground truth folder containing all the ground truth files. These files are point clouds stored as PLY files. \r\n\r\n## Dependencies\r\nTraining is implemented with [TensorFlow](https://www.tensorflow.org/). This code has been tested under TF1.3 on Ubuntu 18.04.\r\n\r\n## Baselines\r\n### Hole-filling\r\nTo execute the hole filling algorithm:\r\n```\r\npython fill_holes.py input_file.ply\r\n```\r\n\r\n### Poisson Reconstruction\r\nTo use Poisson Reconstruction download [CloudCompare](https://github.com/cloudcompare/cloudcompare).\r\n\r\nUsing CloudCompare open the input file and compute its normals.\r\nUse the \"poisson recon\" plugin to obtain a mesh representation of the input file after poisson reconstruction.\r\nAdjust the SF display parameters range in the properties of the mesh.\r\nFilter the mesh to split the mesh into two, based on the range chosen.\r\nConvert the mesh back into a point cloud by using the sample points tool.\r\n\r\n### Plane-fitting\r\nTo execute the plane fitting algorithm:\r\n```\r\npython fit_plane_LSE.py input_file.ply\r\n```\r\n\r\n### Partial Convolutions\r\n\r\n1. Run the Python file `point_cloud_ortho_projector.py` to generate a RGB image and a depth image for the input point cloud file.\r\n2. Use the Python file `fit_image.py` to resize the RGB image to 512x512 pixels.\r\n3. Upload the RGB image at this [site](https://www.nvidia.com/research/inpainting/).\r\n4. Manually draw the mask and perform inpainting.\r\n5. Download the resulting image and resize it back to the original size using the Python file `recover_image.py`.\r\n6. Run the Python file `point_cloud_ortho_projector.py` again to generate a PLY point cloud from the filled RGB image and the previously saved depth image.\r\n\r\n### PCN/FoldingNet/TopNet\r\n\r\nRefer to [this](https://github.com/jingdao/completion3d) fork of the Completion3D baselines for\r\ninstructions on training and testing PCN/FoldingNet/TopNet with our dataset.\r\n\r\n## Generative Adversarial Inpainting\r\n\r\nOur proposed method for Generative Adversarial Inpainting is built on top of the Pix2Pix network.\r\nFollow the steps below:\r\n\r\n1. Create the \"train\" and \"test\" subfolders in the \"pix2pix\" folder by downloading the following image files from Dropbox:\r\n[train](https://www.dropbox.com/s/rfzvjpxg51o7lx5/train.zip?dl=1) [test](https://www.dropbox.com/s/a293qyuyiclw0sg/test.zip?dl=1)\r\n2. Run the training script `pix2pix/train.sh`. Once done, it should save 11 models in total to the \"model\" folder\r\n3. Run the script `point-cloud-orthographic-projection/prepare_pix2pix_data.sh`. The script will call the Python file `point_cloud_ortho_projector.py` to generate a RGB image and a depth image for each input point cloud file.\r\nNote that the Python file uses Python 2 and the dependencies need to be installed.\r\n4. Run the testing script `pix2pix/test.sh`. This step will apply the trained Pix2Pix models on input RGB images and output filled RGB images.\r\n5. Run the script `point-cloud-orthographic-projection/get_pix2pix_results.sh`. The script will run the Python file `point_cloud_ortho_projector.py` again to generate PLY point clouds from the filled RGB images.\r\n\r\n## Evaluation\r\nYou can evaluate your results by running:\r\n```\r\npython getAccuracy.py ground_truth.ply input.ply \r\n```\r\nThis will display the evaluation metrics.\r\n\r\n## Results\r\n\r\n![results](results/inpainting_result.png?raw=true)\r\n\r\n## Third-party Code\r\n\r\nWei, J. (2019) \"Point Cloud Orthographic Projection with Multiviews\" Available [online](https://github.com/jiangwei221/point-cloud-orthographic-projection)\r\n\r\nGeodan (2020). \"Generate Synthetic Points to Fill Holes in Point Clouds\" Available [online](https://github.com/Geodan/fill-holes-pointcloud)\r\n\r\nCloudCompare (2020) \"CloudCompare\" Available [online](https://github.com/CloudCompare/CloudCompare.git)\r\n\r\nIsola et al. (2017) \"Image-to-Image Translation with Conditional Adveresarial Networks\" Available [online](https://github.com/affinelayer/pix2pix-tensorflow.git)\r\n\r\nTchapmi et al. (2019). \"Stanford 3D Object Point Cloud Completion Benchmark\" Available [online](https://github.com/lynetcha/completion3d)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjingdao%2Fpoint_cloud_scene_completion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjingdao%2Fpoint_cloud_scene_completion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjingdao%2Fpoint_cloud_scene_completion/lists"}