- 博客(39)
- 资源 (2)
- 问答 (2)
- 收藏
- 关注
原创 3D模型空洞填充失败的尝试
在直接使用OpenMVS的->->对稀疏点云进行重建时,发现最终生成的模型会出现空洞,尽管命令提供了超参来封闭空洞,但是这样也只是对小的空洞有效果,如果这个值设置的过大,大洞即使能够被填充也会出现明显的模糊现象。提高稀疏点云的质量当然是首选的好办法,但是大多数时候追求效率和质量的平衡时,点云质量也不能总是得到保证,因此我想到是不是能在OpenMVS中的某个阶段将洞填充上。
2026-04-02 21:38:55
284
原创 OpenMVS中MVS和PLY格式数据详解
在某些场景下,我希望能够对的命令生成的稠密点云进行处理。命令会默认生成和两个文件以及一系列的深度图文件。中包含了所有的稠密点信息,我可以从这个文件中把所有稠密点信息提取出来,然后用处理,但是处理完的结果能否被后续流程使用,这是一个必须要考虑的问题,所以还必须对命令的输入进行分析。当存在的情况下,和这两个命令实际等价,会自动找和匹配的进行重建。内部存放的是稀疏点云,如果确实没有,就会直接用稀疏点云重建整体结构,一般效果会比较差,所以基本都是搭配稠密点云一起重建的。如果想对中包含的稠密信息进行处理,还需要验证
2026-04-02 20:56:07
379
原创 OpenSFM安装+代码分析+可视化
OpenSfM是一款领先的开源框架,致力于构建高精度3D模型与环境重建。由Mapillary团队开发并持续优化,该项目已广泛应用于地理信息系统(GIS)、数字地图构建、考古数字化、文化遗产保护等多个领域,成为学术界与工业界的标杆工具。
2026-03-31 19:37:43
479
原创 工业少样本检测探索
问题背景:工业检测样本获取成本高,缺陷难以形成闭集核心问题:提示生成、类别输出、领域知识注入解决方案:采用 Adapter 微调方式,低成本注入领域知识网络结构:详细分析 Image Encoder、Prompt Encoder、Mask Decoder关键技术:位置编码、Attention 机制、参数冻结策略通过 Adapter 微调,可以在保持 SAM 原始能力的同时,快速适应工业缺陷检测任务。
2026-03-29 21:06:12
387
原创 激光雷达点云处理项目:从零搭建 3D 视觉检测系统
本文基于工业项目经验,以"智能仓储体积检测系统"为例,介绍激光雷达点云处理项目的环境搭建、核心算法选型及工程实践要点。首先需要根据实际工作场景大小、测量精度要求对雷达进行选型。然后确定开发平台,工业级项目推荐 VS + Qt + PCL + VTK 组合,可实现一套带点云分析、处理、显示功能的客户端软件。算法开发流程如下:原始点云采集 → 直通滤波 → 坐标系转换 (雷达→客户,需标定) → 体素下采样 → 去噪 → 分割 → 特征提取 → 业务分析。
2026-03-22 12:30:01
519
原创 三维空间坐标转换早期笔记
对空间任意两坐标系之间实现空间坐标系之间的转换通常通过平移、旋转、缩放来实现的 。假设有两空间直角坐标系 O−XYZO-XYZO−XYZ 和 o−xyzo-xyzo−xyz,对空间任一点 AAA,在 O−XYZO-XYZO−XYZ 中的坐标为 [X,Y,Z][X, Y, Z][X,Y,Z],在 o−xyzo-xyzo−xyz 中的坐标为 [x,y,z][x, y, z][x,y,z]。以 ooo 为原点建立一个与空间直角坐标系 O−XYZO-XYZO−XYZ 平行的空间直角坐标系 o−x′y′z′o-x'y
2026-03-21 18:24:08
406
原创 机械臂视觉抓取(三):从手眼标定到实际抓取
Z 轴(高度方向)↑││ │ ││ · ← 抓取点 │ ← 上表面中心││XY 平面便于夹爪接近,无遮挡夹持稳定,不易滑落考虑工件重心,避免翻转世界坐标系/基座标系 (Base Frame)- 原点:机械臂基座中心- Z 轴:垂直向上- X 轴:指向机械臂正前方相机坐标系 (Camera Frame)- 原点:相机光心- Z 轴:沿光轴向下(指向工作台)- X 轴:图像水平向右物体坐标系 (Object Frame)- 原点:工件几何中心。
2026-03-20 20:04:01
601
原创 从3D到2D:相机投影的完整解析
如何把三维空间中的点,正确地投影到二维图像上?这个问题看似简单,实际上涉及了完整的相机成像模型。今天我们就来深入解析这个过程的每一个步骤。归一化平面本身:确实是理想的、无畸变的投影畸变校正:不是为了修正归一化平面,而是为了模拟真实镜头的畸变真实物体→ 归一化平面(理想投影)→ 畸变模型(模拟镜头畸变)→ 像素坐标这是数学建模的技巧:把复杂问题分解为简单步骤的组合。1. 世界 → 相机:P_cam = R @ P_world + T2. 相机 → 归一化:x = X/Z, y = Y/Z。
2026-03-18 19:45:02
465
原创 基于模板特化的可扩展算法库架构设计
Classification = 1, // 分类算法Detection = 2, // 检测算法Reconstruction = 3, // 重建算法Segmentation = 4, // 分割算法设计要点:枚举值作为模板参数,实现类型标记// === 输入参数基结构体 ===// === 输出结果基结构体 ===// 公共字段(如有)// === 模板声明(具体定义在各算法文件中) ===设计要点基结构体存放所有算法通用的字段(如图像尺寸)
2026-03-15 12:57:33
357
原创 C++纯虚接口
接口隔离原则是设计模式中提到的五大原则之一,李建忠老师的设计模式讲的非常好。客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。通俗地说,接口应该小而精,而不是大而全。将臃肿的接口拆分成更小的、更具体的接口,每个接口只负责一类功能。// 小型化、专业化的接口定义// 1. 数据读取接口public:// 2. 数据写入接口public:// 3. 开关控制接口public:// 4. 状态查询接口public:// 5. 校准接口。
2026-03-14 20:59:14
388
1
原创 机械臂视觉抓取(一):相机内参数标定
相机标定的本质:求解四大坐标系的变换关系,得到内参数矩阵 K 和畸变系数;核心模型:理想针孔相机模型 + 径向 / 切向畸变模型;主流方法:张正友棋盘格标定法(低成本、高精度、易实现);实战关键:图像采集(多视角 / 多位置)、角点检测(亚像素)、重投影误差验证(<1 像素为优秀);工程落地:标定结果保存 + 畸变矫正 + 黑边裁剪。
2026-03-14 15:17:41
651
原创 ColMap稀疏重建+OpenMVS
需要注意的是Colmap在用mapper指令稀疏重建重建的时候会生成一个sparse文件夹,在用image_undistorter命令进行畸变校正的时候还会在dense目录下再生成一个sparse文件夹和畸变校正图像,OpenMVS依赖的文件是dense目录下进行畸变校正后的图像和3个文件,内容存放在下图中红框文件中:这两组数据有什么区别呢,下面说明一下:绿色框中存放的images是采集的原始图像,没有任何修改的图像。
2026-03-12 20:54:38
354
原创 Git孤儿子模块的清理与转换
曾经添加过子模块:使用添加了子模块删除了配置文件文件被删除或移除了该子模块的配置删除了 .git 目录:子模块文件夹内的.git目录被删除但未清理引用:Git 索引中仍保留着160000模式的 gitlink 引用160000是 Git 内部用于表示 gitlink 的特殊模式码,它告诉 Git:“这个路径不是普通文件,而是指向另一个 Git 仓库特定 commit 的指针”
2026-03-06 21:18:17
458
原创 Docker in Docker 实战
✅ 镜像构建时安装 Docker 和 Docker Compose✅ 启动命令行中运行 dockerd 服务(否则不存在)✅ 设置授予特权。
2026-03-06 21:11:41
408
原创 CMake+CUDA
仍是报错了,我这里报的VTK相关的错误,原因是我电脑里有VTK相关工具包,是我手动拷贝的,被opencv自动检测到了,实际编译并不需要VTK,关闭掉VTK相关编译项,重新CMake。下载安装了windows版本4.8.0,发现build下x64里只有vc16并没有适配vs2022的v17,为了防止后续出现莫名其妙的问题,不采纳此方法,用源码编译。下的build文件夹,重新执行前面的构建编译流程,这次正常通过,然后进入build文件夹下Debug目录,执行生成。重新生成后,打卡生成的vs工程,先。
2026-01-25 17:44:04
917
原创 5060显卡下EfficientLoftr特征匹配
系统:Win11显卡:5060ti项目地址:https://github.com/zju3dv/EfficientLoFTR先从官方给的demo入手,实现2张图像的特征点匹配。可以参考notebooks下的和根目录下的README.md预训练模型下载地址:https://drive.google.com/drive/folders/1GOw6iVqsB-f1vmG6rNmdCcgwfB4VZ7_Q?
2026-01-24 15:31:02
644
原创 一部手机实现Nerf重建
用手机对一盒泡面环绕拍摄70张图像对手机图像进行裁剪处理用目标分割算法从图像中分割出泡面将处理好的图像送入Colmap计算出每张图像对应的位姿信息,可以参考将图像和姿态送入Nerf训练生成视频。
2026-01-22 19:49:53
983
原创 5060显卡下Win11+Ubuntu22.04双系统安装和必备环境安装
5060显卡安装存在不兼容问题,安装会出现黑屏问题,但是安装Ubuntu。
2026-01-18 20:00:36
1282
原创 Ubuntu下Colmap源码编译调试
版本不匹配就会导致报错,查看了一下历史的镜像版本,都比较新,也没有说明各自对。的内置命令对文件夹下的图像进行重建,但是实际操作发现这个镜像要求。时可能会报下面的错误,如果遇到相同的错误按照提供的方法解决即可。在弹出的模板列表中,选择适合您项目的模板,例如 。打上断点后发现已经可以正常调试了,这样后面想要优化。版本的要求,干脆放弃官方镜像,自己构建镜像。进行三维重建了,只是无法单步调试源码。",但缺少具体的调试器路径配置。构建容器,然后进入容器。已经可以正常执行特征提取了,如果没有输出,说明没有安装。
2026-01-15 20:37:14
1317
1
原创 图像EXIF/XMP元数据解析修改踩坑实战
主导制定的可扩展元数据标准,核心优势是 支持自定义字段,允许厂商、开发者根据需求添加专属数据,大疆无人机的很多自定义参数都存放在这里面。通常存放相机拍摄的基础参数,它的字段固定且标准化的,兼容性极强,几乎所有图像查看 / 处理工具(如系统相册、信息,也支持修改元数据和图像数据,注意下面修改是原地操作,直接修改原始输入图像。信息不应该超过4000个字节,所以将元数据做了截断,导致无法读取到完整的。的字段顺序,导致修改过的数据存储顺序比较靠后,的数据发现,无法获取修改后的数据。修改过的元数据,再用。
2026-01-15 20:34:57
405
原创 SuperPoint和SIFT方法的特征点识别匹配对比实验
整体流程SuperPoint先通过合成数据得到MagicPoint,然后用Coco数据集做普通场景的迁移训练,步骤是先通过Homographic Adaptation等到一张图像在不同单应变换后映射到原图的特征点集合,这个点集合会比单独用MagicPoint提取一张原图的的特征点要更多更全面,模型以合成的大的特征点集合作为真值反向更新特征点和描述符解码器以及特征提取编码器的网络参数从而不断迭代优化最终结果网络模型。
2026-01-12 20:51:49
1071
原创 解决Ubuntu22.04宿主机docker容器中nvidia-smi偶发失效问题
在Ubuntu22.04的docker容器中部署了深度学习算法,发现跑一段时间后推理速度明显变慢,进一步分析发现容器中已经无法识别CUDA,自动切换成CPU推理,执行nvidia-smi也无法输出正常信息。宿主机安装Nvidia驱动和nvidia-container-toolkit,在docker中安装cuda-tookit和cudnn。
2026-01-12 19:45:10
364
原创 Windows下Typroa破解失败解决方法
将license-gen.exe和node_inject.exe拷贝到安装目录C:\Program Files\Typora。一开始我在官网下载typora,版本V1.12比较新,无法破解,只能下载较老版本。运行Typroa,随便输入邮箱号,然后将生成的注册码粘贴进去,点击激活即可。下载1.9版本typora-setup-x64-1.9.5.exe。解压Typroa_Activation_Script.7z(
2026-01-11 21:32:07
1545
原创 RealSense L515实现2D图像目标分割与3D点云分割
RealSense L515深度相机可同时采集彩色图像(RGB 图)与深度图像,通过彩色图像做目标分割得到目标掩码(mask),再结合对应区域的深度图像数据,最终提取出目标物体的独立 3D 点云,
2026-01-11 21:10:08
1050
原创 VS2015开发程序部署到客户机,打包配套依赖文件
以下内容仅供参考,未进行全面验证。1、环境VS2015 + Win102、测试项(1)对话框程序 x86下 Debug Release(2)对话框程序 x64下 Debug Release(3)单文档 x86下 Debug Release(4)单文档 x64下 Debug Release3、测试过程(1)按照测试项目中的内容分别新建工程,不加任何代码,编译出对应的exe文件。(2)拷贝到没有开发环境的Win10客户机上,分别运行exe文件。(3)经过测试发现单文档
2022-05-18 13:43:58
1082
原创 根据状态值改变PopupMenu显示的菜单项
通过判断一个布尔值flag,控制弹出菜单的显示和隐藏,当flag为true时显示aa1、bb1、cc1,当flag为tfalse时显示aa1、bb11、给PopupMenu添加三个菜单项aa1、bb1、cc1,设置一个布尔型状态值flag2、给PopupMenu中Onpopup的事件处理函数添加如下代码:cc1->Visible = flag;3、添加一个按钮,在按钮事件响应函
2016-12-20 14:37:19
1440
2
原创 C++Builder 动态生成定时器,创建定时器管理类
定时器是做客户端时常用的一类控件,只需要设置定时时间,开启定时器,然后创建定时事件响应函数,就能定时执行特定的功能,用起来很方便。当时当工程比较大,定时器比较多时,界面看起来就会比较混乱,当定时器名字起的不够直观时,管理起来比较困难。因此,我打算建立一个定时器管理类,对所有定时器统一管理。动态创建一个定时器实例的方法比较简单:TTimer *tmr= new TTimer(this);(注意n
2016-12-16 14:44:57
2028
原创 向Exe里追加文件、分离出文件
最近我在做一个升级工具,需要在我的升级工具可执行文件里追加一个文件(以下简称dll文件),在升级过程中要把这个dll文件分离出来,放在待升级程序的安装目录里,在这里我介绍了两种追加文件和分离文件的方法。1、通过数据流的方法void __fastcall TForm4::btn1Click(TObject *Sender){if (FileOpenDialog1->Execute()
2016-12-08 17:13:45
2332
原创 C++ Builder 在指定目录下查找指定文件
刚刚开始学习C++ Builder,就从指定目录下查找指定文件开始吧!首先在E:\\test目录下创建了1.txt, 2.txt,3.txt,4.doc,然后需要通过C++ Builder从该目录下找到所有的.txt文件,并显示出来。1、新建工程project1,添加一个新的单元Unit2。2、在Unit1.dfm添加TListBox显示查找结果,添加一个按钮用来触发事件,调用查找函数
2016-07-04 10:41:54
3517
1
原创 win8+VS2008"fatal error LNK1181: 无法打开输入文件“GxIAPI.lib"
最近想学习开发图像采集程序,下载了大恒图像SDK,打开其中一个实例,编译后出现一个错误:“fatal error LNK1181: 无法打开输入文件“GxIAPI.lib”,于是我按照网上给的方法,重新配置项目属性,结果出现更多的错误:1>GxGetImageDlg.obj : error LNK2019: 无法解析的外部符号 _GXInitLib@0,该符号在函数 "protec
2015-09-23 19:56:07
4226
原创 win8-VS2008-"此任务要求应用程序具有提升的权限"
今天看一图像采集SDK,打开程序弹出“此任务要求应用程序具有提升的权限”解决方案:在桌面上右键VS2008图标,点击以管理员身份运行,然后选择要打开的程序,就可以正常使用了。但是打开程序后,又有了新的问题,程序中资源视图不见了!解决方案:仔细查看发现,打开的文件是只读的,右键程序,去掉勾选只读,重新打开程序,资源视图就回来了。
2015-09-21 08:45:00
2741
QT下实现记录日志类封装调用
2020-01-19
C++Builder2010 怎么实现命令行编译?
2016-08-29
视频播放时,点击右键没反应
2016-07-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