当前位置:网站首页>数字图像处理基础(冈萨雷斯)一
数字图像处理基础(冈萨雷斯)一
2022-04-23 05:43:00 【左小田^O^】
一幅图像可定义为一个二维函数f(x, y),其中x和y是空间(平面)坐标,而在任何一对空间坐标(x, y)处的幅值f称为图像在该点处的强度或灰度。当x, y和灰度值f是有限的离散数值时,我们称该图像为数字图像。数字图像处理是指借助于数字计算机来处理数字图像。注意,数字图像是由有限数量的元素组成的,每个元素都有一个特定的位置和幅值。这些元素称为像素。

1.伽马射线成像
伽马射线成像的主要用途包括核医学和天文观测。在核医学中,这种方法是将放射性同位素注射到人体内,当这种物质衰变时就会放射出伽马射线,然后用伽马射线检测仪收集到的放射线来产生图像。
另一种主要形态的核成像,称为正电子放射断层(PET),其原理与1.2节中提及的X射线断层相同。然而,与使用外部X射线源不同,它给病人注人放射性同位素,同位素衰变时放射出正电子。当正电子遇上一个电子时,两者湮没并放射出两束伽马射线。检测到这些射线后,就可利用断层技术的基本原理创建断层图像。
2.X射线成像
用于医学和工业成像的X射线是由X射线管产生的,X射线管是带有阴极和阳极的真空管。阴极加热释放自由电子,这些电子以很高的速度向阳极流动,当电子撞击一个原子核时,能量被释放并形成X射线辐射。X射线的能量由另一边的阳极电压控制,而X射线的数量由施加于阴极灯丝的电流控制。
3.紫外波段成像
当紫外辐射光子与荧光材料内原子中的电子碰撞时,它把电子提高到较高的能级,随后受激电子释放到较低的能级并以可见光范围内的低能光子形式发光。如:验钞。
4.可见光及红外波段成像
5.微波波段成像
微波波段成像的典型应用是雷达。成像雷达的独特之处是在任何范围和任何时间内,不考虑气候、周围光照条件的收集数据的能力。某些雷达波可以穿透云层,在一定条件下还可以穿透植被、冰原理就像一台闪光照相机, 它自已提供照明(微波脉冲)去照亮地面上的一一个区域,并得到一幅快照图像。与照相机镜头不同,雷达使用天线和数字计算机记录图像。在雷达图像中,能看到的只是反射到雷达天线的微波能量。层和极干燥的沙漠。在许多情况下,雷达是探测地球表面不可接近地区的唯一方法。
6.无线电波段成像
无线电波用于核磁共振成像(MRI)。该技术是把病人放在强磁场中,并让无线电波短脉冲通过病人的身体,每个脉冲将导致由病人的组织发射的无线电响应脉冲,这些信号发生的位置和强度由计算机确定,从而产生病人的- -幅 二维剖面图像。MRI 可以在任何平面产生图像。
7.数字图像处理研究内容
图像变换:简化图像处理过程和提高图像处理变换的基本技术,最典型的图像变换主要有傅里叶变换、离散余弦变换和小波变换等。
图像增强:简单地突出图像中感兴趣的特征,或显现图像中那些模糊了的细节,以使图像更清晰地被显示或更适合于人或机器的处理与分析的一种技术。
图像恢复:是一种从图像退化的数学或概率模型出发,研究改进图像外观,从而使恢复以后的图像尽可能地反应原始图像的本来面目的一种技术,其目的是获得与景物真实面貌相像的图像。
图像压缩编码:是在不损失图像质量或少损失图像质量的前提下,尽可能地减少图像的存储量,以满足图像存储和实时传输应用需求的一种技术。
图像分割:基本思路是把一副图像划分成背景和目标,从而提取出感兴趣的目标来,是把图像按其灰度或集合特征分割成区域的过程。
图像的表示和描述:基本思路是通过对图像中感兴趣的特征的定性和定量描述,从而赋予识别出目标以符号标识和解释。
图像编码:利用图像信号的统计特征和人类视觉的生理学及心理学特征,对图像信号进行高效编码。
图像分类:将图像经过某些预处理(压缩、增强、恢复)后,再将图像中有用物体的特征进行分割,特征提取,从而进行分类。
图像重建:从数据到图像的处理,即输入的是某种数据,而经过处理后得到的结果是图像。
8.图像感知和获取
下图显示了用于将照射能量变换为数字图像的三种主要传感器配置。原理很简单:通过将输人电能和对特殊类型检测能源敏感的传感器材料相组合,把输人能源转变为电压。输出电压波形是传感器的响应,通过把传感器响应数字化,从每一个传感器得到一 一个数字量。 在这一节中, 我们]将关注图像感知和生成的主要方式。

