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

Unity中Shader裁剪空间推导(透视相机到裁剪空间的转化矩阵)

文章目录

  • 前言
  • 一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化
    • 1、观察空间(右手坐标系、透视相机)
    • 2、裁剪空间(左手坐标系、且转化为了齐次坐标)
    • 3、屏幕空间(把裁剪坐标归一化设置)
    • 4、从观察空间到裁剪空间
    • 5、从裁剪空间到屏幕空间后
  • 二、透视相机的参数推导
    • 1、从XoY平面,求出X~v~从观察空间到裁剪空间的坐标投影 X~p~
    • 2、从YoZ平面,求出Y~v~从观察空间到裁剪空间的坐标投影 Y~p~
  • 三、把投影到近裁剪面的坐标 归一化设置
    • 1、求归一化设置后的 x~n~
    • 2、求归一化设置后的 y~n~
    • 3、得到最后化简的公式
  • 四、构建转化矩阵
    • 1、在OpenGL[-1,1]下:
    • 2、在DirectX[1,0]下:
    • 3、把A、B代入矩阵得


前言

我们把顶点坐标信息转化为裁剪空间。有可能使用到正交相机信息 或 透视相机。我们在这篇文章中,推导一下透视相机视图空间下的坐标转化到裁剪空间的矩阵。

在这里插入图片描述


一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化

在这里插入图片描述

1、观察空间(右手坐标系、透视相机)

在这里插入图片描述

2、裁剪空间(左手坐标系、且转化为了齐次坐标)

在这里插入图片描述

3、屏幕空间(把裁剪坐标归一化设置)

在这里插入图片描述

4、从观察空间到裁剪空间

用透视投影矩阵先转化到裁剪空间
然后,在转化为齐次坐标

5、从裁剪空间到屏幕空间后

− 1 ≤ x c w ≤ 1 -1 \leq \frac{x_c}{w}\leq1 1wxc1

− w ≤ x c ≤ w -w \leq x_c\leq w wxcw


二、透视相机的参数推导

在这里插入图片描述

  • 我们对于远裁剪面只是已知 f,其他参数都是未知

1、从XoY平面,求出Xv从观察空间到裁剪空间的坐标投影 Xp

在这里插入图片描述

  • 点 V 是观察空间下的模型顶点,xyz是已知的
    已知: ( x v , y v , z v ) 、 − n (x_v,y_v,z_v) 、 -n (xv,yv,zv)n
  • 点P是该点在近裁剪面上的投影点,xyz是未知的
    未知: ( x p , y p , z p ) (x_p,y_p,z_p) (xp,yp,zp)
  • 我们在 XoZ平面上,能求的就是 xp
    求: x p x_p xp

z p = − n z_p = -n zp=n

y p 在 X o Z 平面下,无法计算 y_p 在XoZ平面下,无法计算 ypXoZ平面下,无法计算

  • v点向Z轴做垂线,原点连接v点,围成的两个三角形相似,可得:

x p x v = − n z v \frac{x_p}{x_v} = \frac{-n}{z_v} xvxp=zvn

x p = − n z v x v x_p = \frac{-n}{z_v} x_v xp=zvnxv

P = ( − n z v x v , 未知 , − n ) P = (\frac{-n}{z_v}x_v,未知,-n) P=(zvnxv,未知,n)

2、从YoZ平面,求出Yv从观察空间到裁剪空间的坐标投影 Yp

在这里插入图片描述

  • 点 V 是观察空间下的模型顶点,xyz是已知的
    已知: ( x v , y v , z v ) 、 − n (x_v,y_v,z_v) 、 -n (xv,yv,zv)n
  • 点P是该点在近裁剪面上的投影点,xyz是未知的
    未知: ( x p , y p , z p ) (x_p,y_p,z_p) (xp,yp,zp)
  • 我们在 YoZ平面上,能求的就是 yp
    求: y p y_p yp

