- 博客(26)
- 收藏
- 关注
原创 最小有向包围盒——2D平面
计算几何:用于分析点集的边界特征。图形学:用于碰撞检测和物体包围。数据科学:在聚类分析、异常值检测等场景中用于计算数据的紧致边界。本文提出了一种基于凸包和最小矩形算法的二维最小有向包围盒计算方法,并展示了如何通过代码实现这一算法。主要步骤凸包计算:使用qhull2D方法计算输入点集的凸包。这一步可以确保我们找到点集的外部边界,以此作为最小矩形的候选边界。最小矩形计算:利用算法计算最小有向包围盒。算法返回矩形的宽度、高度、角点坐标和面积。
2024-11-29 15:40:24
724
原创 HEAT: Holistic Edge Attention Transformer for Structured Reconstruction结构化重建建筑平面图——代码跑通
HEAT 提出了基于边注意力的 Transformer 模型,通过全面建模边的局部与全局关系,解决了传统结构重建方法中对边信息忽视的问题。实验结果表明,其在几何精度、拓扑一致性和运行效率上均具有显著优势,为复杂场景下的结构化重建提供了一种创新解决方案。然而,该方法在实时性和稀疏数据适应性方面仍有改进空间。
2024-11-29 14:19:42
1063
原创 python打包成exe文件
pyinstaller是一个python的第三方库,它能够在Windows、Linux、 Mac OS 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。在Windows上使用就打包成.exe文件。在Mac上使用就打包成mac app。
2024-11-18 11:48:59
438
原创 程序报错ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or
错误ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()通常是由于逻辑操作符在对数组进行比较时引发的。在这个错误中,points[:,2]是一个数组,不能对两个比较同时进行广播操作,因此会报错。
2024-09-04 10:59:51
907
原创 无法找到 v143 的生成工具。安装 v143 可使用 v143 生成工具进行生成
打开项目文件夹下的.vcxproj文件,右键打开方式为记事本或者VSCode,ctrl+F搜索143,全部替换到当前编译器版本,VS2017是141,VS2019是142。是 Visual Studio 2022 的默认工具集版本,在 Windows 操作系统中,打开。可以在开始菜单中搜索“Visual Studio Installer”找到它进行安装。
2024-08-27 16:32:32
4250
原创 平面几何——判断点是否在多边形内部
在判断点是否在平面上多边形内的方法,本文使用了经典的射线法,也可以叫奇偶规则。使用了一个水平射线与多边形的交点数来确定点是否在多边形内部。,将前面的比例值乘以这个宽度,得到点的 y 坐标对应于边上 x 坐标的相对位置,这个公式计算的是水平射线与多边形边的交点在 x 轴上的位置,计算了点的 y 坐标相对于边的 y 坐标范围的相对位置,将之前计算得到的相对 x 坐标加上。,得到实际的交点 x 坐标。
2024-08-24 22:42:04
795
2
原创 凸包算法——Divide and Conquer
值过小的情况,避免在精度不足时进入死循环;确保每次递归处理的数据都是有意义的,避免重复计算相同的数据;但是在进行运算的时候,会出现无限递归的情况,排查后,增加递归深度检查,防止过深的递归调用;
2024-08-22 22:38:18
287
原创 凸包算法——Graham Scan、Jarvis March(Gift Wrapping)实现
凸包算法的目的是从一个点集计算出最小的凸多边形,包围所有点。
2024-08-22 19:03:51
402
原创 构建python库到site-package中
随后在concavity的同级目录下创建setup.py和readme.md文件对要发布的包进行说明。接下来进行打包安装即可。
2024-08-21 15:01:02
535
原创 解决ERROR: Could not find a version that satisfies the requirement pybind11>=2.3 (from versions: none)
在Ubuntu系统编译cpp文件为可以调用的py库时,发生错误:WARNING: The repository located at。安装正确的版本pybind11。
2024-08-21 14:51:38
314
原创 编译C++工程文件(使用PCL库)到DLL并正确调用
新建动态链接库(dll项目)初始这个项目会有pch.h、framework.h、pch.cpp、Dllmain.cpp的文件,具体说明自行搜索,我这里将其全部删除,并创建了程序的.h和.cpp。然后将需要编译被调用的函数,export接口,在.h文件中声明函数即可。.h内容如下:.cpp文件只需将被调用的方法声明即可。该函数可以调用这个程序下的所有文件,不需要extern出去。在编译前,项目C/C++中的预编译头,编辑选择不使用预编译头,然后点击项目生成解决方案,即可看到生成的dll和lib文件。
2024-08-02 11:25:39
385
原创 结构化建筑物点云逆向工程实现
获取的室内三维点云通常是非结构化的,不包含语义信息。因此,我们采用了一种几何建模的方法,对建筑场景中的柱子和里面进行了结构化、轻量化的建模。激光扫描技术具有采样率高、高分辨率、高精度、全景化扫描等优点。
2024-06-07 11:34:07
329
原创 谱聚类 - 基于 Python 的实现
谱聚类(Spectral Clustering)是一种基于图论的聚类方法,通过对数据点的相似度矩阵进行特征值分解,从而识别出数据中的簇结构。相比于传统的聚类方法,如K-means,谱聚类在处理非线性、复杂结构的数据集时表现尤为出色。: 在特征向量构成的新特征空间中,应用K-means或其他聚类算法对数据点进行聚类。图拉普拉斯矩阵是谱聚类的核心,反映了数据点之间的连接关系。: 我们首先需要计算数据点之间的相似度,可以使用高斯核函数或其他合适的相似度度量方法来构建相似度矩阵。结合本专栏的Kmeans一起使用。
2024-05-30 11:11:00
796
原创 OPEN3D 建筑物房间平面立面分割——基于法向量阈值的区分方法
首先,我们加载了建筑物房间的点云数据,并使用Open3D的KDTree搜索方法进行法线估计。然后,根据法线的Z分量,我们设定了两个阈值:当法线Z分量绝对值大于0.9时,判定为平面点;为了更直观地展示平面和立面点的分割效果,我们为平面点和立面点分别赋予了不同的颜色——红色表示平面点,蓝色表示立面点。最终,我们将分割后的点云数据保存为PCD文件,并使用Open3D的可视化工具进行显示。通过这种基于法向量阈值的区分方法,可以高效地进行建筑物房间的平面和立面分割,提升点云数据处理的精度和效果。
2024-05-30 11:01:53
549
原创 高斯混合模型(Gaussian Mixture Model,GMM)聚类算法(python实现)
高斯混合模型(Gaussian Mixture Model,GMM)是一种基于概率模型的聚类方法,它假设数据是由多个高斯分布组成的混合体。以下是 GMM 聚类算法的基本原理和数学公式。
2024-05-12 23:46:48
3463
原创 K-means点云聚类算法(python实现)
K-Means 是一种常用的聚类算法,它的原理和数学公式相对简单,适用于很多实际应用场景。以下是 K-Means 聚类算法的基本原理和数学公式。
2024-05-12 21:53:37
1126
原创 点云边缘计算——提取线段并拟合
本文提出一种交互式、用户驱动、特征辅助的从任意大小的点云进行几何重建的框架。为建筑和城市测量场景 中的高精度建模任务实现了一套特征辅助工具,使从真实世界建筑内部和立面收集的大规模数据上的即时反馈交互式点云操作成为可能。我们的特征辅助CAD工具不需要专门的点云基础 设施,可以很容易地与现有的交互系统集成,可以直接部署在各类CAD设计工具中使用。作为未来的工作,这可以为网格优化建模重建提供有力的帮助。因此,通过区域生长,多面判断的方式,我们对异型构件(单面、双面、三面)之间的交线进行了提取并拟合线段。
2024-04-30 14:55:22
1184
原创 两点云求交集-python实现
这里两点云的交集指既属于点云1又属于点云2的点集。基于kd-tree搜索的方法较快速,当然也可以暴力搜索。思路如下:step1 在点云2建立kd-tree,设置容忍误差(搜索半径)step2 遍历点云1中的点,记录下到点云2中的点的距离小于搜索半径的点的索引step3 将点云1中不在索引中的点保存下来作为结果点云3。
2024-01-25 15:00:08
566
原创 交互式-辅助提取边界线
点云重建几何形状是一项常见的任务,通常由建模工程师在具有cad功能的软件中手动建模几何形状来完成。基于全自动几何提取的最先进的工作流程受到点云密度和内存限制,需要用 户进行预处理和后处理。本文提出一种交互式、用户驱动、特征辅助的从任意大小的点云进行交互式提取边缘的框架。本文目前实现了前三个功能,4和5在尝试,下面看下程序运行结果。
2024-01-22 22:07:34
581
转载 Delaunay三角形化方法
网格文件中存储的是所有节点的坐标及节点间连接关系,节点的位置无法用一个固定的法则予以有序的命名,一般通过专门的程序或者软件来完成。(1) Delaunay三角形化方法所连接成的各三角形中的最小角对给的的这一组点是各种连接方式的最大者*(最小角的最大化);(即:在某个三角形的外接圆内,只包含在外接圆上的三个节点,不包含其他节点)(2) 生成的三角形边长的均匀性最好,最接近正三角形。(3)每个点均不位于不包含该点的三角形的外接圆内*(2)所形成的三角形可以覆盖整个平面;(1) 所形成的三角形互不重叠;
2023-10-09 11:00:37
402
2
TA创建的收藏夹 TA关注的收藏夹
TA关注的人