自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (5)
  • 收藏
  • 关注

原创 QOpenGLWidget自定义控件— 2D点云显示(支持平移、放缩、绘制网格)

摘要:该代码实现了一个基于Qt和OpenGL的点云可视化工具PointCloudViewer。主要功能包括:1) 支持三维点云的加载和显示;2) 提供网格背景和坐标轴辅助观察;3) 实现鼠标交互(平移、缩放)操作;4) 支持点大小和颜色的自定义设置。关键技术点包括:使用OpenGL着色器绘制点云和网格,正交投影实现2D视图,鼠标事件处理实现视图变换,以及动态调整网格间距的智能算法。该工具可用于点云数据的快速可视化检查和分析。

2025-07-16 16:24:52 196

原创 SimLOD代码精读(六) Rendering—DrawNodes

【摘要】SimLOD是一种基于相似性的多层次细节算法,用于大规模3D点云/网格数据的动态简化。其核心是通过分析数据相似性自适应调整细节层次,在保持视觉质量的同时提升渲染效率。算法采用八叉树结构组织数据,通过CUDA并行实现高效渲染,主要特点包括:1) 基于视锥剔除和像素尺寸的节点可见性判定;2) 针对边缘区域的特殊LOD处理;3) 双重渲染流程(先深度后颜色)确保正确性;4) 支持两种可见性计算方法(DISJUNCT和ADDING模式);5) 采用持久线程模式和工作窃取策略优化GPU利用率。

2025-07-15 15:26:54 884

原创 2D下的几何变换(C#实现,持续更新)

(1)已知2D下,新坐标系的原点、X轴方向向量、Y轴方向向量在原始坐标系下的表示,求原始坐标系中直线。(2)求直线与2D包围盒的交点,可能有0、1或2个交点;,在新坐标系下的直线方程;

2025-07-11 23:08:38 260

原创 SimLOD代码精读(五)Rendering——Node可见性判定 Disjunct VS Additive

SimLOD是一种基于相似性的多层次细节算法,用于大规模3D点云的高效渲染。其核心区别在于Additive和Disjunct两种可见性策略:Additive允许父子节点同时可见,保留更多细节但增加渲染负载;Disjunct则互斥显示父子节点,降低负载但可能丢失细节。代码实现中采用Disjunct策略的并行计算,通过八叉树节点筛选和统计可见节点数量,确保在减少渲染负载的同时维持视觉质量。该算法通过动态调整细节层次,有效平衡了渲染效率和视觉保真度。

2025-07-10 14:14:19 329

原创 LKH-3算法求解TSP问题基本原理与应用

LKH-3(Lin-Kernighan-Helsgaun)是求解旅行商问题(TSP)的最强启发式算法之一,由丹麦计算机科学家Keld Helsgaun在LKH-2基础上改进而来。它的核心思想是:通过智能的“局部破坏与修复”策略,逐步优化路径,最终找到接近最优的解。

2025-07-09 16:08:58 897

原创 SimLOD代码精读(四)Allocate Chunks + Insert Points & Voxels

SimLOD是一种创新的3D数据简化算法,通过建立八叉树结构实现动态LOD管理。算法流程包含:1)八叉树构建(计数与分裂阶段);2)体素采样确定节点对应数据;3)内存分配(为叶节点分配点数据块,为内部节点分配体素数据块);4)数据填充(处理新批次点集和溢出数据)。该技术通过相似性分析平衡渲染质量与效率,适用于大规模点云/网格处理。相关代码实现位于progressive_octree_voxels.cu文件,包含详细注释。

2025-07-07 15:13:03 553

原创 SimLOD代码精读(三)Voxel Sampling 体素采样

SimLOD是一种基于相似性的多层次细节算法,用于大规模3D点云或网格数据的高效渲染。该算法通过构建八叉树结构实现动态数据简化,在Voxel采样阶段将每个内部节点划分为128³体素网格,使用位掩码标记占用状态。计算点云在各层级节点的局部体素坐标,通过原子操作确保线程安全,并生成简化后的点云数据。算法在保持视觉质量的同时显著提升渲染性能,适用于海量3D数据的实时处理。代码实现包含坐标转换、体素索引计算等核心步骤,通过GPU并行处理优化计算效率。

2025-07-03 15:45:44 412

原创 SimLOD代码精读(二)建立Octree之Splitting Pass分裂阶段

SimLOD是一种基于相似性的多层次细节算法,用于大规模3D点云数据的动态简化。其核心是通过分析数据相似性自适应调整细节层次,在保持视觉效果的同时提升渲染效率。算法实现包含Octree构建的CountingPass和SplittingPass两个关键阶段:CountingPass负责统计节点数据量并标记需要分裂的节点;SplittingPass则处理节点分裂,包括创建8个子节点、初始化节点属性、建立继承关系、回收点数据和分配占用网格等操作。这些操作通过并行计算高效执行,最终实现点云数据的层次化组织与管理。

