{"id":13608271,"url":"https://github.com/wzh99/OptICP","last_synced_at":"2025-04-12T14:32:30.998Z","repository":{"id":69775418,"uuid":"230360356","full_name":"wzh99/OptICP","owner":"wzh99","description":"SJTU CS337 Project: Optimization of ICP-Based Point Cloud Registration Methods","archived":false,"fork":false,"pushed_at":"2019-12-27T06:54:22.000Z","size":31,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-07T13:40:43.732Z","etag":null,"topics":["icp","optimization","parallel-programming","pcl","point-cloud","registration"],"latest_commit_sha":null,"homepage":"","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/wzh99.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}},"created_at":"2019-12-27T02:41:04.000Z","updated_at":"2024-06-14T08:22:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"8e9b563d-a280-4cec-90d4-36306685d54b","html_url":"https://github.com/wzh99/OptICP","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wzh99%2FOptICP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wzh99%2FOptICP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wzh99%2FOptICP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wzh99%2FOptICP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wzh99","download_url":"https://codeload.github.com/wzh99/OptICP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248581339,"owners_count":21128148,"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":["icp","optimization","parallel-programming","pcl","point-cloud","registration"],"created_at":"2024-08-01T19:01:25.772Z","updated_at":"2025-04-12T14:32:30.724Z","avatar_url":"https://github.com/wzh99.png","language":"C++","funding_links":[],"categories":["资源清单"],"sub_categories":["CS3310 (原 CS337) - 计算机图形学"],"readme":"# 基于迭代最近点的点云配准方法性能优化\n\n## 简介\n\n本项目为上海交通大学计算机图形学（CS337）课程大作业，由[王梓涵](https://github.com/wzh99)和[刘权](https://github.com/liuQuan98/)完成。\n\n本小组在现有标准 ICP 和 Go-ICP 代码基础上尝试若干性能优化。\n\n## 配置\n\n### 环境\n\n* Windows 10\n* MSVC 14.0 及以上\n* CMake 3.16\n\n### 依赖\n\n* PCL 1.9\n* VTK 8.2\n* Qt 5.12.5\n* Eigen 3.3.7\n* Boost 1.71\n* FLANN 1.7.1\n\n## 代码\n\n所有源文件位于 [src](src) 目录下，后续提及的测试函数均在 [src/main.cpp](src/main.cpp) 中。\n\n### 标准 ICP\n\n标准 ICP 共有两个实现：一个是在 [PCL](https://github.com/PointCloudLibrary/pcl) 基础上简化的单线程版本，见 [`SingleThreadedICP`](src/SingleThreadedICP.hpp)；另一个是使用并行算法的优化版本 [`ICP`](src/ICP.hpp)。两者均使用优化版本的 K-d 树进行最近邻点查找。\n\n测试 `testICP` 中考察了并行算法的性能提升。\n\n### Go-ICP\n\nGo-ICP 实现在[论文作者提供代码](https://github.com/yangjiaolong/Go-ICP)基础上改造完成，见 [`GoICP`](src/GoICP.hpp)。\n\n测试 `testGoICP` 中对 Go-ICP 的配准结果和运行时间进行考察，`testFpcsGoicpImprovement` 对预先使用 4-PCS 进行初始对齐再使用 Go-ICP 配准的设想进行了探索。\n\n### K-d 树\n\nK-d 树共有两个实现：一个是平凡的链接实现，见 [`NaiveKdTree`](src/NaiveKdTree.hpp)；另一个为进行内存优化的版本 [`KdTree`](src/KdTree.hpp)。\n\n测试 `testKdTreeCorrectness` 以蛮力搜索结果为标准，验证了各 K-d 树实现的正确性；`testKdTreeEfficiency` 考察了使用内存优化的性能提升。\n\n### DT\n\nDT 共有三个实现，一个是直接使用 K-d 树进行搜索的平凡版本 [`NaiveDT`](src/NaiveDT.hpp)；一个是 [Go-ICP](https://github.com/yangjiaolong/Go-ICP) 中附带的 [`DT3D`](src/jly_3ddt.h)；第三个是使用线性时间算法的 [`LinearDT`](src/LinearDT.hpp)。\n\n测试 `testdt` 比较了三者构建时间的差异以及精确度差异。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwzh99%2FOptICP","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwzh99%2FOptICP","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwzh99%2FOptICP/lists"}