{"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/rolling-shutter-correction-with-intermediate","title":"Rolling Shutter Correction with Intermediate Distortion Flow Estimation","arxiv_id":"2404.06350","date":"2024-04-09","proceeding":"CVPR 2024 1","authors":["Mingdeng Cao","Sidi Yang","Yujiu Yang","Yinqiang Zheng"],"abstract":"This paper proposes to correct the rolling shutter (RS) distorted images by estimating the distortion flow from the global shutter (GS) to RS directly. Existing methods usually perform correction using the undistortion flow from the RS to GS. They initially predict the flow from consecutive RS frames, subsequently rescaling it as the displacement fields from the RS frame to the underlying GS image using time-dependent scaling factors. Following this, RS-aware forward warping is employed to convert the RS image into its GS counterpart. Nevertheless, this strategy is prone to two shortcomings. First, the undistortion flow estimation is rendered inaccurate by merely linear scaling the flow, due to the complex non-linear motion nature. Second, RS-aware forward warping often results in unavoidable artifacts. To address these limitations, we introduce a new framework that directly estimates the distortion flow and rectifies the RS image with the backward warping operation. More specifically, we first propose a global correlation-based flow attention mechanism to estimate the initial distortion flow and GS feature jointly, which are then refined by the following coarse-to-fine decoder layers. Additionally, a multi-distortion flow prediction strategy is integrated to mitigate the issue of inaccurate flow estimation further. Experimental results validate the effectiveness of the proposed method, which outperforms state-of-the-art approaches on various benchmarks while maintaining high efficiency. The project is available at \\url{https://github.com/ljzycmd/DFRSC}.","url_abs":"https://arxiv.org/abs/2404.06350v1","url_pdf":"https://arxiv.org/pdf/2404.06350v1.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":"rolling-shutter-correction-with-intermediate","repo_url":"https://github.com/ljzycmd/dfrsc","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"unrolling","task_name":"Rolling Shutter Correction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/rolling-shutter-correction-on-bs-rsc","task":"Rolling Shutter Correction","dataset":"BS-RSC","model":"DFRSC-3Frames","rank_in_archive_order":1,"of":8,"metrics":{"Average PSNR (dB)":"34.48"},"uses_additional_data":false},{"leaderboard":"/sota/rolling-shutter-correction-on-bs-rsc","task":"Rolling Shutter Correction","dataset":"BS-RSC","model":"DFRSC-2Frames","rank_in_archive_order":3,"of":8,"metrics":{"Average PSNR (dB)":"33.39"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2404.06350","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.06350"}},"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/ljzycmd/DFRSC","reach":{"status":"ok"}}],"summary":{"ran":3,"unverified":1},"by_repo_kind":{"official":{"samples":4,"ran":3,"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":4,"samples":[{"code_sha256_prefix":"f09e7dc7752e7bbe","entry":"backward_warp","repo":"ljzycmd/DFRSC","repo_kind":"official","path":"model/dfrsc.py","file_url":"https://github.com/ljzycmd/DFRSC/blob/HEAD/model/dfrsc.py","link_basis":"first_harvest_node","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":"f09e7dc7752e7bbe"}},{"code_sha256_prefix":"e8b192359b24dd42","entry":"distortion_map","repo":"ljzycmd/DFRSC","repo_kind":"official","path":"dataset/augment.py","file_url":"https://github.com/ljzycmd/DFRSC/blob/HEAD/dataset/augment.py","link_basis":"first_harvest_node","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":"e8b192359b24dd42"}},{"code_sha256_prefix":"086e29f0052db72e","entry":"generate_2D_grid","repo":"ljzycmd/DFRSC","repo_kind":"official","path":"dataset/augment.py","file_url":"https://github.com/ljzycmd/DFRSC/blob/HEAD/dataset/augment.py","link_basis":"first_harvest_node","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":"086e29f0052db72e"}},{"code_sha256_prefix":"3bf86c48a5c854ac","entry":"augment","repo":"ljzycmd/DFRSC","repo_kind":"official","path":"dataset/augment.py","file_url":"https://github.com/ljzycmd/DFRSC/blob/HEAD/dataset/augment.py","link_basis":"first_harvest_node","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":"3bf86c48a5c854ac"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}