送书|AIGC实战工业缺陷检测:从原理到代码

OpenCV学堂 2025-04-24 21:57
相比于 AIGC 在传感技术中的应用显得较为严谨和技术性,AIGC 技术在视觉中的应用可以说是充满了活力和创造力。

AIGC 在视觉中的应用不仅限于传统的图像处理和识别,还包括自动生成视觉内容图像修复与增强虚拟现实与增强现实的视觉体验等多个方面。

下面通过案例分析揭示 AIGC 如何在提高生产效率、增强系统可靠性和改善用户体验方面发挥关键作用。

1. 案例描述

在木制品加工厂中,原材料木料的质量直接影响最终产品的外观和品质(图 1 为正常的木料与异常木料的对比展示图)。传统的木料缺陷检测通常依赖人工检查,不仅效率低下,而且容易受到人为主观因素的影响。

图片图1  正常木料与异常木料对比展示图

通过引入 AI 技术,可以让机器自动检测和识别木料中的缺陷,从而大幅提高检测效率和准确性,确保生产出高质量的木制品。对异常木料进行检测并标记其中缺陷,如图 2 所示。

图片图2  异常位置mask展示图

在众多数据中挑选示例图时,笔者起初也忽略了图 1 中的部分异常,这表明人工检查的方式仍然存在一定的弊端。

然而,AI 技术引入时需要大量高质量的数据进行模型训练,而获取足够的缺陷样本数据常常是一大难题。在实际生产过程中,很多工艺的良率可以达到 99% 甚至是 99.9%,因此要采集几百条甚至是上千条负样本数据是十分困难的,甚至在一些领域中几乎无法实现。

这一瓶颈限制了 AI 模型的检测性能,因为在缺少多样化缺陷数据的情况下,模型难以全面学习和识别各种可能的缺陷类型。

此处简单 AI 模型实际上是指一个效果一般甚至不太理想、无法投入应用的模型,在 AI 专业术语中泛指欠拟合的模型。

本案例中已经训练一个简单 AI 模型所需要的数据集的详细信息,使用开源数据集 mvtec。

在上述背景下,AIGC 技术的引入显得尤为重要。AIGC 技术能够通过结合最相关的特定技术手段来生成逼真的缺陷图像,丰富训练数据集,从而提升 AI 模型的检测性能。如图 3 所示,这是通过正样本生成带缺陷的负样本结果实例图。

图片图3  通过正样本生成带缺陷负样本结果实例图

此外,AIGC 系统还可以接收操作人员的直接需求,从而进一步提高检测的可靠性和准确性。例如,操作人员可以通过简单的语言指令,让系统自动生成特定类型的缺陷图像或调整模型参数,减少对专业知识的依赖。

通过结合 AI 模型和 AIGC 技术,木料缺陷检测不仅能够实现更高的自动化水平,还能显著降低操作人员的介入需求。这种智能化的检测系统能够快速、准确地识别木料中的缺陷,确保生产过程中的每一块木料都达到高质量标准,从而提升最终产品的品质和市场竞争力。

2. 核心功能 / 需求描述

前面已经详细介绍过人机交互以及通过对话提取需求的原理与实现方式,且此案例将会直接基于前面的内容进行方案设计,因此在此案例中不再详细介绍人机交互功能和需求提取的部分,而是重点介绍 AIGC 在机器视觉中的其他重要应用功能。

(1)图像生成

图像生成在视觉领域中有着比较广泛的应用,将其基于使用场景进行分类可以大体分为以下两类:

  • 缺陷图像生成

该应用是指利用 AIGC 技术自动生成逼真的缺陷图像。通过模拟真实缺陷,如划痕、污渍和裂纹等,生成多样化的缺陷数据,丰富训练数据集,使 AI 模型能够更全面地学习和识别各种缺陷,从而显著提升检测的准确性和性能。这一过程不仅减少了模型训练时对大量真实缺陷样本的依赖,还提高了模型在实际应用中的可靠性和有效性。这一类应用的技术核心是生成式对抗网络。

  • 基于需求的图像生成

