- 博客(507)
- 资源 (10)
- 收藏
- 关注

原创 Playing with OpenCV
一、从双目立体视差图中重建三维点云 1.【视差与深度信息】2.【用VS+Opencv3.1从双目立体视差图中重建三维点云】二、斑点检测Opencv中提供了SimpleBlobDetector的特征点检测方法。 Reference:1.【 Opencv中SimpleBlobDetector的使用(斑点检测)】2.【Opencv2.4.9源码
2017-12-04 19:43:29
1089

原创 halcon基础知识
在算子编辑窗口,main所在行右边,有四个按钮,将鼠标移到该位置,将有中文提示,按提示点击按钮。浅蓝色:外部函数——HDevelop函数文件,可在所有Halcon程序中使用。Halcon自带的训练集数据是亮色背景上的暗色文字。紫色:内部函数——本地程序函数,只在当前程序使用。2.减法:常用于检测两幅或多幅图之间的变化。4.除法:矫正成像设备的非线性影响。1.加法:降低图像中的随机噪声。3.乘法:遮住图像的指定部分。深蓝色:图像获取和处理。
2016-10-14 15:11:08
6331
原创 机器视觉框架源码——解读2(常用的布局控件和属性)
DockPanel:控件停靠在某一边,适合边缘固定布局。StackPanel:线性堆叠,适合简单的线性布局。WrapPanel:自动换行,适合动态内容布局。Grid:二维表格布局,适合复杂的界面。Canvas:绝对定位,适合精确控制位置的布局。:均匀分布,适合需要相同大小控件的布局。这些布局控件各有优劣,选择时应根据具体的布局需求和使用场景来确定最合适的控件。
2025-03-30 21:22:04
50
原创 Git如何添加子仓库
有时子模块的项目维护地址发生了变化,或者需要替换子模块,就需要删除原有的子模块。删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可。子模块的维护者提交了更新后,使用子模块的项目必须手动更新才能包含最新的提交。使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可。查看修改内容可以看到增加了子模块,并且新文件下为子模块的提交hash摘要。完成后返回到项目目录,可以看到子模块有待提交的更新,使用。执行后,子模块目录下就有了源码,再执行相应的。
2024-12-28 10:04:32
546
原创 PCL移动最小二乘平滑——源码解析
在PCL中集成了一个非常经典的点云平滑算法,这个算法也在3D,点云平滑法线估计这篇博客中讲解了。该文章只介绍了mls算法的原理及接口调用。那么它的内部具体是如何实现的呢?如果知道了它的具体实现,那么在某些情况下,就可以直接在它的源码基础上做一些小的改动,就能够更好地适应不同的需求了。
2024-12-15 13:46:36
105
原创 解决 Git 默认不区分文件名大小写的问题
不得不说Git默认不区分文件名大小写真是一个大坑,由于之前的项目目录比较乱,项目下的文件夹命名都不规范,这两天一直在整理,然后今天从服务器将项目重新clone下来后发现,之前将所有文件名首字母改成大写的改动全部没变,本地又测试了一下后发现Git提交文件名称默认是不区分大小写的,之前的整理又得重新做一遍,下面就分享一下怎么解决这个问题。
2024-12-15 13:41:45
543
原创 3D,点云平滑法线估计
以下是高斯加权平滑和移动最小二乘(MLS)平滑特性高斯加权平滑移动最小二乘(MLS)平滑基本原理根据高斯函数对邻域点加权计算加权质心,调整点的位置。使用局部拟合的低阶多项式模型重建表面,然后调整点的位置。权重计算使用高斯函数wexp−d22δ2wexp−2δ2d2,权重与距离平方成反比。在局部平面拟合过程中,通常也可结合高斯权重。平滑方式通过质心调整直接平滑点云,减少噪声。通过局部曲面重建,将点投影到拟合曲面上,生成平滑表面。数学模型。
2024-12-15 13:40:32
377
原创 机器视觉框架源码——解读1(应用程序入口点)
这是关于框架解读的第一篇文章,将结合理论和框架代码进行讲解。首先,讲下为什么要用WPF?Winform的控件更多,但是别人使用Wpf做的的界面很炫酷,更重要的是WpfWinform。太多开发桌面程序的人由Winform转到Wpf最重要的原因是Winform的控件自适应做得很差,而不同客户公司里有不同比例的显示器。而Wpf的则给了你全面的自由,特别是学了样式,模板,触发器后可以。此外,MVVM设计模式的核心思想是,所以使用WPF写的程序,可以做到无论你前台界面如何修改,后台代码都不会受任何影响的效果。
2024-11-17 11:39:42
221
2
原创 map容器中的新成员
由于std::map中,元素的key是唯一的,我们经常遇到这样的场景,向map中插入元素时,先检测map指定的key是否存在,不存在时才做插入操作,如果存在,直接取出来使用,或者key不存在时,做插入操作,存在时做更新操作。通用的做法,可以直接用emplace操作,判断指定的key是否存在,如果不存在,则插入元素,当元素存在的时候,emplace依然会构造一次带待插入元素,判断不需要插入后,将该元素析构,这样导致的后果是,。鉴于此,C++17引入了,在参数列表中,把key和value。
2024-11-11 21:32:09
86
原创 椭圆距离计算的简单方法
事实证明,接近最优的错误猜测将需要额外的迭代才能以随机方式远离初始猜测,最佳的错误猜测将会陷入困境。我已经证明,出于相当详细的原因,只要您不从最佳错误猜测开始,算法就会收敛。无需详细说明,较紧的曲线将导致较小的曲率半径,而较浅的曲线将导致较大的曲率半径。事实证明,这是一个足够好的近似值,但它在椭圆的顶点(尖端)处确实受到影响。但是,在极端的偏心上,算法最终将失败。提供了非常好的估计,因此论文声称该算法稳健且收敛速度快的说法是非常可信的。该论文的前提是,一个超大的圆将与椭圆相交至少两次。
2024-09-28 17:22:33
242
原创 PCL区域生长分割
该算法的目的是合并在平滑度约束方面足够接近的点。因此,该算法的输出是簇的集合,其中每个簇被认为是同一光滑表面的一部分的一组点。该算法基于点法线之间的角度的比较。首先,让我们看看该算法是如何工作的。如果各点法线之间的偏差小于平滑度阈值,则建议将它们归入同一簇(新点–被测试点–将被添加到簇中)。算法在内部结构中需要K最近邻搜索,所以这里是提供搜索方法并设置邻域数量的地方。直到点云中没有未标记的点,算法会选取曲率值最小的点并开始区域的增长。如果该值小于曲率阈值,那么算法将使用新添加的点继续聚类。
2024-08-25 07:55:04
192
原创 Halcon玩转机器视觉专栏特殊声明
A:优快云即时通信和回复机制不是特别完善,所以如果想获得即时反馈,建议还是用知识星球。鉴于很多童鞋在订阅专栏过程中,对于专栏中涉及到的资料(比如。Q:获取到资料和源码有相关说明文档吗,包括售后服务之类的?Q:如果我只是对其中一个资料或源码感兴趣,可以单独付费吗?Q:如果不订阅专栏如何获取资料和源码?Q:是不是订阅后就可获取资料和源码?C#联合Halcon视觉框架。
2024-08-11 09:15:50
584
1
原创 二维凸包算法
凸多边形是指所有内角大小都在0π[0, π]0π范围内的简单多边形。Andrew算法是Graham算法的改良版,好写一点,据说比Graham快一点。Andrew并不难,就两步:第一步: 首先将所有点排个序,以x坐标为第一关键字,以y坐标为第二关键字。第二步: 从左至右维护上半部分的边界,从右至左维护下半部分的边界。那么问题的关键就是如何维护来找到这个边界呢?
2024-08-09 20:03:16
193
原创 CloudCompare—点云切片
主要通过设置距离阈值(包围盒厚度)、基准平面(有界或无界)参数分割出点云数据,然后将分割的点云数据投影到平面上,投影数据即为生成的截面数据,并输出截面数据的数量、包围盒、中心位置或将截面数据连接为多义线等结果,工具的算法原理如图所示。类型很可能是自定义的,用于存储二维点的坐标,并可能包含一些额外的索引信息。的函数,其目的是将一组三维点投影到一个二维平面上,并将这些投影后的二维点存储在传入的。类型的向量)中提取并构建一个二维凸包,并将这个凸包的点以指针的形式存储在。
2024-08-09 19:59:39
772
原创 3D,从无知到无畏
根据自己学习3D一路走来的心路历程,以及在工作和学习过程中对3D的不断思考和总结,详细阐述了3D的学习路线图,并以图文并茂的方式来**普及3D的算法原理、实际使用过程中的经验总结,并教会大家如何根据需求查找并阅读相关论文,以及拿到源码之后如何精准解析**,适合基础进阶和想不断勇攀高峰的3D开发人员!
2024-08-04 16:04:20
417
3
原创 深度图进行运算检测物体表面粗糙度
除法运算:将两幅图像的像素值相除,得到新的像素值。**除法也可以用于图像差异的检测,这种差异的检测不同于图像的减法,该差异更多的体现像素值变化的比率。图像运算指的是对图像进行各种数学运算的过程,常见的图像运算包括加、减、乘、除、取反、逻辑运算等。加法运算:将两幅图像的像素值相加,得到新的像素值。所以为了能准确地测量物体表面粗糙度信息,需要通过图像运算的方式,增强这些特征,从而进行进一步的测量。减法运算:将两幅图像的像素值相减,得到新的像素值。乘法运算:将两幅图像的像素值相乘,得到新的像素值。
2024-08-04 15:38:05
188
1
原创 3D,点云拼接2
由于错误的对应关系对于最终的刚体变换矩阵的估算会产生负面的影响,所以必须去除它们,于是我们使用随机采样一致性( Random Sample Consensus , RANSAC )估算或者其他方法剔除错误对应关系,最终只保留一定比例的对应关系,这样即能提高变换矩阵的估算精度也可以提高配准速度。另外,您也可以将每个点或子集作为关键点。辅助标志点:通过在被测物体表面粘贴标签,将这些标签作为标志点,对多次测量得到的点云数据进行配准时,对这些有显著特征的标签进行识别配准,代替了对整体点云的配准,提高效率,精确度。
2024-08-04 10:15:44
203
原创 3D,那些你需要知道的硬件知识(2)
常见的三维视觉技术,包含双目、ToF、激光三角、结构光等,如下图: 双目、ToF、结构光(散斑)的精度为 mm 级,多见于消费领域,如:导航避障,VR/AR,刷脸支付等 线激光、结构光(编码)的精度是 um 级,主要应用在工业领域,如:表面缺陷检测、三维测量等 另外,还有 nm 级精度的光谱共焦技术,可用于透明材质物体的三维测量 按照激光投射的不同模式,激光三角法有点激光、线激光、多线激光、激光网格等 为了直观的了解激光三角法,用点激光位移传感器,演示
2024-08-04 09:50:23
1190
原创 PCL common中常见的基础功能函数
这里主要介绍一下基本的常见的功能函数,这些函数其实用C++也可以自行实现,在PCL中提供了更多的重载接口,方便使用。对于各种点,特征的类型的数据结构在这里就不再一一举例说明,这需要根据实际情况而定。标准的C以及C++类,是其他common 函数的父类。定义了所有PCL实现的点云的数据结构的类型。定义了中心点的估算以及协方差矩阵的计算。定义了标准的C方法计算矩阵的正则化。定义了标准的C接口的角度计算函数。定义一些基本的几何功能的函数。定义一些随机点云生成的函数。定义线与线相交的函数。定义了时间计算的函数。
2024-06-22 09:09:23
414
原创 一种快速高效的点云表面重建算法
贪婪投影算法()是M. Gopi等人[1]于2003年提出的点云表面重建算法。该算法从一个数据点RRR开始,找到与RRR相邻的一组数据点CRC_RCR,连接RRR与CRC_RCR,就可得到数据点RRR的所有邻接三角形(顶点中包含RRR的三角形)。然后以广度优先搜索的形式,遍历CRC_RCR中的数据点,找到这些数据点的邻接三角形,直到遍历完所有数据点。该算法的重点在于如何连接数据点RRR和CRC_RCR以生成高质量三角形(避免小角度)
2024-06-22 09:07:11
562
原创 C#联合Halcon机器视觉框架源码—升级版
相较于之前的NxtVision,本软件代码架构更加合理,且新增。对源码有需求的,订阅本专栏后,私信我领取。、原来的vb脚本改为。
2024-06-16 21:09:50
803
7
原创 CloudCompare中CCCoreLib模块介绍
是一个3D点云(和三角化网格)处理软件,它最初设计用于在两个3D点云之间(例如通过激光扫描仪获得的点云)或点云和三角化网格之间进行对比,它依赖于一个八叉树结构,该结构针对这个特定用例进行了高度优化,它还用于处理超大的点云(通常超过1000万个点,使用2GB内存最多可达1.2亿个点)。其核心的算法库CCLib库,这个库提供用于处理三维点云数据的数据结构和算法。它是存储库的一部分(称为“CCLib”),也就是源码中CC文件下的内容。
2024-06-10 09:47:39
257
原创 PCL点云边界提取——源码解析
在PCL中集成了一个非常经典的点云边缘检测算法,这个算法也在PCL点云边界提取这篇博客中讲解了。该文章只介绍了AC算法的原理及接口调用。那么它的内部具体是如何实现的呢?如果知道了它的具体实现,那么在某些情况下,就可以直接在它的源码基础上做一些小的改动,就能够更好地适应不同的需求了。这里只对AC边缘检测算法做个源码解析及修改后调用的过程记录,若以后需要解析其他PCL功能,也可以借鉴一下。
2024-05-24 21:10:29
741
原创 PCL 常用小知识
其思想就是:将原始数据插入到flann的kdtree中,寻找keypoints的最近邻,如果距离等于0,则说明是同一点,提取索引即可。如果删除的点太多建议用上面的方法拷贝到新点云,再赋值给原点云,如果要添加很多点,建议先resize,然后用循环向点云里的添加。pcl中计算程序运行时间有很多函数,其中利用。就可以以秒输出“程序段”的运行时间。中的无效点是指:点的某一坐标值为。
2024-05-24 17:09:37
133
原创 3D,点云平面拟合
计算所有数据点到拟合模型的距离,并将距离小于阈值的点标记为内点。以上就是点云平面拟合的算法原理介绍,若有不当之处,欢迎指出。为输入的三维点坐标。利用正规方程组的解公式,即可求得。:利用随机选择的数据点拟合模型,这里是平面模型。:使用所有内点重新拟合最佳模型,以提高模型精度。:重复上述步骤多次,选择内点数目最大的模型。,使得数据点到该平面的总距离最小。:从数据集中随机选择最少数量的数据点()作为模型参数的初始估计。最小二乘拟合平面是一种通过。来估计平面参数的方法。,我们要找到一个平面。
2024-05-14 21:26:20
385
原创 3D,点云下采样
每隔固定的点数采样一次。相比于体素的采样方法,点云均匀采样后的点数是固定可控的,而体素采样后的点云数量是不可控的。最远点采样是较为简单的一种,首先需要选取一个种子点,并设置一个内点集合,每次从点云中不属于内点的集合找出一点距离内点最远的点,如下图,这里的距离计算方式为该点至内点所有点的最小距离。同样需要将点云空间划分,不同的是,在均匀采样中是以半径为r的球体。选取距离球体中心最近的点作为采样点替代落在球体中的点集,此时,采样点的坐标为源点云中一点的坐标,不同于体素下采样中使用质心进行替代而产生新的点坐标。
2024-05-14 21:22:09
289
原创 3D,kd-tree算法原理
作为三维领域中一个重要的数据来源,点云主要是表征目标表面的海量点的集合,并不具备传统网格数据的几何拓扑信息,所以点云数据处理中最为核心的问题就是,实现。几何拓扑是计算几何学中的一个重要概念,指的是描述几何形状的空间结构和连接关系的数学模型。在几何拓扑中,主要考虑的是几何对象的形状、边界、顶点以及它们之间的关系,而不涉及具体的度量或尺寸。几何拓扑可以帮助我们理解和描述各种几何形状之间的关系,以及它们如何相互作用和变换。它在计算机图形学、CAD(计算机辅助设计)、几何建模等领域都有重要应用。
2024-04-30 18:40:36
410
1
原创 CloudCompare—点云几何体分割
通常的做法是,在判断点是否在多边形内部之前,先检查点是否在多边形的边界上。需要注意的是,这段代码似乎是基于一个特定的算法(可能是由W. Randolph Franklin提出的)来判断点是否在多边形内部。对于在多边形上的点,判断方法稍微有些不同。因为多边形的边界上的点可能被计算为与多边形内部的点具有相同的交点数量,这会导致误判。它首先检查一个多边形是否完全在视口内,然后遍历点云中的每个点,检查其是否在多边形内,并根据。通过这种方法,可以在不需要检查多边形的所有顶点的情况下快速判断点是否在多边形内部。
2024-04-17 18:50:00
645
原创 EasyCloud软件简介
运行环境:Win10 + PCL1.9 + VTK8.1 + Qt5.12 + VS2017基于PCL点云库的三维点云数据处理软件本软件的用户界面主要包括以下几个部分(如图1):[1]菜单栏,将软件功能模块划分为不同菜单,包括文件、视图、显示,点云简化、特征提取、三维重建以及帮助等;[2]工具栏,常用工具按钮,如打开,保存,更改点云颜色等;[3]点云文件管理窗口,用资源树的形式组织管理当前的点云文件;[4]属性窗口,记录点云文件个数、点得个数,颜色等常用属性;
2024-03-22 10:33:37
264
原创 C++由动态链接库dll生成lib文件
在msvc中,对于动态库的使用,通常有两种方法,一种方法是动态加载,在程序运行过程中,使用LoadLibrary()、GetProcessAddress()和FreeLibrary()三个函数动态的对动态库进行加载和卸载,此方法在编译运行时只需要dll文件的支持即可;另一种方法是静态加载,静态加载不仅需要dll文件,在程序编译时也需要dll文件对应的lib文件,这个lib文件会记录动态库名称与函数入口,使程序开始运行时能够正确的对动态库文件进行载入并使用。
2024-03-14 19:33:25
799
原创 C#联合Halcon机器视觉框架源码
本软件参考EV开发,共用模块,基于WPF+Halcon,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。
2024-03-14 18:59:58
3287
42
原创 设计模式之兼容不同厂家的相机
仔细看上面的代码,会发现一个问题,每一个实例工厂负责生产一个实例产品,也就是一个产品对应一个工厂,一个工厂对应一个产品,那么小米不仅仅生产相机,还生产耳机,智能手环,智能插座等等相关的小米产品簇,不可能给这每一个产品都创建一个工厂类,那样的话代码中的类就太多了,不好维护,而且也不符合实际情况。实际上小米或者华为的工厂里面,有相关联的产品簇都是在一个工厂完成创建的;写完后,初级程序员恍然大悟,抽象工厂模式把一个产品簇的产品放在一个工厂类中去创建,不仅大大减少了工厂类的个数,更符合现实中工厂生产产品的模式。
2024-02-24 16:13:06
482
原创 使用 Windows 调试器查找 GDI 泄漏
本文是有关使用Windows调试器查找和修复GDI句柄泄漏的演练。Windows调试器应该是最后的手段,首先在整个代码库中搜索并检查这两个函数调用之间的 GDI 代码是否有未删除的句柄并将其删除。使用任务管理器,我们可以在“详细信息”选项卡页上添加“GDI 对象”列,以获取每个进程当前打开的 GDI 句柄的数量。一个进程最多可以有 10000 个打开的 GDI 句柄。所有进程的系统范围限制为 65535。右键单击标题以选择要显示的列。选中“GDI 对象”选项以添加到“详细信息”选项卡并关闭对话框。
2024-01-08 21:34:13
1017
MiniTool分区软件
2023-07-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人