z p = − n z_p = -n zp=n

x p 在 X o Z 平面下,无法计算 x_p 在XoZ平面下,无法计算 xpXoZ平面下,无法计算

  • v点向Z轴做垂线,原点连接v点,围成的两个三角形相似,可得:

y p y v = − n z v \frac{y_p}{y_v} = \frac{-n}{z_v} yvyp=zvn

y p = − n z v y v y_p = \frac{-n}{z_v} y_v yp=zvnyv

P = ( − n z v x v , − n z v y v , − n ) P = (\frac{-n}{z_v}x_v,\frac{-n}{z_v} y_v,-n) P=(zvnxv,zvnyv,n)


三、把投影到近裁剪面的坐标 归一化设置

P = ( − n z v x v , − n z v y v , − n ) P = (\frac{-n}{z_v}x_v,\frac{-n}{z_v} y_v,-n) P=(zvnxv,zvnyv,n)

化到[-1,1]之间
具体参考Unity中Shader裁剪空间推导(正交相机到裁剪空间的转化矩阵)

1、求归一化设置后的 xn

  • l ≤ x ≤ r l \leq x \leq r lxr 化为: − 1 ≤ 2 x w ≤ 1 -1 \leq \frac{2x}{w} \leq 1 1w2x1

− 1 ≤ − 2 n x v z v w ≤ 1 -1\leq \frac{-2nx_v}{z_vw}\leq 1 1zvw2nxv1

− 1 ≤ − 2 n w ⋅ x v z v ≤ 1 -1\leq \frac{-2n}{w}·\frac{x_v}{z_v}\leq 1 1w2nzvxv1

2、求归一化设置后的 yn

  • l ≤ y ≤ r l \leq y \leq r lyr 化为: − 1 ≤ 2 y h ≤ 1 -1 \leq \frac{2y}{h} \leq 1 1h2y1

− 1 ≤ − 2 n y v z v h ≤ 1 -1\leq\frac{-2ny_v}{z_vh}\leq1 1zvh2nyv1

− 1 ≤ − 2 n h ⋅ y v z v ≤ 1 -1\leq\frac{-2n}{h}·\frac{y_v}{z_v}\leq1 1h2nzvyv1

3、得到最后化简的公式

由于NDC下的坐标由透视除法而得
我们假设透视除法中的 w 为 -zv
还原到裁剪空间还需要乘以 -zv

  • X:

− 1 ≤ − 2 n w ⋅ x v z v ≤ 1 -1\leq \frac{-2n}{w}·\frac{x_v}{z_v}\leq 1 1w2nzvxv1

x n = − 2 n w x v z v x_n = \frac{-2n}{w}\frac{x_v}{z_v} xn=w2nzvxv

− x n z v = 2 n w x v -x_nz_v = \frac{2n}{w}x_v xnzv=w2nxv

  • Y:

− 1 ≤ − 2 n h ⋅ y v z v ≤ 1 -1\leq\frac{-2n}{h}·\frac{y_v}{z_v}\leq1 1h2nzvyv1

y n = − 2 n h y v z v y_n = \frac{-2n}{h}\frac{y_v}{z_v} yn=h2nzvyv

− y n z v = 2 n h y v -y_n z_v= \frac{2n}{h}y_v ynzv=h2nyv

  • Z:

z n = ? z_n = ? zn=?

− z n z v = − z v ? -z_nz_v = -z_v? znzv=zv?

  • W:

w = 1 w = 1 w=1

− w n z v = − z v -w_nz_v = -z_v wnzv=zv


四、构建转化矩阵

裁剪空间下的点 = 观察空间下的基向量 在 裁剪空间下的矩阵 * 点在观察空间下的坐标

P c = [ V c ] ⋅ P v P_c = [V_c]·P_v Pc=[Vc]Pv

P c = [ C v ] − 1 ⋅ P v P_c = [C_v]^{-1}·P_v Pc=[Cv]1Pv

