- 博客(47)
- 资源 (5)
- 收藏
- 关注
原创 PCL绘制圆锥
本文介绍了如何通过单例模式(懒汉式)创建一个PCLViewer类,用于点云数据的可视化。PCLViewer类通过双重检查锁定机制确保线程安全,并提供了多种可视化功能,如点云、聚类结果、半透明圆锥等的显示。类中包含了将glm::dvec3向量转换为PCL点云的工具函数,以及处理点云数据的辅助方法。通过PCLVisualizer库,用户可以方便地进行3D点云的可视化操作,并通过viewSpin函数实现实时渲染循环。该设计模式确保了全局唯一实例的创建,简化了可视化接口的调用。
2025-05-19 11:36:43
107
原创 3D曲面上的TSP问题(二):ACO蚁群算法 + 2-opt搜索求解TSP问题
本文介绍了使用蚁群算法(ACO)结合2-opt局部搜索优化方法解决3D曲面上的旅行商问题(TSP)。文章首先通过OpenCV库中的cv::Mat类型距离矩阵distMap作为输入,初始化了ACO算法的参数,包括信息素矩阵、启发信息矩阵等。接着,详细描述了蚂蚁构建路径的过程,包括随机选择起点城市、计算转移概率、选择下一个城市等步骤。在每次迭代中,算法通过2-opt局部搜索对前20%的优秀蚂蚁路径进行优化,并更新信息素矩阵。最后,文章展示了如何动态调整算法参数以提高搜索效。
2025-05-15 17:21:09
288
原创 3D曲面上的TSP问题(一):曲面上点集距离求解
本文介绍了如何在3D曲面上计算两点之间的测地线距离,而非欧式距离。通过使用CGAL5.6.2和OpenCV4.11.0库,实现了从点集到凸包的计算,并进一步计算了测地线距离矩阵。代码中包含了点格式转换、凸包计算、最近点查询以及测地线距离计算等功能。具体实现中,首先将点集转换为CGAL格式,计算凸包,然后使用AABB树进行最近点查询,最后通过Surface_mesh_shortest_path计算测地线距离。代码还处理了可能出现的NaN或Inf值问题,确保计算的准确性
2025-05-15 17:11:37
321
原创 OpenGL超大分辨率图像显示
2)每绘制一块图像,对应绘制两个三角形((0,0),(1,1)单位矩形内的两个三角形),通过修改ModelMatrix,每次将两个三角形绘制在窗口的不同区域范围内,对ModelMatrix的修改包括平移和缩放两个部分(见代码RenderPattern接口实现)。1)将大图像拆分为多个小块(Tile),渲染整幅图像分解为每次绘制一块(Tile)图像,绘制多次,确保每块图像的纹理尺寸不超过OpenGL设备支持的纹理尺寸;bigimage.frag (GLSL着色器文件)1)Tile如何定义,如何划分Tile;
2025-05-06 14:41:10
253
原创 ROS2 开发踩坑记录(持续更新...)
这对于开发ROS程序时,需要包含特定的头文件时非常有用。查看包的安装位置和include路径详细文件列表。例如,xxx包名为pluginlib。在package.xml中添加。的路径,通常是为了找到与。这条指令的目的是查找。
2025-05-05 22:43:16
360
原创 固定尺寸矩形覆盖2D点云 + PCL可视化
在研究结构光传感器测量路径规划算法时遇到的问题:有一组2D点,如何用最少数量的固定尺寸的矩形框,覆盖所有点。通过DeepSeek,实现了一种解决方法并用PCL进行了结果的可视化。2)迭代多次,若查询到矩形框内无点,则删掉矩形框;若相邻矩形框的点可以用单个矩形框覆盖,则用单个矩形框代替两个矩形框;1)2D点按照矩形框尺寸,均匀划分网格;
2025-04-29 13:27:38
189
原创 2D无序点集曲线重建(沿曲线重新排序)
从队首的点出发,沿着第二个点到第一个点的方向,在允许角度偏差范围内寻找最近点。:从队尾的点出发,沿着前一点到当前点的方向,在允许角度偏差范围内寻找最近点。当两个方向都无法找到符合条件的点时,算法终止。可以通过构造函数调整这个参数来适应不同曲线。:控制搜索方向的角度偏差阈值(弧度)从任意点开始(代码中选择第一个点)找到它的最近邻作为第二个点。
2025-04-27 16:06:17
154
原创 高精度3D圆弧拟合 (C++)
本文的目的是C++实现高精度的3D圆弧拟合,基本思路为:1)RANSAC拟合平面,得到平面模型,去掉离群点;2)根据平面模型,构建新的坐标系:将源点云投影至此坐标系XOY平面,得到2D圆弧点云;3)拟合2D圆弧点云,得到圆心点和半径;4)将圆心点结合2)中的坐标系,反变换至源点云坐标系中,得到3D圆弧圆心,3D圆半径与3)半径结果一致。
2025-04-26 22:26:31
855
原创 高精度并行2D圆弧拟合(C++)
PCL库拟合圆弧的问题:PCL中坐标值默认使用float类型,在某些高精度场景中不适用。Step 2:使用ceres非线性优化的方法,拟合inliers点,得到圆心和半径;Step 1: RANSAC找到圆弧,保留inliers点;
2025-04-24 22:53:50
386
原创 并行RANSAC平面拟合(C++)
1)Eigen2)GLMStep 1:源点云随机采样3个点;Step 2:3个点拟合平面,统计符合该平面模型的点,为inlier点;Step 3:判断inlier点比例是否达到阈值,更新最佳模型和最佳模型对应的inlier点集。若inlier比例不到阈值,则继续Step 1;若已满足阈值或达到最大迭代次数,转Step 4;Step 4:针对最佳模型的inlier点集,使用最小二乘法,重新拟合平面;
2025-04-23 14:09:36
258
1
原创 C# 实现TCP/IP通信协议——Message结构设计
(1)通信Message包括报头+消息体+结束符;(2)报头包含报文Title、发送时间、报文类型,SequenceNo等数据。(3)内容采用明文,使用空格补足空缺位置。
2025-04-22 14:43:51
255
原创 C++高效读取大规模文本格式点云(windows)
C++高效读取大规模文本格式点云(windows)执行效率明显优于ifstream + stof
2025-04-03 15:50:16
171
原创 C++多项式Lasso回归(多变量函数拟合)
多项式回归和Lasso多项式回归的主要区别在于Lasso回归引入了 L1 正则化,从而具备了特征选择能力和对过拟合的抑制能力。如果数据存在明显的非线性关系且特征数量较少,多项式回归可能是一个不错的选择;但如果数据特征较多且需要进行特征选择和提高模型泛化能力,Lasso多项式回归则更为合适。
2025-02-21 22:36:00
1057
原创 PCL点云处理——球面点云提取+拟合
(3)点云聚类,忽略点数较少的簇,剩余较大的簇拟合球,计算球-平面距离。一平板上沾有多个球,使用激光扫描仪获取点云,包括平板点云+多个球冠点云;(2)剔除距离平面一定距离范围内的点,余下所有球冠点;提取各球点云,拟合球面参数,求取球到平板距离。(1)求平板平面:降采样,提取最大平面;
2025-02-20 08:19:17
349
原创 四边形网格处理——沿Edge遍历 & 矩形域顶点提取
四边形网格沿Edge遍历的大致思路,Edge首尾点分别为a,b,首先分别找到a,b邻接的所有面,取b邻接面的所有与b邻接的顶点,从这些顶点中再筛选出不属于a的邻接面的顶点,即沿Edge遍历的下一个顶点。
2025-02-07 15:04:46
817
原创 双归一化(Dual Normalization)在点云匹配任务中的应用
dual_normalization的含义 在点云匹配中,dual_normalization(双重归一化)是一种用于优化匹配过程的技术,旨在通过两次归一化操作来提高匹配的鲁棒性和准确性。它主要用于处理点云特征之间的相似性矩阵,通过归一化操作平衡不同特征之间的匹配得分
2025-02-07 11:01:43
521
原创 PPFStructualEmbedding & GeometricStructureEmbedding 模块实现源码精读
PPFStructureEmbedding 是一种基于 Point Pair Features (PPF) 的几何结构嵌入方法,通常用于点云处理任务中。PPF 是一种描述点云中局部几何关系的特征表示方法,广泛应用于点云配准、物体识别和姿态估计等任务。 GeometricStructureEmbedding 类是一个 PyTorch 模块,旨在将点云中的几何结构嵌入到高维空间中。该嵌入捕捉了点之间的成对距离和角度关系,这对于许多 3D 视觉任务(如点云分类、分割或目标检测)至关重要。
2025-02-06 00:00:40
446
原创 VCGLIB构造/深拷贝Mesh
深拷贝现有的Mesh数据,并考虑Face的删除(D)标记,新构造的Mesh中不含已删除的Face,且去除了未引用的顶点。
2025-01-31 21:51:40
168
原创 Soft Actor-Critic算法代码精解
SAC(Soft Actor-Critic) 是一种基于最大熵强化学习框架的算法,专门用于解决连续动作空间的任务。它结合了 Actor-Critic 框架和熵正则化的思想,能够在保证高效学习的同时,鼓
2025-01-22 14:08:05
394
原创 强化学习Actor-Critic算法代码精读(PyTorch,含详细注释)
强化学习Actor-Critic算法代码精读(PyTorch,含详细注释)Actor-Critic算法非常实用,TRPO、PPO、DDPG、SAC等深度强化学习算法都是在Actor-Critic框架下进行发展的。深入了解Actor-Critic算法对读懂目前深度强化学习的研究热点大有裨益。
2025-01-20 16:48:47
186
原创 基于曲率的点云降采样_曲率降采样(PCL+GPU)
基于曲率的点云降采样 pcl+cuda实现可实现尽可能保持细节特征的前提下,减少点云规模。使用CUDA加速,执行效率高。
2024-12-13 13:36:43
572
原创 快速提取规则立方体堆叠的外表面——基于VTK实现(二)
上文中实现的算法,可能存在非流形边的问题(两立方块仅存在一条边邻接)。(2)增加新的立方块,使新的立方块与这两立方块都是面邻接的关系;如果不考虑这个问题的话,实现(一)得内容就可以了。(1)识别出所有在两立方块仅存在一条边邻接的地方;(3)重复上述步骤,直到不存在非流形边。
2024-11-12 19:37:53
202
原创 快速提取规则立方体堆叠的外表面——基于VTK实现(一)
(1)在立方体堆叠方面,执行效率优于vtkCubeSource + vtkAppendPolyData方法;比如两个并排的立方体,一共6+6=12个面,但是中间有两个面是在内部,如何识别出这两个面,并把他们去掉呢?(2)在提取表面方面,效率优于vtkDataSetSurfaceFilter接口;后续可进一步通过使用vtkTriangleFilter将结果转为三角面片。问题:多个立方体面靠面的堆叠在一起,如何提取其外表面。1. 如何实现立方体堆叠;2. 如何清理重复顶点;3. 如何清除内部面;
2024-11-08 17:29:18
277
原创 RIMLS点云滤波算法——具有锐利边缘的点云平滑
是一种用于点云去噪和表面重建的算法。它特别适用于处理具有锐利边缘的点云数据,因为它能够在去噪的同时保留这些边缘特征。RIMLS算法的核心思想是将点云中的每个点投影到一个分段光滑的表面上,这个表面是通过局部拟合点云数据得到的。RIMLS算法能够有效地处理具有锐利边缘的点云数据,同时减少噪声的影响。这使得它在许多应用中非常有用,如三维建模、计算机视觉和几何处理。资源中给出了一种C++实现,基于Github代码。
2024-10-23 10:15:31
1148
原创 Eigen/VCG如何构造和应用局部旋转坐标变换
已知变换后X、Y、Z轴方向向量(至少知道其中两个,第三个可以通过叉乘得到)在变换前坐标系下的表示,可通过这三个方向向量构造一个旋转矩阵。应用旋转矩阵得到变换后的向量表示。
2024-10-20 21:21:41
337
原创 CGAL生成闭合凸曲面后如何调整法线方向(翻转法向)
一个可能遇到的问题是,生成的曲面法向方向错误,期望法向为曲面→曲面外侧,实际为曲面→曲面内侧,此时需要进行法向翻转。一种可行的方法是,计算曲面上一点法向,计算曲面质心指向该点向量,通过判断法向和该向量的夹角来决定是否进行法向翻转。
2024-10-16 11:19:03
220
原创 CGAL的Surface_mesh中K-邻域(K-ring)顶点查找
在三维几何处理中,尤其是在处理网格(如三角网格)时,K-ring的概念经常用来描述顶点周围的局部几何结构。例如,在表面重建、特征提取、网格编辑、曲面平滑等应用中,K-ring可以用来定义平滑操作的邻域范围,或者用于识别和处理网格中的特定特征点。
2024-10-14 16:36:21
295
原创 CGAL中判断Surface_mesh的一条边是凸边(Convex)还是凹边(Concave)
对于每条边,计算其两个相邻面的法线,然后计算这两个法线向量之间的角度。如果这个角度大于180度,则该边为凹边;如果小于180度,则为凸边。
2024-10-13 17:21:35
190
RIMLS点云滤波算法C++实现
2024-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人