8.1 使用单个传感器获取图像

8.2 使用条带传感器获取图像
比单个传感器更常用的几何结构是由内嵌传感器形式组成的传感器带,如图2.12(b)所示。该传感器带在一个方向上提供成像单元。垂直于传感器带的运动在另一方向 上成像,如图2.14(a)所示。这是大多数平板扫描仪中使用的排列方式。感知设备可能内嵌有4000 个或更多的传感器。内嵌传感器常用于航空成像应用中,在这种应用中,成像系统安装在-架飞行器上,飞行器以恒定的高度 和速度飞过被成像的地区。可响应各种电磁波谱波段的一-维传感器带按垂直于飞行方向来安装。成像传感器带-一次给出一幅图像的一行,传感器带的运动完成二二维图像的另-个维度 。透镜和其他聚焦方法用于把扫描区域投影到传感器上。

8.3 使用传感器阵列获取图像
图2.12显示了以二维阵列形式排列的单独的传感器。大量的电磁波和一些超声波传感装 置常以阵列形式排列。这也是我们在数字摄像机中所看到的主要排列方式。这些摄像机的典型传感器是CCD阵列,这种阵列可制造为具有很宽范围的传感特性,并能封装为具有4000x4000个单元或更多单元的稳定阵列。CCD传感器广泛用于数字摄像机和其他光敏设备中。每个传感器的响应正比于投射到传感器表面的光能总量,这一特性被用于天文学和其他要求低噪声图像的应用中。通过让传感器累积输人光信号超过几分钟甚至几小时的方法,可达到减少噪声的目的。因为图2.12 所示的传感器阵列是二维的,故其主要优点是通过将能量聚焦到阵列表面,以得到一幅完整的图像。 很明显,像前面两节中讨论的传感器排列的运动是不需要的。
9.简单的图像形成模型
我们用形如f(x, y)的二维函数来表示图像。在空间坐标(x, y)处, f的值或幅度是一个正的标量,其物理意义由图像源决定。当一幅图像由物理过程产生时,其亮度值正比于物理源(如电磁波)所辐射的能量。因此,f(x, y)一定是非零的和有限的,即

函数f(x, y)可由两个分量来表征: (1) 人射到被观察场景的光源照射总量; (2) 场景中物体所反射的光照总量。这两个分量分别称为入射分量和反射分量,且分别表示为i(x, y)和r(x,y)。两个函数作为一个乘积合并形成f(x,y),即

式(2.3-4)指出反射分量限制在0(全吸收)和1(全反射)之间。i(x, y)的性质取决于照射源,而r(x,y) 的性质则取决于成像物体的特性。注意,这种表示方式还可用于照射光通过一个媒体形成图像的情况,如胸透X射线照片。在这种情况下,我们应该用透射系数代替反射函数,但其限制应该与式(2.3-4)相同,且形成的图像函数会建模为式(2.3-2)中的乘积。

10.图像取样和量化
多数传感器的输出是连续的电压波形,这些波形的幅度和空间特性都与感知的物理现象有关。为了产生一幅数字图像,我们]需要把连续的感知数据转换为数字形式。这种转换包括两种处理:取样和量化。
10.1取样和量化的基本概念
图2.16说明了取样和量化的基本概念。图2.16(a) 显示了一幅连续图像f,我们想把它转换为数字形式。一幅图像的x和y坐标及幅度可能都是连续的。为将它转换为数字形式,必须在坐标上和幅度上都进行取样操作。对坐标值进行数字化称为取样,对幅值数字化称为量化。

