ISP——3A算法
目录
- 前沿
- 一. 自动曝光AE
- 1.1. 自动曝光
- 1.2. 18%灰
- 1.3. 测光区域
- 1.4. 摄影曝光加法系统
- 1.5. AE算法
- 1.5.1. 考虑事项
- 1.5.2. AE实现过程
- 1.6. AE算法
- 二. 自动对焦AF
- 2.1. 什么是自动对焦
- 2.2. 图像清晰度评价方法
- 2.2.1. Brenner 梯度函数
- 2.2.2. Tenengrad 梯度函数
- 2.2.3. Laplacian 梯度函数
- 2.2.4. 方差函数
- 2.2.5. 能量梯度函数
- 2.3. 聚焦函数
- 2.4. 自动对焦原理
- 2.5. 对焦算法
- 2.5.1. 测距法
- 2.5.2. 图像分析法(被动聚焦)
- 2.5.2.1 相位检测
- 2.5.2.2. 对比度检测聚焦
- 三. 自动白平衡AWB
- 3.1. 色温和颜色恒常性
- 3.2. 白平衡矫正
- 3.3. 矫正方法
- 3.3.1. 灰度世界理论
- 3.3.2. 完美反射法
- 3.3.3. QCGP
- 3.3.4. 模糊逻辑算法
- 3.3.5. 基于白点的算法
- 3.3.6. 基于边缘的方法
前沿
最近在学习3A技术,简单记录一下。
我们先来看下什么是3A技术?
3A即自动对焦(AF),自动曝光(AE),自动白平衡(AWB)
补充:通常在进行3A算法的时候会有一个先后顺序:AWB->AE->AF
- AF:控制对焦马达的移位,使镜头定焦在合适的位置
- AE:Auto Exposure即自动曝光,是相机根据外界光线的强弱自动调整曝光量和增益,防止曝光过度或者不足的一种机制。通过调节快门,光圈,感光度(ISO),使得图像达到合适的亮度
- AWB:通过调整图像的R/B通道的增益值,调节图像的色温/色调表现
问:为什么调节白平衡只有R和B的增益
答:简化电路,减少调节过程以及带来的工作量相应的增加。2、通过合理调节R-Drive和B-Drive,配合固定的G-DriVe完成亮平衡校对工作。这好比一只三条腿的桌子,一条腿固定,调节另外两条腿的长短,使桌面达到水平状态。亮平衡只有R和B,一般是长虹彩电的特征。
AF控制着对焦马达,是镜头的基本功能,AE与AWB自动白平衡算法来实现图像对比度最大、改善主体拍摄物曝光或曝光不足、使画面在不足光线照射下的色差得到补偿。3A是每个相机的基本算法功能,每个A都代表了成像的基本组件,总结一下:
- AE控制着ISO/快门,是sensor的基本功能
- AF控制着对焦马达,是镜头的基本功能
- AWB是camera色彩系统的第一个基础模块,3A准确率是成像的基本保证
关于上面的光圈,快门,ISO的含义知乎上有一个很绝的解释:

感兴趣的也可以跳转到这个话题看一下:如何理解 ISO、快门、光圈、曝光这几个概念?。
一. 自动曝光AE
1.1. 自动曝光
先来看下自动曝光的概念,然后在看几个跟其相关的概念:
- AE的基本概念
Auto Exposure即自动曝光,是相机根据外界光线的强弱自动调整曝光量和增益,防止曝光过度或者不足的一种机制。

可见,AE的输入为当前影像的亮度值Y,输出为sensor的曝光时间和增益,isp增益和镜头光圈(如果镜头光圈可调)。当AE algorithm得到当前帧的亮度后,便会与target Y做比较,然后计算出下一次需要调整的参数,以便让影像的亮度越来越接近target Y,如下所示(target只是一个范围):