P c = [ C v ] T ⋅ P v P_c = [C_v]^{T}·P_v Pc=[Cv]TPv

  • − x n z v = 2 n w x v -x_nz_v = \frac{2n}{w}x_v xnzv=w2nxv
  • − y n z v = 2 n h y v -y_n z_v= \frac{2n}{h}y_v ynzv=h2nyv
  • − z n z v = − z v ? -z_nz_v = -z_v? znzv=zv?
  • − w n z v = − z v -w_nz_v = -z_v wnzv=zv

[ 2 v w 0 ? ? 0 2 n h ? ? 0 0 ? ? 0 0 ? ? ] T = [ 2 v w 0 0 0 0 2 n h 0 0 ? ? ? ? ? ? ? ? ] \begin{bmatrix} \frac{2v}{w} & 0 & ? &?\\ 0 & \frac{2n}{h} & ? &?\\ 0 & 0 & ? &?\\ 0 & 0 & ? & ?\\ \end{bmatrix}^T =\begin{bmatrix} \frac{2v}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ ? & ? & ? &?\\ ? & ? & ? & ?\\ \end{bmatrix} w2v0000h2n00???????? T= w2v0??0h2n??00??00??

[ 2 v w 0 0 0 0 2 n h 0 0 ? ? ? ? ? ? ? ? ] ⋅ [ x v y v z v 1 ] = ( − x n z v , − y n z v , − z n z v , − w n z v ) \begin{bmatrix} \frac{2v}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ ? & ? & ? &?\\ ? & ? & ? & ?\\ \end{bmatrix} · \begin{bmatrix} x_v\\ y_v\\ z_v\\ 1\\ \end{bmatrix} = (-x_nz_v,-y_nz_v,-z_nz_v,-w_nz_v) w2v0??0h2n??00??00?? xvyvzv1 =(xnzv,ynzv,znzv,wnzv)

最后一行由于相乘结果为1可以得出,把最后未知部分设为A,B
[ 2 v w 0 0 0 0 2 n h 0 0 0 0 A B 0 0 − 1 0 ] ⋅ [ x v y v z v 1 ] \begin{bmatrix} \frac{2v}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ 0 & 0 & A &B\\ 0 & 0 & -1 & 0\\ \end{bmatrix} · \begin{bmatrix} x_v\\ y_v\\ z_v\\ 1\\ \end{bmatrix} w2v0000h2n0000A100B0 xvyvzv1

z c = A z v + B z_c = Az_v+B zc=Azv+B

− z n z v = − z v -z_nz_v = -z_v znzv=zv

z c − z v = A z v + B − z v \frac{z_c}{-z_v} = \frac{Az_v+B}{-z_v} zvzc=zvAzv+B

z n = A z v + B − z v z_n = \frac{Az_v+B}{-z_v} zn=zvAzv+B

1、在OpenGL[-1,1]下:

z n = A z v + B − z v z_n = \frac{Az_v+B}{-z_v} zn=zvAzv+B