图2.16(b)中的一维函数是图2.16(a)中沿线段AB的连续图像幅度值(灰度级)的曲线。随机变化是由图像噪声引起的。
为了对该函数取样,我们沿线段AB等间隔地对该函数取样,如图2.16 所示。
每个样本的空间位置由图形底部的垂直刻度指出。样本用放在函数曲线上的白色小方块表示。这样的一组离散位置就给出了取样函数。然而,样本值仍(垂直)跨越了灰度值的连续范围。为了形成数字函数,灰度值也必须转换(量化)为离散量。图2.16的右侧显示了已分为8个离散区间的灰度标尺,范围从黑到白。垂直刻度标记指出了赋予8个灰度的每一个特定值。 通过对每一样本赋予8 个离散灰度级中的一个来量化连续灰度级。赋值取决于该样本与一个垂直刻度标记的垂直接近程度。
取样和量化操作生成的数字样本如图2. 16(d)所示。从该图像的顶部开始逐行执行这一过程, 则会产生一幅二维数字图像。图2.16意味着除了所用的离散级数外,量化所达到的精度强烈地依赖于取样信号的噪声。
11.数字图像表示
令f(s,t)表示一幅具有两个连续变量s和t的连续图像函数。
如前一节解释的那样,通过取样和量化,我们可把该函数转换为数字图像。
假如我们把该连续图像取样为一个二维阵列f(x,y),该阵列包含有M行和N列,其中(x, y)是离散坐标。为表达清楚和方便起见,我们对这些离散坐标使用整数值: x=0,1,2,…,M-1和y=0,2,…,N-1。 这样,数字图像在原点的值就f(0,0),第一行中下一个坐标处的值是f(0,1)。这里,符号(0,1)表示第一行的第二个样本,它并不意味着是对图像取样时的物理坐标值。通常,图像在任何坐标(x, y)处的值记为f(x,y),其中x和y都是整数。由一幅图像的坐标张成的实平面部分称为空间域, x和y称为空间变量或空间坐标。

如图2.18所示,有三种基本方法表示f(x, y)。
图2.18(a) 是一幅函数图,用两个坐标轴决定空间位置,第三个坐标是以两个空间变量x和y为函数的f(灰度)值。虽然我们可以在这个例子中用该图来推断图像的结构,但是,通常复杂的图像细节太多,以至于很难由这样的图去解译。在处理的元素是以(x, y, z)三坐标的形式表达的灰度集时,这种表示是很有用的,其中x和y是空间坐标,z是f在坐标(x, y)处的值。
图2.18(b)是更一般的表示。它显示了f(x, y)出现在监视器或照片上的情况。这里,每个点的灰度与该点处的f值成正比。该图中仅有三个等间隔的灰度值。如果灰度被归一化到区间[0, 1]内,那么图像中每个点的灰度都有0, 0.5或1这样的值。监视器或打印机简单地把这三个值分别变换为黑色、灰色或白色,如图2.18(b)所示。第三种表示是将f(x, y)的数值简单地显示为一个阵列 (矩阵)。在这个例子中, f的大小为600x600个元素,或360 000个数字。很清楚,打印整个矩阵是很麻烦的,且传达的信息也不多。然而,在开发算法时,当图像的一部分被打印并作为数值进行分析时,这种表示相当有用。图2.18 以图形方式传达了这一概念。
可得出一个结论,即图2.18(b)和图2.18中的表示是最有用的。图像显示允许我们快速地观察结果。数值阵列用于处理和算法开发。以公式形式,我们可将一个M xN的数值阵列表示为

该式的两边以等效的方式定量地表达了一幅数字图像。 右边是一个实数矩阵, 该矩阵中的每个元素称为图像单元、图像元素或像素。图像和像素这两个术语将在全书中表示数字图像及其元素。

数字图像的原点位于左上角,其中正x轴向下延伸,正y轴向右延申
数字化过程要求针对M值、N值和离散灰度级数L做出判定。对于M和N,除了必须取正整数外没有其他限制。然而,出于存储和量化硬件的考虑,灰度级数典型地取为2的整数次幂,即

我们假设离散灰度级是等间隔的,且它们是区间[0, L-1]内的整数。有时,由灰度跨越的值域非正式地称为动态范围。这一术语在不同的场合有不同的用法。这里,我们]将图像系统的动态范围定义为系统中最大可度量灰度与最小可检测灰度之比。作为一条规则,上限取决于饱和度,下限取决于噪声(见图2.19)。基本上,动态范围由系统能表示的最低和最高灰度级来确定,因此,也是图像具有的动态范围。与这一概念紧密联系的是图像对比度,我们定义一幅图像中最高和最低灰度级间的灰度差为对比度。当一幅图像中像素可感知的数值有高的动态范围时,那么我们认为该图像具有高的对比度。相反,具有低动态范围的图像就很呆滞,看上去像冲淡了灰度。

