【数字图像处理】第5章 图像空域增强方法
上理考研周导师的哔哩哔哩频道
我在频道里讲课哦
目录
5.1 图像噪声
相关概念
①图像噪声的产生
② 图像噪声分类
③ 图像噪声特点
5.2 图像增强方法分类
①图像增强概念
②图像增强目的
③图像增强技术方法:
5.3 基于灰度变换的图像增强
1. 概述:
2. 灰度变换增强方法分类:
3. 直接灰度变换包括:
5.4 基于直方图的图像增强方法 基本概念与原理
1) 目的
直方图均衡化步骤
1. 直方图规定化概念
5.5 数字图像的代数增强方法
5.6 图像的空域滤波增强
(3)高斯滤波法
3. 非线性平滑滤波
中值滤波特点
图像锐化滤波
5.1 图像噪声
相关概念
(1)图像增强:是数字图像处理的基本内容之一,其目的是根据应用需要突出图像中的某些“有用”信息,削弱或去除不需要的信息(即噪声),以达到扩大图像中不同物体特征之间的差别。
图像增强算法并不增加原始图像的信息,而是通过某种技术手段有选择地突出对某一具体应用有价值的信息。
(2)噪声:对于图像处理,噪声是指图像中的非本源信息。因此,噪声会影响人的感官对所接收的信源信息的准确理解。
①图像噪声的产生
在图像形成过程中,图像数字化设备、电气系统和外界影响将可能产生不同程度的图像噪声 。
② 图像噪声分类
图像噪声按产生的原因可分为外部噪声和内部噪声。数字图像中常见的外部干扰主要包括:
设备元器件及材料本身引起的噪声。如磁带、磁盘表面缺陷所产生的噪声;
系统内部设备电路所引起的噪声,包括电源引入的交流噪声,偏转系统和箝位电路引起的噪声等;
电器部件机械运动产生的噪声:如数字化设备的各种接头因抖动引起的电流变化所产生的噪声,磁头、磁带抖动引起的抖动噪声等;
③ 图像噪声特点
叠加性; 分布和大小不规则; 噪声与图像之间具有相关性;
5.2 图像增强方法分类
(3) 图像增强基本概念
图像增强的定义
图像增强的目的
图像增强的技术方法
①图像增强概念
图像增强的定义
根据需要突出一幅图像中的某些“有用”信息,同时削弱另外一些“无用”信息的图像处理方法。
图像增强举例(突出边界)人体X射线照片
增强后的照片
图像增强举例(消除噪声)
②图像增强目的
通过对图像的处理,使图像更适合特定的应用。也就是为了某种应用目的去改善图像的质量.
① 改善图像的视觉效果;
② 突出图像的特征,便于计算机处理;
③图像增强技术方法:
主要有空域处理法和频域处理法
空域处理法: 直接在图像所在的二维空间进行处理,即直接对每一像元的灰度值进行处理。
频域处理法: 将图像从空间域变换到频率域对图像进行处理。
5.3 基于灰度变换的图像增强
1. 概述:
基于空间域灰度变换的图像增强方法是一种点处理方法.
点处理实际上是灰度到灰度的映射过程,设输入图像每个像元的灰度值为A(x,y),输出图像的灰度值为B(x ,y),表示为:
B(x,y)=f [A(x,y)]
灰度变换不会改变图像内像素点之间的空间关系.
2. 灰度变换增强方法分类:
直接灰度变换
基于图像的直方图进行灰度变换
对两个以上的图像进行代数运算实现灰度变换
3. 直接灰度变换包括:
线性拉伸
线性拉伸:将输入图像的灰度值动态范围按线性算法拉伸扩展到指定范围.包括以下两种:
按比例线性拉伸
分段线性拉伸线性拉伸增强示例
提高对比度示例
基于灰度变换的图像增强
非线性拉伸:
对原图像的整个灰度值范围内按统一的非线性变换函数实现对灰度值区间的非线性扩展或压缩.
常用的非线性拉伸包括:
对数函数
指数函数
(1) 按对数函数变换:低灰度区扩展,高灰度区压缩.
(2)按指数函数变换:高灰度区扩展,低灰度区压缩.
5.4 基于直方图的图像增强方法 基本概念与原理
灰度直方图:数字图像中每一灰度级与它出现的频率之间的统计,可以理解为描述各个灰度级的像素出现多少的统计图示。若用横坐标表示灰度级,纵坐标表示频率,就可以看出图像中灰度的分布情况,例:
(1) 较暗图像的直方图分布特点
(2) 较亮图像的直方图分布特点?
(3) 对比度较低图像的直方图分布特点
(4) 对比度较高图像的直方图分布特点
1) 目的
将原始图像的直方图变换为均衡分布的形式,即将一已知灰度概率密度分布的图像,经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像。
图像均衡化处理后,图像的直方图是平均或接近平均,即各灰度级出现的频数相同,由于灰度级具有均匀的概率分布,图像看起来效果就更好了。
不同灰度直方图的图像效果
基本原理:
首先假定连续灰度级的情况,推导直方图均衡化变换公式:
令:r 代表灰度级; P ( r ) 为概率密度函数;
对r进行归一化,最大灰度值为1.
如何实现归一化?
连续灰度的直方图非均匀分布
连续灰度的直方图均匀分布
原始图像直方图
要找到一种变换 S=T ( r ) 使直方图变平直,为使变换后的灰度仍保持从黑到白的单一变化顺序,且变换范围与原先一致,以避免整体变亮或变暗。必须规定:
(1)在0≤r≤1中,T(r)是单调递增函数,且0≤T(r)≤1;
(2)反变换r =T-1(s),T-1(s)也为单调递增函数,0≤s≤1。
由于灰度变换不影响像素的位置,也不会增减像素数目。所以有:
应用到数字图像(离散灰度级)可得: 设一幅图像的像素总数为n,共L个灰度级。
n k : 第k个灰度级出现的个数。
第k个灰度级出现的概率: P (r k)=n k /n
其中0≤rk≤1,k=0,1,2,...,L-1 则可得变换函数如下:
直方图均衡化步骤
(1) 求出图像中所包含的灰度级rk,可以定为0~L-1;
(2) 统计各灰度级的像素数目nk (k=0,1,2,…L-1)
(3) 计算图像直方图.
(4) 计算变换函数:
(5) 用变换函数计算映射后输出的灰度级Sk
(6) 统计映射后新的灰度级Sk的像素数目n′k
(7) 计算输出图像的直方图.
3.应用举例:设图象有64*64=4096个象素,8个灰度级,灰度分布如表所示。进行直方图均衡化。
根据数据,可得原始图像直方图
1) 由(5-14)式计算sk
(2) 把计算的sk就近安排到8个灰度级中。
Sk与rk之间的变换函数关系(图示)
(3) 重新命名sk,归并相同灰度级的像素数
(4)计算输出图像的直方图:
均衡化前后直方图比较
直方图均衡化
直方图均衡化实质上是减少图像的灰度级以换取对比度的增大;
在均衡过程中,原直方图频数较小的灰度级被归入很少几个或一个灰度级内,图像显示效果增强;
若这些灰度级所构成的图像细节比较重要,则需采用局部直方图均衡.
再观察几个直方图均衡化实例
直方图均衡化以后可得
直方图均衡化技术的缺点:
(1)将原始函数的累积分布函数作为变换函数,只能产生近似均匀的直方图。
(2)在某些情况下,并不一定需要具有均匀直方图的图像。
(作业)一幅64×64的图像共有8个灰度级,每 一灰度级概率分布如下表所示,要求对其进行直 方图均衡化处理,并画出均衡化后的图像的直方 图。
1. 直方图规定化概念
修改一幅图像的直方图,使它与另一幅图像的直方图匹配或具有一种预先规定的函数形状。
目标:当需要具有特定的直方图的图像时,可按照预先设定的某个形状人为的调整图像的直方图。
连续灰度的直方图原图
连续灰度的直方图规定
2. 直方图规定化的原理
P r (r)表示原始图像的灰度分布概率密度函数。
P z (z)表示目的图像的灰度分布概率密度函数。
(1)首先对原始图像进行直方图均衡化处理,即求变换函数:
(2)对目标图像也进行直方图均衡化处理,即:
即由均衡化后的灰度级v得到目标函数的灰度级z
(3)因为对原始函数和目标函数都进行了均衡化处理,因而Ps(s)和Pv(v)具有相同的概率密度,所以s代替v,即有:
即可以由原始图像均衡化后的灰度值s来求目标图像 的灰度级z
直方图匹配(实例)
直方图规定化处理实例
直方图均衡化:寻找r和s之间的函数关系
直方图规定化:寻找r和z之函数关系
直方图均衡化
作业:
一幅图像共有8个灰度级,每一灰度级的概率分布如下表所示,要求对其进行直方图规定化处理,规定化直方图的数据如表所示。(画出规定化后的直方图)
5.5 数字图像的代数增强方法
图像代数运算包括:
加 / 减 / 乘 / 除 / 逻辑运算
(1)加运算—— 去除“叠加性”噪声
M=1
M=2
M=4
M=16
2)减运算—— 去除不需要的叠加性图案
(3)比值运算—— 除法运算
比值处理是指将两个波段的灰度图像对应像素点的灰度值进行除法运算,可推广定义为各波段数据及其代数组合后进行比值运算。
比值运算属于图像代数运算的一种,常用于多光谱卫星遥感图像处理。比值处理的图像不是单个的灰度图像,而是多波段的灰度图像。
卫星遥感可以获得同一区域的多个不同波段的图像,采用比值处理可以扩大不同地物的灰度值差异,消除或减弱地形朝向和云层等因素对图像的干扰,因此比值处理在遥感遥测中具有重要作用。
比值运算的应用
“同谱异物”问题
“同物异谱”问题
植被指数(vegetation index)测量
C 是需要根据具体情况确定的常数,TM3和TM4分别表示红光波段与近红外波段。
逻辑运算包括:
(1)非运算
获得一个阴图像
(1)非运算
获得一个子图像的补图像
(2)与运算
与运算的定义 g(x,y) = f(x,y) h(x,y)
主要应用举例 求两个子图像的相交子图
模板运算:提取感兴趣的子图像
(3)或运算
(4)异或运算
5.6 图像的空域滤波增强
空域滤波基础
1. 空域滤波基础
(1)为何要滤波?
②图像噪声的来源及特点
通道噪声:产生于图像信息的传递中,其值与图像信号的强弱无关。现象:“雪花”
量化噪声:灰度在量化过程中,不可避免的产生量化噪声。
特点:噪声像素的灰度是空间不相关的,即它与邻近像素显著不同。
(2)基本概念
(1) 空域滤波概念:
空间域滤波是基于邻域处理的增强方法,它应用某一模板对每个像元与其周围邻域的所有像元进行某种数学运算得到该像元的新的灰度值,新的灰度值的大小不仅与该像元的灰度值有关,而且还与其邻域内的像元的灰度值有关。
(2) 空域滤波方法分类:
按大类分,可以分为图像平滑和图像锐化。
(3)平滑滤波的目的:
平滑滤波可对图像的低频分量进行增强,同时可以削弱图像的高频分量,因此一般用于消除图像中的随机噪声,从而起到图像平滑的作用。
(4)常用平滑方法:
线性滤波(如邻域平均法);非线性滤波(如中值滤波);
(5)空域滤波模板:
数字图像空域滤波的现实均可应用模板卷积方法实现。
具体而言即:通过采用适当大小的模板,选择合适的模板系数,以被处理像素为中心,对模板覆盖范围的像素进行适当运算,以运算值代替模板所覆盖范围中心像素的灰度值。
模板运算是数字图像处理中常用的一种空间域处理算法。
2. 线性平滑滤波
刚才提到了空域滤波分类,其中平滑滤波方法如下:
(1)领域平均法
邻域平均法又称为均值滤波或算术平均法
图像容易受到各种噪声的干扰(如电传感器和传输误差等),这种噪声常常为一些孤立的像素点,它们像雪花使图像被污染,这类噪声往往是叠加在图像上的随机噪声,而图像灰度应该相对均匀变化的,一般不会突然变大或变小,这种噪声可以用邻域平均法使它得到抑制。
几种常用的窗口
邻域平均法原理:
设该像素的灰度值为f(x,y),取以像素为中心,大小为MN窗口,用窗口内各像素灰度平均值代替f(x,y)的值,即:
上式写成矩阵形式:
如3×3模板:
邻域平均法消除噪声原理:
噪声是随机不相关的,如果窗口内各点的噪声是独立等分布的,经过这种平滑后,信噪比可提高 倍。
该算法窗口不宜过大,因为M,N过大一是影响速度,二是M,N太会使图像模糊,特别是边缘和细节处。
平滑可以抑制高频成分, 但也会使图像变得模糊.
(2)加权平均法
邻域加权平均法也属于空域滤波增强算法,它是利用模板卷积的方法实现对原图的滤波,可表示为:
邻域加权平均法举例:
将模板在图中漫游,并将模板中心与图中某像素点重合;
将模板上系数与模板下对应像素的灰度值相乘;
将所有乘积相加,并除以系数总和;
用所得结果代替原中心点的值;
(3)高斯滤波法
高斯滤波(Gauss filter)实质上是根据高斯函数计算出来的一种滤波模板,可对图像信号进行平滑消噪处理,高斯平滑滤波器对于抑制服从正态分布的噪声非常有效,用于得到信噪比SNR较高的图像。
一般采用第一种离散化窗口卷积形式实现,5×5的高斯模板有如下:
高斯滤波模板
高斯滤波可以使用两种方法实现。一种是离散化窗口滑窗卷积,另一种方法是通过傅里叶变化。
一般采用第一种离散化窗口,5×5的高斯模板如下:
3. 非线性平滑滤波
(1)中值滤波法
前已述及的各种邻域平均法属于低通滤波的处理方法.
它在抑制噪声的同时使图像变得模糊,即图像的细节(例如边缘信息)被削弱;
如果既要抑制噪声又要保持细节可以使用中值滤波.
工作步骤
将窗口在图中移动;
读取窗口内各对应像素的灰度值;
将这些灰度值从小到大排成1列;
找出这些值里排在中间的1个;
将这个中间值赋给对应窗口中心位置的像素。
中值滤波特点
(1)对大的边缘高度,中值滤波较邻域均值好得多,对于较小边缘高度,两种滤波差别很小.
(2)中值滤波是非线性的.
(3)中值滤波在抑制图像随机噪声方面比较有效,且运算速度快,便于实时处理.
(4)中值滤波去除孤立线或点干扰,而保留空间清晰度较平滑滤波好;但对高斯噪声则不如平滑滤波.
(1)中值滤波的应用方法
(2)相同灰度值如何处理
除中值滤波外,非线性滤波还包括:
(2)最大值滤波:最大值滤波法的实现过程与中值滤波类似,不同之处是用像素邻域内的最大值代替被处理像素的灰度值实现滤波。其主要用途是寻找最亮点。
(3)最小值滤波:最小值滤波法是用像素邻域内的最小值代替被处理像素的灰度值,从而实现滤波。最小值滤波器主要用于寻找最暗点。
图像锐化滤波
(1) 目的
图像经转换或传输后,质量可能下降,可能出现边缘和特征信息模糊,这时需要突出图像的边缘信息。
图像锐化目的:加强图像轮廓,使图像看起来比较清晰。
(2) 滤波方法
空间频率愈高,幅度增加就愈大。这表明微分是可以加强高频成分强度,从而使图像轮廓变清晰。
常用的微分方法主要包括: 梯度法和拉普拉斯算子
图像轮廓上,像素灰度有陡然变化,梯 度值很大。
图象灰度变化平缓区域,梯度值很小。
等灰度区域,梯度值为零。
上理考研周导师的哔哩哔哩频道
我在频道里讲课哦
相关文章:

