{"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/gaussian-splatting-on-the-move-blur-and","title":"Gaussian Splatting on the Move: Blur and Rolling Shutter Compensation for Natural Camera Motion","arxiv_id":"2403.13327","date":"2024-03-20","proceeding":null,"authors":["Otto Seiskari","Jerry Ylilammi","Valtteri Kaatrasalo","Pekka Rantalankila","Matias Turkulainen","Juho Kannala","Esa Rahtu","Arno Solin"],"abstract":"High-quality scene reconstruction and novel view synthesis based on Gaussian Splatting (3DGS) typically require steady, high-quality photographs, often impractical to capture with handheld cameras. We present a method that adapts to camera motion and allows high-quality scene reconstruction with handheld video data suffering from motion blur and rolling shutter distortion. Our approach is based on detailed modelling of the physical image formation process and utilizes velocities estimated using visual-inertial odometry (VIO). Camera poses are considered non-static during the exposure time of a single image frame and camera poses are further optimized in the reconstruction process. We formulate a differentiable rendering pipeline that leverages screen space approximation to efficiently incorporate rolling-shutter and motion blur effects into the 3DGS framework. Our results with both synthetic and real data demonstrate superior performance in mitigating camera motion over existing methods, thereby advancing 3DGS in naturalistic settings.","url_abs":"https://arxiv.org/abs/2403.13327v3","url_pdf":"https://arxiv.org/pdf/2403.13327v3.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":"gaussian-splatting-on-the-move-blur-and","repo_url":"https://github.com/spectacularai/3dgs-deblur","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3dgs","task_name":"3DGS"},{"task_slug":"novel-view-synthesis","task_name":"Novel View Synthesis"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2403.13327","atlas_url":"https://app.syntology.ai/?focus=2403.13327","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.13327"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/spectacularai/3dgs-deblur","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":6,"unverified":4},"by_repo_kind":{"official":{"samples":10,"ran":6,"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":"a6ca969619309751","entry":"find_and_parse_directories_containing_splatting_metrics","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"parse_outputs.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/parse_outputs.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":"a6ca969619309751"}},{"code_sha256_prefix":"8e4cf96a9ad903e6","entry":"get_original_length_seconds","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"render_video.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/render_video.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":"8e4cf96a9ad903e6"}},{"code_sha256_prefix":"5200d77644ff5c91","entry":"look_at","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"render_video.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/render_video.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":"5200d77644ff5c91"}},{"code_sha256_prefix":"1a099056a7c33b78","entry":"parse_metrics","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"parse_outputs.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/parse_outputs.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":"1a099056a7c33b78"}},{"code_sha256_prefix":"eb9595abec8daa1e","entry":"quaternion_to_rotation_matrix","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"process_synthetic_inputs.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/process_synthetic_inputs.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":"eb9595abec8daa1e"}},{"code_sha256_prefix":"4d9e90409902e684","entry":"rotation_matrix_to_rotvec","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"process_synthetic_inputs.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/process_synthetic_inputs.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":"4d9e90409902e684"}},{"code_sha256_prefix":"74f1182bfd36bf4b","entry":"process","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"train_eval_split_by_blur_score.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/train_eval_split_by_blur_score.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"74f1182bfd36bf4b"}},{"code_sha256_prefix":"322128a1601d8e2a","entry":"process","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"combine.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/combine.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"322128a1601d8e2a"}},{"code_sha256_prefix":"28c8bf6e0a340333","entry":"process","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"process_synthetic_inputs.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/process_synthetic_inputs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"28c8bf6e0a340333"}},{"code_sha256_prefix":"acaf0e4702f303d7","entry":"process","repo":"spectacularai/3dgs-deblur","repo_kind":"official","path":"render_video.py","file_url":"https://github.com/spectacularai/3dgs-deblur/blob/HEAD/render_video.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"acaf0e4702f303d7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}