{ z v = − n , z n = − 1 z v = − f , z n = 1 \begin{cases} z_v = -n,z_n=-1 \\ z_v = -f,z_n = 1 \end{cases} {zv=n,zn=1zv=f,zn=1

{ − 1 = − A n + B n 1 = − A f + B f \begin{cases} -1 = \frac{-An+B}{n}\\ 1 = \frac{-Af + B}{f} \end{cases} {1=nAn+B1=fAf+B

{ − n = − A n + B f = − A f + B \begin{cases} -n = -An+B\\ f = -Af + B \end{cases} {n=An+Bf=Af+B

B = A n − n B = An - n B=Ann

f = − A f + A n − n f = -Af +An-n f=Af+Ann

f + n = A ( n − f ) f + n= A(n-f) f+n=A(nf)

A = n + f n − f A = \frac{n+f}{n-f} A=nfn+f

B = n + f n − f n − n B = \frac{n+f}{n-f}n-n B=nfn+fnn

B = n 2 + f n n − f n 2 − n f n − f B = \frac{n^2 + fn}{n-f}\frac{n^2-nf}{n-f} B=nfn2+fnnfn2nf

B = 2 n f n − f B = \frac{2nf}{n-f} B=nf2nf

2、在DirectX[1,0]下:

z n = A z v + B − z v z_n = \frac{Az_v+B}{-z_v} zn=zvAzv+B

{ z v = − n , z n = 1 z v = − f , z n = 0 \begin{cases} z_v = -n,z_n=1 \\ z_v = -f,z_n = 0 \end{cases} {zv=n,zn=1zv=f,zn=0

{ 1 = − A n + B n 0 = − A f + B f \begin{cases} 1 = \frac{-An+B}{n}\\ 0 = \frac{-Af+B}{f} \end{cases} {1=nAn+B0=fAf+B

{ n = − A n + B 0 = − A f + B \begin{cases} n = -An+B\\ 0 = -Af+B \end{cases} {n=An+B0=Af+B

B = A f B = Af B=Af

n = − A n + A f n = -An+Af n=An+Af

n = A ( f − n ) n = A(f-n) n=A(fn)

A = n f − n A =\frac{n}{f-n} A=fnn

B = n f f − n B = \frac{nf}{f-n} B=fnnf

3、把A、B代入矩阵得

  • OpenGL
    [ 2 n w 0 0 0 0 2 n h 0 0 0 0 n + f n − f 2 n f n − f 0 0 − 1 0 ] \begin{bmatrix} \frac{2n}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ 0 & 0 & \frac{n+f}{n-f} &\frac{2nf}{n-f}\\ 0 & 0 & -1 & 0\\ \end{bmatrix} w2n0000h2n0000nfn+f100nf2nf0
  • DirectX
    [ 2 n w 0 0 0 0 2 n h 0 0 0 0 n f − n n f f − n 0 0 − 1 0 ] \begin{bmatrix} \frac{2n}{w} & 0 & 0 & 0 \\ 0 & \frac{2n}{h} & 0 &0\\ 0 & 0 & \frac{n}{f-n} &\frac{nf}{f-n}\\ 0 & 0 & -1 & 0\\ \end{bmatrix} w2n0000h2n0000fnn100fnnf0

相关文章:

Unity中Shader裁剪空间推导(透视相机到裁剪空间的转化矩阵)

文章目录 前言一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化1、观察空间(右手坐标系、透视相机)2、裁剪空间(左手坐标系、且转化为了齐次坐标)3、屏幕空间(把裁剪坐标归一化设置)4、从观察空…...

企业签名分发对移动应用开发者有什么影响

企业签名分发是移动应用开发者在应用程序发布前测试、内部分发和特定的受众群体分发等方面比较常用的一种工具。那对于应用商城分发有啥区别,下面简单的探讨一下。 独立分发能力 通过企业签名分发开发者可以自己决定应用程序的发布时间和方式,不用受应用…...

3D游戏角色建模纹理贴图处理

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在本文中,我们将介绍 3D 纹理的基础知识,并讨…...

【C++ 单例模式】

正确的析构 静态实例和回收类 SingletonMode.cpp #include <iostream> #include <pthread.h>class Singleton {private:Singleton(){std::cout << "构造" << std::endl;};~Singleton(){std::cout << "析构" << std::…...

React16源码: ConcurrentMode的使用及源码实现

ConcurrentMode 1 ) 概述 ConcurrentMode 是 React 16 出来的一个最令人振奋的功能在2018年年初是 Async Mode&#xff0c;在发布了16.6之后&#xff0c;名字进行了更新然后改成了 ConcurrentMode&#xff0c;中间的API有一个过渡的版本&#xff0c;后续会提到它其实是 React…...

SQL性能优化-索引

1.性能下降sql慢执行时间长等待时间长常见原因 1&#xff09;索引失效 索引分为单索、复合索引。 四种创建索引方式 create index index_name on user (name); create index index_name_2 on user(id,name,email); 2&#xff09;查询语句较烂 3&#xff09;关联查询太多join&a…...

Ubuntu本地快速搭建web小游戏网站,公网用户远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…...

easyrecovery 2024最新免费密钥分享 实用数据恢复软件分享

在日常使用电脑时&#xff0c;我们经常会遇到误删文件的情况&#xff0c;若文件还未被彻底删除&#xff0c;我们还可以通过电脑中的回收站将其恢复&#xff0c;但若是回收站都被清空的话&#xff0c;想要恢复文件就变得比较困难了&#xff0c;而EasyRecovery可以很好的帮助我们…...

2.4信道复用技术

目录 2.4信道复用技术2.4.1频分复用、时分复用和统计时分复用频分复用FDM&#xff08;Frequency Division Multiplexing&#xff09;时分复用TDM&#xff08;Time Division Multiplexing&#xff09;统计时分复用STDM&#xff08;Statistic TDM&#xff09; 2.4.2波分复用2.4.3…...

JVM篇:JVM的简介

JVM简介 JVM全称为Java Virtual Machine&#xff0c;翻译过来就是java虚拟机&#xff0c;Java程序&#xff08;Java二进制字节码&#xff09;的运行环境 JVM的优点&#xff1a; Java最大的一个优点是&#xff0c;一次编写&#xff0c;到处运行。之所以能够实现这个功能就是依…...

uniapp 输入手机号并且正则校验

1.<input input“onInput” :value“phoneNum” type“number” maxlength“11”/> 3. method里面写 onInput(e){ this.phoneNum e.detail.value }, 4.调用接口时候校验正则 if (!/^1[3456789]\d{9}$/.test(this.phoneNum)) {uni.showToast({title: 请输入正确的手机号…...

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现 之前&#xff0c;我们依据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;提出了新的YOLOV1架构&#xff0c;并解决前向推理过程中的两个问题&#xff0c;继续按照此书进行YOLOV1的复现。 经典目标…...

kbdnecat.DLL文件缺失,软件或游戏无法启动运营,快速修复方法

“kbdnecat.DLL文件是什么&#xff1f;为什么一起动游戏或软件&#xff0c;Windows就报错“kbdnecat.DLL文件缺失&#xff0c;软件无法启动””&#xff0c;应该怎么修复呢&#xff1f; 首先&#xff0c;先来了解“kbdnecat.DLL文件”是什么&#xff1f; kbdnecat.DLL是一个动…...

Dockerfile与DockerCompose

Docker的Image结构是怎样的&#xff1f; 镜像是将应用程序 及其需要的 系统函数库、环境、配置、依赖 打包而成。 镜像结构 入口&#xff08; Entrypoint &#xff09; 镜像运行入口&#xff0c;一般是程序启动的脚本和参数 层&#xff08; Layer &#xff09; 在BaseImage基…...

【CFP-专栏2】计算机类SCI优质期刊汇总(含IEEE/Top)

一、计算机区块链类SCI-IEEE 【期刊概况】IF:4.0-5.0, JCR2区&#xff0c;中科院2区&#xff1b; 【大类学科】计算机科学&#xff1b; 【检索情况】SCI在检&#xff1b; 【录用周期】3-5个月左右录用&#xff1b; 【截稿时间】12.31截稿&#xff1b; 【接收领域】区块链…...

Stable Diffusion 本地部署详细教程

目录 一、前言二、系统和硬件要求三、安装前说明四、安装步骤5、升级pip(这是管理python环境软件工具),并把资源库换成国内地址为清华镜像。一、前言 虽然MJ和SD都可以生成图像,但是为什么我们要考虑使用本地SD部署呢?原因其实很简单:首先,本地部署的使用成本更低,且更加…...

【超图】SuperMap iClient3D for WebGL/WebGPU —— 坐标系位置 —— Cartesian2

作者&#xff1a;taco 说到关于地理必然逃不开位置的关系。借用百度百科的内容来说地理学&#xff08;geography&#xff09;&#xff0c;是研究地球表层空间地理要素或者地理综合体空间分布规律、时间演变过程和区域特征的一门学科。所以位置&坐标系必然逃不掉了。那么在S…...

【Matlab】LSTM长短期记忆神经网络时序预测算法(附代码)

资源下载&#xff1a; https://download.csdn.net/download/vvoennvv/88688439 一&#xff0c;概述 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种常用的循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;结构&#xff0c;由于其对于…...

2.2 设计FMEA步骤二:结构分析

2.2.1 目的 设计结构分析的目的是将设计识别和分解为系统、子系统、组件和零件,以便进行技术风险分析。其主要目标包括: 可视化分析范围结构化表示:方块图、边界图、数字模型、实体零件识别设计接口、交互作用和间隙促进顾客和供应商工程团队之间的协作(接口责任)为功能分…...

红队攻防实战之DC2

吾愿效法古圣先贤&#xff0c;使成千上万的巧儿都能在21世纪的中华盛世里&#xff0c;丰衣足食&#xff0c;怡然自得 0x01 信息收集: 1.1 端口探测 使用nmap工具 可以发现开放了80端口&#xff0c;网页服务器但是可以看出做了域名解析&#xff0c;所以需要在本地完成本地域名…...

【28】Kotlin语法进阶——使用协程编写高效的并发程序

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、Kotlin中的协程1.1 协程的基本用法1.1.1协程与协程作用域1.1.2 使用launch函数创建子协程1.1.3 通过suspend关键声明挂起函数1.1.4 coroutineScope函数 1.2…...

【大数据面试知识点】Spark的DAGScheduler

Spark数据本地化是在哪个阶段计算首选位置的&#xff1f; 先看一下DAGScheduler的注释&#xff0c;可以看到DAGScheduler除了Stage和Task的划分外&#xff0c;还做了缓存的跟踪和首选运行位置的计算。 DAGScheduler注释&#xff1a; The high-level scheduling layer that i…...

Pycharm引用其他文件夹的py

Pycharm引用其他文件夹的py 方式1&#xff1a;包名设置为Sources ROOT 起包名的时候&#xff0c;需要在该文件夹上&#xff1a;右键 --> Mark Directory as --> Sources ROOT 标记目录为源码目录&#xff0c;就可以了。 再引用就可以了 import common from aoeweb impo…...

目标检测-One Stage-YOLOv1

文章目录 前言一、YOLOv1的网络结构和流程二、YOLOv1的损失函数三、YOLOv1的创新点总结 前言 前文目标检测-Two Stage-Mask RCNN提到了Two Stage算法的局限性&#xff1a; 速度上并不能满足实时的要求 因此出现了新的One Stage算法簇&#xff0c;YOLOv1是目标检测中One Stag…...

PHP序列化总结3--反序列化的简单利用及案例分析

反序列化中生成对象里面的值&#xff0c;是由反序列化里面的值决定&#xff0c;与原类中预定义的值的值无关&#xff0c;穷反序列化的对象可以使用类中的变量和方法 案例分析 反序列化中的值可以覆盖原类中的值 我们创建一个对象&#xff0c;对象创建的时候触发了construct方…...

大一C语言程序细节复盘2

7-4 学生成绩排序 分数 27 全屏浏览题目 切换布局 作者 张泳 单位 浙大城市学院 假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩&#xff0c;定义一个能够表示学生信息的结构类型。输入n&#xff08;n<50&#xff09;个学生的成绩信息&#xff0c;按照学生…...

【QT】跨平台区分32位和64位的宏

目录 0.背景 1.详细 0.背景 项目用到&#xff0c;原用的是 “WIN32”和“WIN64”,但是发现在64位下的时候&#xff0c;进了表示32位的代码&#xff0c;上网查找&#xff0c;原来是宏写错了&#xff0c;特此记录&#xff0c;适用windows和linux 1.详细 修改前&#xff1a; #…...

对抗AUTOMIXUP

文章目录 摘要1、简介2、相关工作3、ADAUTOMIX3.1、深度学习分类器3.2、生成器3.3 对抗增强3.3.1 对抗损失 3.4 对抗优化 4、实验4.1、分类结果4.1.1、数据集分类4.1.2、精细分类 4.2、校准4.3、鲁棒性4.4、遮挡鲁棒性4.5、迁移学习4.6、消融实验 5、结论附录AA.1 数据集信息A.…...

AMEYA360:什么是热敏电阻 热敏电阻基础知识详解

热敏电阻(thermistor)是对温度敏感的一种电子器件&#xff0c;其电阻值会随着温度的变化而发生改变。 热敏电阻按照温度系数不同分为正温度系数热敏电阻(PTC thermistor&#xff0c;即 Positive Temperature Coefficient thermistor)和负温度系数热敏电阻(NTC thermistor&#…...

RedisTemplate自增时保证原子性的lua脚本限制接口请求频率

场景&#xff1a;限制请求后端接口的频率&#xff0c;例如1秒钟只能请求次数不能超过10次&#xff0c;通常的写法是&#xff1a; 1.先去从redis里面拿到当前请求次数 2.判断当前次数是否大于或等于限制次数 3.当前请求次数小于限制次数时进行自增 这三步在请求不是很密集的时…...

提供设计的的网站/山东最新消息今天

制造业税务成本100问-90(转载) 90。如何利用制造业税务成本系统数据empower 原有制造业系统&#xff1f;90。如何利用制造业税务成本系统数据empower 原有制造业系统&#xff1f;目前还有许多的工厂中的成本会计和前端的制造业系统并未整合。究其原因&#xff0c;除了成本会计计…...

东莞网络推广服务平台/安徽网站优化

官方网站&#xff1a;http://www.xfyun.cn/ 注册还要绑定微信&#xff0c;坑啊&#xff0c;识别率感觉没得微信语音好&#xff0c;但是微信语音审核一直不过&#xff0c;研究下这个 1.下载sdk&#xff0c;主要就下面几个文件&#xff0c;我主要用的是语音识别 2.导入相关的库 3…...

网站建设招标公示/营销助手下载app下载

题意&#xff1a;给点一个无向图&#xff0c;求一个生成树使树中最大边与最小边的差的最小。 分析&#xff1a;并查集。把所有边排序&#xff0c;然后从小到大看&#xff0c;每次枚举一个边&#xff0c;将其权值作为下界&#xff0c;向右寻求一个上界&#xff0c;让上下界之间的…...

网站设置安全/百度霸屏推广一般多少钱

一个小型的网站&#xff0c;比如个人网站&#xff0c;可以使用最简单的html静态页面就实现了&#xff0c;配 合一些图片达到美化效果&#xff0c;所有的页面均存放在一个目录下&#xff0c;这样的网站 对系统架构、性能的要求都很简单&#xff0c;随着互联网业务的不断丰富&…...

javaweb做音乐网站/seo含义

主从复制模式 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。 前者称为主节点&#xff08;master&#xff09;&#xff0c;后者成为从节点&#xff08;slave&#xff09;&#xff1b;数据的复制是单向&#xff0c;主要是由主节点到从…...

全球新冠疫情/广州网站排名优化报价

《机器学习Python实践》&#xff0c;第十章&#xff0c;评估算法目录&#xff1a;橘猫吃不胖&#xff1a;《机器学习Python实践》读书笔记-第一章​zhuanlan.zhihu.com橘猫吃不胖&#xff1a;《机器学习Python实践》读书笔记-第三章​zhuanlan.zhihu.com橘猫吃不胖&#xff1a;…...