2025-06-30 23:39:56 428

原创 SimLOD代码精读(一)建立Octree之Counting Pass计数阶段

SimLOD提出了一种GPU并行八叉树点云处理算法,通过原子操作和线程协作优化计算效率。算法采用八叉树结构组织点云数据,使用Warp-Level Reduction技术减少原子操作调用,降低GPU全局内存访问竞争。关键步骤包括:1) 量化坐标并定位叶节点;2) 通过分组原子操作高效计数;3) 处理溢出节点并重新分配数据。当溢出节点数为0时,算法结束Expanding阶段进入Voxel Sampling阶段。该方法实现了高效的点云统计与管理,适合大规模3D数据处理。

2025-06-29 23:43:27 478

原创 CUDA使用coalesced_threads配合labeled_partition减少原子操作提升并行效率

摘要: 本文介绍了CUDA的两个线程协作函数cg::coalesced_threads()和cg::labeled_partition()在点云计数优化中的应用。前者获取当前活跃线程(如Warp中实际运行的线程),后者按叶节点地址分组,使访问同一节点的线程合并操作。通过每组仅执行1次原子操作(如atomicAdd),而非每个线程1次,显著减少竞争。例如,8个线程访问同一叶节点时,只需1次+8而非8次+1。该方法适用于八叉树、哈希表等场景,有效提升GPU并行效率。

2025-06-29 11:34:03 846

原创 2D曲线点云平滑去噪

本文提出了一种二维曲线点云平滑去噪方法,采用移动最小二乘法(MLS)分段拟合抛物线并投影,将宽曲线点云细化为单条曲线。针对曲线方向与Y轴不同偏差情况(偏离较远或较近),分别采用不同投影策略:当偏离较远时使用y=ax²+bx+c拟合,较近时用x=ay²+by+c表示。该方法通过局部曲率估计和PCA分析自适应调整平滑参数,避免二阶多项式过拟合问题。文中给出了基于Eigen库的C++实现代码,包括邻域搜索、曲率计算、抛物线拟合和投影等核心步骤,并指出考虑距离和曲率权重的优化方向。

2025-06-21 22:43:17 216

原创 CGAL 求点到凸包最近点及对应法向

本文介绍了一个基于CGAL库的三维点集处理工具类(cgal_utils.h/cpp),主要功能包括:1) 将点集转换为三维凸包(Polyhedron或Surface_mesh格式);2) 计算各点到凸包的最近邻点及其对应法向量。该工具采用CGAL 5.6.2实现,支持点集格式转换(glm::dvec3与CGAL点互转)、凸包计算、AABB树加速最近邻查询,以及法向量计算等功能。

2025-06-06 10:14:20 220

原创 PCL绘制圆锥

本文介绍了如何通过单例模式(懒汉式)创建一个PCLViewer类,用于点云数据的可视化。PCLViewer类通过双重检查锁定机制确保线程安全,并提供了多种可视化功能,如点云、聚类结果、半透明圆锥等的显示。类中包含了将glm::dvec3向量转换为PCL点云的工具函数,以及处理点云数据的辅助方法。通过PCLVisualizer库,用户可以方便地进行3D点云的可视化操作,并通过viewSpin函数实现实时渲染循环。该设计模式确保了全局唯一实例的创建,简化了可视化接口的调用。

2025-05-19 11:36:43 129

原创 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 323

原创 3D曲面上的TSP问题(一):曲面上点集距离求解

本文介绍了如何在3D曲面上计算两点之间的测地线距离,而非欧式距离。通过使用CGAL5.6.2和OpenCV4.11.0库,实现了从点集到凸包的计算,并进一步计算了测地线距离矩阵。代码中包含了点格式转换、凸包计算、最近点查询以及测地线距离计算等功能。具体实现中,首先将点集转换为CGAL格式,计算凸包,然后使用AABB树进行最近点查询,最后通过Surface_mesh_shortest_path计算测地线距离。代码还处理了可能出现的NaN或Inf值问题,确保计算的准确性

2025-05-15 17:11:37 335

原创 PCL点云按指定方向进行聚类(指定类的宽度)

点云按指定方向进行聚类(滑动窗口分割),需指定方向和类的宽度。

2025-05-08 14:39:25 396

原创 OpenCV提取图像中的暗斑/亮斑

滑动窗口动态阈值 + 阈值范围 + 开操作 + 闭操作 + 连通域提取和分析。

2025-05-07 10:55:21 354

原创 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 312 1

原创 ROS2 开发踩坑记录(持续更新...)

