当前位置: 首页 > news >正文

Halcon阈值处理的几种分割方法threshold/auto_threshold/binary_threshold/dyn_threshold

Halcon阈值处理的几种分割方法

文章目录

  • Halcon阈值处理的几种分割方法
    • 1. 全局阈值
    • 2. 基于直方图的自动阈值分割方法
    • 3. 自动全局阈值分割方法
    • 4. 局部阈值分割方法
    • 5. var_threshold算子
    • 6 . char_threshold 算子
    • 7. dual_threshold算子

在场景中选择物体或特征是图像测量或识别的重要基础,而阈值处理是最简单也最常用的区域
选择方法,特别适用于目标和背景的灰度有明显区别的情况。下面就介绍几种常用的阈值处理方法。

1. 全局阈值

首先来看什么是阈值。简单来说,闽值就是一个指定的像素灰度值的范围。假设阈值为0~255灰度值,阈值处理就是将图像中的像素灰度值与该阈值进行比较,落在该范围内的像素称为前景,其余的像素称为背景。一般会用黑白两色来表示前景与背景。这样图像就变成了只有黑与白两种颜色的二值图像。
当检测对象的图像灰度与背景差异比较大时,用阈值处理可以很方便地将其与背景分离开来。根据像素与相邻像素之间的灰度值差异设置一个阈值,可以将像素与其相邻像素分隔开来。如果是在图像边缘,可以利用边缘的灰度差值进行简单的阈值处理,有助于沿边界分割图像。在Halcon中,可使用threshold算子进行全局阈值处理。举例如下:

read_image (Image,'data/codes')
rgbl_to_gray (Image, GrayImage)
threshold (GrayImage, DarkArea, 0,128)

该程序的阈值处理结果如图所示,其中图(a)为输入图像,图(b)中的红色区域为阅值处理后提取出的较暗区域。
在这里插入图片描述
在上面的例子中,threshold 算子的第1个参数Graylmage 为输入图像,这里用的是灰度图;第2个参数DarkArea 为输出的区域,类型为Region;第3个和第4个参数为阀值的区间值,表示0~128 灰度范围内的像素区域。

2. 基于直方图的自动阈值分割方法

有时手动设定阈值并不是一个严谨的方法,因为人对图像灰度的感受并不精准,即使对同一场景,当光线有微妙变化时,灰度也会有差异。手动设定阈值在粗估计时可能是一个便捷的方法,但是随着后续计算步骤的叠加,将带来不可估量的误差。在连续采集的图像中,图像的灰度也是动态变化的,环境光照、拍摄角度等因素都会影响图像的灰度。如果阈值是一个固定的值,那么在处理连续图像时结果会不够准确。因此,可以使用自适应阙值进行调节。
自适应阈值是一种基于直方图的阈值。直方图是图像像素落在0~253这个区间内的数量统计图。通过直方图可以看出图像灰度的大致分布,在有些情况下甚至可以估+检测对象的面积与结构。
在Halcon 中使用auto_threshold算子进行自适应阈值处理。该算子可以对单通道图像进行多重闽值处理,其原理是,以灰度直方图中出现的谷底为分割点,对灰度直方图的波峰进行分割。因此,有多少个波峰,就会分割出多少个区域。auto_threshold 算子的第3个参数Sigma(此例中为8.0)是一个平滑算子,可以对直方图进行平滑处理。举例如下:

read_image (Image,'data/shapes')
rgbl_to_gray (Image, GrayImage)
auto_threshold(GrayImage,Regions,8.0)