该应用是指利用生成式模型,根据用户输入的需求或描述,自动生成相应图像。其关键在于理解用户的需求,并将其转换为具体的视觉表现。其中涉及的技术核心有两点:生成式模型(包括生成式对抗网络)自然语言处理技术

此处自然语言处理技术需要实现的不仅仅是从用户语言中直接获取需求,还包括将需求转换为机器(或者系统)可以直接理解、执行的指令。

(2)图像质量评估与修复

图像质量评估与修复的工作原理包括两个主要方面:图像质量评估图像修复

  • 图像质量评估通过深度学习模型或者计算机视觉算法来自动分析图像的清晰度、颜色准确性、对比度等质量指标,并根据预设的标准对图像进行打分,指出诸如模糊、噪点或失真等缺陷。

  • 图像修复技术会通过进一步的深度学习算法(如卷积神经网络或生成式对抗网络)来识别图像中的具体缺陷,并对其进行修复,以恢复图像的清晰度和色彩。这种应用在工业中还用于修复图像数据采集设备中的失焦、模糊、色彩失真以及进行超分辨处理,以显著提升图像的清晰度和细节展现能力。

缺陷图像生成、基于需求的图像生成以及图像质量评估与修复这三个功能,从技术实现方案的角度理解,是同一个功能下面的三个子功能,相互之间既有一定的相似之处,也有区别。

3. 方案概述

直接根据前面拆解的核心功能 / 需求进行设计。整个方案的拓扑图如图 4 所示。

图片图4  方案拓扑图

该方案的要点如下:

①整个案例的核心是一个 AIGC 云服务,即图 4 中的 AIGC 主服务。这一服务在整个系统中扮演着关键角色。

②所有功能模块按照两级结构进行组织。一级功能模块由主服务进行集中调度,而二级功能模块则直接为相应的一级功能模块提供服务。

③如果后续需要扩展其他非标准需求,可以直接在 AIGC 主服务上进行扩展。

2. 人机交互

AIGC 在机器视觉领域中的应用,与 AIGC 在传感技术中的应用形式有所不同。这里的视觉应用主要涉及人机交互,强调感官体验等主观、抽象需求,与数据采集、设备状态监控等具体任务的关联较少。

相比之下,AIGC 结合传感器的案例更注重于具体的传感技术应用和设备状态监测。也就是说,本案例的特点在于其需求更为主观和抽象,旨在提升用户的感官体验和交互质量。

在视觉领域中应用 AIGC 相关技术或 AIGC 系统时,从用户需求的角度来看,人机交互功能显得尤为重要。原因在于不同用户的主观思维和感官体验各不相同。具体来说,在设计术语库(或知识库)的过程中,不仅需要结合行业的专业知识,还需特别关注与感官体验和主观思维相关的内容。例如,对于同样的需求 让图像更清晰一点,不同用户可能会有不同的理解和期望,有的可能希望 让图像更亮一点,而有的则可能希望 提高图像对比度。这就要求系统能够灵活地捕捉和理解用户的具体需求,并进行相应的调整,以提供符合用户期望的结果。

这种区别反映了 AIGC 技术在不同领域和应用场景中的灵活应用能力,既能应对具体的技术挑战,也能支持更为抽象和感性的用户需求。

在视觉应用场景中,即使面对同一数据(如图 3 所示的实例图),不同的需求方可能会有截然不同的要求。有些需求方可能选择忽略图像中的某些缺陷,而有些则会严格要求所有缺陷都被检测出来。然而,在技术实现层面,最基础的缺陷检测模型会始终尝试检测出所有的缺陷。

因此,当需求方需要忽略某些缺陷时,就需要依赖人机交互功能来捕捉到这一需求,并调整整个系统的行为。这包括在最终呈现给用户的图像结果中进行过滤,将被要求忽略的缺陷类型从中去除。

在工业中有时候会把上面描述的 过滤 功能称为 卡控

