{"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/removing-diffraction-image-artifacts-in-under","title":"Removing Diffraction Image Artifacts in Under-Display Camera via Dynamic Skip Connection Network","arxiv_id":"2104.09556","date":"2021-04-19","proceeding":"CVPR 2021 1","authors":["Ruicheng Feng","Chongyi Li","Huaijin Chen","Shuai Li","Chen Change Loy","Jinwei Gu"],"abstract":"Recent development of Under-Display Camera (UDC) systems provides a true bezel-less and notch-free viewing experience on smartphones (and TV, laptops, tablets), while allowing images to be captured from the selfie camera embedded underneath. In a typical UDC system, the microstructure of the semi-transparent organic light-emitting diode (OLED) pixel array attenuates and diffracts the incident light on the camera, resulting in significant image quality degradation. Oftentimes, noise, flare, haze, and blur can be observed in UDC images. In this work, we aim to analyze and tackle the aforementioned degradation problems. We define a physics-based image formation model to better understand the degradation. In addition, we utilize one of the world's first commodity UDC smartphone prototypes to measure the real-world Point Spread Function (PSF) of the UDC system, and provide a model-based data synthesis pipeline to generate realistically degraded images. We specially design a new domain knowledge-enabled Dynamic Skip Connection Network (DISCNet) to restore the UDC images. We demonstrate the effectiveness of our method through extensive experiments on both synthetic and real UDC data. Our physics-based image formation model and proposed DISCNet can provide foundations for further exploration in UDC image restoration, and even for general diffraction artifact removal in a broader sense.","url_abs":"https://arxiv.org/abs/2104.09556v1","url_pdf":"https://arxiv.org/pdf/2104.09556v1.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":"removing-diffraction-image-artifacts-in-under","repo_url":"https://github.com/jnjaby/DISCNet","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-restoration","task_name":"Image Restoration"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2104.09556","atlas_url":"https://app.syntology.ai/?focus=2104.09556","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2104.09556"}},"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/jnjaby/DISCNet","reach":null}],"summary":{"ran":1,"ran_draft_wrong":5,"ran_honours":1,"unverified":4},"by_repo_kind":{"official":{"samples":11,"ran":7,"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":11,"samples":[{"code_sha256_prefix":"6b2f8c2ebe2461b0","entry":"ResBlock","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6b2f8c2ebe2461b0"}},{"code_sha256_prefix":"15d829a065897df0","entry":"act","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"15d829a065897df0"}},{"code_sha256_prefix":"2088da310e2c1c79","entry":"conv_block","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2088da310e2c1c79"}},{"code_sha256_prefix":"1f28a2e923debcdb","entry":"get_valid_padding","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.py","link_basis":"first_harvest_node","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":"1f28a2e923debcdb"}},{"code_sha256_prefix":"b6a238bb90c0069b","entry":"norm","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b6a238bb90c0069b"}},{"code_sha256_prefix":"4a56ce1917d87f9b","entry":"pad","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4a56ce1917d87f9b"}},{"code_sha256_prefix":"a4ee0af247731bd3","entry":"upconv","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a4ee0af247731bd3"}},{"code_sha256_prefix":"fa8b013b61e4496e","entry":"DISCNet","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.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":"fa8b013b61e4496e"}},{"code_sha256_prefix":"e62081511dcd3fe1","entry":"default_init_weights","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.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":"e62081511dcd3fe1"}},{"code_sha256_prefix":"33ece21f42f7e520","entry":"kernel2d_conv","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.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":"33ece21f42f7e520"}},{"code_sha256_prefix":"e4f6817e59050117","entry":"sequential","repo":"jnjaby/DISCNet","repo_kind":"official","path":"basicsr/models/archs/discnet_arch.py","file_url":"https://github.com/jnjaby/DISCNet/blob/HEAD/basicsr/models/archs/discnet_arch.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":"e4f6817e59050117"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}