【数字图像处理】第5章 图像空域增强方法
上理考研周导师的哔哩哔哩频道 我在频道里讲课哦 目录 5.1 图像噪声 相关概念 ①图像噪声的产生 ② 图像噪声分类 ③ 图像噪声特点 5.2 图像增强方法分类 ①图像增强概念 ②图像增强目的 ③图像增强技术方法: 5.3 基于灰度变换的图像增强 1. 概述: 2. 灰度变换…...
idea 发布jar包
当你有一个能正常编译的项目,以springboot为例,有两步步骤 打包配置 打包 一、打包配置 1.点击右上角快捷按钮/文件-->项目结构,打开项目结构设置 2.项目结构-->Artifacts,如图所示选择 3.在Create JAR from Modules配置…...

c语言字符串函数strstr,strtok,strerror
1,strtok函数的使用和模拟实现 char * strtok(char * str,const char * sep) 会有static修饰变量,有记忆功能,会保存字符串的位置,下次找再继续找。 1)sep参数指向一个字符串,它包含了0个或者多个由sep字符中一个或…...
【Java】—JavaBean转换方法详解
JavaBean间的转换 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 文章目录 JavaBean间的转换1 Apache Co…...
[Vue3核心语法] setup语法糖
一、setup 概述 setup是Vue3中一个新的配置项,值是一个函数,它是 Composition API “表演的舞台”,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。 特点: setup函数返回的对象中…...