图像噪声解释:https://blog.csdn.net/nanhuaibeian/article/details/91356265

12.空间和灰度分辨率
直观上看,空间分辨率是图像中可辨别的最小细节的度量。在数量上,空间分辨率可以有很多方法来说明,其中每单位距离线对数和每单位距离点数(像素数)是最通用的度量。
假设我们用交替的黑色和白色垂直线来构造一幅图形, 其中线宽为W个单位(W可以小于1)。线对的宽度就是2W,每单位距离有1/2W个线对。例如,如果一条线的宽度是0.1 mm,每单位距离(mm)就有5个线对。广泛使用的图像分辨率的定义是每单位距离可分辨的最大线对数量(譬如每毫米100个线对)。每单位距离点数是印刷和出版业中常用的图像分辨率的度量。在美国,这一度量通常使用每英寸点数(dpi)来表示,例如,为给您-一个质量概念,报纸用75 dpi的分辨率来印刷,杂志是133 dpi, 光鲜的小册子
是175 dpi,您正在看的书页是以2044 dpi印刷的。
灰度分辨率是指在灰度级中可分辨的最小变化。
例2.2降低图像空间分辨率的效果说明。
图2.20显示了降低- -幅图像的空间分辨率的效果。图2.20(a)到(d)显示了分辨率分别为1250 dpi,300 dpi, 150 dpi和72 dpi的图像。很自然,低分辨率的图像与原图像相比要小。例如,原图像的大小为3692x 2812像素,但72 dpi图像是一一个大小为213x162的阵列。为便于比较,所有的小图像都放大到了原图像的大小(采用2.4.4节中讨论的放大方法)。这对较小图像的归靠来说稍微有些对等之意,因此,我们可就可见细节做可比性的说明。
图2.20(a)和图2.20(b)之间有一些较小的视觉差别,最明显的差别是大的黑针稍微有点失真。然而,图2.20(b)的大部分还是可以接受的。事实上,300 dpi 是书籍印刷所用的最小空间分辨率。因此,这里我们不能期望看到很大的不同。图2.20显示了可见的退化(例如,计时器的圆形边缘和右侧指向60处的小针)。图2.20(d)显示了图像中多数可见特征的退化。如4.5.4 节中讨论的那样,当以这样低的分辨率印刷时,印刷和出版业会使用一些“技巧”(例如,像素尺寸的局部变化)来产生比图2.20(d)更好的结果。
此外,如2.4.4节所示,选择所用的内插方法也可以改进图2.20的结果。

13.图像内插
内插是在诸如放大、收缩、旋转和几何校正等任务中广泛应用的基本工具。这一节我们的主要目标是介绍内插并用它调整图像的大小(收缩和放大),这是基本的图像重取样方法。
从根本上看,内插是用已知数据来估计未知位置的数值的处理。
假设一幅大小为500x500像素的图像要放大1.5 倍到750x750像素。一种简单的放大方法是创建一个假想的750x 750网格,它与原始图像有相同的间隔,然后将其收缩,使它准确地与原图像匹配。显然,收缩后的750x 750网格的像素间隔要小于原图像的像素间隔。为了对覆盖的每一个点赋以灰度值,我们在原图像中寻找最接近的像素,并把该像素的灰度赋给750x 750网格中的新像素。当我们完成对网格中覆盖的所有点的灰度赋值后,就把图像扩展到原来规定的大小,得到放大后的图像。**这种方法称为最近邻内插法。**这种方法简单,但是,如某些直边缘的严重失真。由于这一原因,实际上该方法并不常用。
更实用的方法是双线性内插,在该方法中,我们用4个最近邻去估计给定位置的灰度。令(x, y)为我们想要赋以灰度值的位置(把它想象为前面描述的网格点)的坐标,并令v(x, y)表示灰度值。对于双线性内插来说,赋值是由下面的公式得到的:

4个系数可由4个用(x, y)点最近邻点写出的4个未知方程确定。


14.像素间的一些基本关系
引用某个特殊的像素时,我们通常会使用小写字母,如p和q。
14.1相邻像素



