{"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/r-2-gaussian-rectifying-radiative-gaussian","title":"R$^2$-Gaussian: Rectifying Radiative Gaussian Splatting for Tomographic Reconstruction","arxiv_id":"2405.20693","date":"2024-05-31","proceeding":null,"authors":["Ruyi Zha","Tao Jun Lin","Yuanhao Cai","Jiwen Cao","Yanhao Zhang","Hongdong Li"],"abstract":"3D Gaussian splatting (3DGS) has shown promising results in image rendering and surface reconstruction. However, its potential in volumetric reconstruction tasks, such as X-ray computed tomography, remains under-explored. This paper introduces R$^2$-Gaussian, the first 3DGS-based framework for sparse-view tomographic reconstruction. By carefully deriving X-ray rasterization functions, we discover a previously unknown integration bias in the standard 3DGS formulation, which hampers accurate volume retrieval. To address this issue, we propose a novel rectification technique via refactoring the projection from 3D to 2D Gaussians. Our new method presents three key innovations: (1) introducing tailored Gaussian kernels, (2) extending rasterization to X-ray imaging, and (3) developing a CUDA-based differentiable voxelizer. Experiments on synthetic and real-world datasets demonstrate that our method outperforms state-of-the-art approaches in accuracy and efficiency. Crucially, it delivers high-quality results in 4 minutes, which is 12$\\times$ faster than NeRF-based methods and on par with traditional algorithms. Code and models are available on the project page https://github.com/Ruyi-Zha/r2_gaussian.","url_abs":"https://arxiv.org/abs/2405.20693v2","url_pdf":"https://arxiv.org/pdf/2405.20693v2.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":"r-2-gaussian-rectifying-radiative-gaussian","repo_url":"https://github.com/ruyi-zha/r2_gaussian","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"r-2-gaussian-rectifying-radiative-gaussian","repo_url":"https://github.com/caiyuanhao1998/sax-nerf","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"r-2-gaussian-rectifying-radiative-gaussian","repo_url":"https://github.com/caiyuanhao1998/x-gaussian","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"3dgs","task_name":"3DGS"},{"task_slug":"nerf","task_name":"NeRF"},{"task_slug":"ssim","task_name":"SSIM"},{"task_slug":"surface-reconstruction","task_name":"Surface Reconstruction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2405.20693","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.20693"}},"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":"deterministic:regex_extraction","url":"https://github.com/Ruyi-Zha/r2_gaussian","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ruyi-zha/r2_gaussian","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/caiyuanhao1998/sax-nerf","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/caiyuanhao1998/x-gaussian","reach":{"status":"ok"}}],"summary":{"ran_violates":1,"ran_draft_wrong":2,"ran":12,"ran_honours":2,"unverified":2},"by_repo_kind":{"official":{"samples":13,"ran":13,"repositories":1},"listed":{"samples":6,"ran":4,"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":19,"samples":[{"code_sha256_prefix":"b8e95809ca2c17c9","entry":"sigmoid","repo":"caiyuanhao1998/x-gaussian","repo_kind":"listed","path":"point_cloud_vis.py","file_url":"https://github.com/caiyuanhao1998/x-gaussian/blob/HEAD/point_cloud_vis.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":2,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b8e95809ca2c17c9"}},{"code_sha256_prefix":"95abae1a2b93399d","entry":"PILtoTorch","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/general_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/general_utils.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"95abae1a2b93399d"}},{"code_sha256_prefix":"8c5aa9bd1fbb1c9e","entry":"angle2pose","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/dataset/dataset_readers.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/dataset/dataset_readers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"8c5aa9bd1fbb1c9e"}},{"code_sha256_prefix":"999062355ea4907d","entry":"args2string","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/cfg_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/cfg_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"999062355ea4907d"}},{"code_sha256_prefix":"c56b7ef16f309a45","entry":"gaussian","repo":"caiyuanhao1998/x-gaussian","repo_kind":"listed","path":"utils/loss_utils.py","file_url":"https://github.com/caiyuanhao1998/x-gaussian/blob/HEAD/utils/loss_utils.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c56b7ef16f309a45"}},{"code_sha256_prefix":"7325f65ee1e29543","entry":"get_expon_lr_func","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/gaussian_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/gaussian_utils.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7325f65ee1e29543"}},{"code_sha256_prefix":"b488da571728b636","entry":"inverse_sigmoid","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/gaussian_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/gaussian_utils.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b488da571728b636"}},{"code_sha256_prefix":"124130db4f645e1c","entry":"inverse_softplus","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/gaussian_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/gaussian_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"124130db4f645e1c"}},{"code_sha256_prefix":"ac0e42d6fbcfbbe6","entry":"l1_loss","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/loss_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/loss_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ac0e42d6fbcfbbe6"}},{"code_sha256_prefix":"8c3b0f873ba11813","entry":"l2_loss","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/loss_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/loss_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8c3b0f873ba11813"}},{"code_sha256_prefix":"737b53962943127a","entry":"load_config","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/cfg_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/cfg_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"737b53962943127a"}},{"code_sha256_prefix":"1dab900b2adbe38e","entry":"normalize_activation","repo":"caiyuanhao1998/x-gaussian","repo_kind":"listed","path":"lpipsPyTorch/modules/utils.py","file_url":"https://github.com/caiyuanhao1998/x-gaussian/blob/HEAD/lpipsPyTorch/modules/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1dab900b2adbe38e"}},{"code_sha256_prefix":"7690e32ee88a7fb1","entry":"readBlenderInfo","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/dataset/dataset_readers.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/dataset/dataset_readers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7690e32ee88a7fb1"}},{"code_sha256_prefix":"85bfab8718f94e56","entry":"readCTameras","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/dataset/dataset_readers.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/dataset/dataset_readers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"85bfab8718f94e56"}},{"code_sha256_prefix":"cdd00787894554b5","entry":"readImages","repo":"caiyuanhao1998/x-gaussian","repo_kind":"listed","path":"metrics.py","file_url":"https://github.com/caiyuanhao1998/x-gaussian/blob/HEAD/metrics.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cdd00787894554b5"}},{"code_sha256_prefix":"bd9d19d020443ff5","entry":"t2a","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/general_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/general_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"bd9d19d020443ff5"}},{"code_sha256_prefix":"99111ca235d96ce7","entry":"tv_3d_loss","repo":"Ruyi-Zha/r2_gaussian","repo_kind":"official","path":"r2_gaussian/utils/loss_utils.py","file_url":"https://github.com/Ruyi-Zha/r2_gaussian/blob/HEAD/r2_gaussian/utils/loss_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"99111ca235d96ce7"}},{"code_sha256_prefix":"07bd0da29c4dc7bb","entry":"get_network","repo":"caiyuanhao1998/x-gaussian","repo_kind":"listed","path":"lpipsPyTorch/modules/networks.py","file_url":"https://github.com/caiyuanhao1998/x-gaussian/blob/HEAD/lpipsPyTorch/modules/networks.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"07bd0da29c4dc7bb"}},{"code_sha256_prefix":"b06f27c08cf5d0ca","entry":"get_state_dict","repo":"caiyuanhao1998/x-gaussian","repo_kind":"listed","path":"lpipsPyTorch/modules/utils.py","file_url":"https://github.com/caiyuanhao1998/x-gaussian/blob/HEAD/lpipsPyTorch/modules/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b06f27c08cf5d0ca"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}