- 曝光是什么?
以摄影为例,曝光指摄影过程中进入镜头照射在感光元件上形成影像的过程就是曝光,这个过程由光圈、快门、感光度的组合来控制。 - 什么是曝光量?
图像传感器所接受的光量,用H表示,单位是勒克斯·秒,公式如下:
H = E × t H = E \times t H=E×t
- E为照度,单位是勒克斯(lx )
- t为感光材料受到光线照射的时间,单位是秒( s )
- 曝光量H的单位为勒克斯·秒( lx·s )
解释下上面照度的意思:
照度又称为投射光,是描述被摄体受照表面被照明的程度。照度定义为单位面积上所接受的光通量,照度E用公式表示为:
E = Φ / A E=\Phi/ A E=Φ/A
Φ \Phi Φ 为光通量, 单位为流明 ( I m ) (I m) (Im) ; A A A 为受照面积, 单位为平方米 ( m 2 ) \left(\mathrm{m}^2\right) (m2) 。
- 什么是曝光强度
曝光强度 = 曝光时间 × 光圈大小 × I S O 曝光强度 = 曝光时间\times 光圈大小\times ISO 曝光强度=曝光时间×光圈大小×ISO
相机上的光圈是固定的,所以只需要考虑曝光时间和ISO(增益值的一种表示,这里的增益又分为Analog Gain,Digital Gain以及ISP
增益。这里记住ISO指的就是信号增益大小就行了)。
4. 自动曝光
有了上面的三个概念,我们再来看下相机的自动曝光怎么定义的,相机上的自动曝光就是让相机根据当前的图像信息自动配置曝光大小,也就是曝光时间和ISO的值。下面是一组不同曝光强度下的相机成像对比。

1.2. 18%灰
我们再来看下曝光相关的另一个概念,18%灰。在介绍这个概念之前,我们需要了解两个相关概念:韦伯定律和曝光分区系统。
- 韦伯定律
即感觉的差别阈限随原来刺激量的变化而变化,而且表现为一定的规律性,可用如下公式来表示:
Δ Φ / Φ = C \Delta \Phi / \Phi=C ΔΦ/Φ=C
其中 Φ \Phi Φ 为原刺激量, Δ Φ \Delta \Phi ΔΦ 为此时的差别阈限,C为常数,又 称为韦伯率。看起来有点难理解,说人话就是人对自然刺激的感知是非线性的,刺激以一定比例的增长,对人而言是均匀增长的。 - 曝光分区系统
再来看下曝光分区系统。这是由 Ansel Adams 和 Fred Archer在1940年左右所阐述,如下图所示,将人眼对于从黑到白渐进的变化分为11阶,将处于当中的块5认为是适中的曝光强度,称为中灰。而5块的光照反射率是18%,也就是定义的18%灰。因此专业摄影师通常会使用测光表来判断环境光,来决定拍照的曝光强度,使得照片的整体曝光强度在18%灰左右。但是也要结合具体情境进行设置,比如说在拍摄雪景的时候再把曝光度调为18%的话就会使得照片偏黑,即我们说的“白增黑减”。

1.3. 测光区域
再来看一个相关概念,测光区域。通常一个图片中同时存在亮与暗的区域,如果把所有区域都纳入考虑来算一个平均值,可能不能如实反映拍照者的期望,所以会有个重点测光区域。根据不同算法,测光区域也不同。比较原始的是将整个区域分为 M × N M \times N M×N个区域,取中心的 X × Y X \times Y X×Y区域;手机上通常有针对人脸区域测光、中心测光与点测光。测光区域也有一定的权重分布,通常在中心的区域权重会更大一些。
1.4. 摄影曝光加法系统
E V = A V + T V = B V + S V EV =AV+ TV= BV+ SV EV=AV+TV=BV+SV
- EV:Exposure Value,将相机的曝光形成数字化,曝光值
- AV:Aperture Value 光圈值
- TV:Time Value 快门值
- SV:Sensitive Value 感光值 (ISO)
- BV:Brightness Value亮度值,环境亮度
关于上面每个值的计算方法如下:

根据上面的公式可以得到 E V = A V + T V = B V + S V EV =AV+ TV= BV+ SV EV=AV+TV=BV+SV的公式为:
2 ∗ log 2 ( F number ) − log 2 ( 1 exposure time ) = log 2 ( B / 0.3 K ) + log 2 ( 0.3 S ) 2 * \log _2(\mathrm{F}_ \text {number })-\log _2\left(\frac{1}{\text { exposure time }}\right)=\log _2(B / 0.3 K)+\log _2(0.3 S) 2∗log2(Fnumber )−log2( exposure time 1)=log2(B/0.3K)+log2(0.3S)
其中
- F n u m b e r F_{number} Fnumber是镜头光圈值大小,我们常说的 F 1.4 F_{1.4} F1.4, F 4.0 F_{4.0} F4.0等
- B B B是景物亮度单位是 C d / c m 2 Cd/cm2 Cd/cm2
1.5. AE算法
在了解了上面的基本概念之后,我们来看下AE的算法步骤以及需要考虑的问题。
1.5.1. 考虑事项
在一个响应周期内,AE算法需要处理的具体事项如下:
- 根据ISP硬件生成的图像曝光统计数据评估当前图像的曝光质量
- 如果曝光质量需要调整,则根据当前的工作参数和理想曝光目标生成下一帧图像的工作参数
- 将新的工作参数写入各硬件设备,驱动光圈、sensor快门及增益达到新的位置
1.5.2. AE实现过程
- 对当前图像进行亮度统计
- 根据当前图像亮度确定曝光值
- 计算新的曝光参数,曝光时间,光圈和增益
- 将新的曝光参数应用到相机中
- 重复1-4的步骤,直到满足亮度需求
1.6. AE算法
- 均值法AE
- 直方图改进的均值法AE
- N段式统计法
二. 自动对焦AF
2.1. 什么是自动对焦
自动对焦是利用物体光反射原理,将反射的光被相机上的传感器CCD(光电转换器,将光信号转换为电信号的传感器)所接受,通过计算机处理,带动电动对焦设备进行对焦的方式叫做自动对焦。就是移动对焦设备使得成像清晰。
在了解自栋对焦算法之前我们需要知道几个常见名词,有些是初中物理已经见过的。
- 像距:像距是像(CCD传感器)到平面镜(或透镜的光心)之间的距离,一般用v表示。
- 物距:物体到透镜中心的距离,一般用表示u表示。
- 焦距:镜头中心点到行程码清晰影像胶片或者CCD的距离,也就是焦距反映的是清晰成像的距离,一般用f表示。
- 景深:拍摄一张照片的时候,照片中的最近物体和最远物体之间能够清晰成像的部分就是景深。
- 凸透镜:就是我们说的放大镜,中间厚两边薄。相机镜头通常都是凸透镜构成。
我们来看一下凸透镜成像原理:

人眼其实就是个可变焦的凸透镜。视网膜可以等效成CCD,人的大脑会自动的把倒立的像给处理成正向的。
成像公式:
1 f = 1 u + 1 v \frac{1}{f} = \frac{1}{u} + \frac{1}{v} f1=u1+v1
- f,u,v分别表示焦距,物距,像距。
2.2. 图像清晰度评价方法
既然自动对焦是要让CCD接受清晰的图像,我们知道人眼很容易判断一个图像是否清晰,那么相机应该怎么判断一个图像是否清晰呢?方法有很多,我们简单介绍常用的几个。
2.2.1. Brenner 梯度函数
Brenner梯度函数是最简单的梯度评价函数,它只是简单的计算相邻两个像素灰度差的平方:

其中:f(x,y) 表示图像f对应像素点(x,y)的灰度值,D(f)为图像清晰度计算结果。
2.2.2. Tenengrad 梯度函数
Tenengrad 梯度函数采用Sobel算子分别提取水平和垂直方向的梯度值,基与Tenengrad 梯度函数的图像清晰度定义如下:

G(x,y) 的形式如下:

2.2.3. Laplacian 梯度函数
Laplacian 梯度函数与Tenengrad梯度函数基本一致,用Laplacian算子替代Sobel算子即可,该算子定义如下:

因此基于Laplacian 梯度函数的图像星清晰度的定义如下:

其中G(x,y)是像素点(x,y)处Laplacian算子的卷积。
2.2.4. 方差函数
因为清晰聚焦的图像有着比模糊图像更大的灰度差异,可以将方差函数作为评价函数:

其中 μ \mu μ为整幅图像的平均灰度值,该函数对噪声比较敏感,图像画面越纯净,函数值越小。
2.2.5. 能量梯度函数
能量梯度函数更适合实时评价图像清晰度,该函数定义如下:

2.3. 聚焦函数
图像对比度通常也称为锐度,是用来描述图像细节分辨程度和清晰度的度量值。对比度检测聚焦采用锐度来评价聚焦的准确程度,图像锐度越大也就是聚焦值越大,说明越接近准确聚焦的位置。在聚焦调节范围内,每 个调焦位置会对应个锐度值,也就是聚焦值,这些聚焦值形成 曲线,通常称为聚焦曲线 。锐度值通过锐度评价函数计算获得,锐度评价函数有时也称为聚焦函数。一个良好的锐度评价函数对应的聚焦曲线应该是 个如下图所示的单峰曲线,并且曲线峰值对应的调焦位置即为准确聚焦的位置。