该程序的阈值处理结果如图所示,其中图(a)为灰度图像,包括几种不同灰度的对象.图(b)用3种不同的颜色区分了自动阈值分割出的3个区域。其中圆形与矩形物体因为灰度值相近被分割为同一区域;三角形的灰度值与另外两种有差异,被分割为单独的区域;背景灰度值最大,也被分割为一个单独的区域。
在这里插入图片描述
auto_threshold算子的前两个参数分别为输入的Image图像和输出的Region类型的区域。第3个参数 Sigma 为对灰度直方图进行高斯平滑的核的大小。高斯卷积运算,其计算原理是,先确定图像的绝对灰度直方图,然后使用高斯滤波器对该直方图进行平滑处理。在本例中,设Sigma 值为8.0,对灰度直方图的平滑效果如图所示。
在这里插入图片描述
图 (a)为原始灰度直方图,可以看出波峰比较多,如不处理将产生大量的分割区域,不利于提取出有意义的部分,因此这里将Sigma 值设得大一些,使波峰变得平滑。图(b)为Sigma为8.0时对灰度直方图进行高斯平滑后的效果,可见波峰明显减少到了3个,因此图像中自动分割的区域也减少到了3部分。
因此,Sigma的值越大,平滑效果越显著,直方图波峰越少,分割出的区域也越少;反之,Sigma的值越小,直方图平滑的效果越不明显,分割的次数也越多。同时可以使用gray_histo 算子和gen_region_histo 算子查看Sigma参数对灰度直方图的影响。

3. 自动全局阈值分割方法

除了auto_threshold算子外,还常用binary_threshold算子对直方图波峰图像进行自动阈值分割。binary_threshold 算子同样利用了直方图,但不同的是,该算子是根据直方图中的像素分布提供可选的分割方法,如使用最大类间方差法或平滑直方图法,都可以自动计算出一个灰度级别用于分割区域。
同时,该算子也可以选择提取较亮还是较暗的范围,尤其适用于在比较亮的背景图像上提取比较暗的字符。举例如下:

read_image (Image, 'data/codes')
rgbl_to_gray (Image, GrayImage)
binary threshold (GrayImage, RegionMaxSeparabilityLight, 'max _separability', 'dark', UsedThreshold)

该程序运行效果如图所示,其中图(a)为灰度图像,图(b)为使用binary _threshold算子进行阈值分割后的图像。
在这里插入图片描述
binary_threshold算子的前两个参数分别为输入和输出的对象。第3个参数为分割的方法,这个例子中选择max_separability,表示在直方图中对最大的可分性进行分割;也可以选择smooth histo,表示平滑直方图,平滑的原理与auto_threshold算子类似。第4个参数表示提取前景还是背景,这里选择dark,表示提取较暗的部分;也可以选择light,表示提取较亮的部分。最后一个参数UsedThreshold 为返回结果,将返回所用的阈值。

4. 局部阈值分割方法

上文介绍了几种全局阈值分割方法,本小节介绍一个基于局部阈值分割的dyn_threshold算子。它适用于一些无法用单一灰度进行分割的情况,如背景灰度比较复杂,有的部分比前景目标亮,有的部分比前景目标暗;又如前景目标包含多种灰度,因而无法用全局阈值完成分割。该算子利用邻域,通过局部灰度对比,找到一个合适的阈值进行分割。
dyn_threshold 算子的应用步骤一般分三步:首先,读取原始图像;然后,使用平滑滤波器对原始图像进行适当平滑;最后,使用dyn threshold算子比较原始图像与均值处理后的图像局部像素差异,将差异大于设定值的点提取出来。
举一个例子,如图(a)所示,该图中前景部分的字符颜色不均匀,无法用单一的灰度阈值进行提取,因此可以使用局部阈值分割方法进行提取。代码举例如下:

