{"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/motion-adaptive-separable-collaborative","title":"Motion-adaptive Separable Collaborative Filters for Blind Motion Deblurring","arxiv_id":"2404.13153","date":"2024-04-19","proceeding":"CVPR 2024 1","authors":["Chengxu Liu","Xuan Wang","Xiangyu Xu","Ruhao Tian","Shuai Li","Xueming Qian","Ming-Hsuan Yang"],"abstract":"Eliminating image blur produced by various kinds of motion has been a challenging problem. Dominant approaches rely heavily on model capacity to remove blurring by reconstructing residual from blurry observation in feature space. These practices not only prevent the capture of spatially variable motion in the real world but also ignore the tailored handling of various motions in image space. In this paper, we propose a novel real-world deblurring filtering model called the Motion-adaptive Separable Collaborative (MISC) Filter. In particular, we use a motion estimation network to capture motion information from neighborhoods, thereby adaptively estimating spatially-variant motion flow, mask, kernels, weights, and offsets to obtain the MISC Filter. The MISC Filter first aligns the motion-induced blurring patterns to the motion middle along the predicted flow direction, and then collaboratively filters the aligned image through the predicted kernels, weights, and offsets to generate the output. This design can handle more generalized and complex motion in a spatially differentiated manner. Furthermore, we analyze the relationships between the motion estimation network and the residual reconstruction network. Extensive experiments on four widely used benchmarks demonstrate that our method provides an effective solution for real-world motion blur removal and achieves state-of-the-art performance. Code is available at https://github.com/ChengxuLiu/MISCFilter","url_abs":"https://arxiv.org/abs/2404.13153v1","url_pdf":"https://arxiv.org/pdf/2404.13153v1.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":"motion-adaptive-separable-collaborative","repo_url":"https://github.com/chengxuliu/miscfilter","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"deblurring","task_name":"Deblurring"},{"task_slug":"motion-estimation","task_name":"Motion Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2404.13153","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.13153"}},"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/chengxuliu/miscfilter","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/ChengxuLiu/MISCFilter","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":10,"unverified":3},"by_repo_kind":{"official":{"samples":13,"ran":10,"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":"9e8e56135365289e","entry":"CharbonnierFunc","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"models/MISCFilterNet.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/models/MISCFilterNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9e8e56135365289e"}},{"code_sha256_prefix":"91fa50e293bf2fde","entry":"compute_psnr","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"evaluate_RealBlur.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/evaluate_RealBlur.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"91fa50e293bf2fde"}},{"code_sha256_prefix":"dfd71b86aa96a884","entry":"flow_warp","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"models/MISCFilterNet.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/models/MISCFilterNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dfd71b86aa96a884"}},{"code_sha256_prefix":"930cddf0a4d80ab1","entry":"is_frozen","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"utils/model_utils.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/utils/model_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"930cddf0a4d80ab1"}},{"code_sha256_prefix":"c3bea8c4ee6bef4a","entry":"load_start_epoch","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"utils/model_utils.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/utils/model_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c3bea8c4ee6bef4a"}},{"code_sha256_prefix":"9a2082456dfd29d9","entry":"moduleNormalize","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"models/utility.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/models/utility.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9a2082456dfd29d9"}},{"code_sha256_prefix":"989c91edb537cd8f","entry":"to_variable","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"models/utility.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/models/utility.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"989c91edb537cd8f"}},{"code_sha256_prefix":"6246e43ffc3d3ad0","entry":"window_partitions","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"models/layers.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/models/layers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6246e43ffc3d3ad0"}},{"code_sha256_prefix":"3bbb99d8422b5bd6","entry":"window_partitionx","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"models/layers.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/models/layers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3bbb99d8422b5bd6"}},{"code_sha256_prefix":"89c554708e3dae51","entry":"window_reverses","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"models/layers.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/models/layers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"89c554708e3dae51"}},{"code_sha256_prefix":"464c3d3b7a1eb4b3","entry":"compute_ssim","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"evaluate_RealBlur.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/evaluate_RealBlur.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"464c3d3b7a1eb4b3"}},{"code_sha256_prefix":"50fe0d31f1836940","entry":"cupy_kernel","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"models/MISCKernel_cuda.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/models/MISCKernel_cuda.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"50fe0d31f1836940"}},{"code_sha256_prefix":"5038ac50ef83af3a","entry":"image_align","repo":"ChengxuLiu/MISCFilter","repo_kind":"official","path":"evaluate_RealBlur.py","file_url":"https://github.com/ChengxuLiu/MISCFilter/blob/HEAD/evaluate_RealBlur.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5038ac50ef83af3a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}