什么是聚焦峰值,聚焦的准确位置对应于锐度评价函数(锐度评价函数就是聚焦函数)的最大峰值,也只有找到最大峰值才能知道准确聚焦的位置。那么最大峰值应该怎么确定吗?可以看出,锐度评价函数决定了聚焦的精度,而聚焦的峰值搜索算法决定了自动聚焦的速度。下图展示几种搜索算法:

这部分的内容详细可以参考:自动聚焦技术(AF)。
补充:
图像清晰评价函数用来后期评估聚焦的效果,聚焦函数是用来找图像焦点的,注意区分两者的差别。
2.4. 自动对焦原理
- 对焦过程中图像仍在一直不断产生,把镜头在某个位置时的那帧图像送到图像处理器(ISP)处理,得出该图像的统计信息,再把这信息送到对焦算法库(可能在isp硬件上执行,也可能在驱动程序软件执行),对焦算法库根据硬件规范和上述统计信息算出下一步镜头该往哪个方向移动多少距离,并驱动镜头到达那个位置;
- 接着在此位置得到新图像,又计算统计信息,计算再下一步的镜头位置…图像清晰度渐渐变化,如此经过几个循环收敛,图像到一定程度,就认为对焦成功。
统计信息是和聚焦算法以一一对应的,什么样的算法就需要ISP计算相应的统计信息。不同的对焦算法就又形成了不同的自动对焦方式,不同的对焦方式有不同的对焦速度和硬件需求及设计(主要针对摄像头传感器)。不管什么对焦算法,他的目的都是要快准狠迅速完成高质量的对焦。
2.5. 对焦算法
我们来介绍几个常见的对焦算法。
2.5.1. 测距法
一种主动聚焦方式,摄像头发出红外光或超声波并接收返回光线,实现测距,然后借此距离计算物距实现对焦,此方法精度略差,高端机上已较少使用,或作为其他方法的补充。(现在也有激光实现快速准确聚焦,如iPhone的LiDAR)
2.5.2. 图像分析法(被动聚焦)
2.5.2.1 相位检测
相位检测聚焦是单反相机中用的最普遍的自动对焦方法,这种聚焦系统一般由反光镜、微透镜,以及多个成像敏感器等硬件构成 其对焦原理如图所示,简单地说,通过镜头的光束被分为两个部分,分别在不同的两组成像敏感器上成像 如果对焦准确,则两幅图像相同;如果对焦不准 ,则两幅图像会出现偏移 通过比较两幅图像而检测这个偏,就能检测出聚焦的偏离状态。 相位检测自动聚焦的优点在于对焦迅速且比较精确, 缺点在于 要独特的硬件构造,造价高,且其复杂的构造不适合需要结构紧凑的情况,比如不适合在一般的数码相机及移动手机等平台上应用。如下图所示:

2.5.2.2. 对比度检测聚焦
对比度检测聚焦是另外一种被动聚焦方法,这种方法不需要额外的硬件构造,它仅仅通过对连续获得的实际图像进行分析处理,根据前后两帧或多帧图像的对比度计算结果来控制调焦的方向和大小。其基本原理是随着调焦向准确位置越 近,图像越清晰,对应的图像对比度也越大。由于不需要额外的硬件支持,这种聚焦方法广泛应用于摄像机、数码相机等成像系统。
会有以下缺点:
- 聚焦速度相对较慢;
- 对光照较为敏感,尤其是在低照度情况下容易失效;
- 当目标物缺乏明显的纹理细节(比如白色墙壁)时,难以准确聚焦;
下面是一个对比度检测聚焦的框架,对比度检测聚焦的关键因素有两点: ①锐度评价函数:②峰值判定和搜索策略。

三. 自动白平衡AWB
先看一组图。同一光源下,左边的图是在AWB没开的情况下显示的图像,右边的是在AWB打开的情况下拍摄的。

