{"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/fully-geometric-panoramic-localization","title":"Fully Geometric Panoramic Localization","arxiv_id":"2403.19904","date":"2024-03-29","proceeding":"CVPR 2024 1","authors":["Junho Kim","Jiwon Jeong","Young Min Kim"],"abstract":"We introduce a lightweight and accurate localization method that only utilizes the geometry of 2D-3D lines. Given a pre-captured 3D map, our approach localizes a panorama image, taking advantage of the holistic 360 view. The system mitigates potential privacy breaches or domain discrepancies by avoiding trained or hand-crafted visual descriptors. However, as lines alone can be ambiguous, we express distinctive yet compact spatial contexts from relationships between lines, namely the dominant directions of parallel lines and the intersection between non-parallel lines. The resulting representations are efficient in processing time and memory compared to conventional visual descriptor-based methods. Given the groups of dominant line directions and their intersections, we accelerate the search process to test thousands of pose candidates in less than a millisecond without sacrificing accuracy. We empirically show that the proposed 2D-3D matching can localize panoramas for challenging scenes with similar structures, dramatic domain shifts or illumination changes. Our fully geometric approach does not involve extensive parameter tuning or neural network training, making it a practical algorithm that can be readily deployed in the real world. Project page including the code is available through this link: https://82magnolia.github.io/fgpl/.","url_abs":"https://arxiv.org/abs/2403.19904v1","url_pdf":"https://arxiv.org/pdf/2403.19904v1.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":"fully-geometric-panoramic-localization","repo_url":"https://github.com/82magnolia/panoramic-localization","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"indoor-localization","task_name":"Indoor Localization"},{"task_slug":"visual-localization","task_name":"Visual Localization"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.19904","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.19904"}},"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/82magnolia/panoramic-localization","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":18},"by_repo_kind":{"listed":{"samples":18,"ran":0,"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":"4ee13181a173c0c1","entry":"cloud2idx","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/utils.py","link_basis":"harvester_set","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":"4ee13181a173c0c1"}},{"code_sha256_prefix":"8d32a7070c6109dd","entry":"color_mod","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"color_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/color_utils.py","link_basis":"harvester_set","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":"8d32a7070c6109dd"}},{"code_sha256_prefix":"4cbc70d6112dc53f","entry":"get_init_dict_cpo","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"dict_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/dict_utils.py","link_basis":"harvester_set","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":"4cbc70d6112dc53f"}},{"code_sha256_prefix":"70ebeddff6217dd6","entry":"get_init_dict_ldl","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"dict_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/dict_utils.py","link_basis":"harvester_set","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":"70ebeddff6217dd6"}},{"code_sha256_prefix":"7babdd5582135a76","entry":"get_init_dict_piccolo","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"dict_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/dict_utils.py","link_basis":"harvester_set","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":"7babdd5582135a76"}},{"code_sha256_prefix":"e4429b985acc2e33","entry":"histogram","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"color_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/color_utils.py","link_basis":"harvester_set","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":"e4429b985acc2e33"}},{"code_sha256_prefix":"bbf76fc88a3f8910","entry":"histogram_sphere","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"color_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/color_utils.py","link_basis":"harvester_set","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":"bbf76fc88a3f8910"}},{"code_sha256_prefix":"941e51ef730b7afb","entry":"inv_cloud2idx","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/utils.py","link_basis":"harvester_set","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":"941e51ef730b7afb"}},{"code_sha256_prefix":"b2711bf8551c89dc","entry":"load_logger","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"log_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/log_utils.py","link_basis":"harvester_set","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":"b2711bf8551c89dc"}},{"code_sha256_prefix":"09931227dd57457f","entry":"obtain_gt_stanford","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"data_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/data_utils.py","link_basis":"harvester_set","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":"09931227dd57457f"}},{"code_sha256_prefix":"83f2b2da5fec9344","entry":"parse_ini","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"parse_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/parse_utils.py","link_basis":"harvester_set","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":"83f2b2da5fec9344"}},{"code_sha256_prefix":"a6cb944a5fc971a0","entry":"parse_value","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"parse_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/parse_utils.py","link_basis":"harvester_set","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":"a6cb944a5fc971a0"}},{"code_sha256_prefix":"9291ca2c1dfc92f1","entry":"read_line","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"data_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/data_utils.py","link_basis":"harvester_set","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":"9291ca2c1dfc92f1"}},{"code_sha256_prefix":"0f2e11318287210f","entry":"read_txt_pcd","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"data_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/data_utils.py","link_basis":"harvester_set","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":"0f2e11318287210f"}},{"code_sha256_prefix":"b12260e406df53a9","entry":"sample_from_img","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/utils.py","link_basis":"harvester_set","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":"b12260e406df53a9"}},{"code_sha256_prefix":"edde9e4433897830","entry":"split_2d","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"edge_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/edge_utils.py","link_basis":"harvester_set","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":"edde9e4433897830"}},{"code_sha256_prefix":"25ecc063202588cf","entry":"split_3d","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"edge_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/edge_utils.py","link_basis":"harvester_set","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":"25ecc063202588cf"}},{"code_sha256_prefix":"841a7f72356b6c69","entry":"split_by_axes","repo":"82magnolia/panoramic-localization","repo_kind":"listed","path":"edge_utils.py","file_url":"https://github.com/82magnolia/panoramic-localization/blob/HEAD/edge_utils.py","link_basis":"harvester_set","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":"841a7f72356b6c69"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}