{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/dn-splatter-depth-and-normal-priors-for","title":"DN-Splatter: Depth and Normal Priors for Gaussian Splatting and Meshing","arxiv_id":"2403.17822","date":"2024-03-26","proceeding":null,"authors":["Matias Turkulainen","Xuqian Ren","Iaroslav Melekhov","Otto Seiskari","Esa Rahtu","Juho Kannala"],"abstract":"High-fidelity 3D reconstruction of common indoor scenes is crucial for VR and AR applications. 3D Gaussian splatting, a novel differentiable rendering technique, has achieved state-of-the-art novel view synthesis results with high rendering speeds and relatively low training times. However, its performance on scenes commonly seen in indoor datasets is poor due to the lack of geometric constraints during optimization. In this work, we explore the use of readily accessible geometric cues to enhance Gaussian splatting optimization in challenging, ill-posed, and textureless scenes. We extend 3D Gaussian splatting with depth and normal cues to tackle challenging indoor datasets and showcase techniques for efficient mesh extraction. Specifically, we regularize the optimization procedure with depth information, enforce local smoothness of nearby Gaussians, and use off-the-shelf monocular networks to achieve better alignment with the true scene geometry. We propose an adaptive depth loss based on the gradient of color images, improving depth estimation and novel view synthesis results over various baselines. Our simple yet effective regularization technique enables direct mesh extraction from the Gaussian representation, yielding more physically accurate reconstructions of indoor scenes.","url_abs":"https://arxiv.org/abs/2403.17822v3","url_pdf":"https://arxiv.org/pdf/2403.17822v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"dn-splatter-depth-and-normal-priors-for","repo_url":"https://github.com/maturk/dn-splatter","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3d-reconstruction","task_name":"3D Reconstruction"},{"task_slug":"depth-estimation","task_name":"Depth Estimation"},{"task_slug":"novel-view-synthesis","task_name":"Novel View Synthesis"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.17822","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.17822"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/maturk/dn-splatter","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_honours":1,"ran":10},"by_repo_kind":{"official":{"samples":11,"ran":11,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"508a98451f5b78fe","entry":"SH2RGB","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/dn_model.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/dn_model.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"508a98451f5b78fe"}},{"code_sha256_prefix":"06622bb7a95d8d36","entry":"calculate_accuracy","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/metrics.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"06622bb7a95d8d36"}},{"code_sha256_prefix":"3fcf9ef2021b11ef","entry":"calculate_completeness","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/metrics.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3fcf9ef2021b11ef"}},{"code_sha256_prefix":"f3453c27535706a6","entry":"dilate_edge","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/regularization_strategy.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/regularization_strategy.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f3453c27535706a6"}},{"code_sha256_prefix":"a46c80464f9d01cf","entry":"find_depth_edges","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/export_mesh.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/export_mesh.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a46c80464f9d01cf"}},{"code_sha256_prefix":"99d3ba9a6f87817a","entry":"find_edges","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/regularization_strategy.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/regularization_strategy.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"99d3ba9a6f87817a"}},{"code_sha256_prefix":"016ffbb97f4da654","entry":"mean_angular_error","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/metrics.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"016ffbb97f4da654"}},{"code_sha256_prefix":"d4c08b27650e3ff4","entry":"mean_angular_error","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/regularization_strategy.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/regularization_strategy.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d4c08b27650e3ff4"}},{"code_sha256_prefix":"683511469017440f","entry":"pick_indices_at_random","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/export_mesh.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/export_mesh.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"683511469017440f"}},{"code_sha256_prefix":"2d92c7b5c2c788aa","entry":"random_quat_tensor","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/dn_model.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/dn_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2d92c7b5c2c788aa"}},{"code_sha256_prefix":"ccde9cb263e1a2b9","entry":"rotate_vector_to_vector","repo":"maturk/dn-splatter","repo_kind":"official","path":"dn_splatter/dn_model.py","file_url":"https://github.com/maturk/dn-splatter/blob/HEAD/dn_splatter/dn_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ccde9cb263e1a2b9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}