14.2邻接性、连通性、区域和边界
令V是用于定义邻接性的灰度值集合。在二值图像中,如果把具有1值的像素归诸于邻接像素,则V= {1}。在灰度图像中,概念是一样的, 但是集合V一般包含有更多的元素。例如,具有可能的灰度值范围为0到255的邻接像素中,集合V可能是这256个值的任何一个子集。考虑三种类型的邻接:
(a)4邻接。如果q在集合N4§中,则具有V中数值的两个像素p和q是4邻接的。
(b) 8邻接。如果q在集合N。§中,则具有V中数值的两个像素p和q是8邻接的。
m邻接(混合邻接)。
如果(i)q 在N4§中,或
(ii)q在Np§
中,且集合N4§∩N4(q)中没有来自V中数值的像素,则具有V中数值的两个像素p和q是m邻接的。
14.3距离度量
对于坐标分别为(x, y), (s, t)和(v,w)的像素p,q和z,如果
(a) D(p,q)≥0 [ D(p,q)=0,当且仅当p=q]
(b) D(p,q)= D(q,p)且
D(p,z)≤D(p, q)+ D(q, z)。
则D是距离函数或度量。p和q间的欧几里得(欧氏)距离定义如下:

对于距离度量,距点(x, y)的距离小于或等于某个值r的像素是中心在(x, y)且半径为r的圆平面。
p和q间的距离D4(又称为城市街区距离)由下式定义:





15.数字图像处理中所用数学工具的介绍

线性操作与非线性操作


算术操作
两幅图像f(x,y)和g(x,y)的算数运算表达式:

例1使用图像相加(平均)降低噪声
假设g(x, y)是无噪声图像f(x, y)被加性噪声η(x, y)污染后的图像,即

这里假设在每一对坐标(x, y)处,噪声是不相关的,并且其均值为零。以下步骤的目的是通过一组带噪图像{g(x, y)}的相加减少噪声。
如果噪声满足刚才声明的约束,那么可以证明(见习题2.20),如果图像g(x,y)是通过对K幅不同的
噪声图像进行平均形成的:

随着K的增大,式(2.6-7) 和式(2.6-8)指出,在每个位置(x, y)处的像素值的变化(就像方差或标准差度量的那样)将减小。因为E{8(x, y)}=f(x,y),这意味着在求平均过程中所使用的带噪图像的数量增加时,g(x, y)将逼近f(x,y)。实际上,为了避免输出图像带来模糊和其他人为缺陷,图像8;(x, y)必须已配准
(对齐)。.
15.2 空间运算
1.单像素运算
最简单的运算,用一个变换函数T改变图像中各个像素的灰度:

其中,z是原图像中像素的灰度,s是处理后的图像中相应像素的(映射)灰度。例如,图2.34示出了得到一幅8比特负图像的变换,图2.32 (b)中的图像是利用集合操作得到的。

2.邻域运算
令Sxy代表图像f中以任意一点(x, y)为中心的一个邻域的坐标集。邻域处理在输出图像g中的相同坐标处生成一个相应的像素, 该像索的值由输人图像中坐标在s。内的像素经指定操作决定。例如,假设指定的操作是计算在大小为mxn、中心在(x, y)的矩形邻域中的像素的平均值。这个区域中像素的位置组成集合sxy。图2.35(a)和(b)说明了这一过程。我们可以用公式的形式将这一操作描述为

其中,r和c是像素的行和列坐标,这些坐标是S2中的成员。图像g是这样得到的:改变坐标(x,y),以便邻域的中心在图像f中从-个像素到另-个像素移动,并在每一个新位 置重复邻域操作。例如,图2.35(d)中的图像是使用大小为41x41的邻域按这种方式创建的。最终结果是在原图像中执行局部模糊。例如,这种类型的处理可消除小的细节,并在图像中相应的大区域实施“斑点”补偿。

3.几何变换
几何变换改进图像中像素间的空间关系。这些变换通常称为橡皮膜变换,因为它们可看成是在一块橡皮膜上印刷一幅图像,然后根据预定的一-组规则拉伸该薄膜。在数字图像处理中,几何变换由两个基本操作组成: (1) 坐标的空间变换; (2) 灰度内插,即对空间变换后的像素赋灰度值。

这个变换可根据矩阵T中元素所选择的值,对一组坐标点做尺度、旋转、平移或偏移。表2.2说明了用于实现这些变换的矩阵值。式(2.6-23)中矩阵表示的真实作用提供了一个把一系列操作连接在一起的框架。例如,如果我们]想要调整一幅图像的大小, 对其旋转,把处理结果移动到某一位置,我们可以简单地构成一个3x3矩阵,去乘来自表2.2的尺度、旋转和平移矩阵。