3.1. 色温和颜色恒常性
在学习AWB之前,我们需要先了解几个概念:
- 色温:色温描述的是具有一定表面温度的“黑体”(blackbody)的辐射光的光谱特性。简单的理解就是颜色随温度的变化规律,比如生铁就是黑色,加热会变成橘红色,继续加热到液态会呈现偏白的颜色,这种随温度而产生的颜色变化就光谱特性;
- 颜色恒常性:颜色恒常是指在照度发生变化的条件下人们对物体表面颜色的知觉趋于稳定的心理倾向;
- 白平衡原理:传感器不具有人眼的不同光照色温下的色彩恒定性,白平衡模块就需要将人眼看来白色的物体进行色彩的还原使其在照片上也呈现为白色,通俗的讲就是讲人眼看到的白色还原为白色。
3.2. 白平衡矫正
- 手动白平衡:在拍照前通过拍摄一个18度灰的卡片,然后计算出当时环境的白平衡的gain值对后面的图片进行校正;
- 自动白平衡:camera通过自己本身的算法,通过获取的图像自动计算出gain值对图像进行校正的方式;
3.3. 矫正方法
下面我们来看几个矫正方法。
3.3.1. 灰度世界理论

任一幅图像,当它有足够的色彩变化则它的RGB分量的均值会趋于相等。这是一个在自动白平衡方面应用极为广泛的理论。算法流程如下:
- 计算各个颜色通道的平均值 R m e a n R_{mean} Rmean, G m e a n G_{mean} Gmean, B m e a n B_{mean} Bmean;
- 寻找一个参考值K,因为人眼对于 G G G通道比较敏感,一般一般情况选取 G m e a n G_{mean} Gmean作为参考;
- 计算 R g a i n = G m e a n R m e a n R_{gain} =\frac{G_{mean}}{R_{mean}} Rgain=RmeanGmean, B g a i n = G m e a n R m e a n B_{gain} = \frac{G_{mean}}{R_{mean}} Bgain=RmeanGmean;
- 对图像中的每个像素都乘以对应的gain值进行校正;
3.3.2. 完美反射法
完全反射也是基于一个假说:基于这样一种假设,一幅图像中最亮的像素相当于物体有光泽或镜面上的点,它传达了很多关于场景照明条件的信息。如果景物中有纯白的部分,那么就可以直接从这些像素中提取出光源信息。因为镜面或有光泽的平面本身不吸收光线,所以其反射的颜色即为光源的真实颜色,这是因为镜面或有光泽的平面的反射比函数在很长的一段波长范围内是保持不变的。完美反射法就是利用用这种特性来对图像进行调整。算法执行时,检测图像中亮度最高的像素并且将它作为参考白点。基于这种思想的方法都被称为是完美反射法,也称镜面法。通俗的意思就是整个图像中最亮的点就是白色或者镜面反射出来的,那么最亮的点就是光源的属性,但是该点本身应该是白点,以此为基础就可计算出gain值从而进行校正。下面怡红色通道为例展示怎么计算的:

3.3.3. QCGP
这种方法将灰度世界和完全反射以正交的方式结合。下面仍以红色通道为例演示怎么计算的:
u r R a v e 2 + v r R a v e = K a v e ; u r R max 2 + v r R max = K max K a v e = R a v e + G a v e + B a v e 3 ; K max = R max + G max + B max 3 \begin{aligned} & u^r R_{\mathrm{ave}}^2+v^r R_{\mathrm{ave}}=K_{\mathrm{ave}} ; \\ & u^r R_{\max }^2+v^r R_{\text {max }}=K_{\max } \\ & K_{\mathrm{ave}}=\frac{R_{\mathrm{ave}}+G_{\mathrm{ave}}+B_{\mathrm{ave}}}{3} ; \\ & K_{\max }=\frac{R_{\max }+G_{\max }+B_{\max }}{3} \end{aligned} urRave2+vrRave=Kave;urRmax2+vrRmax =KmaxKave=3Rave+Gave+Bave;Kmax=3Rmax+Gmax+Bmax
通过上面的方程组就可以解出和 然后对原像素进行校正:
R n e w = u r R o r g 2 + v r R o r g R_{new} = u^rR_{org}^{2} +v^rR_{org} Rnew=urRorg2+vrRorg
3.3.4. 模糊逻辑算法

如图圆圈表示该颜色本身应该在坐标系中所处的位置,箭头分别表示随色温的变化发生的偏移,这个是通过先验知识得到的,后面再通过这个进行校正。

