《3D Registration with Maximal Cliques 基于极大团的三维配准 》复现
《3D Registration with Maximal Cliques》CVPR2023最佳学生论文,读过后,感觉效果不错,来尝试简单复现一下!!!
环境配置
复现环境:windows + cmake 3.27 + vs2019
论文代码:https://github.com/zhangxy0517/3D-Registration-with-Maximal-Cliques 下载到本地
根据要求,代码中使用的核心库有 PCL>=1.10.1 igraph-0.9.9, OpenMP
igraph是一个用于分析和可视化复杂网络的库。它提供了用于创建、操作和分析图形结构的工具,包括图论中常见的算法和指标。这个库在计算社交网络、生物网络、通信网络等领域中非常有用。你可以使用
igraph
来执行各种操作,例如计算节点之间的距离、查找关键节点、检测社区结构、生成随机图形等等。
OpenMP(Open Multi-Processing)是一种用于并行编程的API(Application Programming Interface),它允许程序员利用共享内存架构上的多处理器系统来加速程序的执行。OpenMP旨在简化并行编程,使得程序员能够通过在其现有代码中添加一些指令或注释来利用多处理器系统。
OpenMP库提供了一组指令集,程序员可以使用这些指令来指定哪些部分的代码应该并行执行,以及如何将计算任务分配给多个处理器核心。通常情况下,程序员可以使用OpenMP来并行化循环、执行任务级并行化等。
OpenMP 支持 C、C++和Fortran等。
OpenMP 相关链接
其中,OpenMP 在Windows系统中,一般已经包含在编译器中,无需配置
PCL配置
略(网络上能搜索到详细教程)
igraph 配置
论文中采用 0.9.9 版本
igraph-0.9.9 主页: https://igraph.org/c/html/0.9.9/
igraph github地址:https://github.com/igraph/igraph
release页面下载 .tar.gz 压缩包,其中后缀名其他的不要下载,会报错,见 下面报错1
igraph bundles a number of libraries for convenience. However, it is preferable to use external versions of these libraries, which may improve performance.
根据安装要求,还可以安装其他,可进一步提升性能的外部库 这里我们使用默认
When building the development version of igraph,
bison
,flex
andgit
are also required. Released versions do not require these tools.
根据提示,当我们构建开发版本时,还需要安装 bison flex 和 git,(发布版本不需要,到现在也没搞明白发布版本在哪里,应该是指直接从包管理工具下载,但没有windows平台的)
因此,我们还需安装 bison flex (git 默认大家已安装)
Bison 是一个用于生成语法分析器的自由工具,它是 GNU 工具集中的一部分,通常与 Lex 或 Flex 一起使用。Bison 接受一个上下文无关文法描述作为输入,并生成一个 C 或 C++ 语言的解析器。这个解析器能够分析输入的符号串,识别其中的语法结构,并根据给定的文法执行相应的操作。
Flex 是一个用于生成词法分析器的工具,它是 Lex 的替代品。Flex 接受一个包含正则表达式和对应动作的规则文件作为输入,并生成一个 C 或 C++ 语言的词法分析器。这个词法分析器能够识别输入的符号串中的词法单元,并执行相应的操作。
安装参照:Windows下安装Flex和Bison及环境配置 https://blog.csdn.net/weixin_46013401/article/details/114397006
flex bison安装完成,我们即可开始安装igraph
进入文件夹,在文件夹路径下打开终端,依次执行命令
cmake -B build
cmake --build build --config=Release --target=install
默认情况下会安装到 C:\Program Files (x86) 路径下
注意事项
- 这里不建议切换修改路径,可能后续构建MAC项目会找不到,或者需要手动在cmake-gui 填入,建议默认即可
- 执行第二条命令时,可能会提示权限不够,无论你使用哪里的终端,都重新启动选择管理员执行
此时 我们igraph 就安装好了
MAC 工程构建
选择官方代码中的windows 目录,将其拷贝到建立工程的文件夹
进入到文件夹下,然后终端执行cmake命令构建vs工程,或使用cmake-gui 进行构建
cmake -B build # 一句即可完成
cmake-gui,点击configure命令 确认配置 vs2109 x64,查找依赖的库即 PCL igraph,再次点击configure
点击 generate,即构建完成
vs 打开 选择 Release/Debug x64 进行编译 ,可能会出现报错error2、error3,根据下文方法进行修改
把官方代码中用到的Demo测试点云文件夹拷贝到 和exe 同级目录下,然后执行
MAC.exe --Demo
复现结果
第一阶段


第二阶段


输出结果
论文给出的Demo示意过程gif
基本一致,收工!
相关报错
- 未正确下载 .tar.gz 可能会报错
Cannot find out the version number of this package; IGRAPH_VERSION is missing.
--
-- The official igraph tarballs should contain this file, therefore you are
-- most likely trying to compile a development version yourself. The development
-- versions need Git to be able to determine the version number of igraph.
--
-- It seems like you do have Git but it failed to determine the package version number.
--
-- Git was found at: /bin/git
-- The version number detection failed with: HEAD-HASH-NOTFOUND
- fatal error C1128: 节数超过对象文件格式限制: 请使用 /bigobj 进行编译
参照:fatal error C1128: 节数超过对象文件格式限制: 请使用 /bigobj 进行编译
- error: 初始化”: 无法从“boost::shared_ptrpcl::PointIndices”转换为“std::shared_ptrpcl::PointIndices”
修改 boost::shared_ptr 为 std::shared_ptr
【有问题,欢迎留言、进群讨论或私聊,群:392784757】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理