read_image (Image, Idata/text')
*将图像转换为灰度图
rgb1_to_gray (Image, GrayImage)
*由于图像对比度比较低,因此对图像进行相乘,增强对比度
mult_image (GrayImage, GrayImage, ImageResult, 0.005, 0)
*使用平滑滤波器对原始图像进行适当平滑
mean _image (ImageResult, ImageMean, 50,50)
*动态阈值分割,提取字符区域
dyn_threshold (ImageResult, ImageMean, RegionDynThresh, 4, 'not_equal')
*开运算,去除无意义的小的杂点
opening_circle (RegionDynThresh, Region0pening, 1.5)
*显示结果
dev_clear_window()
dev_display (RegionOpening)

该段代码运行效果如图所示,其中图(a)为灰度图像,图像中的字符部分颜色不均;图(b)为用dyn_threshold算子进行阈值分割后的图像。
在这里插入图片描述
再举一个使用动态阈值进行轮廓提取的例子。如图(a)所示,该图的前景与背景部分灰度都不均匀,因而无法用全局阈值进行提取,这时可以用dyn_threshold算子提取前景的轮廓。代码如下:

read_image (Image, 'data/garlic')
*将图像转换为灰度图
rgbl_to_gray (Image, GrayImage)
*使用平滑滤波器对原始图像进行适当平滑
mean_image (GrayImage, ImageMean, 30,30)
*动态阈值分割,提取字符区域
dyn_threshold (GrayImage, ImageMean, RegionDynThresh, 30, 'not_equal')
*腐蚀操作,去除杂点
erosion_circle (RegionDynThresh, RegionClosing, 1.5)

该段代码运行效果如图所示,其中图(a)为灰度图像,前景目标灰度复杂,背景因为光
照不均匀,局部甚至比前景目标更亮;图(b)为使用dyn_threshold算子进行阈值分割后的图像。
在这里插入图片描述
dyn_threshold算子的第1个参数为输入的灰度图像。第2个参数为输入的预处理图像,这里食用Mean_Image得到了一张均值图像,用于做局部灰度对比。第3个参数为输出的阈值区域。第。个参数是offset值,是将原图与均值图像作对比后设定的值,灰度差异大于该值的将被提取出来第5个参数决定了提取的是哪部分区域,一般有如下4个选择。
(1)light:表示原图中大于等于预处理图像像素点值加上offset值的像素被选中。
(2)dark:表示原图中小于等于预处理图像像素点值减去offset 值的像素被选中。
(3)equal:表示原图中像素点大于预处理图像像素点值减去offset值,小于预处理图像像素点值加上offset 值的点被选中。
(4)not_equal:表示与equal相反,它的提取范围在equal范围以外。
该算子适用于在复杂背景下提取前景目标的轮廓,或无法用单一灰度阈值提取边缘等情况。注意
实际应用中可以根据图像的灰度值,设置均值滤波器的系数和动态阙值的参数。

5. var_threshold算子

除了dyn threshold算子可以利用局部像素灰度差进行分割外,var_threshold算子也是一种基于局部动态阈值的分割方法。该方法分割的依据是局部的均值和标准差,选择图像中邻域像素满足阈值条件的区域进行分割。该阈值不是一个固定的值,而是在点(x,))的邻域中使用矩形mask进行扫描,分别用点(x,y)的灰度与均值图像中的点(x,y)的灰度,和矩形的中心点的标准差灰度进行比较。该矩形 mask的长宽需要是奇数,这样便于找到矩形的中心点,其具体的宽和高应该略大于待分割的图像区域。举例如下:

read _image (Image,'data/holes')rgbl _to_gray (Image, GrayImage)*设置矩形,选择感兴趣区域
gen_rectanglel (Rectangle, 170, 80, 370, 510)
reduce_domain (GrayImage, Rectangle, ImageReduced)
var _threshold (ImageReduced, Region, 15, 15, 0.2, 35, 'dark')

该程序的运行效果如图所示,其中图(a)为输入图像,图(b)为使用 var_threshold算子进行阈值分割后的图像,灰度变化符合阈值的区域被提取了出来。
在这里插入图片描述
该算子的第1个参数为输入的灰度图像;第2个参数为输出的阈值区域;第3个和第4个参数为用于扫描邻域的矩形 mask的宽和高;第5个参数为标准差因子,用于计算灰度标准差,默认为0.2;第6个参数为设定的绝对阈值,该值用于比较矩形区域内的灰度标准差与均值图像的最小灰度值;第7个参数决定了提取的是哪部分区域,一般有4个选择,即dark、light、equal、not_equal,具体解释与dyn_threshold算子相同。

