- 博客(274)
- 资源 (3)
- 收藏
- 关注
原创 【常见二维码种类及识别】
常见的二维码有PDF417、QR Code、Code 49、Code 16K、Code One等。这些二维码的信息密度都比传统的一维码有了较大提高,如PDF417的信息密度是一维码CodeC39的20多倍。在二维码标准化研究方面,国际自动识别制造商协会(AIM)、美国标准化协会(ANSI)已完成了PDF417、QR Code、Code 49、Code 16K、Code One等码制的符号标准。
2025-01-22 10:50:51
1698
原创 【手眼标定 九点标定之一:xy模型】
九点标定是手眼标定的其中一种简易的实现方式,它通过使用已知的且在世界坐标系位置已知的九个点来计算图像坐标与机械坐标的转换矩阵。适用于三轴+旋转轴非标系统、SCARA机器人、六轴机器人(在运行过程中保证Rx&Ry不动即可)。
2024-12-10 10:40:17
805
原创 【Halcon 3D Matching】
将指向3D对象模型 坐标系的位姿转换为指向3D形状模型参考坐标系的位姿,反之亦然。在3D场景中细化可变形表面模型的位置和变形。在3D场景中找到可变形表面模型的最佳匹配。在3D场景和图像中找到表面模型的最佳匹配。添加一个参考点到一个可变形的表面模型。从基于匹配的可变形表面获得结果的细节。将3D形状模型的边缘投影到图像坐标中。在3D场景和图像中细化表面模型的姿态。在图像中找到3D形状模型的最佳匹配。在3D场景中找到表面模型的最佳匹配。从基于表面的匹配中获得结果的细节。在3D场景中细化表面模型的姿态。
2024-12-10 10:18:10
417
原创 【金刚石的红外透光率是多少】
经过分析,我们发现高质量、低杂质的金刚石在红外波段(如中波红外3-5μm和长波红外8-14μm)的透光率可以达到60%-80%。未来,随着金刚石制备技术的不断进步和光学加工工艺的完善,我们有理由相信,金刚石将在红外光学系统中发挥更加重要的作用。实验表明,高质量、低杂质的金刚石在红外波段具有较高的透光率,这使得金刚石成为制造红外窗口、透镜等光学元件的理想材料。一般来说,高质量、低杂质的金刚石在红外波段(如中波红外3-5μm和长波红外8-14μm)的透光率可以达到60%-80%。一、金刚石的红外透光性能。
2024-12-10 09:48:29
438
原创 【红外透硅原理】
3.红外透射: 当红外光线进入硅材料时,它的能量不足以激发硅内的电子从价带跃迁到导带,因此不会被吸收。然而,当红外光的波长超过硅的能隙(即光子能量低于硅的带隙能量),光子能够穿透硅晶体而不被吸收。红外透硅是一种特殊的材料特性,允许红外辐射(红外光)在硅材料中传播和传输。总的来说,红外透硅原理是基于硅材料在红外波长范围内的特殊透明性,使得红外光可以穿透硅晶体而不被吸收。1.硅的特性: 硅是一种半导体材料,其原子结构允许红外光穿过并传播。虽然硅在可见光范围内是不透明的,但在红外波长范围内,硅的透明性得到改善。
2024-12-09 18:00:21
203
原创 【获取轮廓(连通域)的面积、周长、矩形度、圆形度、宽长比、周径比】
fabs(rbox.size.width * 1.0 / rbox.size.height - 1) < 0.1 //表示宽长比在1附近±0.1内浮动。输入当前轮廓点集,第二个参数:bool closed:表示轮廓是否封闭的。网上的公式一般是这个:e=(4π 面积)/(周长 * 周长);周径比的周即周长,径是指上面找到的轮廓最小外接矩形的长的一条边。输入当前轮廓点集,输出该轮廓点集的面积。
2024-10-16 17:04:08
503
原创 【opencv实战 PCA算法的应用 】
假设有上图所示的一组2维点,其中每个维度与您感兴趣的功能相对应。这意味着,如果你知道沿蓝线的点的位置,则你掌握的关于该点的信息比你只知道它在Feature1 轴或Feature2轴上的位置要多。PCA的主要思想是寻找到数据的主轴方向,由主轴构成一个新的坐标系,这里的维数可以比原维数低,然后数据由原坐标系向新的坐标系投影,这个投影的过程就可以是降维的过程。在图像上运行 PCA 后的结果如图,由此产生的轴是数据点差异最大的轴,这不需要反映形状的关键结构特征,尽管如此,它还是对方向的有效描述,可以获取任何形状。
2024-10-16 15:59:40
481
原创 【c++中带参数的宏】
最基本的宏是用#define指令定义的,用于简单的文本替换。// 相当于 3.14159 * radius * radiusreturn 0;使用反斜杠 \ 可以将宏定义展开为多行,便于阅读和维护。return 0;name();return 0;} \// 测试代码。
2024-10-16 15:40:28
352
原创 【SVD求解两组多维点之间的欧式变换矩阵】
本文介绍了如何利用SVD奇异值分解求解两组3D点之间的最优旋转R和平移t,以最小化点集变换后的误差。首先对点集进行质心处理,然后构建矩阵W并进行SVD分解,通过调整得到旋转矩阵R和向量t,最终形成变换矩阵。Halcon代码示例展示了具体实现过程。
2024-10-16 15:36:50
232
原创 【dump文件配置与查看】
正常情况下,可执行程序异常退出后不会生成dmp文件,这给定位分析问题原因带来了极大的困难。通过修改注册表我们可以让程序生成dmp文件,配合windbg工具的使用,可以方便的帮助定位异常问题原因。
2024-09-06 16:22:41
969
原创 【VTK 图形基本操作进阶_表面重建技术(等值面提取)】
由于这一方法原理简单,易于实现,目前已经得到了较为广泛的应用,称为三维数据等值面生成的经典算法。等值面提取类根据数据类型的不同而有所侧重。首先通过一个reader对象来读取一幅图像,并将输入到vtkMarchingCubes中,提取等值面时,最重要的是要设置等值面的数值,SetValue()函数用于设置等值面的值,其第一个参数表示等值面的序号,因此可以通过这个函数设置多个等值面值来提取多个等值面。此时可通过等值面提取技术,仅提取感兴趣的一个或者几个组织轮廓,并生成网格模型以供后续的处理和研究。
2024-07-29 22:22:26
1074
原创 【拟合方法】
huber`和 `tukey`是强大的误差统计方法,用来估算无异常点的轮廓点和近似圆的距离标准差。在Tukey算法中,异常点事被删除,而在Huber算法中,异常点仅仅是被抑制,或者更准确的说,它们是线性加权的。在计算机科学中,代数距离更常见用于分析数据点的关系,而在物理测量中,几何距离可能更为精确,尤其是在涉及真实世界物体形状和尺寸时。(4)`geometric`这种方法最小化轮廓点和结果圆之间的几何距离,这种算法在距离统计上是最优的,但需要更多的计算时间,如果轮廓点被噪声严重影响,建议使用这个选项;
2024-07-17 15:58:07
445
原创 【c++ 容器 算法学习】
C++标准库中的容器提供了许多有用的工具,其中就包括了std::back_inserter。这个工具可以用来在容器的末尾插入一个元素,并且不会改变容器的顺序。本文将会详细介绍如何使用std::back_inserter。std::back_inserter的使用非常简单。然后,我们可以在算法中使用std::back_inserter。可以看到,std::back_inserter成功地插入了元素4,并且没有改变容器中元素的顺序。使用C++标准库中的std::back_inserter进行迭代器插入。
2024-07-17 13:49:36
359
原创 【【Opencv】 Mat、vector、Point互转】
pp和output的区别在于:pp是vector而output是vector。使用Mat存储数据,并读取相应元素。将数组内容传递给Mat。
2024-07-16 10:35:41
615
原创 【圆拟合算法】
在计算机科学中,代数距离更常见用于分析数据点的关系,而在物理测量中,几何距离可能更为精确,尤其是在涉及真实世界物体形状和尺寸时。在Tukey算法中,异常点事被删除,而在Huber算法中,异常点仅仅是被抑制,或者更准确的说,它们是线性加权的。这种方法最小化轮廓点和结果圆之间的几何距离,这种算法在距离统计上是最优的,但需要更多的计算时间,如果轮廓点被噪声严重影响,建议使用这个选项;类似于“代数方法(algebraic)”,在此基础上,采用Tukey算法对轮廓点进行加权,忽略离群点;
2024-07-11 16:47:15
628
原创 【图像形状上下文特征ShapeContexts】
这些点的统计分布直方图,成为该点的形状上下文。轮廓不同点处的形状上下文是不同的,但相似轮廓的对应点处趋于有相似的形状上下文,如图2。3DSC是直接在2DSC上扩展而来,扩展为以点P为球心,R为半径的球区域,球的北极点由重建法线来估计。其中v(j, k, l)对应第j个同心球,第k个方位方向,第l个羊角方向区域对应的体积,\varrho反应了局部点的密度,即以P点为球心,a为半径的球体内的点数。:对给定的一个图像,获得图像的轮廓,对轮廓边缘采集到一组离散的点集(共n个点)。由结果可知,相似的图像距离更近。
2024-07-11 16:05:06
821
转载 【opencv中两个LSD直线检测算法的区别与应用】
因此,如果你的OpenCV版本高于4.0,那么在构造LSDDetector对象时,应该使用BinaryDescriptor::Params参数,而不是LSDOptions参数。边缘检测: 传统的直线检测方法一般采用边缘检测算法提取二值边缘图像,然后利用Hough变换将表示每条直线属性的参数投影到Hough空间中。缺点是依赖于边缘检测算法的准确性,在边缘密集的地方容易出现异常检测。LSD检测 LSD算法是一种基于梯度信息的直线检测方法,具有检测速度快、参数自适应、精度可达到亚像素级的特点。
2024-07-11 15:39:36
660
原创 【random_shuffle()详解】
random_shuffle()是一种常见的随机化函数,它能够将容器(如数组或列表)中的元素顺序随机打乱。这为开发者提供了在不同场景下引入随机性的便捷方式,比如游戏开发、数据分析以及算法优化等。
2024-07-11 14:12:54
923
原创 【拟合圆的梯度下降法例子】
最近研究了一下梯度下降法,所以写了个拟合圆的方法。拟合圆属于非线性拟合。网上的最小二乘法拟合圆公式并不是误差的平方,而是4次方(为了去掉公式里的开方)。一般可以先用网上的公式得到一个初始解,然后再用梯度下降法继续求精。梯度下降法的公式推导如下。下述代码基于VS2017、Qt5.9和OpenCV430,通过了验证。代码中为了加速收敛限制了迭代的最小步长为0.005。如果步长小于它则会放大步长,因此该程序的求解精度约为5‰。
2024-07-11 14:03:27
295
原创 【opencv 相机内参解释 opencv内参标定】
(1)标定的目的在进行相机标定之前一定要搞清楚相机标定的目的,简单的说,相机标定主要是根据标定板在相机下的不同位置去求解出相机的内参和外参。内参是相机的固有属性,也就是说无论你标定板如何放置,你的相机固不固定,相机的内参不受影响,但是内参的准确性与标定板图像的个数有关,一般而言标定板放置的位置越全面,相机的内参越准确,误差越小。对于相机的外参而言,是世界坐标系相对于相机坐标系的空间变换(旋转矩阵和平移矩阵)。(2)内参介绍fx:单位毫米内X方向上像素的个数;fy:单位毫米内Y方向上像素的个数;
2024-07-11 14:01:06
3333
原创 【 projectPoints来旋转、平移和投影一组 3D 点,并使用 solvePnp来查找此旋转和平移】
我使用 openCV 函数 projectPoints() 来旋转、平移和投影一组 3D 点,并使用 solvePnp() 来查找此旋转和平移。当镜头畸变系数全部为零时,这很有效,否则就失败了。
2024-07-11 13:51:18
298
原创 【Matplotlib plt.colorbar添加颜色条 】
Matplotlib plt.colorbar添加颜色条:从入门到精通,只需一篇文章!解决python画图中colorbar设置刻度和标签字体大小python 设置颜色渐变条colorbar
2024-06-25 17:06:33
380
原创 【AOI设备硬件选型要求】
这仅仅只是相机的像素精度,并不代表整个系统的精度就有如此高,还有其它的精度也要考虑,如镜头的分辨率,系统的抖动,光源的波长(颜色),物体本身的特征等等。通常传感器的尺寸与所选择的像素是对应的,如30W通常是1/3’的,130W-500W是1/2’的,有些500W也有2/3’的。条光长度能够照明所需打亮的位置即可,无须太长造成安装不便,同时也增加成本,一般情况下,光源的安装高度会影响到所选用条光的长度,高度越高,光源长度要求越长,否则图像两侧亮度传经比中间暗;如果有其它接口的镜头,也要考虑相机的接口。
2024-06-25 14:07:11
1267
原创 【如何计算相机分辨率和镜头选型】
实际光学放大倍率 = 焦距(f) 物距(𝐷) = 50 75 ≈ 0.667 视野长度 = Sensor 长度(h) 实际光学放大倍率 =结论:选用 50mm 镜头,搭配 500 万像素相机,可以达到 12.662mm x 10.593mm 的视野,单像素精度 5.2µm。光学放大倍率(β) = Sensor 长度(h) 视野长度(𝐻) = 8.4456 12 ≈ 0.7038。为保证画面整体的可应用性,选用镜头的像面尺寸应大于相机芯片的对角线尺寸(也简称为靶面),否则会出现。
2024-06-25 13:50:47
1612
原创 【MIL2OpenCV和OpenCV2MIL】
加拿大 MIL---------------------加拿大的Matrox Imaging Library(缩写为MIL)美国 Opencv------------------由美国Intel公司建立,如今由Willow Garage提供支持。
2024-06-03 11:27:47
228
原创 【Halcon深度学习 预训练网络模型介绍】
SqueezeNet在保证精度不损失的同时,将原始AlexNet压缩至原来的510倍。(Squeezenet比AlexNet参数少50倍,再使用了deep compression使得模型压缩至原来的510倍)。SqueezeNet的核心指导思想是——在保证精度的同时使用最少的参数。SqueezeNet提出了一种多分支结构—fire model。这个结构由squeeze层和expand层构成。
2024-05-30 16:48:54
1717
原创 【VTK 基础模块总结】
1、物体的光照属性主要包括环境光系数、漫反射光系数、镜反射光系数和镜面指数四个,分别用方法SetAmbient(),SetDiffuse(),SetSpecular()和SetSpecularPower()进行设置。由x,y值组成,范围位于(-1,1),z值表示深度坐标。:渲染窗⼝渲染的对象,窗⼝中每⼀个具体需要渲染的对象都是⼀个actor,可以通过 actor 这⼀层的⽅法来设置对象的表⾯属性、颜⾊、透明度、纹理等。2、在VTK中,相机的实质是一个观测点,与人眼的功能相同,相机的视野范围是一个锥状体。
2024-05-30 11:11:47
1023
原创 【c++ 调用python】
将Python目录下的include和libs文件夹路径配置到属性表中,如果需要用到虚拟环境,就把envs虚拟环境下的相关文件路径配置到属性表。解决方法:在自己安装的python目录中搜索"object.h"文件,将其56行"#define Py_REF_DEBUG"语句注释掉即可。问题出在python.h这个头文件中存在一个变量名叫“slots”,然而slots又是qt的关键字,所以qt的moc会把它当成宏先处理掉。导入头文件 Python.h:#include
2024-05-29 14:10:07
1179
原创 【GPU/CPU/TensorRt/OpenVINO推理速度】
时间 引擎模式51ms 12th Gen Intel® Core™ i7-12700F (cpu:0)21ms 12th Gen intel® core™ i7-12700F with OpenVino (cpu:0:0penVino) Float3218ms 12th Gen intel® core™ i7-12700F with OpenVino (cpu:0:0penVino) Float16时间 引擎模式6.1ms NVIDIA GeForce GTx 1660 SUPER (g
2024-05-29 10:51:07
376
原创 【matlablib绘图】
除了直接使用gnuplot离线数据绘图外,可以在halcon中进行绘图。在此使用python matplotlib绘图。
2024-05-29 09:57:38
272
原创 【Python用psutil获取CPU、内存等硬件信息】
psutil是Python的一个第三方库,提供了各种强大的硬件信息查阅功能,是标准库推荐的第三方库。一般conda会自行携带这个模块,如果未安装,可直接pip。
2024-05-29 09:48:22
546
基于深度学习肺部CT图像分割算法研究
2022-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人