在实际操作中,本案例依托 AIGC 主服务来支持各种非标准需求的拓展。这意味着如果未来需要引入新的功能或调整现有功能以满足不同的视觉应用场景,则可以直接在 AIGC 主服务基础上进行扩展和优化。这种灵活性不仅能够满足用户日益多样化的需求,还有助于提升系统的整体可扩展性和适应性。

下面截取一个知识库的部分内容进行展示。其中技术实现、映射操作被转换成了文本描述(实际系统中的实现方式要参考知识库的构建方式,另外单独介绍)。下面示例中这两个位置对应系统中相关的代码接口。

[
    {        "需求分类""清晰度提升",        "用户描述": ["让图像更清晰一点""提升图像清晰度"],        "技术实现""应用超分辨率技术提高图像分辨率",        "映射操作""调用超分辨率模型"    },    {        "需求分类""亮度调整",        "用户描述": ["让图像更亮一点""增加亮度"],        "技术实现""调整图像亮度曲线",        "映射操作""应用亮度增强算法"    },    {        "需求分类""对比度增强",        "用户描述": ["提高图像对比度""增加对比度"],        "技术实现""应用对比度增强技术",        "映射操作""调整图像对比度参数"    }]

4. 缺陷图像生成

通过生成带有各种缺陷(如划痕、污渍、裂纹等)的图像来增强训练数据集,使 AI 模型能够更全面地学习和识别不同类型的缺陷。生成式对抗网络是实现这一功能的关键技术。

下面实现一个常规的生成式对抗网络代码,用于学习正常样本知识和缺陷知识,从而生成逼真的假缺陷样本图像(此处仅展示部分训练的逻辑代码)。

ansform = transforms.Compose([
    transforms.Resize(image_size),    transforms.CenterCrop(image_size),    transforms.ToTensor(),    transforms.Normalize((0.5,), (0.5,))])dataset = dsets.CIFAR10(root='./data', download=True, transform=transform)dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)# 初始化模型和优化器device = torch.device("cuda"if torch.cuda.is_available() else"cpu")netG = Generator().to(device)netD = Discriminator().to(device)criterion = nn.BCELoss()optimizerD = optim.Adam(netD.parameters(), lr=0.0002, betas=(0.5, 0.999))optimizerG = optim.Adam(netG.parameters(), lr=0.0002, betas=(0.5, 0.999))# 训练循环for epoch in range(num_epochs):    for i, data in enumerate(dataloader, 0):        ############################        # (1) 更新判别器        ###########################        netD.zero_grad()        real_images = data[0].to(device)        batch_size = real_images.size(0)        labels = torch.full((batch_size,), 1, dtype=torch.float, device=device)        output = netD(real_images).view(-1)        lossD_real = criterion(output, labels)        lossD_real.backward()        D_x = output.mean().item()        noise = torch.randn(batch_size, nz, 1, 1, device=device)        fake_images = netG(noise)        labels.fill_(0)        output = netD(fake_images.detach()).view(-1)        lossD_fake = criterion(output, labels)        lossD_fake.backward()        D_G_z1 = output.mean().item()        lossD = lossD_real + lossD_fake        optimizerD.step()        ############################        # (2) 更新生成器        ###########################        netG.zero_grad()        labels.fill_(1)        output = netD(fake_images).view(-1)        lossG = criterion(output, labels)        lossG.backward()        D_G_z2 = output.mean().item()        optimizerG.step()        # 打印日志        if i % 50 == 0:            print(f'Epoch [{epoch+1}/{num_epochs}] Batch {i}/{len(dataloader)} Loss D: {lossD.item()}, Loss G: {lossG.item()} D(x): {D_x}, D(G(z)): {D_G_z1} / {D_G_z2}')        # 保存模型    if (epoch + 1) % 5 == 0:        torch.save(netG.state_dict(), f'generator_epoch_{epoch+1}.pth')        torch.save(netD.state_dict(), f'discriminator_epoch_{epoch+1}.pth')

