{"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/arxiv-2609-03740","title":"Fill My Mirror: Geometry-Constrained Mirror Inpainting","arxiv_id":"2609.03740","date":"2026-09-03","proceeding":null,"authors":["Ofek Basson","Shimon Vainer","Yacov Hel-Or","Ohad Fried"],"abstract":"Mirrors are common in real-world images, yet producing geometrically consistent reflections with generative models remains challenging. Unlike most objects, mirror appearance depends on scene geometry and viewpoint, making it hard to synthesize using learned appearance priors alone. We address this in the mirror inpainting setting, where the scene is fixed and only the mirror region is generated. Our key insight is that much mirror content is geometrically constrained by the visible scene and need not be hallucinated. We estimate scene geometry and project visible content into the mirror to recover reflection regions determined by geometry. A generative model then completes the mirror region via a two-mask diffusion strategy balancing geometric constraints with the model's learned priors, reducing projection artifacts and improving reflection consistency. The method is training-free and applicable to complex real-world scenes. We evaluate on MirrorBench-V2 (synthetic) and real images. Using standard and geometry-aware metrics, we show that explicitly using scene geometry improves consistency.","url_abs":"https://arxiv.org/abs/2609.03740","url_pdf":"https://arxiv.org/pdf/2609.03740","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2609.03740","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2609.03740"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/OfekBasson/Fill-My-Mirror","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_violates":1,"unverified":5},"by_repo_kind":{"found_in_text":{"samples":6,"ran":1,"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":"b9e2ae097bff0674","entry":"calculate_shift","repo":"OfekBasson/Fill-My-Mirror","repo_kind":"found_in_text","path":"fill_my_mirror/dual_mask_inpainting/pipeline_flux1.py","file_url":"https://github.com/OfekBasson/Fill-My-Mirror/blob/HEAD/fill_my_mirror/dual_mask_inpainting/pipeline_flux1.py","link_basis":"plan_row","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b9e2ae097bff0674"}},{"code_sha256_prefix":"60cb249b0fc51278","entry":"check_and_fix_aspect_ratio","repo":"OfekBasson/Fill-My-Mirror","repo_kind":"found_in_text","path":"fill_my_mirror/utils.py","file_url":"https://github.com/OfekBasson/Fill-My-Mirror/blob/HEAD/fill_my_mirror/utils.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":"60cb249b0fc51278"}},{"code_sha256_prefix":"3b2bda503b0eb33b","entry":"fit_plane_svd","repo":"OfekBasson/Fill-My-Mirror","repo_kind":"found_in_text","path":"fill_my_mirror/plane.py","file_url":"https://github.com/OfekBasson/Fill-My-Mirror/blob/HEAD/fill_my_mirror/plane.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":"3b2bda503b0eb33b"}},{"code_sha256_prefix":"7ead1e08b9f66e0a","entry":"load_inpainting_pipeline","repo":"OfekBasson/Fill-My-Mirror","repo_kind":"found_in_text","path":"fill_my_mirror/dual_mask_inpainting/core.py","file_url":"https://github.com/OfekBasson/Fill-My-Mirror/blob/HEAD/fill_my_mirror/dual_mask_inpainting/core.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":"7ead1e08b9f66e0a"}},{"code_sha256_prefix":"c1c28024d74977bf","entry":"orient_plane_toward_camera","repo":"OfekBasson/Fill-My-Mirror","repo_kind":"found_in_text","path":"fill_my_mirror/plane.py","file_url":"https://github.com/OfekBasson/Fill-My-Mirror/blob/HEAD/fill_my_mirror/plane.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":"c1c28024d74977bf"}},{"code_sha256_prefix":"39dfd0bc34e28e1f","entry":"retrieve_timesteps","repo":"OfekBasson/Fill-My-Mirror","repo_kind":"found_in_text","path":"fill_my_mirror/dual_mask_inpainting/pipeline_flux1.py","file_url":"https://github.com/OfekBasson/Fill-My-Mirror/blob/HEAD/fill_my_mirror/dual_mask_inpainting/pipeline_flux1.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":"39dfd0bc34e28e1f"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CV","source":"arxiv_daily_20260904.json"},"syntology_extracted_results":null}