6 . char_threshold 算子

核算子一般用来提取字符,适用于在明亮的背景上提取黑暗的字符。该算子的运算过程如下:首先计算一个灰度曲线;然后给定一个Sigma值,用于平滑这个曲线;最后将前景与背景区分开来。分割的阈值取决于直方图中的最大值。例如,如果选择百分比为95%,灰度阈值将锁定在距离直方图峰值的5%左右的区域,因为这个算子假定的是字符的灰度都暗于背景。举例如下:

read_ image (Char, 'data/char')
rgbl_to_gray (Char, GrayImage)
char_threshold (GrayImage, GrayImage, Characters, 6, 95, Threshold)

该程序的运行效果如图所示,其中图(a)为灰度图像,图(b)为使用char_threshold算子进行阈值分割后的图。
在这里插入图片描述
与binary_threshold 算子相比,char_threshold算子适用于直方图的波峰之间没有明确的谷底的情况,或者是直方图没有明确的峰值的情况。这种情况是可能出现的,如图像中只包含几个字符,或者是存在不规则光照。

7. dual_threshold算子

该算子表示双阈值处理,其原型如下:
dual threshold(Image : RegionCrossings : MinSize, MinGray, Threshold 😃
该定义来自Halcon官方文档。其第1个参数为输入图像,第2个参数为阈值处理的输出区域,第3个参数为分割出的区域的最小面积,第4个参数为区域的灰度下限,第5个参数为灰度阈值Threshold。该阈值处理可以看作是对两个方向进行了阈值分割,不但提取出了灰度大于等于Threshold 值的范围,也提取出了小于等于-Threshold值的范围。
之所以会有负的灰度值,是因为dual threshold算子在处理之前一般会先对原始图像进行拉普拉斯操作,输入的图像一般是拉普拉斯图像,这类图像包含正的和负的灰度值的区域。
满足灰度阈值并符合面积条件,同时还满足最小灰度条件的区域将最终被分割出来。

相关文章:

Halcon阈值处理的几种分割方法threshold/auto_threshold/binary_threshold/dyn_threshold

Halcon阈值处理的几种分割方法 文章目录 Halcon阈值处理的几种分割方法1. 全局阈值2. 基于直方图的自动阈值分割方法3. 自动全局阈值分割方法4. 局部阈值分割方法5. var_threshold算子6 . char_threshold 算子7. dual_threshold算子 在场景中选择物体或特征是图像测量或识别的重…...

FB混合C语言编译

这是群友分享的方法,这里只是作为记录和分享。 有了这个功能,可以很方便的拷贝一下C或者C代码直接用到FB上。 既然是混合C语言编译,当然得有C的代码。比如随便去网上找两个排序:冒泡排序和选择排序,代码如下&#xf…...

【机器学习】深度学习概论(二)

五、受限玻尔兹曼机(Restricted Boltzmann Machine,RBM) 5.1 RBM介绍 示例代码: Python 编写了一个简单的 RBM 实现,并用一些假数据训练了它。然后,他展示了如何用 RBM 来解释用户的电影偏好,以…...

词法语法语义分析程序设计及实现,包含出错提示和错误恢复

词法说明 (1)关键字 main, int, char, if, else, for, while, void (2)运算符 - * / < < > > ! (3)界符 ; ( ) { } (4)标识符 ID letter(letter|digit)* (5)整型常数 NUM digit digit* (6)空格 ‘ ‘ ‘\n’ ‘\r’ ‘\t’ 空格用来分隔ID,NUM,运算符,界…...

Linux的capability深入分析

from:https://www.cnblogs.com/iamfy/archive/2012/09/20/2694977.html 一)概述: 1)从2.1版开始,Linux内核有了能力(capability)的概念,即它打破了UNIX/LINUX操作系统中超级用户/普通用户的概念,由普通用户也可以做只有超级用户可以完成的工作. 2)capability可以作用在进程上…...

【自然语言处理】类似GPT的模型

除了GPT (Generative Pre-trained Transformer) 之外&#xff0c;还有一些其他的好用的类似工具可以用来生成文本。以下是几个受欢迎的工具&#xff1a; BERT (Bidirectional Encoder Representations from Transformers): BERT 是一个预训练的深度双向 Transformer 模型&#…...

【Unity】【FBX】如何将FBX模型导入Unity

【背景】 网上能够找到不少不错的FBX模型资源&#xff0c;大大加速游戏开发时间。如何将这些FBX导入Unity呢&#xff1f; 【步骤】 打开Unity项目文件&#xff0c;进入场景。 点击Projects面板&#xff0c;右键选择Import New Assets 选中FBX文件后导入。Assets文件夹中就会…...

腾讯云标准型S5服务器4核8G配置优惠价格表

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…...

学习笔记:R语言基础

文章目录 一、R语言简介二、选择R的原因三、R基本数据对象&#xff08;一&#xff09;向量&#xff08;二&#xff09;矩阵&#xff08;三&#xff09;数组&#xff08;四&#xff09;因子&#xff08;五&#xff09;列表&#xff08;六&#xff09;数据框&#xff08;七&#…...

初识智慧城市

文章目录 智慧家居 智慧社区 智慧交通 智慧医疗 智慧教育 智慧旅游 智慧农业 智慧安防 智慧家居 利用智能语音、智能交互等技术,实现用户对家居系统各设备的远程操控和能控制如开关窗帘(窗户)、操控家用电器和照明系统、打扫卫生等操作。利用计算机视觉等技术,对被照看…...

Zookeeper之手写一个分布式锁

前言 我之前写了一篇快速上手ZK的文章&#xff1a;https://blog.csdn.net/qq_38974073/article/details/135293106 本篇最要是进一步加深学习ZK&#xff0c;算是一次简单的实践&#xff0c;巩固学习成果。 设计一个分布式锁 对锁的基本要求 可重入&#xff1a;允许同一个应…...

【音视频 ffmpeg 学习】 RTMP推流 mp4文件

1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。 2.RTMP协议中基本的数据单元称为消息&#xff08;Message&#xff09;。 3.当RTMP协议在互联网中传输数据的时候&#xff0c;消息会被拆分成更小的单元&#xff0c;称为消息块&#xff08;Chunk&#xff…...

跨进程通信 macOS XPC 创建实例

一&#xff1a;简介 XPC 是 macOS 里苹果官方比较推荐和安全的的进程间通信机制。 集成流程简单&#xff0c;但是比较绕。 主要需要集成 XPC Server 这个模块&#xff0c;这个模块最终会被 apple 的根进程 launchd 管理和以独立进程的方法唤起和关闭&#xff0c; 我们主app 进…...

Python圣诞树代码

Python圣诞树代码 # 小黄 2023/12/25import turtle as t # as就是取个别名&#xff0c;后续调用的t都是turtle from turtle import * import random as rn 100.0speed(20) # 定义速度 pensize(5) # 画笔宽度 screensize(800, 800, bgblack) # 定义背景颜色&#xff0c;可…...

flask之文件管理系统-项目 JRP上线啦!!! ---修订版,兼容Windows和Linux系统

上一章的版本https://blog.csdn.net/weixin_44517278/article/details/135275066&#xff0c;在Windows下debug完成无异常后&#xff0c;上传到我的树莓下开始正式服役 由于开发环境是Windows&#xff0c;使用环境是Linux&#xff0c;导致最后没能成功运行起来 这个版本是今天去…...

希尔排序:排序算法中的调优大师

希尔排序&#xff1a;排序算法中的调优大师 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一同探讨一个经典而高效的排序算法——希尔排序。…...

LeetCode 1185. 一周中的第几天

一、题目 1、题目描述 给你一个日期&#xff0c;请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数&#xff1a;day、month 和 year&#xff0c;分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tues…...

大数据学习(30)-Spark Shuffle

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…...

Linux部署ELK

大家好&#xff0c;我是升仔 引言 在复杂的系统架构中&#xff0c;日志管理是一个关键的环节。ELK栈提供了一个高效的解决方案&#xff0c;能够帮助我们快速定位问题、分析数据&#xff0c;并实现实时监控。部署ELK栈是一项挑战&#xff0c;但收益巨大。 基础安装和配置 环境准…...

Python 实现 PDF 到 Word 文档的高效转换(DOC、DOCX)

PDF&#xff08;Portable Document Format&#xff09;已成为一种广泛使用的电子文档格式。PDF的主要优势是跨平台&#xff0c;可以在不同设备上呈现一致的外观。然而&#xff0c;当我们需要对文件内容进行编辑或修改&#xff0c;直接编辑PDF文件会非常困难&#xff0c;而且效果…...

【MYSQL】MYSQL 的学习教程(七)之 慢 SQL 优化思路

1. 慢 SQL 优化思路 慢查询日志记录慢 SQLexplain 分析 SQL 的执行计划profile 分析执行耗时Optimizer Trace 分析详情确定问题并采用相应的措施 1. 慢查询日志记录慢 SQL 如何定位慢SQL呢&#xff1f; 我们可以通过 慢查询日志 来查看慢 SQL。 ①&#xff1a;开启慢查询日志…...

unity学习笔记----游戏练习0

一、修复植物种植的问题 1.当手上存在植物时&#xff0c;再次点击卡片上的植物就会在手上添加新的植物&#xff0c;需要修改成只有手上没有植物时才能再次获取到植物。需要修改AddPlant方法。 public bool AddPlant(PlantType plantType) { //防止手上出现多个植…...

ai概念:强人工智能介绍、迁移学习

强人工智能&#xff08;Strong Artificial Intelligence&#xff0c;SAI&#xff09;是指一种具有与人类智能相媲美或超越人类智能水平的人工智能系统。与弱人工智能&#xff08;Weak Artificial Intelligence&#xff0c;WAI&#xff09;不同&#xff0c;强人工智能具有更高级…...

go语言设计模式-单例模式

建造型设计模式-单例模式 是用来控制类型实例的数量的&#xff0c;当需要确保一个类型只有一个实例时&#xff0c;就需要使用单例模式。 即把实例的访问进行收口&#xff0c;不能谁都能 new 类&#xff0c;所以单例模式还会提供一个2访问该实例的全局端口&#xff0c;一般都会…...

超维空间S2无人机使用说明书——51、基础版——使用yolov8进行目标跟踪

引言&#xff1a;为了提高yolo识别的质量&#xff0c;提高了yolo的版本&#xff0c;改用yolov8进行物体识别&#xff0c;同时系统兼容了低版本的yolo&#xff0c;包括基于C的yolov3和yolov4&#xff0c;以及yolov7。 简介&#xff0c;为了提高识别速度&#xff0c;系统采用了G…...

Transformer(seq2seq、self-attention)学习笔记

在self-attention 基础上记录一篇Transformer学习笔记 Transformer的网络结构EncoderDecoder 模型训练与评估 Transformer的网络结构 Transformer是一种seq2seq 模型。输入一个序列&#xff0c;经过encoder、decoder输出结果也是一个序列&#xff0c;输出序列的长度由模型决定…...

2023-12-29 服务器开发-centos部署ftp

摘要: 2023-12-29 服务器开发-centos-部署ftp 部署ftp vsftpd&#xff08;very secure FTP daemon&#xff09;是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。 前提条件 已创建ECS实例并为实例分配了公网IP地址。 背景…...

螺旋数字阵(100%用例)C卷 (JavaPythonNode.jsC语言C++)

疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m (0 < n <= 999,0 < m <= 999) ,从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3...n,最终形成一个m行矩阵 小明对这个矩阵有些要求 1.每行数字的个数一样多…...

AUTOSAR从入门到精通-网络通信(UDPNm)(二)

目录 前言 原理 UdpNm工作原理 UdpNm与CanNM的区别联系 网络管理算法...

显示器与按键(LCD 1602 + button)

一、实验目的&#xff1a; &#xff08;1&#xff09;学习lcd 1602的编程与使用、 &#xff08;2&#xff09;机械式复位开关button软件消抖的方法。 二、实验内容&#xff1a; 1、必做&#xff1a;先显示开机画面&#xff0c;&#xff1a;在1602显示器上&#xff0c;分两行…...

2020年认证杯SPSSPRO杯数学建模B题(第一阶段)分布式无线广播全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 B题 分布式无线广播 原题再现&#xff1a; 以广播的方式来进行无线网通信&#xff0c;必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题&#xff0c;在同一个时间段内&#xff0c;只有唯一一个拿到令牌…...

【CISSP学习笔记】7. 安全评估与测试

该知识领域涉及如下考点&#xff0c;具体内容分布于如下各个子章节&#xff1a; 设计和验证评估、测试和审计策略进行安全控制测试收集安全过程数据&#xff08;例如&#xff0c;技术和管理&#xff09;分析测试输出并生成报告执行或协助安全审计 7.1. 构建安全评估和测试方案…...

Gateway集成方法以及拦截器和过滤器的使用

前提&#xff1a;请先创建好一个SpringBoot项目 1. 引入依赖 SpringCloud 和 alibabaCloud 、 SpringBoot间对版本有强制要求&#xff0c;我使用的springboot是3.0.2的版本。版本对应关系请看&#xff1a;版本说明 alibaba/spring-cloud-alibaba Wiki GitHub <dependency…...

第G2周:人脸图像生成(DCGAN)

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客\n&#x1f366; 参考文章&#xff1a;365天深度学习训练营\n&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.co…...

【Web】Ctfshow Thinkphp5 非强制路由RCE漏洞

目录 非强制路由RCE漏洞 web579 web604 web605 web606 web607-610 前面审了一些tp3的sql注入,终于到tp5了&#xff0c;要说tp5那最经典的还得是rce 下面介绍非强制路由RCE漏洞 非强制路由RCE漏洞原理 非强制路由相当于开了一个大口子&#xff0c;可以任意调用当前框…...

python3遇到Can‘t connect to HTTPS URL because the SSL module is not available.

远程服务器centos7系统上有minicoda3&#xff0c;觉得太占空间&#xff0c;就把整个文件夹删了&#xff0c;原先的Python3也没了&#xff0c;都要重装。 我自己的步骤&#xff1a;进入管理员模式 1.下载Python3的源码&#xff1a; wget https://www.python.org/ftp/python/3.1…...

QSPI Flash xip取指同时program过程中概率性出现usb播歌时断音

项目场景&#xff1a; USB Audio芯片&#xff0c;代码放到qspi flash中&#xff0c;执行代码时&#xff0c;客户会偶尔保存一些参数&#xff0c;即FPGA验证过程中&#xff0c;每隔10ms向flash info区烧写4个byte&#xff08;取指过程一直存在&#xff0c;且时隙软件不可控&…...

MySQL聚簇索引和非聚簇索引的区别

前言: 聚簇索引和非聚簇索引是数据库中的两种索引类型&#xff0c;他们在组织和存储数据时有不同的方式。 聚簇索引&#xff1a; 简单理解&#xff0c;就是将数据和索引放在了一起&#xff0c;找到了索引也就找到了数据。对于聚簇索引来说&#xff0c;他的非叶子节点上存储的是…...

【C#】蜗牛爬井问题C#控制台实现

文章目录 一、问题描述二、C#控制台代码 一、问题描述 井深30米&#xff0c;蜗牛在井底&#xff0c;每天爬3米又滑下1米&#xff0c;问第几天爬出来 二、C#控制台代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System…...

IP地址的四大类型:动态IP、固定IP、实体IP、虚拟IP的区别与应用

在网络通信中&#xff0c;IP地址是设备在互联网上唯一标识的关键元素。动态IP、固定IP、实体IP和虚拟IP是四种不同类型的IP地址&#xff0c;它们各自具有独特的特点和应用场景。 1. 动态IP地址&#xff1a; 动态IP地址是由Internet Service Provider&#xff08;ISP&#xff…...

Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

一、ImageMagick简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换&#xff0c;可以处理超过100种图像格式&#xff0c;包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作&#xff0c;即可以通过命令行进行&am…...

JavaScript二

目录 流程控制 if判断 while循环 do while for循环 forEach for in Map与set iterator 流程控制 if判断 <script>use strictvar age 5;if(age < 3){alert("haha");}else if(age < 5){alert("hi world");}else{alert("hello wor…...

JavaScript系列——正则表达式

文章目录 需求场景正则表达式的定义创建正则表达式通过 / 表示式/ 创建通过构造函数创建 编写一个正则表达式的模式使用简单模式使用特殊字符常用特殊字符列表特殊字符组和范围 正则表达式使用代码演示 常用示例验证手机号码合法性 小结 需求场景 在前端开发领域&#xff0c;在…...

命令行创建Vue项目

Vue项目创建 1. 打开UI界面 在命令行中&#xff0c;执行如下指令&#xff1a; vue ui 2. 打开项目管理器 3. 创建项目 创建项目的过程&#xff0c;需要联网进行&#xff0c;这可能会耗时比较长的时间&#xff0c;请耐心等待。 windows的命令行&#xff0c;容易卡顿&#xff0c…...

01.PostgreSQL基本SELECT语句

1. SQL简介 SQL 是用于访问和处理数据库的标准的计算机语言。 SQL有两个标准:分别是SQL92和SQL99,他们分别代表了92年和99年颁布的SQL标准,我们今天使用的SQL语言依然遵循这些标准。 注意:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展! 2. SQL分…...

UDP信号多个电脑的信息传输测试、配置指南

最近要做一个东西&#xff0c;关于一个软件上得到的信号&#xff0c;如何通过连接的局域网&#xff0c;将数据传输出去。我没做过相关的东西&#xff0c;但是我想应该和软件连接数据库的过程大致是差不多的&#xff0c;就一个ip和一个端口号啥的。 一.问题思路 多个设备同时连…...

先序+中序还原二叉树【数据结构】

先序中序还原二叉树 题目描述 给定一棵二叉树的先序遍历序列和中序遍历序列&#xff0c;要求计算该二叉树的高度。 输入 输入首先给出正整数N&#xff08;≤50&#xff09;&#xff0c;为树中结点总数。下面两行先后给出先序和中序遍历序列&#xff0c;均是长度为N的不包含重…...

【全网首发】洛谷P2678 [NOIP2015 提高组] 跳石头

Everyday English You don’t become what you want; you become whatyou believe. —Oprah Winfrey 你不是成为你想要的&#xff0c;你成为你所相信的。 洛谷P2678 [NOIP2015 提高组] 跳石头 题目描述 一年一度的“跳石头”比赛又要开始了&#xff01; 这项比赛将在一条笔…...

Gpt指引ubuntu安装java8/11

在Ubuntu系统上安装Java环境通常包括以下几个步骤&#xff1a; 更新软件包索引&#xff1a; 在安装新软件之前&#xff0c;最好先更新Ubuntu的软件包索引。这可以确保你安装的是最新版本的软件包。可以使用以下命令来更新&#xff1a; sudo apt update安装Java&#xff1a; U…...

【MCAL】TC397+EB-tresos之MCU配置实战 - 芯片时钟

本篇文章介绍了在TC397平台使用EB-treso对MCU驱动模块进行配置的实战过程&#xff0c;主要介绍了后续基本每个外设模块都要涉及的芯片时钟部分&#xff0c;帮助读者了解TC397芯片的时钟树结构&#xff0c;在后续计算配置不同外设模块诸如通信速率&#xff0c;定时器周期等&…...