在使用生成式对抗网络生成缺陷图像时,训练过程通常需要较长时间。因此,为了提升系统的使用体验,常常采用离线学习机制。

通常的做法是在系统工作期间积累数据,在非工作时间利用这些数据自动学习。这种方法可以显著提高系统性能和用户体验。特别是,如果系统部署在硬件资源充足的环境中,则可以实现实时自动学习,从而进一步优化系统的性能和用户体验。

5. 基于需求的图像生成

基于需求的图像生成功能要根据用户特定要求生成定制化图像,这一任务可以借助多种技术方法实现。生成式对抗网络是其中一种主流的实现技术,它能够生成逼真的图像,但并不能满足所有的需求,比如图像增强或对比度调整等特定要求。

因此,基于需求的图像生成功能在实现过程中除了生成式对抗网络以外,还需要用其他的技术来满足特定的需求,包括但不限于以下几种。

(1)图像增强

图像增强通过调整图像的亮度、对比度、饱和度等参数来提升图像的视觉质量。例如,直方图均衡化能够增强图像的整体对比度,而自适应对比度增强则可保持局部细节和对比度的平衡,适用于各种光照条件下的图像。

如图 5 所示,这是对一张木料图分别进行亮度增强、直方均衡化后的效果展示图。

图片图 5 图像增强效果实例图

(2)图像超分辨率

图像超分辨率技术旨在从低分辨率图像中恢复高质量的细节和清晰度,使其接近甚至超越原始高分辨率图像的效果。超分辨率生成对抗网络和卷积神经网络是常用的方法,能够有效提升图像在放大后的视觉质量,适用于提高图像细节的需求场景。

如图 6 所示,这是对一张木料图进行超分辨率技术处理后的实例图。左侧原图分辨率为1024 × 1024 ,右侧通过超分辨率技术将图像放大 4 倍后的分辨率为4096 × 4096。

图片图 6 图像超分辨率技术处理实例图

(3)去噪和修复

去噪技术用于消除图像中的噪点和瑕疵,恢复图像的原始质量和清晰度。卷积神经网络和自编码器是常见的工具,能够识别并移除图像中的噪声,使得图像更加干净和真实,适用于需要高质量视觉表现的应用场景。

如图 7 所示,这是对一张正常的木料图进行人为噪声引入,然后分别使用高斯滤波去噪和中值滤波去噪的结果实例图。

图片图 7  像去噪实例图

以下代码示例展示了如何将图像增强、图像超分辨率、去噪和修复这三种功能与自然语言处理技术相结合,实现 AIGC 功能(由于代码过长,因此每个具体功能(算法)的实现代码已被省略)。

import cv2
from transformers import pipeline# 提取用户意图和子功能def extract_user_intent_and_sub_option(user_input):    nlp = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")    labels = ["图像增强""图像超分辨""去噪""修复"]    result = nlp(user_input, labels)    intent = result['labels'][0]    # 提取子功能    sub_option = None    if intent == "图像增强":        sub_labels = ["直方图均衡化""对比度增强""亮度增强"]        sub_result = nlp(user_input, sub_labels)        sub_option = sub_result['labels'][0]    return intent, sub_option# 图像增强def enhance_image(image, sub_option):    print("二级需求为: ")    if sub_option == "直方图均衡化":        # 使用直方图均衡化进行图像增强(详细代码省略)        print("使用直方图均衡化")    elif sub_option == "对比度增强":        # 对比度增强(详细代码省略)        print("使用对比度增强")    elif sub_option == "亮度增强":        # 亮度增强(详细代码省略)        print("使用亮度增强")    return image# 超分辨def super_resolution(image):    # 使用超分辨率模型(详细代码省略)    print("使用超分辨率")    return image# 去噪和修复def denoise_and_repair(image):    # 降噪(详细代码省略)    print("使用去噪和修复")    return image# 任务调度def aigc_system(user_input, image):    intent, sub_option = extract_user_intent_and_sub_option(user_input)    print(f"获取到一级需求: {intent}")    if intent == "图像增强":        return enhance_image(image, sub_option)    elif intent == "图像超分辨":        return super_resolution(image)    elif intent == "去噪" or intent == "修复":        return denoise_and_repair(image)    else:        raise ValueError("无法识别的需求")# 示例用户输入和图像user_input = "请帮我增强图像对比度"image = cv2.imread("image.png", cv2.IMREAD_GRAYSCALE) output_image = aigc_system(user_input, image)