前面的变换把一幅图像 上的像素重新定位到-一个新位置。为了完成该处理,我们]还必须对这些新位置赋灰度值。该任务可用灰度内插的方法完成。
实际上,我们可以按两种基本方法来使用式(2.6-23)。第- -种方法称为前向映射,它由扫描输入图像的像素,并在每个位置(v, w)用式(2.6-23)直接计算输出图像中相应像素的空间位置(x, y)组成。
前向映射算法的一 个问题是输人图像中的两个或更多个像素可被变换到输出图像中的同一位置,这就产生了如何把多个输出值合并到-一个输出像素的问题。另外,一种可能是某些输出位置可能完全没有要赋值的像素。第二种方法,称为反向映射,扫描输出像素的位置,并在每一个位置(x, y)使用(v, w)=T~(x, y)计算输人图像中的相应位置。然后,内插(使用2.44节讨论的技术之一-) 是用最近的输人像素之一决定输出像素的灰度值的。对于实现来说,反向映射比前向映射更有效,因而被许多空间变换的商业实现所采用(如MATLAB就采用该方法)。


4.图像配准
图像配准是数字图像处理的一种重要应用,用于对齐两幅或多幅相同场景的图像。
在图像配准中,我们有可用的输人图像和输出图像,但是,从输人图像产生输出图像的特定变换通常是不知道的。这样,问题就是估计变换函数,然后用它配准两幅图像。为搞清楚该术语,输人图像是我们]希望变换的图像,而我们]所谓的参考图像是我们]想要配准输人图像的图像。

图像变换

图2.39显示了在线性变换域执行图像处理的基本步骤。首先,变换输入图像,然后用预定义的操作修改该变换,最后,输出图像由计算修改后的变换的反变换得到。这样,我们可以看出,该过程是从空间域到变换域,然后返回到空间域。



版权声明
本文为[左小田^O^]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_45802081/article/details/117917521
边栏推荐
- MySQL realizes master-slave replication / master-slave synchronization
- 开发环境 EAS登录 license 许可修改
- JDBC连接数据库
- XXL job pit guide XXL RPC remoting error (connect timed out)
- Navicate连接oracle(11g)时ORA:28547 Connection to server failed probable Oeacle Net admin error
- PyQy5学习(三):QLineEdit+QTextEdit
- Dwsurvey is an open source questionnaire system. Solve the problem that cannot be run and modify the bug.
- Pyqy5 learning (4): qabstractbutton + qradiobutton + qcheckbox
- JVM family (4) -- memory overflow (OOM)
- JSP语法及JSTL标签
猜你喜欢

Ora: 28547 connection to server failed probable Oracle net admin error

Pytoch learning record (x): data preprocessing + batch normalization (BN)

Font shape `OMX/cmex/m/n‘ in size <10.53937> not available (Font) size <10.95> substituted.

Anaconda

Multithreading and high concurrency (1) -- basic knowledge of threads (implementation, common methods, state)

Pytorch learning record (XI): data enhancement, torchvision Explanation of various functions of transforms

Pyqy5 learning (4): qabstractbutton + qradiobutton + qcheckbox

lambda表达式

多线程与高并发(1)——线程的基本知识(实现,常用方法,状态)

一文读懂当前常用的加密技术体系(对称、非对称、信息摘要、数字签名、数字证书、公钥体系)
随机推荐
JDBC工具类封装
MDN文档里面入参写法中括号‘[]‘的作用
mysql sql优化之Explain
建表到页面完整实例演示—联表查询
Strategy for improving the conversion rate of independent stations | recovering abandoned users
基于thymeleaf实现数据库图片展示到浏览器表格
解决报错:ImportError: IProgress not found. Please update jupyter and ipywidgets
Understand the current commonly used encryption technology system (symmetric, asymmetric, information abstract, digital signature, digital certificate, public key system)
创建二叉树
Multithreading and high concurrency (1) -- basic knowledge of threads (implementation, common methods, state)
PyQy5学习(四):QAbstractButton+QRadioButton+QCheckBox
K/3 WISE系统考勤客户端日期只能选到2019年问题
Package mall system based on SSM
Contract lock loophole
Character recognition easyocr
Common protocols of OSI layer
Shansi Valley P290 polymorphism exercise
Pytorch learning record (IV): parameter initialization
MySQL realizes master-slave replication / master-slave synchronization
The difference between cookie and session