Halcon 瑕疵检测原理及应用
摘要: 本文详细阐述了 Halcon 在瑕疵检测领域的原理、相关技术以及广泛的应用场景。首先介绍了 Halcon 软件的基本概况及其在机器视觉领域的重要地位,接着深入剖析了瑕疵检测所涉及的图像采集、预处理、特征提取与分析以及分类与判定等核心原理,随后探讨了不同类型瑕疵检测的具体应用案例,包括表面瑕疵、尺寸瑕疵和装配瑕疵等,并对 Halcon 瑕疵检测的优势与局限性进行了分析,最后对其未来发展趋势进行了展望,旨在使读者全面深入地了解 Halcon 瑕疵检测技术及其在工业生产等领域的关键作用。

一、引言
随着现代制造业的高速发展,产品质量控制的要求日益严格。瑕疵检测作为保证产品质量的重要环节,传统的人工检测方式由于效率低、主观性强、易疲劳等缺点,已难以满足大规模、高精度生产的需求。机器视觉技术应运而生,Halcon 作为一款领先的机器视觉软件,在瑕疵检测领域发挥着极为重要的作用。它能够快速、准确地识别产品表面的各种瑕疵,为提高生产效率和产品质量提供了强有力的技术支持。
二、Halcon 概述
Halcon 是德国 MVTec 公司开发的一套功能强大的机器视觉软件库。它涵盖了丰富的图像处理、分析和机器视觉算法,可用于开发各种复杂的视觉应用程序。Halcon 支持多种编程语言,如 C++、C#、Python 等,方便用户根据自身需求进行集成开发。其具有高度的灵活性和可扩展性,能够适应不同行业、不同场景下的视觉检测任务,在工业自动化、电子制造、汽车生产、包装印刷等众多领域都有着广泛的应用。

