{"id":16751030,"url":"https://github.com/elerac/strand_integration","last_synced_at":"2025-04-10T15:38:45.514Z","repository":{"id":191868666,"uuid":"685349473","full_name":"elerac/strand_integration","owner":"elerac","description":"[PG2023] Refinement of Hair Geometry by Strand Integration","archived":false,"fork":false,"pushed_at":"2024-10-30T03:34:54.000Z","size":57719,"stargazers_count":28,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-24T13:21:26.059Z","etag":null,"topics":["3d-reconstruction","hair","mvs","strand"],"latest_commit_sha":null,"homepage":"https://elerac.github.io/strand_integration_page/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elerac.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-31T03:18:35.000Z","updated_at":"2025-03-11T06:33:19.000Z","dependencies_parsed_at":"2023-09-01T08:17:31.827Z","dependency_job_id":"8f760ec6-ebaf-45fd-863c-2a3332481ff7","html_url":"https://github.com/elerac/strand_integration","commit_stats":null,"previous_names":["elerac/strand_integration"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elerac%2Fstrand_integration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elerac%2Fstrand_integration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elerac%2Fstrand_integration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elerac%2Fstrand_integration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elerac","download_url":"https://codeload.github.com/elerac/strand_integration/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248243482,"owners_count":21071054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-reconstruction","hair","mvs","strand"],"created_at":"2024-10-13T02:42:52.356Z","updated_at":"2025-04-10T15:38:45.492Z","avatar_url":"https://github.com/elerac.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Strand Integration (PG2023)\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"documents/teaser_github_dark.png\"\u003e\n  \u003cimg alt=\"teaser\" src=\"documents/teaser_github_light.png\"\u003e\n\u003c/picture\u003e\n\n\u003e [**Refinement of Hair Geometry by Strand Integration**](https://elerac.github.io/strand_integration_page),  \n\u003e Ryota Maeda, Kenshi Takayama, Takafumi Taketomi,  \n\u003e Computer Graphics Forum (PG2023)  \n\nThis repository contains the following implementations:\n\n- **Strand Integration**: The official implementation of our paper \"Refinement of Hair Geometry by Strand Integration\" (PG2023).  \n- **LPMVS**: The unofficial implementation of LPMVS (Line-based PatchMatch MVS) proposed in the paper \"Strand-accurate Multi-view Hair Capture\" (CVPR2019). And we also provide the implementation of 3D line filtering.\n\n## Multi-view data\n\n### Small-scale data\n\nThis repository contains small-scale multi-view images of straight hair for debugging our code. This data is identical to the data used in our paper except that it is resized to 1/10. You can see it in [data/straight_s](data/straight_s).\n\n### Full-scale data\n\nYou can download the full-scale multi-view images from [release page](https://github.com/elerac/strand_integration/releases/tag/data).\n\n## Setup\n\nOur code requires to install the our custom Python extension implemented in C++. Please build and install it before running our code.  \n\n```bash\ncd cpp_ext\npip install .\n```\n\nFor more details, please refer to [cpp_ext](cpp_ext/).\n\n## Running\n\n```bash\n# LPMVS\npython run_lpmvs.py data/straight_s -o result/lpmvs/straight_s \n# Estimate a 3D line map for each view from multi-view images.\n\n# Run 3D line filtering (for LPMVS)\npython run_line_filtering.py result/lpmvs/straight_s result/merged_ply/lpmvs/straight_s.ply\n# Merge the 3D line maps into a single point cloud file.\n\n# 3D line consistency map\npython run_consistency_map.py result/lpmvs/straight_s -o result/consistency/straight_s\n# Generate a 3D line consistency map described in Subsection 3.5 in our paper.\n\n# Strand Integration\npython run_strand_integration.py result/lpmvs/straight_s --consistency result/consistency/straight_s -o result/si/straight_s --views 5 --imshow\n# This will only apply for view 5. You can run for all views by removing the --views option.\n\n# 3D line filtering (for Strand Integration)\npython run_line_filtering.py result/si/straight_s result/merged_ply/si/straight_s.ply\n# After running all views, you can merge the results same as the above process.\n```\n\nAfter running the reconstruction codes, you can visualize the .ply files as follows.\n\n```bash\n# Visualize ply files\npython visualize_ply.py result/merged_ply/si/straight_s.ply --gamma 0.45\n```\n\n## BibTeX\n\n```bibtex\n@article{maeda2023refinement,\n    author = {Maeda, Ryota and Takayama, Kenshi and Taketomi, Takafumi},\n    title = {Refinement of Hair Geometry by Strand Integration},\n    journal = {Computer Graphics Forum (proceedings of Pacific Graphics)},\n    volume = {42},\n    number = {7},\n    year = {2023}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felerac%2Fstrand_integration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felerac%2Fstrand_integration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felerac%2Fstrand_integration/lists"}