通过以上两种方式将图像分成8块,然后通过模糊逻辑的方式计算出每个快的一个权重,这个权重和亮度和色度相关,然后通过模糊逻辑方式进行确定。求得权重后就可以计算出整个图像的加权均值,如下图10a,黑点表示八个块的分布,X表示加权后整个图像的位置。然后目的是要让加权的这个值往白点上靠,就通过调整增益的方式调试,调整完增益后,每个块儿的均值又会发生变化,然后又重新计算出每个块的权重,再通过权重计算出整个图像的均值,如图10b,整个图像的均值已经靠近原点了。然后如果X和白点的差距在一个设定的范围内则认为完成白平衡,否则继续调整增益重复上述步骤进行校正。

3.3.5. 基于白点的算法
-
将RGB颜色空间转换到YUV空间,转换公式如下:
[ Y U V ] = [ 0.3 0.59 0.11 − 0.15 − 0.29 0.44 0.51 − 0.52 − 0.095 ] [ R G D ] \left[\begin{array}{l} Y \\ U \\ V \end{array}\right]=\left[\begin{array}{lll} 0.3 & 0.59 & 0.11 \\ -0.15 & -0.29 & 0.44 \\ 0.51 & -0.52 & -0.095 \end{array}\right]\left[\begin{array}{l} R \\ G \\ D \end{array}\right] YUV = 0.3−0.150.510.59−0.29−0.520.110.44−0.095 RGD -
通过限定YUV的区域来判断是否为白点,如下论文通过四个限制条件俩限制白点,满足条件的点就是白点,参与后续的计算,否则不是点直接舍弃

-
通过以上四个限制条件找到白点集合后,就可以对白点集合运用GW算法或者其他算法计算gain值从而进行后续的校正。
3.3.6. 基于边缘的方法
- 先通过一定的手段,比如梯度的方式求出图像中的边缘,然后在边缘各侧各取两个点参与计算;
- 通过上述得到的参考点集合,就可以运行灰度世界或者其他的算法求出gain值;

优点:减少的大色块的干扰,因为一般认为边缘就是色块变化的的分界线,那么提取边缘两侧的样本点就可以满足颜色充分的条件,那么就可以运用灰度世界法求出gain.而且有大色块的时候计算的也是也只是选取边缘的几个点,就可以避免大色块分量太大造成白平衡异常的问题。
下面看展示几个白平衡算法效果图:灰度世界理论,完全反射,QCGP算法。