三、瑕疵检测原理
(一)图像采集
- 相机与镜头选择
- 相机的类型(如面阵相机、线阵相机)和参数(分辨率、帧率、像素尺寸等)需要根据被检测物体的特征、检测精度要求和检测速度要求来确定。例如,对于高速运动的产品检测,可能需要选择高帧率的相机;对于微小瑕疵检测,则需要高分辨率的相机。
- 镜头的焦距、光圈等参数影响着成像的视野范围、景深和清晰度。合适的镜头能够确保被检测物体在相机传感器上清晰成像,准确捕捉瑕疵信息。
- 照明系统设计
- 照明是图像采集的关键因素之一。不同的照明方式(如背光源、前光源、环形光源、穹顶光源等)会产生不同的光照效果,凸显不同类型的瑕疵。例如,背光源对于检测透明物体内部的瑕疵效果较好,环形光源能够均匀照亮物体表面,突出表面的划痕、污渍等瑕疵。通过合理设计照明系统,可以增强瑕疵与正常区域的对比度,提高瑕疵检测的准确性和可靠性。
(二)图像预处理
- 灰度化处理
- 将彩色图像转换为灰度图像,减少数据量的同时保留图像的基本轮廓和纹理信息。灰度化的方法有多种,如加权平均法等,通过对彩色图像的红、绿、蓝三个通道进行特定的加权求和计算,得到灰度值。
- 滤波去噪
- 图像在采集和传输过程中会受到噪声干扰,影响瑕疵检测的精度。常用的滤波方法包括高斯滤波、中值滤波等。高斯滤波通过对图像像素邻域内的值进行加权平均运算,平滑图像,去除高斯噪声;中值滤波则是将像素邻域内的灰度值排序,取中间值作为该像素的新灰度值,对于椒盐噪声有较好的去除效果。
- 图像增强
- 为了更清晰地凸显瑕疵特征,需要对图像进行增强处理。例如,对比度拉伸可以扩大图像的灰度范围,使原本对比度较低的瑕疵与背景之间的差异更加明显;直方图均衡化通过调整图像的直方图分布,使图像的灰度分布更加均匀,增强图像的整体对比度。
(三)特征提取与分析
- 基于灰度值的特征提取
- 计算图像的灰度均值、方差等统计特征。灰度均值反映了图像整体的亮度水平,方差则体现了图像灰度值的离散程度。瑕疵区域的灰度均值和方差往往与正常区域存在差异,通过设定合适的阈值,可以初步筛选出可能存在瑕疵的区域。
- 灰度共生矩阵是一种常用的纹理特征描述方法。它通过统计图像中不同灰度值像素对在特定方向和距离上的出现频率,提取图像的纹理信息。瑕疵的存在可能会改变图像的纹理特征,如划痕会使纹理的方向性发生变化,通过分析灰度共生矩阵的相关参数(如能量、对比度、熵等),可以识别出这些纹理变化,从而检测到瑕疵。
- 基于形状的特征提取
- 对于一些具有特定形状的瑕疵,如圆形的孔洞、矩形的缺角等,可以通过形状分析算法进行检测。首先对图像进行边缘检测,常用的边缘检测算子有 Sobel 算子、Canny 算子等,得到物体的边缘轮廓。然后对边缘轮廓进行形状拟合,如采用最小二乘法拟合椭圆、矩形等形状,如果拟合误差超过一定阈值,则可能存在形状瑕疵。此外,还可以计算形状的面积、周长、圆形度、矩形度等几何特征,与标准形状的特征进行对比,判断是否存在瑕疵。
- 基于频域的特征提取
- 将图像从空间域转换到频域,如通过傅里叶变换。在频域中,图像的瑕疵信息会以不同的频率成分表现出来。例如,高频成分往往对应着图像中的细节和边缘信息,瑕疵通常会导致高频能量的变化。通过分析频域图像的频谱特性,如频谱峰值、频谱分布等,可以检测到瑕疵的存在。例如,对于表面有周期性纹理的产品,当出现局部瑕疵时,频域中的纹理频率成分会发生改变,通过监测这种变化可以实现瑕疵检测。
(四)分类与判定
- 模板匹配法
- 事先建立无瑕疵产品的标准模板图像,在检测时将待检测图像与模板图像进行匹配。匹配的方法有基于灰度值的模板匹配和基于形状的模板匹配等。通过计算匹配度,如归一化互相关系数等,如果匹配度低于设定的阈值,则判定存在瑕疵。这种方法适用于产品形状和外观相对固定,且瑕疵类型相对单一的检测场景。
- 机器学习法
- 收集大量包含瑕疵和无瑕疵的样本图像,提取图像的各种特征(如上述的灰度值特征、形状特征等),然后利用机器学习算法(如支持向量机、神经网络等)进行训练。训练后的模型能够根据输入的待检测图像的特征,自动判断是否存在瑕疵以及瑕疵的类型。机器学习方法具有较强的适应性和泛化能力,能够处理复杂的瑕疵检测任务,尤其是对于多种瑕疵类型并存且难以用传统模板匹配方法检测的情况效果较好。
- 深度学习法
- 深度学习在瑕疵检测领域近年来取得了显著的成果。例如,卷积神经网络(CNN)可以直接对原始图像进行处理,自动学习图像中的特征表示。通过构建深度神经网络架构,如 LeNet、AlexNet、ResNet 等,对大量的图像数据进行训练,网络能够准确地识别出图像中的瑕疵区域和类型。深度学习方法不需要人工设计复杂的特征提取算法,能够自动学习到高度抽象和有效的特征,在处理复杂纹理、形状多变的瑕疵检测任务中表现出卓越的性能。
四、Halcon 瑕疵检测的应用
(一)表面瑕疵检测
- 金属表面瑕疵检测
- 在金属加工行业,如钢板、铝板的生产过程中,表面可能会出现划痕、氧化、凹坑等瑕疵。Halcon 可以通过图像采集系统获取金属表面的图像,经过预处理去除噪声和增强对比度后,利用基于灰度值和纹理的特征提取方法,如灰度共生矩阵分析纹理变化,检测出划痕等瑕疵。对于凹坑等形状瑕疵,可以采用基于形状的特征提取和分析方法,通过边缘检测和形状拟合判断凹坑的存在和大小。通过实时的瑕疵检测,可以及时发现并剔除有瑕疵的产品,提高金属产品的质量和生产效率。
- 塑料表面瑕疵检测
- 塑料产品在注塑成型过程中,可能会出现飞边、气泡、流痕等表面瑕疵。Halcon 能够针对塑料表面的光泽度和纹理特点,设计合适的照明系统采集图像。在图像分析阶段,利用灰度值差异检测飞边等与背景有明显灰度差的瑕疵,通过纹理分析检测流痕等影响表面纹理的瑕疵。例如,对于透明塑料产品,可以采用特殊的背光源照明,使内部气泡在图像中清晰可见,然后通过图像分析算法准确识别气泡的位置和大小,保证塑料产品的外观质量,满足电子、汽车等行业对塑料零部件高精度外观的要求。
(二)尺寸瑕疵检测
- 机械零件尺寸检测
- 在机械制造领域,各种机械零件的尺寸精度至关重要。Halcon 可以通过相机采集机械零件的图像,对图像进行边缘检测得到零件的轮廓。然后根据零件的设计尺寸要求,计算轮廓的几何特征,如长度、直径、孔径等。通过与标准尺寸进行对比,判断是否存在尺寸过大或过小的瑕疵。例如,对于轴类零件,可以精确测量其直径,对于孔类零件,可以测量孔径和孔深等尺寸参数,及时发现加工过程中的尺寸偏差,避免不合格零件进入下一道工序,减少废品率,提高生产效益。
- 电子元器件尺寸检测
- 电子元器件如芯片、电阻、电容等,尺寸微小且精度要求极高。Halcon 借助高分辨率相机和精密的图像采集系统,能够清晰地获取电子元器件的图像。利用亚像素级的边缘检测技术,可以精确地定位元器件的边缘,从而准确测量其尺寸。例如,对于芯片引脚的间距和长度检测,通过对图像进行细致的分析和计算,确保引脚的尺寸符合设计规范,保证电子设备的正常组装和性能可靠性,在电子制造行业的质量控制环节发挥着关键作用。
(三)装配瑕疵检测
- 汽车零部件装配检测
- 在汽车生产线上,众多零部件需要精确装配。Halcon 可以对装配后的汽车零部件进行视觉检测,如检测螺栓是否拧紧、零件是否安装到位等。通过图像采集和分析,利用形状匹配和位置关系判断等方法,检查各个零部件之间的相对位置和连接状态。例如,检测发动机缸盖螺栓是否按照规定的力矩拧紧,通过识别螺栓头部的形状和位置,与标准装配模型进行对比,若发现螺栓位置偏差或未拧紧的情况,及时发出警报,避免因装配瑕疵导致的汽车安全隐患,提高汽车的整体质量和安全性。
- 电子产品装配检测
- 在电子产品组装过程中,如手机、电脑主板的装配,需要检测芯片、电容、电阻等元器件是否正确安装以及焊接是否良好。Halcon 可以对装配后的主板图像进行分析,通过模板匹配检测元器件的位置和型号是否正确,利用灰度值和纹理分析检测焊接点的质量,如是否存在虚焊、桥接等瑕疵。例如,对于 BGA(球栅阵列)封装芯片的焊接检测,通过分析焊接点的灰度和形状特征,判断焊接点是否饱满、均匀,确保电子产品的组装质量和性能稳定性,降低产品的故障率。
五、Halcon 瑕疵检测的优势与局限性
(一)优势
- 算法丰富且高效
- Halcon 提供了大量成熟的图像处理和分析算法,涵盖了从图像预处理到特征提取、分类判定的各个环节。这些算法经过了广泛的测试和优化,具有高效性和准确性,能够快速处理大规模的图像数据,满足工业生产中高速、高精度的检测需求。
- 跨平台兼容性好
- 支持多种操作系统(如 Windows、Linux 等)和编程语言(如 C++、C#、Python 等),方便用户在不同的开发环境和项目需求下进行集成。无论是在工业控制计算机上运行的自动化生产线检测系统,还是在普通 PC 机上开发的实验室检测软件,都可以方便地使用 Halcon 进行瑕疵检测开发。
- 可视化开发界面友好
- Halcon 提供了可视化的开发界面,如 HDevelop,用户可以在该界面中快速进行算法原型设计、调试和优化。无需编写大量的代码即可实现基本的瑕疵检测功能,大大缩短了开发周期。同时,在可视化界面中可以直观地查看图像数据在各个处理阶段的变化情况,方便用户理解和调整算法参数。
(二)局限性
- 对硬件要求较高
- 由于 Halcon 处理的图像数据量较大,尤其是在处理高分辨率图像或进行复杂的深度学习算法运算时,对计算机的 CPU、GPU 和内存等硬件资源有较高的要求。这可能会增加企业在硬件设备方面的投资成本,对于一些小型企业或资源有限的项目来说可能存在一定的限制。
- 算法复杂性与专业性
- 虽然 Halcon 提供了丰富的算法,但要充分发挥其优势,需要用户具备一定的图像处理、机器视觉和编程知识。对于一些没有相关专业背景的用户来说,学习和掌握 Halcon 的使用方法可能存在一定的难度,需要花费较多的时间和精力进行培训和学习,这在一定程度上限制了 Halcon 的广泛应用。
- 深度学习模型训练数据需求大
- 当使用深度学习方法进行瑕疵检测时,需要大量的标注样本数据进行模型训练。收集和标注这些数据往往需要耗费大量的人力、物力和时间。而且,如果训练数据的质量不高或代表性不足,可能会导致训练出的模型泛化能力差,在实际检测中出现误判或漏判的情况。
六、结论与展望
Halcon 在瑕疵检测领域具有重要的地位和广泛的应用价值。其基于先进的图像处理、分析和机器视觉原理,能够有效地实现对各种产品的表面瑕疵、尺寸瑕疵和装配瑕疵等的检测,在众多行业中为提高产品质量和生产效率发挥了关键作用。尽管存在一些局限性,如对硬件要求较高、算法复杂以及深度学习模型训练数据需求大等,但随着计算机硬件技术的不断发展和人工智能算法的持续进步,这些问题有望得到逐步解决。未来,Halcon 可能会在以下几个方面进一步发展:一是与更先进的硬件加速技术(如新型 GPU 架构)深度结合,提高算法的运行速度;二是开发更加智能化、自动化的算法开发工具,降低用户的使用门槛;三是在深度学习领域,进一步优化模型训练算法,减少对大量标注数据的依赖,提高模型的泛化能力和检测精度,从而在瑕疵检测以及整个机器视觉领域继续保持领先地位,为工业 4.0 和智能制造的发展提供更强大的技术支撑。

七、示例代码
以下分别给出几个使用 Halcon 进行不同类型瑕疵检测相关操作的示例代码,示例代码基于 Halcon 的 HDevelop 编程环境风格,你可以根据实际需求进一步调整并集成到具体的项目中(使用的是 Halcon 常见的基本操作,实际复杂应用可按需拓展)。
示例一:基于灰度阈值进行表面瑕疵检测(简单模拟检测图像中较暗的瑕疵区域)
* 关闭窗口
dev_close_window ()
* 读取图像(这里假设图像名为test_image.jpg,你需替换为实际图像路径及文件名)
read_image (Image, 'test_image.jpg')
* 获取图像尺寸
get_image_size (Image, Width, Height)
* 打开合适大小的窗口用于显示图像
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
* 在窗口中显示原始图像
dev_display (Image)
* 将彩色图像转换为灰度图像
rgb1_to_gray (Image, GrayImage)
* 设置阈值,这里示例以较低灰度值(可根据实际瑕疵特征调整)来检测可能的瑕疵区域
Threshold := 100
* 进行阈值分割,低于阈值的像素设为黑色(表示瑕疵区域,可根据实际调整),高于阈值设为白色(正常区域)
threshold (GrayImage, Region, 0, Threshold)
* 对分割出的瑕疵区域进行形态学操作(比如闭运算,填充小孔等,使区域更完整,可按需调整)
closing_circle (Region, ClosedRegion, 3.0)
* 在窗口中显示检测出的瑕疵区域(以红色高亮显示)
dev_set_color ('red')
dev_display (ClosedRegion)
这个示例代码的主要思路是先读取一张图像,转换为灰度图后,通过设定一个灰度阈值来分割出可能是瑕疵的较暗区域,然后进行简单的形态学处理让瑕疵区域更规整,最后将检测出的瑕疵区域显示出来。
示例二:利用形状特征检测机械零件尺寸瑕疵(简单模拟检测圆形零件是否尺寸合规)
* 关闭所有窗口
dev_close_window ()
* 读取机械零件图像(替换为实际图像路径及文件名)
read_image (PartImage, 'part_image.jpg')
* 获取图像尺寸信息
get_image_size (PartImage, Width, Height)
* 打开窗口用于显示图像
dev_open_window (0, 0, Width, Width, 'black', WindowHandle)
* 显示原始图像
dev_display (PartImage)
* 对图像进行灰度化(假设零件图像本身颜色不影响形状检测,可按需调整)
rgb1_to_gray (PartImage, GrayPartImage)
* 进行边缘检测,采用 Canny 算子获取边缘轮廓
edges_sub_pix (GrayPartImage, Edges, 'canny', 1, 20, 40)
* 选择轮廓中符合圆形形状特征的轮廓(这里简单示例找圆形轮廓,设置一定的圆形度等参数范围,实际需更精细调整)
select_shape (Edges, Circles, ['circularity'], 'and', [0.8], [1])
* 如果找到符合圆形的轮廓,测量其半径等尺寸信息(这里仅示例测量半径)
if (count_obj (Circles) > 0)area_center (Circles, Area, Row, Column)radius := sqrt(Area[0] / PI)* 假设标准半径为100(单位根据实际情况定,这里仅示例),判断是否尺寸合规StandardRadius := 100if (abs(radius - StandardRadius) > 5)disp_message (WindowHandle, '零件尺寸存在瑕疵', 'window', 10, 10, 'red', 'true')elsedisp_message (WindowHandle, '零件尺寸合格', 'window', 10, 10, 'green', 'true')endif
elsedisp_message (WindowHandle, '未检测到圆形零件轮廓', 'window', 10, 10, 'red', 'true')
endif
在这个代码中,先是读取机械零件图像,经过灰度化后利用边缘检测算子获取边缘轮廓,接着筛选出圆形的轮廓,若有符合的圆形轮廓就测量其半径并与标准半径对比,以此判断零件尺寸是否存在瑕疵,最后将结果通过文字提示显示在窗口中。
示例三:使用模板匹配检测电子产品装配瑕疵(简单模拟检测芯片是否安装在正确位置)
* 关闭窗口
dev_close_window ()
* 读取标准模板图像(无瑕疵正确装配时芯片的图像,替换为实际路径及文件名)
read_image (TemplateImage, 'template_image.jpg')
* 读取待检测的装配后图像(含芯片装配情况,替换为实际路径及文件名)
read_image (TestImage, 'test_image.jpg')
* 获取模板图像尺寸
get_image_size (TemplateImage, TemplateWidth, TemplateHeight)
* 打开合适大小的窗口用于显示图像
dev_open_window (0, 0, TemplateWidth, TemplateHeight, 'black', WindowHandle)
* 在窗口中显示待检测图像
dev_display (TestImage)
* 进行基于灰度的模板匹配
create_template_model (TemplateImage, 'auto', -rad(360), rad(360), 'auto', 'auto', ModelID)
find_template_model (TestImage, ModelID, -rad(360), rad(360), 0.8, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
* 判断匹配得分是否满足要求(这里示例阈值设为 0.8,可根据实际调整)
if (Score >= 0.8)disp_message (WindowHandle, '芯片装配位置正确', 'window', 10, 10, 'green', 'true')
elsedisp_message (WindowHandle, '芯片装配存在瑕疵', 'window', 10, 10, 'red', 'true')
endif
* 清除模板模型资源
clear_template_model (ModelID)
上述代码的逻辑是先分别读取标准的芯片模板图像以及实际待检测的电子产品装配图像,然后创建模板模型,通过模板匹配算法在待检测图像中查找与模板匹配的区域,根据匹配得分来判断芯片是否安装在正确位置,也就是检测是否存在装配瑕疵,最后释放模板模型占用的资源。
相关文章:
Halcon 瑕疵检测原理及应用
摘要: 本文详细阐述了 Halcon 在瑕疵检测领域的原理、相关技术以及广泛的应用场景。首先介绍了 Halcon 软件的基本概况及其在机器视觉领域的重要地位,接着深入剖析了瑕疵检测所涉及的图像采集、预处理、特征提取与分析以及分类与判定等核心原理ÿ…...
JAVA 架构师面试 100套含答案:JVM+spring+ 分布式 + 并发编程》...
今年的行情,让招聘面试变得雪上加霜。已经有不少大厂,如腾讯、字节跳动的招聘名额明显减少,面试门槛却一再拔高,如果不用心准备,很可能就被面试官怼得哑口无言,甚至失去了难得的机会。 现如今,…...
多模态学习详解
多模态学习详解 引言 多模态(Multimodal)学习是机器学习和人工智能领域的一个重要分支,它涉及从多个不同类型的输入数据中提取信息,并将这些信息融合以改善模型的性能。多模态学习能够处理的数据类型广泛,包括但不限…...
C#应用开发:基于C# WPF界面实现本机网络通讯状态(下载速度)的显示
目录 概述 具体实现 第一步:获取网络接口信息 代码解释: 第二步:创建 WPF 界面 第三步:绑定数据 注意事项 概述 在 WPF 中实现一个界面来显示本机网络接口的状态,通常需要以下几个步骤: 获取网络接口…...
Octo—— 基于80万个机器人轨迹的预训练数据集用于训练通用机器人,可在零次拍摄中解决各种任务
概述 论文地址:https://arxiv.org/abs/2405.12213 在机器人学中,通常使用针对特定机器人或任务收集的数据集来学习策略。然而,这种方法需要为每项任务收集大量数据,由此产生的策略只能实现有限的泛化性能。利用其他机器人和任务的…...
2022高等代数下【南昌大学】
设 ε 1 , ε 2 , ε 3 \varepsilon_1, \varepsilon_2, \varepsilon_3 ε1,ε2,ε3 是复数域上线性空间 V V V 的一组基,线性变换 σ \sigma σ 在 ε 1 , ε 2 , ε 3 \varepsilon_1, \varepsilon_2, \varepsilon_3 ε1,ε2,ε3 下的矩阵为 J = ( 2 0 0 1 2…...
UDP编程
UDP编程是指使用用户数据报协议(UDP)进行网络编程的过程。UDP是一种无连接的传输协议,它不保证数据的可靠性和顺序性。 在UDP编程中,程序可以使用套接字(socket)来进行数据的发送和接收。UDP套接字是一种用…...
论文阅读:Omnidirectional Image Super-resolution via Bi-projection Fusion
对于全景图像(ODIs)的超分辨率的技术有:等矩投影(ERP)但是这个没有利用 ODIs 的独特任何特性。ERP提供了完整的视场但引入了显著的失真,而立方体映射投影(CMP)可以减少失真但视场有限…...
Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:智行无忧停车场管理系统(前后端源码 + 数据库 sql 脚本)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 项目介绍 1.1 项目功能 2.0 用户登录功能 3.0 首页界面 4.0 车辆信息管理功能 5.0 停车位管理功能 6.0 入场登记管理功能 7.0 预约管理功能 8.0 收费规则功能 9.0…...
微服务的负载均衡可以通过哪些组件实现
微服务的负载均衡可以通过多种组件来实现,以下是一些常见的负载均衡组件及其特点: Nginx: Nginx是一款轻量级的HTTP和反向代理服务器,也是一个高性能的负载均衡器。它支持多种负载均衡算法,如轮询、加权轮询、IP哈希等…...
Spring Boot 支持哪些云环境?
Spring Boot 对云环境的支持非常广泛,它本身是为云原生应用设计的,能够很好地与多种云平台集成。以下是小编给大家列举的一些 Spring Boot 支持的一些主要云环境: Pivotal Cloud Foundry: Pivotal 是 Spring Boot 的创建者&#x…...
第31天:安全开发-JS应用WebPack打包器第三方库JQuery安装使用安全检测
时间轴: 演示案例: 打包器-WebPack-使用&安全 第三方库-JQuery-使用&安全 打包器-WebPack-使用&安全 参考:https://mp.weixin.qq.com/s/J3bpy-SsCnQ1lBov1L98WA Webpack 是一个模块打包器。在 Webpack 中会将前端的所有资源…...
word如何快速创建目录?
文章目录 1,先自己写出目录的各级标题。2、选中目标标题,然后给它们编号3、给标题按照个人需求开始分级4、插入域构建目录。4.1、利用快捷键插入域构建目录4.2、手动插入域构建目录 听懂掌声!学会了吗? 前提声明:我在此…...
关于linux 下的中断
1. /proc/irq/<irq_number>/ 下属性详解 在 Linux 系统中,每个中断号(IRQ)都有一个对应的目录 /proc/irq/<irq_number>/,包含与该中断相关的属性文件。这些文件用于查看和配置中断的具体行为。 以下是 /proc/irq/&l…...
两个畸变矩阵相乘后还是一个2*2的矩阵,有四个畸变元素。1、畸变矩阵吸收了法拉第矩阵。2、畸变矩阵也给法拉第旋转角带来模糊(求解有多种可能)
角度一;恢复畸变的时候也把法拉第旋转恢复了 角度二:求解法拉第旋转角的时候 前面乘的复系数的不同也会带来法拉第旋转角和畸变的不同解 注意:无论多少个畸变矩阵相乘,结果都是2*2的矩阵,也就是畸变参数可以减少…...
MCU利用单总线协议(1-wire)读取DHT11温湿度
第1章 硬件连接 硬件原理图 第2章 通讯过程 用户MCU发送一次开始信号,DHT11从低功耗模式转换到高速模式,DHT11等待主机开始信号结束。DHT11等待主机开始信号结束后,DHT11发送响应信号。DHT11发送响应信号后,紧接着送出40bit的数据…...
[保姆式教程]使用目标检测模型YOLO11 OBB进行旋转目标检测:训练自己的数据集(基于卫星和无人机的农业大棚数据集)
之前写了一个基于YOLOv8z做旋转目标检测的文章,内容写得不够好,内容也比较杂乱。现如今YOLO已经更新到11了,数据集也集齐了无人机和卫星的农业大棚,所以这次就写一个基于YOLO11 OBB的农业大棚旋转检测。 1. 下载源码配置环境 在h…...
【网络安全】网站常见安全漏洞 - 网站基本组成及漏洞定义
文章目录 引言1. 一个网站的基本构成2. 一些我们经常听到的安全事件3. 网站攻击者及其意图3.1 网站攻击者的类型3.2 攻击者的意图 4. 漏洞的分类4.1 按来源分类4.2 按危害分类4.3 常见漏洞与OWASP Top 10 引言 在当今的数字化时代,安全问题已成为技术领域不可忽视的…...
Redis——个人笔记留存
今日内容 1. redis1. 概念2. 下载安装3. 命令操作1. 数据结构4. 持久化操作5. 使用Java客户端操作redis Redis 1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQLNoSQL(NoSQL Not Only SQL),意即“不仅仅是SQL”,是…...
人工智能_大模型091_大模型工作流001_使用工作流的原因_处理复杂问题_多轮自我反思优化ReAct_COT思维链---人工智能工作笔记0236
# 清理环境信息,与上课内容无关 import os os.environ["LANGCHAIN_PROJECT"] "" os.environ["LANGCHAIN_API_KEY"] "" os.environ["LANGCHAIN_ENDPOINT"] "" os.environ["LANGCHAIN_TRACING_V…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