在这个案例代码的实现过程中,核心的功能在函数 extract_user_intent_and_sub_option() 中实现。

①首先加载零样本分类模型 facebook/bart-large-mnli。该模型由 Meta 的 AI 研究团队开发,基于 BART 模型,能够在不进行特定任务训练的情况下,通过上下文理解实现新输入的分类。

②定义标签列表 labels,代表系统支持的主要功能(即一级功能)。

③使用步骤①中的模型将用户的输入与标签列表 labels 进行匹配,选择得分最高的标签作为系统提取到的用户意图(即一级功能)。

④如果系统获取到用户期望的一级功能是“图像增强”,那么再用上述同样的方式获取详细的用户对子功能实现的需求。

例如:用户输入对话文本我 觉 ** 图像对比度有点低,你帮我增强一下图像吧 ,系统获取到的一级功能需求为图像增强,二级需求为使用对比度增强

注意:AIGC 融合传感器的案例实现完全基于检索式对话系统的方式,而 AIGC 在机器视觉场景中的应用由于涉及较多的用户主观感受,因此无法完全依赖检索式对话系统进行用户需求的直接提取。


AIGC 在传感器领域的应用,以及 AIGC 结合各工业领域的原理与案例,包括 算法选择模型训练系统集成 各个环节等,请关注 《AIGC驱动工业智能设备》

10年+ 智能算法专家,针对真实的工业场景,高效构建可落地的 AIGC 工业系统。

图片

图片
图片

福利时间 
留言就有机会获取新书
在本文下方留言, 至下周一(4月28日晚22:00) 
点赞数 前三 粉丝 免费送新书一本。



图片