这对于开发ROS程序时,需要包含特定的头文件时非常有用。查看包的安装位置和include路径详细文件列表。例如,xxx包名为pluginlib。在package.xml中添加。的路径,通常是为了找到与。这条指令的目的是查找。

2025-05-05 22:43:16 379

原创 固定尺寸矩形覆盖2D点云 + PCL可视化

在研究结构光传感器测量路径规划算法时遇到的问题:有一组2D点,如何用最少数量的固定尺寸的矩形框,覆盖所有点。通过DeepSeek,实现了一种解决方法并用PCL进行了结果的可视化。2)迭代多次,若查询到矩形框内无点,则删掉矩形框;若相邻矩形框的点可以用单个矩形框覆盖,则用单个矩形框代替两个矩形框;1)2D点按照矩形框尺寸,均匀划分网格;

2025-04-29 13:27:38 215

原创 求解有序2D曲线点曲率并可视化

计算有序2D点集曲率并可视化。使用PCL版本 1.15.0。

2025-04-28 15:11:35 238

原创 2D无序点集曲线重建(沿曲线重新排序)

从队首的点出发,沿着第二个点到第一个点的方向,在允许角度偏差范围内寻找最近点。:从队尾的点出发,沿着前一点到当前点的方向,在允许角度偏差范围内寻找最近点。当两个方向都无法找到符合条件的点时,算法终止。可以通过构造函数调整这个参数来适应不同曲线。:控制搜索方向的角度偏差阈值(弧度)从任意点开始(代码中选择第一个点)找到它的最近邻作为第二个点。

2025-04-27 16:06:17 173

原创 PCL绘制点云+法线

读取的点云ASCII码文件,每行6个数据,3维坐标+3维法向。

2025-04-27 00:09:38 560

原创 高精度3D圆弧拟合 (C++)

本文的目的是C++实现高精度的3D圆弧拟合,基本思路为:1)RANSAC拟合平面,得到平面模型,去掉离群点;2)根据平面模型,构建新的坐标系:将源点云投影至此坐标系XOY平面,得到2D圆弧点云;3)拟合2D圆弧点云,得到圆心点和半径;4)将圆心点结合2)中的坐标系,反变换至源点云坐标系中,得到3D圆弧圆心,3D圆半径与3)半径结果一致。

2025-04-26 22:26:31 943

原创 高精度并行2D圆弧拟合(C++)

PCL库拟合圆弧的问题:PCL中坐标值默认使用float类型,在某些高精度场景中不适用。Step 2:使用ceres非线性优化的方法,拟合inliers点,得到圆心和半径;Step 1: RANSAC找到圆弧,保留inliers点;

2025-04-24 22:53:50 421

原创 并行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 277 1

原创 C# 实现TCP/IP通信协议——Message结构设计

(1)通信Message包括报头+消息体+结束符;(2)报头包含报文Title、发送时间、报文类型,SequenceNo等数据。(3)内容采用明文,使用空格补足空缺位置。 

2025-04-22 14:43:51 269

原创 点云多项式拟合(Z拟合为X和Y的二元n阶多项式)

点云多项式拟合,支持n阶多项式Z拟合为X和Y的二元n阶多项式

2025-04-09 14:19:00 134

原创 PCL拟合空间3D圆周 fit3DCircle

PCL 拟合空间3D圆周 得到圆心 法向量和半径

2025-04-08 16:58:32 420

原创 C++高效读取大规模文本格式点云(windows)

C++高效读取大规模文本格式点云(windows)执行效率明显优于ifstream + stof

2025-04-03 15:50:16 178

原创 C++多项式Lasso回归(多变量函数拟合)

多项式回归和Lasso多项式回归的主要区别在于Lasso回归引入了 L1 正则化,从而具备了特征选择能力和对过拟合的抑制能力。如果数据存在明显的非线性关系且特征数量较少,多项式回归可能是一个不错的选择;但如果数据特征较多且需要进行特征选择和提高模型泛化能力,Lasso多项式回归则更为合适。

2025-02-21 22:36:00 1082

原创 CGAL生成融合双椭球SurfaceMesh

使用CGAL构造融合双椭球曲面,输入为双椭球曲面的若干关键尺寸。

2025-02-20 14:12:44 171

原创 PCL点云处理——球面点云提取+拟合

(3)点云聚类,忽略点数较少的簇,剩余较大的簇拟合球,计算球-平面距离。一平板上沾有多个球,使用激光扫描仪获取点云,包括平板点云+多个球冠点云;(2)剔除距离平面一定距离范围内的点,余下所有球冠点;提取各球点云,拟合球面参数,求取球到平板距离。(1)求平板平面:降采样,提取最大平面;

