- 博客(75)
- 收藏
- 关注
原创 [论文]Colmap-PCD: An Open-source Tool for Fine Image-to-point cloud Registration
假设3D点以及对应的2D特征点和tracks是已知的,那么将激光雷达点云根据上述的第二个步骤的方法投影到图像的平面,其中因为3D点存在多个2D点,因此会有多个激光点与此3D点相关联,对于这些激光雷达点,计算连接激光雷达点和投影二维特征点的直线与激光雷达平面法向量之间的角度,最后选择角度最小的激光点作为该3D点与雷达点的关联。这个3D点应该与雷达点越近越好。2. 因为计算得到了3D点与激光点的对应关系,因此可以将激光点作为3D点的约束,计算3D点与激光平面法向量与激光点到平面法向量的距离作为损失。
2025-10-31 19:59:43
617
1
原创 InstantSfM: Fully Sparse and Parallel Structure-from-Motion
方法统一的 PyTorch 框架 + 全稀疏优化
2025-10-22 16:07:25
368
原创 openMVG_main_SfMInit_ImageListing
本文介绍了openMVG中SfMInit_ImageListing模块的功能和使用方法。该模块用于图像初始化和相机参数设置,主要包括:1)图像列表生成(-i输入图像目录,-o输出目录);2)相机参数配置(-d相机数据库文件,-f焦距,-k内参矩阵,-c相机模型);3)GPS信息处理(-P使用EXIF中的GPS信息,-W设置权重,-m坐标转换方式)。文章详细解析了命令参数含义,并展示了关键的代码实现,包括sfm_data数据结构、LLA到ECEF/UTM坐标转换的核心算法。该模块在SfM流程中至关重要,直接影
2025-10-10 20:11:38
399
原创 openMVG编译
参考链接: openMVG/BUILD.md at master · openMVG/openMVG或者采用如下的方式Required tools:CMakeGitC/C++ compiler (GCC, Visual Studio or Clang)Note:CMAKE OpenMVG variables you can configure:OpenMVG_BUILD_TESTS (ON/OFF(default))Build OpenMVG unit testsOpenMVG_BUILD_EXAMPLES
2025-09-21 14:46:51
419
原创 欧拉角描述相机的运动
一般来说在sfm或者slam中解算得到的都是旋转矩阵,这个时候如何希望使用欧拉角去描述运动的化,就要按照特定的ZYX或者其他的顺序去将旋转举证推得欧拉角。
2025-09-21 10:52:21
348
原创 GDAL保存DSM Mat为tiff文件
如下代码所示,直接保存对应的信息即可,然后可以使用cloudcompare去查看,即可看到对应的DSM的结果。此外,值得注意的是,保存双通道可以消除单通道保存的最大值的影响,使得伪彩图更加有层次。
2025-07-17 17:06:08
277
原创 [代码学习] c++ 通过H矩阵快速生成图像对应的mask
这段Mask()非常适合配合你的已知相机位姿来做匹配加速你先用相机外参和内参算出两视图之间的单应或极线约束;用这段函数在第二张图上生成 mask;提取/过滤 SIFT 特征时限制在 mask 区域;然后做描述子匹配。这样可以减少不相关特征比较,显著加速并提升匹配精度。
2025-07-04 16:50:59
362
原创 技术学习内容汇总
从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码 - 计算机视觉life的文章 - 知乎。3DGaussianSplatting技术的影响会有多大?- 清风似少年的回答 - 知乎。如何在大学四年修炼成一个高级编程人才?- 雷艾伦的回答 - 知乎。校招C++大概学习到什么程度?- 码农出击的回答 - 知乎。四元数与姿态解算完全解析及资料汇总 - 一合的文章 - 知乎。学习SLAM需要哪些预备知识?- 立党的回答 - 知乎。
2025-06-22 16:17:53
356
原创 openMP的简单介绍以及c++执行实例
OpenMP摘要(148字) OpenMP是共享内存多线程并行编程标准,支持C/C++/Fortran,通过编译器指令实现多核CPU加速。其核心机制是主线程创建子线程并行执行任务。常用功能包括:parallel创建并行区、parallel for并行循环、critical保护临界区、reduction变量聚合。开发时需注意数据竞争、线程安全等问题,适用于CPU密集型计算。优势是简单易用、开销小,但仅限共享内存系统且调试较复杂。典型应用包括数值计算、图像处理等数据并行任务,编译需添加-fopenmp参数。
2025-06-13 16:37:30
826
原创 opencl的简单介绍以及c++实例
OpenCL是由Khronos Group提出的开放异构计算标准,支持CPU、GPU等多种计算设备。其架构包含平台模型、执行模型和分层内存模型。编程流程包括获取设备信息、创建上下文、编写Kernel程序和执行计算等步骤。相比CUDA,OpenCL具有跨平台、开放等优势,但调试较困难。本文还展示了使用OpenCL实现图像均值滤波的C++代码示例,对比了CPU与GPU的执行效率。通过CMake构建项目,该技术可广泛应用于图像处理、机器学习等领域,特别适合需要跨平台部署的场景。
2025-06-12 17:32:45
2079
原创 c++实现四元数球面线性插值
属性说明✅ 正确实现是,符合标准 SLERP 逻辑✅ 防止精度问题是,处理了点积接近 1 的情形✅ 单位四元数是,normalize 保证了归一性。
2025-06-04 20:00:58
300
原创 c++对imu的角速度积分得到表示旋转四元数
参数名类型含义四元数(当前姿态)当前时刻设备的姿态gyro陀螺仪三轴角速度,单位 rad/sdtdouble时间间隔(单位:秒)⏎ 返回值四元数新的姿态(经过角速度积分后)功能说明利用角速度gyro推进四元数(姿态)随时间dt的演化不使用外部传感器(如加速度)单纯基于陀螺仪积分返回单位四元数表示新时刻设备的旋转状态。
2025-06-04 17:52:50
607
原创 c++高精度快速测量某段代码的执行耗时
这段代码定义了两个用于的宏(INIT_TIMER和STOP_TIMER),通常用于性能分析或调试阶段,方便快速测量某段代码的执行耗时。
2025-06-04 17:26:18
325
1
原创 cv::FileStorage用法
功能优势读写结构化数据一行代码搞定 YAML、XML 或 JSON支持丰富数据类型向量、矩阵、图像、字典、数组易于配置与共享常用于校准参数存储、SLAM配置等C++ 集成度高直接读取 OpenCV 类型,无需格式转换。
2025-06-04 15:39:24
662
1
原创 if(!filter_radius_.empty()) 和 if(filter_radius_.size()>0) 哪个更好
/ ✅ 推荐写法if (!// 容器不为空这是更地道、更高效、更推荐的 STL 用法。
2025-05-27 09:58:40
182
原创 canny边缘检测算法(c++实现)
本文介绍了一个基于OpenCV库的自定义Canny边缘检测算法实现。代码首先通过高斯滤波对输入图像进行平滑处理,以减少噪声。接着,使用Sobel算子计算图像的梯度幅值和方向。然后,通过非极大值抑制算法细化边缘,保留局部最大梯度值。最后,采用双阈值处理和边缘连接技术,确定并连接强边缘,生成最终的边缘检测结果。整个算法封装在customCanny函数中,并通过主函数加载灰度图像并调用该函数进行边缘检测,最终显示原始图像和检测到的边缘。
2025-05-20 21:07:51
1057
原创 harris角点检测
本文介绍了Harris角点检测算法的原理与实现。角点定义为滑窗沿任意方向移动时亮度变化显著的点。通过定义窗口能量函数,并对其进行二阶泰勒展开,推导出角点检测的关键公式。算法通过计算图像梯度矩阵的特征值,判断是否为角点。代码实现部分展示了如何使用Sobel算子计算图像梯度,并通过卷积操作计算Harris响应值。最后,通过设定阈值筛选出角点,并在图像上标记。代码还提供了图像读取、处理和保存的完整流程,使用stb_image库进行图像操作。
2025-05-19 21:32:52
438
原创 德劳内三角剖分原理
德劳内三角剖分是在一组平面点中生成三角形的方式,使得任意一个三角形的外接圆内部都不包含其他点。这个性质保证了构建的三角网格“最合理”、不瘦长,适合空间插值与地形建模。特性内容空圆性质三角形的外接圆内不包含其他点最优角度最大化三角形最小角度,避免瘦角对偶结构与 Voronoi 图互为对偶构建复杂度平面O(n log n),三维更复杂应用广泛地形建模、点云重建、图形学等如果你想:看代码实现(Python、C++等);使用工具库(如 CGAL、scipy、QGIS);
2025-05-16 11:54:35
1169
原创 为什么在生成DSM前,要构建三角面片(Mesh)
原因解释🔄 连接离散点形成连续面,表达地表形状📍 便于插值知道三角面后可进行稳定、局部的线性插值🎯 保留结构避免破坏原有地形结构,如屋顶、边缘等🧠 空间表达清晰适合后续分析,如坡度、曲率、水流模拟等。
2025-05-16 11:45:56
554
原创 多线程里面 锁是怎么知道要保护哪个变量的
锁不是绑定到变量的,而是人为设计来保护变量访问的。需要你始终遵守约定:访问某变量时必须先持有对应的锁。最好的做法是封装锁和数据,防止不安全访问。
2025-05-08 11:36:52
854
原创 把本地的文件拷贝到wsl的文件夹下或者 wsl读取本地的文件
你可以非常方便地在 Windows 和 WSL(Windows Subsystem for Linux)之间。
2025-05-07 14:25:02
4654
原创 ceres/gtest/gtest.h:10445:35: error: variable or field ‘it’ declared void10445 | for (typename C:
已思考 13 秒以下错误通常不是语法错误本身,而是 Ceres 自带的 GTest 与所用 Eigen、或编译选项之间的不兼容导致宏/模板解析失败,进而把it识别成void类型。
2025-05-07 11:13:40
1405
1
原创 CHECK(local_parameterization_ == NULL) << “Can‘t re-set the local parameterization; it lead
在 glog 中,if (!abort();// 强制终止程序而<<是重载的输出运算符,像std::cout一样,把信息组合在一起输出。语法含义CHECK(x)如果x为 false,就打印错误并终止追加错误信息(可多个)被检查的成员变量== NULL条件是“尚未设置”
2025-05-07 10:15:53
288
原创 不能返回一个函数的局部变量的引用或指针
返回方式是否安全注意事项按值返回✅最推荐方式,支持优化返回局部引用/指针❌会导致悬垂引用/未定义行为返回动态分配指针✅注意内存管理(建议用智能指针)通过参数返回✅函数不直接返回结果,易于控制返回 static 引用⚠️有状态、线程不安全,需小心使用。
2025-05-06 10:47:08
423
原创 failed to start gdm.service - gnome display manager
4. 运行startx。如果成功,您可以重新启动系统,并期望gdm能够正常工作。3. (可选)运行sudo apt-install--重新安装ubuntu桌面。1. 显示错误消息后,键入Ctrl+Alt+F2(不是原始答案中的F3)对我来说,这是在~/下载。5. 运行reboot将重新启动您的计算机。2. 提供用户/通行证并登录您的帐户。
2025-04-27 14:02:02
1462
原创 解决ssh拉取服务器数据,要多次输入密码的问题
方法安全性推荐度特点SSH 免密登录✅✅✅⭐⭐⭐⭐⭐配置一次,终身受益sshpass❌⭐⭐快捷测试,不推荐长期使用。
2025-04-25 15:25:01
743
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