OpenCV学堂 专注计算机视觉开发技术分享,技术框架使用,包括OpenCV,Tensorflow,Pytorch教程与案例,相关算法详解,最新CV方向论文,硬核代码干货与代码案例详解!作者在CV工程化方面深度耕耘15年,感谢您的关注!
评论
  • ETC系统是一种高速公路或桥梁自动收费系统。插卡式ETC是长这个样子的,正面如下图。背面是有一小块太阳能板的,还有一个按钮开关,如下图。用工具拆开上盖,可以看见电池,显示屏,卡片,如下图。取下PCB板,可以看见背面,如下图。J5,J6脚是接太阳能板的正负极的,SKYRELAY(斯凯瑞利) SKY1311T 读卡器芯片,内部集成了多种通信协议。SKY1311T芯片通过内置的硬件加密引擎和高级加密标准(AES)来实现数据的加密传输,保证数据的安全性。169E 具体的数据手册没有查到,猜测是
    liweicheng 2025-05-17 21:41 135浏览
  • 这算是一款挺经典的“轨迹球”,它与其它品牌轨迹球最大的不同是它有个大圆环形状的滚轮,缩放图片、浏览网页非常方便,据说这还是Kensington独有的专利。我要拆解的这款轨迹球的型号是:K72337,算是同品牌系列里最最基础的入门款,优点是价廉物美(人民币200元左右),缺点是球的直径略小(40mm)—— 要想精准定位光标位置需要先有操控它的娴熟度,还有就是这款可供组合的按键也太少(高配型号有多个自定义按键),但好在我当年入手它就只是为了提高工作效率(用于文字编辑、程序修改、PPT绘图、音频剪辑等
    牛言喵语 2025-05-18 05:42 115浏览
  • 电磁场的作用主要体现在以下几个方面:首先在能源领域,电磁场是发电、输电的基础。无论是火力发电还是核电站,*终都需要通过电磁感应原理将机械能转化为电能。高压输电线路则利用交变电磁场实现电能的远距离传输,为现代工业和生活提供动力保障。在通信技术方面,电磁波作为电磁场的传播形式,构成了无线通信的基础。从无线电广播到5G移动网络,从卫星通信到光纤传输,本质上都是对特定频段电磁场的**控制和利用。雷达系统通过发射和接收电磁波实现目标探测,在气象预报、航空管制等领域不可huo缺。在医疗领域,电磁场技术为诊断
    锦正茂科技 2025-05-19 13:19 72浏览
  • 什么是信号量信号量能干啥信号量的函数实例举例总结什么是信号量简而言之,就是发出通知,接收通知的任务获得通知后去干啥啥。通知有多有少。自定义通知数量的,叫计数型信号量;只有有无(即“0”,“1”)通知的,叫二进制信号量。信号量能干啥资源管理:控制多个任务对共享资源(如外设、内存块)的访问权限,避免竞争条件任务同步 :实现任务间的时序协调(如等待某个事件完成)中断与任务通信:在中断服务程序(ISR)中快速通知任务处理事件(需使用 xxxFromISR 版本的函数)信号量的函数创建二进制信号量函数原型
    二月半 2025-05-18 20:48 113浏览
  •   在数字技术重塑商业格局的当下,品牌如何借助创新工具实现价值跃升成为企业战略核心。软件开发已从单纯的技术迭代载体,演变为企业连接用户、驱动增长的关键纽带。因此,筛选靠谱的软件开发公司,成为企业数字化转型的重要决策 —— 专业公司凭借技术积累与行业经验定制解决方案,权威公司则以规范服务与交付能力保障项目落地。   筛选靠谱软件开发公司的三大核心标准   标准 1:技术适配性与行业匹配度   技术适配性:优先选择掌握云计算、AI 集成、低代码开发等前沿技术的团队。   行业匹配度:医疗
    华盛恒辉l58ll334744 2025-05-20 15:46 68浏览
  • 在智能化、数字化与信息化的时代浪潮下,物联网凭借着多频段间的通信协同能力与多协议间的通信兼容能力构建起了一张张无缝互通的IoT设备网络。从Sub-GHz频段到2.4GHz频段,从BLE/Wi-Fi协议到LoRa/Wi-SUN协议,多种频段资源与通信协议不仅推动了智能抄表、智能家居与工业自动化等领域的繁荣发展,还为万物互联的未来愿景奠定了坚实的底层通信基础。然而,随着无线通信技术的高速发展与全球IoT设备数量的持续增长,频段资源的有限性愈发凸显,在科技园区、交通枢纽与CBD等通信密集区域,同一频段
    华普微HOPERF 2025-05-20 11:07 84浏览
  • 随着智能硬件设备的快速发展,蓝牙音频语音芯片在智能家居、穿戴设备、车载电子等领域得到广泛应用。蓝牙音频语音芯片凭借其低功耗、高集成度和灵活的通信接口,成为许多开发者的选择。然而,在实际应用中,开发者可能会遇到IC芯片通过串口或MCU通信时无响应的问题。本文将从通信接口配置与故障排查角度,普及相关知识并提供解决方案。一、通信接口基础配置串口接线规则蓝牙芯片的串口通信需遵循“交叉连接”原则:TX(发送端)→ RX(接收端)RX(接收端)→ TX(发送端)若接线错误(如TX-TX或RX-RX直连),数
    广州唯创电子 2025-05-19 09:47 50浏览
  • 【拆解】+TFT LCD 通用测试仪拆解 目前对于车载行业,显示屏在整车的份额越来越高。各个供应商或者下级供应商都会回针对TFT的开发做规划。那么,在TFT测试方面,他们是如何进行产品开发前的测试和有效性验证的内。是的,无非就是他们公司自己开发点亮治具或者从治具供应商那边购买点亮设备。客户只需要提供客户需求。有能力的供应商就好针对需求进行分解开发。在规定的时间内完成产品的开发和交付。今天我们就来看看用在车载显示屏或者消费电子上面的TFT点亮治具—TFT LCD通用测试仪式怎么设计出来的。 如下就
    zhusx123 2025-05-18 14:07 113浏览
  • 北京贞光科技作为三星电机一级代理商,提供全面升级的技术支持、样品供应和供应链保障服务,为客户提供专业、可靠的一站式解决方案,满足AI基础设施不断发展的需求,支持更高效、更强大的人工智能应用计算系统的开发。如需更多产品信息或技术支持,请联系贞光科技。三星电子在被动元件技术领域取得重大突破,推出专为AI服务器应用设计的超小型高容量多层陶瓷电容器(MLCC)。这些新组件解决了现代AI计算基础设施不断增长的电力需求,同时优化了密集服务器环境中的空间利用率。 满足AI服务器电力需求现代AI服务器
    贞光科技 2025-05-20 11:38 79浏览
  •   头部技术企业核心能力与行业解决方案解析   华盛恒辉科技有限公司   华盛恒辉科技有限公司:是一家专注于高端软件定制开发服务和高端建设的服务机构,致力于为企业提供全面、系统的开发制作方案。在部队政企开发、建设到运营推广领域拥有丰富经验,在教育,工业,医疗,APP,管理,商城,人工智能,部队软件、工业软件、数字化转型、新能源软件、光伏软件、汽车软件,ERP,系统二次开发,CRM等领域有很多成功案例。   五木恒润科技有限公司   五木恒润科技有限公司:是一家专业的部队信息化建设服务单位
    华盛恒辉l58ll334744 2025-05-19 17:18 123浏览
  • 什么是互斥量互斥量的应用场合互斥量的API函数基本代码结构互斥量使用举例递归锁递归锁举例总结什么是互斥量在freeRTOS中,多个任务访问一块共享资源,会产生竞争现象。比如马路上只有一个很早以前的电话亭,A、B都想要打电话,然后他们就开始打架了。但是如果A先进去了然后把门锁了,B想进去打电话的话只能在外面等,必须等到A把门锁打开。互斥量的应用场合像freeRTOS的多任务系统,任务A正在使用某个资源,还没用完的时候,任务B也来使用,就可能会导致问题。就比如串口,任务A正在用串口发送数据,此时任务
    二月半 2025-05-18 20:54 116浏览
  • 电磁场是自然界中一种特殊的物质存在形式,由相互依存且能够相互转化的电场和磁场共同构成。这种无形的物理场充满整个空间,既能够传递电磁力,也能够以电磁波的形式传播能量。电场源于静止或运动的电荷,表现为对带电粒子施加作用力的能力;而磁场则产生于电流或变化的电场,能够影响运动电荷的轨迹。两者通过动态耦合形成统一的电磁场系统,其行为规律由麦克斯韦方程组完整描述。这个方程组包含四个基本方程,分别揭示了电荷如何产生电场、磁场无孤立磁荷的特性、变化磁场激发电场的规律,以及电流与变化电场共同产生磁场的机制。电磁场
    锦正茂科技 2025-05-19 13:07 74浏览
  • 非常荣欣参加了这次《7天造一台无人机》试读体验活动,同时非常感谢面包板论坛举办此活动。本书印刷还是非常新颖,具有精美漫画。下图为图书正面。 本书主要介绍组装、调试一架四旋翼无人机的完整流程,包括组装无人机机架、安装电机和螺旋桨、电池充电保养、安装飞控、飞行前调试,并且在组装、调试过程中依次介绍了飞行原理、动力系统、遥控器、电池、飞控等相关基础知识。 本书共分为7章。第1章首先介绍了无人机学习的一些方法,避免大家在学习无人机时走弯路;然后介绍了无人机的基础知识,并对四旋翼无人机的概念、飞行原理和各
    shenwen2007_656583087 2025-05-17 12:07 76浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