RabbitMQ 入门(三)SpringAMQP五种消息类型(Basic Queue)
一、Spring AMQP 简介 SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: - 自动…...

2024双十一买什么好?双十一高性价比数码好物推荐!
双十一购物狂欢节即将来临,这是一年中家电和数码产品优惠力度较大的时候。然而,随着产品种类越来越丰富,选择一款合适的商品也变得越发困难。今天,我为大家推荐一些双十一期间值得入手的高品质好物,让我们一同来了解…...

MySQL 查找连续相同名称的记录组,并保留每组内时间最大的一条记录
要求:查找连续相同名称的记录组,并保留每组内时间最大的一条记录,同时计算每组记录的 num 总和。 今天有人问了我一个问题,大致就是下面这样的数据结构(原谅我实在不知道怎么描述这个问题) 然后需要得到下面…...

three.js 使用geojson ,实现中国地图区域,边缘流动效果
three.js 使用geojson ,实现中国地图区域,边缘流动效果 在线链接:https://threehub.cn/#/codeMirror?navigationThreeJS&classifyexpand&idgeoBorder 国内站点预览:http://threehub.cn github地址: https://github.co…...

数据中台业务架构图
数据中台的业务架构是企业实现数据驱动决策和业务创新的关键支撑。它主要由数据源层、数据存储与处理层、数据服务层以及数据应用层组成。 数据源层涵盖了企业内部各个业务系统的数据,如 ERP、CRM 等,以及外部数据来源,如社交媒体、行业数据…...