相关文章:
ISP——3A算法
目录 前沿一. 自动曝光AE1.1. 自动曝光1.2. 18%灰1.3. 测光区域1.4. 摄影曝光加法系统1.5. AE算法1.5.1. 考虑事项1.5.2. AE实现过程 1.6. AE算法 二. 自动对焦AF2.1. 什么是自动对焦2.2. 图像清晰度评价方法2.2.1. Brenner 梯度函数2.2.2. Tenengrad 梯度函数2.2.3. Laplacian…...
Go语言入门指南
Go语言入门指南 Go语言,通常称为Golang,是一门由Google开发的开源编程语言。它因其简洁、高效和强大的特性而备受开发者欢迎。本篇博客将带你深入了解Go语言的基础知识,让你能够开始编写自己的Go程序。 为什么选择Go语言? 在学…...
【Hive SQL 每日一题】统计用户连续下单的日期区间
文章目录 测试数据需求说明需求实现 测试数据 create table test(user_id string,order_date string);INSERT INTO test(user_id, order_date) VALUES(101, 2021-09-21),(101, 2021-09-22),(101, 2021-09-23),(101, 2021-09-27),(101, 2021-09-28),(101, 2021-09-29),(101, 20…...
RabbitMQ 镜像集群部署
镜像集群原理 特征 默认情况下,队列只保存在创建该队列的节点上。而镜像模式下,创建队列的节点被称为该队列的主节点,队列还会拷贝到集群中的其它节点,也叫做该队列的镜像节点。 但是,不同队列可以在集群中的任意节…...
SpringMVC框架学习
java 学习笔记指路 基础知识 Python转java补充知识 Java中常见的名词解释 前端 【黑马程序员pink老师前端】HTML 【黑马程序员pink老师前端】JavaScript基础大总结 【黑马程序员pink老师前端】JavaScript函数与作用域 【黑马程序员pink老师前端】JavaScript对象 数据库 【黑马程…...
多通道振弦数据记录仪应用桥梁安全监测的解决方案
多通道振弦数据记录仪应用桥梁安全监测的解决方案 城市化进程的加快和交通运输的发展,桥梁作为连接城市的重要交通工具,其安全性也变得越来越重要。为了保证桥梁的安全性,需要进行定期的监测和维护。其中,多通道振弦数据记录仪是…...
RDMA 相关bug记录
对于 Client 来讲,setupConnection 中的 cm_id 应该是本地的,意味着后续 create pd \ cq \ qp 等等传入的 cm_id 都是本地 id。但是对于 Server 来讲,收到 client 的链接请求时将 client 的 cm_id 传入 setupConnection,意味着后续…...
TDengine函数大全-时序库特有函数
以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 TDengine函数大全 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 时序库特有函数 TDengine函数大全CSUMDERIVATIVEDIFF…...
vue-cli3项目本地启用https,并用mkcert生成证书
在项目根目录下的vue.config.js文件中: // vue.config.js module.exports {devServer: {host:dev.nm.cngc// 此处开启 https,并加载本地证书(否则浏览器左上角会提示不安全)https: {cert: fs.readFileSync(path.join(_dirname,./cert.crt)…...
包装类笔记
包装类 5.1 概述 Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使…...
TC和TG油封有什么区别?
油封是各种机械系统(包括发动机和工业机械)中的重要部件,因为它们可以防止润滑剂和污染物的泄漏。在可用的不同类型的油封中,常用的是TC和TG密封件。在本文中,我们将讨论TC和TG油封之间的差异,帮助您了解它们的独特特性和应用。 …...
大数据之MapReduce
MapReduce概述 是一个分布式的编程框架,MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 优点: 易于编程,简单的实现一些接口,就可以完成一…...
《机器人学一(Robotics(1))》_台大林沛群 第 5 周【机械手臂 轨迹规划】 Quiz 5
我又行了!🤣 求解的 位置 可能会有 变动,根据求得的A填写相应值即可。注意看题目。 coursera链接 文章目录 第1题 Cartesian space求解 题1-3 的 Python 代码 第2题第3题第4题 Joint space求解 题4-6 的 Python 代码 第5题第6题其它可参考代…...
嵌入式面试/笔试C相关总结
1、存储 单片机端编译后分为code ro rw zi几个区域,其中code是执行文件,ro(read only)只读区域,存放const修饰常量、字符串。rw(read write)存放已初始化变量。zi存放未初始化变量。编译完成后bin大小为coderorw。运行时所需内存为rwzi。 在电…...
支付宝使用OceanBase的历史库实践分享
为解决因业务增长引发的数据库存储空间问题,支付宝基于 OceanBase 数据库启动了历史库项目,通过历史数据归档、过期数据清理、异常数据回滚,实现了总成本降低 80%。 历史数据归档:将在线库(SSD 磁盘)数据归…...
accelerate 分布式技巧(一)
accelerate分布式技巧 简单使用 Accelerate是一个来自Hugging Face的库,它简化了将单个GPU的PyTorch代码转换为单个或多台机器上的多个GPU的代码。 Accelerate精确地抽象了与多GPU/TPU/fp16相关的模板代码,并保持Pytorch其余代码不变。 import torchim…...
密码找回安全
文章目录 密码找回安全任意秘密重置 密码找回安全 用户提交修改密码请求;账号认证:服务器发送唯一ID (例如信验证码)只有账户所有者才能看的地方,完成身份验证;身份验证:用户提交验证码完成身份验证;修改密码:用户修改密码。 任意秘密重置 登录metinfo4…...
Spring Boot + Vue的网上商城之商品管理
Spring Boot Vue的网上商城之商品管理 在网上商城中,商品管理是一个非常重要的功能。它涉及到商品的添加、编辑、删除和展示等操作。本文将介绍如何使用Spring Boot和Vue来实现一个简单的商品管理系统。 下面是一个实现Spring Boot Vue的网上商城之商品管理的思路…...
B站:提高你的词汇量:如何用英语谈论驾驶
视频链接:提高你的词汇量:如何用英语谈论驾驶_哔哩哔哩_bilibili 英文音标中文hood/hʊd/n. 汽车的引擎盖go over仔细检查;认真讨论;用心思考There are plenty of videos go over this.有很多关于这个的视频unlockvt. 发现;揭开&…...
大前端面试注意要点
前端面试:从IT专家角度全面解析 在数字时代,前端开发工程师的角色变得越来越重要。随着网站和应用程序的复杂性和交互性越来越高,对具有专业技能的前端开发人员的需求也在不断增长。对于正在寻找前端开发职位的开发者,或者正在寻…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
从实验室到产业:IndexTTS 在六大核心场景的落地实践
一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...