2025-02-20 08:19:17 390

原创 四边形网格处理——沿Edge遍历 & 矩形域顶点提取

四边形网格沿Edge遍历的大致思路,Edge首尾点分别为a,b,首先分别找到a,b邻接的所有面,取b邻接面的所有与b邻接的顶点,从这些顶点中再筛选出不属于a的邻接面的顶点,即沿Edge遍历的下一个顶点。

2025-02-07 15:04:46 845

原创 双归一化(Dual Normalization)在点云匹配任务中的应用

dual_normalization的含义        在点云匹配中,dual_normalization(双重归一化)是一种用于优化匹配过程的技术,旨在通过两次归一化操作来提高匹配的鲁棒性和准确性。它主要用于处理点云特征之间的相似性矩阵,通过归一化操作平衡不同特征之间的匹配得分

2025-02-07 11:01:43 545

原创 PPFStructualEmbedding & GeometricStructureEmbedding 模块实现源码精读

PPFStructureEmbedding 是一种基于 Point Pair Features (PPF) 的几何结构嵌入方法,通常用于点云处理任务中。PPF 是一种描述点云中局部几何关系的特征表示方法,广泛应用于点云配准、物体识别和姿态估计等任务。  GeometricStructureEmbedding 类是一个 PyTorch 模块,旨在将点云中的几何结构嵌入到高维空间中。该嵌入捕捉了点之间的成对距离和角度关系,这对于许多 3D 视觉任务(如点云分类、分割或目标检测)至关重要。

2025-02-06 00:00:40 465

原创 VCGLIB构造/深拷贝Mesh

 深拷贝现有的Mesh数据,并考虑Face的删除(D)标记,新构造的Mesh中不含已删除的Face,且去除了未引用的顶点。

2025-01-31 21:51:40 180

原创 Soft Actor-Critic算法代码精解

SAC(Soft Actor-Critic) 是一种基于最大熵强化学习框架的算法,专门用于解决连续动作空间的任务。它结合了 Actor-Critic 框架和熵正则化的思想,能够在保证高效学习的同时,鼓

2025-01-22 14:08:05 453

原创 OpenCV提取前景物体颜色(HSV值)

提取图像前景物体的颜色HSV特征

2025-01-22 12:56:43 223

原创 强化学习Actor-Critic算法代码精读(PyTorch,含详细注释)

强化学习Actor-Critic算法代码精读(PyTorch,含详细注释)Actor-Critic算法非常实用,TRPO、PPO、DDPG、SAC等深度强化学习算法都是在Actor-Critic框架下进行发展的。深入了解Actor-Critic算法对读懂目前深度强化学习的研究热点大有裨益。

2025-01-20 16:48:47 205

Visual Assist X 2025.2 v10.9.2556.0 (07 Apr 2025) + CRACK 适用于VS2022

Visual Assist X 2025.2 v10.9.2556.0 (07 Apr 2025) + CRACK 适用于VS2022

2025-06-17

visual assist 2522 cracked.zip

vs2022小番茄工具,仅支持vs2022

2025-03-31

RIMLS点云滤波算法C++实现

基于论文 《Feature Preserving Point Set Surfaces based on Non‐Linear Kernel》用C++实现的RIMLS点云滤波。 基于Github项目 Plane-Detection-Point-Cloud(https://github.com/ThibaultLejemble/Plane-Detection-Point-Cloud),用CGAL改装了部分代码。 RIMLS(Robust Implicit Moving Least Squares)是一种用于点云去噪和表面重建的算法。它特别适用于处理具有锐利边缘的点云数据,因为它能够在去噪的同时保留这些边缘特征。RIMLS算法的核心思想是将点云中的每个点投影到一个分段光滑的表面上,这个表面是通过局部拟合点云数据得到的。RIMLS算法能够有效地处理具有锐利边缘的点云数据,同时减少噪声的影响。这使得它在许多应用中非常有用,如三维建模、计算机视觉和几何处理 。

2024-10-23

2048小游戏 MFC 程序

2048小游戏 ↑↓←→键控制移动 可以自己替换照片,照片命名是2的倍数

2017-11-22

截屏软件 OpenCV VS2013

自己用OpenCV写的截屏程序 Ctrl+S是保存图像 鼠标滑取截屏范围

2017-11-24

C++ 解算数独

C++递归方法解算数独 sodoku.h 和 sodoku.cpp 是数独模型类

2017-11-22

推箱子 C语言 小游戏 控制台

VS 控制台程序 可以自己选关的 刚学完C语言自己编的推箱子小游戏

2017-11-24

五子棋 MFC 小游戏

VS2010平台 MFC 五子棋小游戏 鼠标操作 OpenCV 练手 暂不支持AI

2017-11-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除