2019 - 使用 C++ 估算点云量
2019 - point cloud volume estimation with c++
我有一个点云(顶点数组 - x,y,z(,我们可以使用 - 用三个.js/webgl 显示点云。
我们将使用此设备:
https://www.sparkfun.com/products/14032https://www.youtube.com/watch?v=gCpCGkwwy8I
所以我们需要做的除了点云体积估计之外,我们可以做。
你有什么指示如何做到这一点,希望有例子吗?(我会从点云开始,然后进行体积估计(
我不擅长数学,所以拜托,我可以使用 API-s,但不能使用原始/复杂的数学计算。
为了计算点云的体积,您需要点云的 3D 网格表示。
既然您在问题的标签中添加了c++
,您是否考虑过使用 PCL?
PCL 提供了如下所示的表面重建算法。
获得点云的 3D 网格后,可以像这样计算网格的体积: 如何计算表面由三角形组成的 3D 网格对象的体积
希望这对您有所帮助!
我的简单方法假设线性插值。
想象一个地球仪,传感器位于地球核心的中心。然后,点云中的每个点都对应于表面上的高度。当我们将 3 个最近的点连接在一起时,它们就会形成一块三角形的土地。将 3 个角投影回传感器,我们将得到一个非常高的基于三角形的金字塔,又名四面体。
然后,我们可以使用四面体体积(1/3 底 * 高度(的公式来获得该体积。将所有的四面体相加,我们应该得到点云的体积。
也许棘手的部分是在表面上获取三角形列表。我们可以利用计算机图形学中的技术将点云转换为三角形网格,正如此处另一个SO问题所回答的那样。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 从不同线程使用int64的不同字节安全吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用Google Mock来模拟gettimeofday()
- 如何使用默认参数等选择模板专业化
- 为什么使用 "this" 指针调用派生成员函数?
- 使用新行和不使用新行读取文件
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 如何确定我已使用非编码文件到达 EOF?
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 使用CMake创建QML插件
- 使用strcpy将char数组的元素复制到另一个数组
- 在c++中使用nlohmann从类到json的转换
- 使用指针从C++中的数组中获取最大值
- 使用不带参数的函数访问结构元素