Docker学习笔记(2)- Docker的安装
1. Docker的基本组成 镜像(image):Docker镜像就像是一个模板,可以通过这个模板来创建容器服务。通过一个镜像可以创建多个容器。最终服务运行或者项目运行就是在容器中。容器(container):Docker…...

PostgreSql的备份和升级
目录 版本概述: 跨大版本数据迁移 QProcess 调用相关进程进行备份和恢复 版本概述: 该数据库版本主要分为主要版本和次要版本,大版本基本每年发布一次,小版本则每几个月即发布,更新较快。在10.0之前所使用的数据库版…...

联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键
联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键 文章目录 联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键1. 进入BIOS快捷键2. 快速进入BIOS设置界面3. 快速进入启动项选择界面 1. 进入BIOS快捷键 进入BIOS设置界面的快捷键为F2快速进入启动项选择界面的快捷键为F12 2. 快速进…...
compose navigation 自定义navtype
Jetpack compose navigation with custom NavType https://www.youtube.com/watch?vqBxaZ071N0c&t182s 定义两个路由 Serializable data object DogListRouteSerializable data class DogDetailRoute(val dog: Dog,val breedSize: BreedSize ) 即两个页面,…...
实现对redis过期键监听案例
开发背景 为了实现当经纪人A提交分佣后如果三天后其他经纪人没有确认分佣就自动确认分佣,如果经纪人A修改分佣后再次提交分佣,时间重置为三天 实现方式 第一步:引入依赖 <dependency> <groupId>redis.clients</groupId> …...
yocto基础 -- bb 文件字段解析
Yocto .bb 文件字段解析 本文详细讲解了 Yocto .bb 文件中各字段的作用和用法,包括 SECTION、SRC_URI、SUMMARY 等,旨在帮助开发者更好地理解和使用 Yocto 构建系统。 目录 1. SECTION 字段 1.1 SECTION 的作用1.2 SECTION 的用法1.3 如何使用 SECTIO…...
Android开发相关的重要网站
本文整理Android相关的重要网站,欢迎大家分享别的网站。 AOSP 官网谷歌官方Android源码搜索Android Issue Tracker 如果在开发过程中遇到与 Android 相关的问题或发现了系统的 bug,可以在这个网站上提交反馈,也可以查询是否存在类似的问题。…...
MySQL 中utfmb3和utfmb4字符集区别
目录 一:utf-8二:utf8mb3三:uft8mb4 一:utf-8 unicode 定义了一套规范来存储各种字符,但是它没有定义这些字符在计算机中应该如何存储。所以基于这种原因,后续基于 Unicode 字符集发展出了多种字符的存储规…...

【C语言】文件操作(1)(文件打开关闭和顺序读写函数的万字笔记)
文章目录 一、什么是文件1.程序文件2.数据文件 二、数据文件1.文件名2.数据文件的分类文本文件二进制文件 三、文件的打开和关闭1.流和标准流流标准流 2.文件指针3.文件的打开和关闭文件的打开文件的关闭 四、文件的顺序读写1.fgetc函数2.fputc函数3.fgets函数4.fputs函数5.fsc…...
今日总结10.18
Exception 和Error 有什么区别 Exception和Error都是Java等编程语言中异常处理机制的重要组成部分,它们都继承自Throwable类。以下是两者的主要区别: 定义与性质 Error: 1.表示严重的系统级错误,如内存溢出(OutOfM…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...