HDR视频技术之二:光电转换与 HDR 图像显示

将自然界中的真实场景转换为屏幕上显示出来的图像,往往需要经过两个主要的步骤:第一个是通过摄影设备,将外界的光信息转换为图像信息存储起来,本质上是存储为数字信号;第二个是通过显示设备,将图像信息转换为屏幕输出的光信息。 下图展示了从拍摄到现实的电视信号链。在整个过程中,信息流要经过两个重要的非线性映射,才能形成我们在显示设备上看到的图像。其中,相机的非线性映射通常称为光电转换函数( OETF),而显示端的显示器的非线性映射通常称为电光转换函数( EOTF)。通常, OETF 和 EOTF 并不是互逆关系。显示端的 EOTF 往往还包括代表创作者渲染意图的光光转换函数( OOTF),其对观看者在较暗环境下在显示器上观看带来的心理视觉影响进行了修正。
在这里插入图片描述
在图像获取,存储与显示操作的发展过程中,前面提到的光电转换函数与电光转换函数也经历了多次的发展。

在整个发展过程中,最具有指导意义的是 Gamma 校正,这是一种在传统的 LDR 显示设备上被广泛使用的转换函数。这一章,我们将从 Gamma 校正开始,通过对 Gamma 校正的介绍,解释清楚光电转换与电光转换函数的理论依据与在实际场景中是如何应用的。最后,我们再把目光转移到 HDR 领域上,来介绍在 HDR 领域中,如何设计新的光电转换函数与电光转换函数,来实现 HDR 图像的显示。

1、Gamma 校正

在最前面必须要强调的是,视觉是人类的主观感受,因此,人眼看到的,感受到的,和自然界中的实际情况与场景可能存在误差。一个最简单的例子就是人眼感受到的,均匀变化的亮度,在自然界中的实际亮度却并不是均匀变化的。这种视觉特性,就是 Gamma校正产生的原因。人们需要对自然界的亮度进行非线性的映射,才能使人类感受到自然界中的实际景象。

1.1 韦伯定律

在详细介绍 Gamma 校正之前,需要先简单了解一个概念:韦伯定律。韦伯定律实际上是一个心理学上的定律。

韦伯定律是用来描述外界刺激的改变与人类感知的改变之间关系的定律,它的公式如下:
∆ Φ ⁄ Φ = 𝐾 ∆Φ⁄Φ = 𝐾 ∆Φ⁄Φ=K
其中∆Φ表示此时的差别阈值,是指人类能够感觉到外界刺激出现改变所需的最小改变量。 Φ表示原刺激量, K 为常数。

简而言之,韦伯定律告诉我们,差别阈值与原刺激量成正比关系。也就是说,外界刺激本身越大,差别阈值就越大。

仔细分析一下韦伯定律能够从中发现,人类对于外界刺激的感知并不是线性的。并非当外界刺激强度为 1 时,人类感觉到的强度是 1;外界刺激强度为 2 时,人类感觉到的强度为 2;外界刺激强度为 3 时,人类感觉到的强度就为 3。实际上,人类的感知与外界的实际刺激之间是一种非线性的关系。从韦伯定律的式子中我们可以发现,当原刺激越大时,由于比例关系,差别阈值也就越大。也就是说,当外界的刺激强度越大时,想让人类能够感知到外界的刺激发生了变化的所需变化量,就越大。所以人类的感知从1 到 2 再到 3 时,所需的变化量是倍数关系的增加,可能外界刺激强度为 1 时,人类感知为 1,刺激强度为 3 时,人类感知为 2,刺激强度为 7 时,人类感知到的强度才为 3。

举一个现实中的例子就能够更好的理解。在一个黑暗的房间中,点燃一根蜡烛,将让人感知到巨大的亮度改变。而如果房间中有 99 根蜡烛,再点燃一根蜡烛人类可能根本感觉不到有所差别。所以,如果想要让人类感知到同样程度的亮度改变,所需的蜡烛数量可能是成百上千根才行。

1.2 Gamma 校正

根据韦伯定律,我们能够知道人类对于外界刺激的感知是非线性的,人眼对于亮度的感知由此可知,也是非线性的。下面,我们首先介绍人眼对于亮度的实际感受情况,然后以此为基础,介绍 Gamma 校正的相关内容。
在这里插入图片描述
经过一系列实验的测定,人们发现人类能够感知到的连续亮度谱如上图所示。也就是说,如果比上图更加精细,则没有必要,因为人眼无法识别;而如果比上图粗糙,则人眼能够感觉到间断。接着,将最左边纯黑编号为“ 0.0”,最右端纯白编号为“ 1.0”,中间定义为中灰“ 0.5”。这就形成了人眼的亮度谱。

但是,上图中的亮度在自然界中并不是同样成比例的,例如图中的中灰,对应自然界中的亮度是纯白的 20%。

将人眼的亮度谱与自然界中的实际亮度进行建模,就可以得到下面的图像:
在这里插入图片描述
从上图可以发现,纵轴上是人眼感受的均匀灰阶,而横轴是自然界中线性增长的亮度,它们之间是一种非线性映射的关系。在低亮度区域,人眼的敏感性较高,因此自然界中很小的亮度范围,都能够被人眼察觉;在高亮度范围,人眼的敏感度较低,因此自然界中的大范围的亮度变化,在人眼感知上却并不大。通过经验以及实验,人们发现可以使用幂函数来拟合这种非线性的映射,用公式表示如下:
Font metrics not found for font: .
其中 X 是使用 0-1 之间的实数表示的输入亮度, Y 是使用 0-1 之间实数表示的输出亮度, 𝛾为认为设定的参数,不同的𝛾选择会产生不同的效果。这种通过调整𝛾的取值,来调整输入输出亮度之间映射关系的方式,我们称之为 gamma 校正。
在这里插入图片描述
根据𝛾取值的不同,通过上图,我们能够发现 gamma 校正的不同效果:

  1. 当𝛾 < 1时,曲线上凸,输出值大于输入值。
  2. 当𝛾 = 1时,曲线为一条直线,输入与输出相等,不进行校正
  3. 当𝛾 > 1时,曲线下凸,输出值小于输入值

1.3 Gamma 校正与图像显示

在传统的图像获取与显示过程中,将自然界中的真实场景转换为屏幕上显示出来的图像,往往需要经过两个主要的步骤:第一个是通过摄影设备,将外界的光信息转换为三维数组存储起来,也就是存储为图像信息,这一过程如前所述,需要通过光电转换函数进行非线性映射;第二个是通过显示设备,将图像信息转换为屏幕输出的光信息,同样,这一过程需要电光转换函数的参与。在这两个阶段中,光电转换函数与电光转换函数实际上都是幂函数,也就是都进行 Gamma 校正。
在这里插入图片描述
首先,因为图像中的每个像素的取值在 0-255 之间,因此先进行归一化,将 0-255这 256 个数线性映射到 0-1 之间。

接着,在图像获取阶段,摄像机中会使用一种 encoding gamma 函数进行 gamma 校正,这里的 gamma 值小于 1。自然界中的亮度,首先在摄像机中进行归一化,映射到 0-1 之间,接着,将这个经过了归一化的值输入 encoding gamma 函数中。最后将 encodinggamma 函数的输出值与 0-255 的像素值归一化结果进行比较,就能得到这个像素点的像素值。

显示阶段的 gamma 校正通常使用一种 display gamma 函数来完成,这里的 gamma 值大于 1。 显示设备读取像素值后,进行归一化,然后将归一化结果输入 display gamma函数中。将输出的值对应的自然光线进行输出,就是显示阶段做的工作。

理论上来说,上述两个阶段的 gamma 值乘积应该为 1。因为两个 gamma 校正实际上做的是恰好相反的操作,一个是将自然光线存储为数字信息,另一个是将数字信息转换为光线。而为了使自然中的光线与显示设备产生的光线一致,显然这里的 gamma 值的乘积需要为 1。但是,在实际操作中,这两个 gamma 值的乘积并不为 1,原因有一下两点:

  1. 对于传统显示设备来说,屏幕能够显示的亮度范围与颜色范围与实际情况相差好几个数量级;

  2. 在真实的场景中,原始的场景填充了观察者的所有视野,而显示设备的亮度往往只局限在一个被周围环境包围的屏幕上。

这两个差别使得感知对比度相较于原始场景明显下降了。

为了中和这种现象,所以我们需要的保证显示的亮度结果在感知上和原始场景是一致的两个 gamma 的乘积并不是 1,而是经过试验得到的其他值。在电影院这种漆黑的环境中,这个乘积为 1.5,在明亮的室内这个值为 1.125。 个人电脑使用的一个标准叫sRGB,它使用的 encoding gamma 大约是 0.45(也就是 1/2.2)。这个值就是为了配合display gamma 为 2.5 的设备工作的。这样, end-to-end gamma 就是 0.45 * 2.5 =1.125 了。

1.4 Gamma 校正的意义

按照上一节所说,两段 gamma 校正实际上是一对逆过程,一个将光信息转化为数字信息,一个将数字信息转化为光信息。因此,按照常理来说,并不需要进行这样复杂的非线性映射,只需要将归一化之后的光信息记录下来,然后再让显示设备进行输出即可。从这种角度来说, gamma 校正是一个不必要的操作。

这是一个合理的质疑。问题的根源是在存储的位宽上,如果存储位宽足够大,显然可以使用上述归一化记录方式进行处理,但是,实际生产与应用中的位宽是有限的。在传统的图像存储与显示标准中,一个像素点有三个通道,而每个通道只有 8 位。这也就意味着,图像的灰阶极其有限,与真实世界相比,差了很多个数量级。因此,想要在有限的灰阶上表现出近似于自然界的亮度,就需要对灰阶的分配进行设计,这也是 Gamma校正的意义。
在这里插入图片描述
由于人类感知的“中灰”,在实际的自然光线中对应于白光的 20%的亮度。因此,如果完全按照自然光线的数值进行灰度处理,纯黑到中灰这一段在人类感知中占到一半的灰度,将只能由 20%的灰阶进行表示,而剩下的一半会有 80%的灰阶进行表示,这显然是不合理的。 Gamma 校正就可以解决这个问题。

在实际操作中,中灰对应的自然光线,显然会被映射为 0.5 的取值,也就对应 128这一灰阶。这样的结果就是高亮度与低亮度部分分别占有一半的灰阶,这就会使得显示的图像的直观感受更接近于现实。

因此, gamma 校正实际上是用来解决显示设备亮度灰阶不足的问题的。如果将图像存储的编码位宽扩大到 32 位,也就是能完全包含自然界亮度范围的时候,自然就不再需要进行 gamma 校正了,这种情况下,只需要将自然光线的亮度值记录下来,然后对应输出即可。但是,使用 32 位位宽来存储图像过于“奢侈”,因此 gamma 校正在实际生活中起到了广泛而巨大的作用。

2、HDR 技术中的光电转换

前面提到的传统的 Gamma 校正方式,是针对传统 CRT 显示设备与 LDR 图像设计的,对应的标准是 BT.1886 标准。而 BT.1886 标准规定的的峰值亮度仅为 100nits,它与传统 CRT 设备的显示能力相一致。目前的大多数显示设备的显示能力早已突破 100nits 的限制,普通的消费级显示器的亮度一般在 200nits 至 500nits,商业级的监视器亮度可以达到 1000nits 至 2000nits,实验室级别的监视器甚至可以高达 4000nits 至20000nits。

同时,现代数字运动图像传感器能够捕获动态范围到 80dB 或者比特深度达到 14bit的线性视频信号。 由于实践和历史原因,大多数专业视频制作系统都采用 10 比特,而消费者级别的视频和计算机图形学通常采用 8 比特。在 HDR 技术中,通常采用 10 比特或 12 比特。

由于显示设备的亮度范围得到了提升,同时图像的编码深度也得到了提升,因此传统的 Gamma 校正显然已经不适用于 HDR 技术的光电转换过程。如果强行使用 Gamma 校正进行转换,会在图像与视频中出现明显的分块与分环的情况。

针对上述问题,为了提高显示效果,不同的组织采用了不同的方式进行处理,其中最重要的两种光电转换曲线是: PQ 曲线以及 HLG 曲线。

2.1 PQ 曲线

为了研究人类视觉系统及喜好,杜比进行了一系列的用户实验,以确定新的 HDR 技术标准以及新的光电转换曲线。

第一个实验室确定新的显示亮度范围。该实验使用一个 2K 的数字电影放映机投影到一个 21 英寸的单色 LCD 面板上,形成一个高对比度的显示器,峰值亮度可以达到20000 尼特,最小黑电平可以达到 0.004 尼特,色域为 DCI-P3。测试序列共有三个序列集:一个用于检测黑色电平,一个用于检测白色电平,还有一个用于检测高亮电平。实验中观察者处在光线较暗的影院环境下(暗室),位于距离显示设备屏幕高度三倍远的地方。实验结果如下所示,根据实验结果,在亮度范围为 0-10000nits 时,各种信号水平的用户喜好度均超过了 84%,因此 Dolby 提出的 PQ EOTF 曲线决定使用 0-10000nits作为支持的显示亮度范围。
在这里插入图片描述
由于 8 比特的位深限制了使用更宽广的动态范围,因此需要定义新的 OETF 曲线为视频制作和传输提供更高的动态范围。 Dolby 实验室提出了新的 OETF 曲线,称为 PQ 曲线,目前已经被标准化为 SMPTE ST 2084。

Dolby 提出的 PQ EOTF 的表达式为,它基于 Barten 的 CSF 模型:
Y = L ( V 1 / m − c 1 c 2 − c 3 V 1 / m ) 1 ⁄ 𝑛 Y = L \bigg(\frac{V^{1/m} - c_1}{c_2 - c_3V^{1/m}}\bigg)^{1⁄𝑛} Y=L(c2c3V1/mV1/mc1)1⁄n
其中:
0 ≤ V ≤ 1 , L = 1000 , m = 2523 4096 × 128 = 78.8438 , 𝑛 = 2610 4096 × ( 1 / 4 ) = 0.1593 , 0 ≤ V ≤ 1, L = 1000, m = \frac{2523}{4096}× 128 = 78.8438, 𝑛 = \frac{2610}{4096}×(1/4)= 0.1593, 0V1L=1000m=40962523×128=78.8438n=40962610×(1/4)=0.1593

c 1 = 3424 / 4096 = 0.8359 , c 2 = 2413 / 4096 × 32 = 18.8516 , c 3 = 2392 / 4096 × 32 = 18.6875 。 c_1 = 3424/4096= 0.8359, c_2 = 2413/4096 × 32 = 18.8516, c_3 = 2392/4096 × 32 = 18.6875。 c1=3424/4096=0.8359c2=2413/4096×32=18.8516c3=2392/4096×32=18.6875
在这里插入图片描述

2.1.1 PQ 曲线的优势

Barten Ramp 作为一般图像的共同阈值,大量实验结果显示, Barten 斜坡曲线规定了不同亮度水平下,不出现可见量化误差的最小对比度步长的上界,也就是允许的最大量化步长。当在这条曲线之下时,编码图像可以实现平滑渐变;而当超过这个临界值,也就是在 Barten 斜坡曲线之上时,会出现人眼可察觉的条带效应等量化失真( banding/contouring)。 Barten Ramp 曲线表明,在低亮度区域,人眼的视觉灵明度较低,因此可以分配较少的比特数进行编码;而人眼的视觉灵敏度在高亮度区域非常灵敏,因此编码时需要分配更多的比特数。新的 EOTF 的选择不仅要满足上述特征,还要尽可能的拟合或者贴近 Barten 曲线。这样不仅能够满足人眼视觉特性需求,不会造成量化失真,同时也能够有效利用有限的编码比特数。
在这里插入图片描述
为使用尽可能少的比特数表示尽可能多的信息,必须要确定不造成量化误差的最小比特数。如下图所示,当使用量化精度为 10 比特,值为 2.4 的 gamma 曲线时,其低于10nits 的亮度区域均处于 Barten Ramp 曲线之上,会造成轻微的量化误差,并且其峰值亮度最大只能为 100nits。因此,新的 EOTF 曲线不能使用 10 比特的 gamma 曲线。当使用量化精度为 15nits 的 gamma 曲线时,整条曲线都在 Barten Ramp 之下,不会造成量化误差,峰值亮度可以达到 10000nits。但需要面临的另一个问题是, 15 比特的 gamma曲线会浪费太多的比特数在高亮度区域。除此之外,目前的视频传输和处理系统绝大多数都是基于 10 比特进行操作的,采用 15bitsde gamma 编码不仅带来传输压力,还需要对市场上大部分的视频传输和制作系统进行更新换代。
在这里插入图片描述
如下图所示,如果使用 13 比特的对数曲线时,与 gamma 曲线相反,又会在低亮度区域分配更多的比特数。同时可以看到,用于 HDR 图片存储的 16 比特的 OpenEXR 对应曲线在 Barten 阈值之下,不会造成可见量化误差。当采用 12 比特的 PQ 曲线作为新的EOTF 时,由下图可以看出,其很好地拟合了 Barten Ramp,因此不仅符合了人眼视觉系统地特性,而且充分的利用有限的比特数进行高效合理的编码。
在这里插入图片描述
下边两张图展示了不同亮度水平下分别采用 Gamma 曲线和 PQ EOTF 进行编码的编码字的利用率。纵轴使用百分比作为度量, 100%对应的峰值亮度为 10000nits。 Gamma2.4编码在图像亮度范围为 0-0.01nits 的部分几乎不分配编码字,图像阴影部分分配的编码字也非常少。并且,随着峰值亮度的增加,其在大多数物体所在的亮度范围内以及白光范围内分配的编码字逐渐减少;而使用 PQ 编码,不同峰值亮度水平下很暗的部分( 0-0.01nits)以及阴影部分的细节处都分配了一定的编码字。但是在峰值亮度变化时,亮度范围 1-1000nits 的范围分配的编码字差值很小。
在这里插入图片描述
在这里插入图片描述

2.2 HLG 曲线

另外一种与 PQ 相对应的适用于 HDR 的光电转换函数是 HLG( Hybrid-Log Gamma)。与 PQ 的不同在于, PQ 是一种绝对的映射,亮度值与编码是绝对的一一映射,而 HLG 是一种相对的映射。

为了增加高光部分的对比度,通常会对 Rec.709 OETF 曲线加入一个拐点,如下图所示。当拐点位置在 85%的参考白电平,最大曝光可以改善为原来的 5 倍。这种方法虽然改变了最大曝光,但是由于拐点位置并没有标准化过,而且对相机调校的要求很高,所以这种方法实现起来还是有一定困难。另外, Rec.709 标准中的 gamma 曲线主要是使噪声在不同的亮度水平下表现一致。
在这里插入图片描述
根据韦伯定律,图像中的高亮区域的感知量化的阈值基本是恒定的一个常数。因此,在图像的高亮区域使用对数形式的 OETF 能够利用给定的比特数获得最大的动态范围。而在图像的暗部,如德维斯-罗斯定律所定义的,当亮度逐渐变小时,可见量化误差会越来越明显。因此,低亮度区域部分的 OETF 可以考虑使用 gamma 曲线,因为 gamma 曲线非常符合德维斯-罗斯定律的约束。综上所述,当动态范围增加时,一个理想的 OETF应当由两部分组成:低光部分使用传统的 gamma 曲线;而高亮区域使用对数形式的 OETF。这样就形成了新的可用于更高动态范围的 HLG OETF 曲线
W e b e r F r a c t i o n = 1 N ⋅ L d L d V = γ N 1 L 1 / γ Weber Fraction = \frac{1}{N \cdot L} \frac{dL}{dV} = \frac{\gamma}{N} \frac{1}{L^{1/\gamma}} WeberFraction=NL1dVdL=NγL1/γ1
其中 L 为显示亮度, V 为信号电平值, N 为亮化水平(对于 8 比特的视频 N=220;对于 10 比特的视频 N=876)

HLG(Hybrid-Log Gamma),是由 BBC 和 NHK 提出的一种新的标准,规定了输入端的光电转换特性( OETF) ——Hybrid-Log Gamma 曲线,目前已被日本电波产业协会( ARIB)采纳为 ARIB STD-B67 标准。 HLG 曲线分为两段,在线性光亮度较小时,其与 SDR 的 gamma曲线重合,当亮度较高时,其曲线呈现对数特性。在输出端, EOTF 定义为加入了系统gamma 和亮度调整的 OETF 的逆。支持 10 比特量化和最大亮度 4000nit。

HLG 曲线的数学表达式如下:
E ′ = { r E , 0 ≤ E ≤ 1 a ln ⁡ ( E − b ) + c , 1 < E E^{\prime} = \begin{cases} r\sqrt{E},0 \leq E \leq 1 \\ a\ln{(E-b)} + c, 1 < E \end{cases} E={rE ,0E1aln(Eb)+c,1<E
其中, E’是电平信号, E 表征光照强度。变量 r 为参考电平,一般取 0.5。 a、 b、c 均为常量,其值分别为 0.17883277、 0.28466892、 55991073。
在这里插入图片描述
在拍摄端使用 HLG OETF,那么在显示端需要定义对应的 EOTF 才能更好的再现场景。为了很好的适配 HLG OETF,相应的 EOTF 应当满足以下条件:( 1)保留创作者的渲染意图;( 2)能够适配从黑电平到峰值白电平的整个动态范围;( 3)减小量化误差。因此,相应的 EOTF 定义为:
Y d = α Y s γ + β Y_d = \alpha {Y_s}^{\gamma} + \beta Yd=αYsγ+β

其中Yd 为显示面板的显示亮度; Ys 表示场景的相对亮度; r 表示系统 gamma 值,取值大小与观看环境相关;而参数 阿尔法和 贝塔 分别控制对比度和亮度,它们共同控制着显示的峰值亮度和黑电平水平。
E = { ( E ′ / r ) 2 , 0 ≤ E ′ ≤ r e x p ( ( E ′ − c ) / a ) + b , r < E ′ E = \begin{cases} (E^{\prime}/r)^2 , 0 \leq E^{\prime} \leq r \\ exp((E^{\prime}-c)/a)+b,r < E^{\prime} \end{cases} E={(E/r)2,0Erexp((Ec)/a)+b,r<E
根据 HLG OETF 的数学模型可以看出, HLG 的低亮度部分与传统的 gamma 曲线完全吻合,因此可以不经过任何处理直接显示在现有的 SDR 显示器上,其 10 比特的信号传输制作过程与现有的 SDR 系统完美兼容。另外,由于不需要元数据,因此信号是独立于显示器的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/9708.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux完结

学习视频笔记均来自B站UP主" 泷羽sec",如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 【linux基础之病毒编写&#xff08;完结&#xff09;】 https://www.bilibili.com/video…

苹果iOS 18.4将允许欧盟地区的iPhone用户设置默认地图和翻译应用

在一份最新文件中&#xff0c;苹果概述了其为遵守欧盟数字市场法案所采取的措施&#xff0c;并透露将允许欧盟的 iPhone 和 iPad 用户从"2025 年春季"开始设置默认导航和翻译应用程序。 这一时间表表明&#xff0c;这些选项将在 iOS 18.4 和 iPadOS 18.4 中添加&…

鸿蒙进阶篇-type、typeof、类

“在科技的浪潮中&#xff0c;鸿蒙操作系统宛如一颗璀璨的新星&#xff0c;引领着创新的方向。作为鸿蒙开天组&#xff0c;今天我们将一同踏上鸿蒙基础的探索之旅&#xff0c;为您揭开这一神奇系统的神秘面纱。” 各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今…

鸿蒙进阶篇-剩余和展开、简单和复杂类型

“在科技的浪潮中&#xff0c;鸿蒙操作系统宛如一颗璀璨的新星&#xff0c;引领着创新的方向。作为鸿蒙开天组&#xff0c;今天我们将一同踏上鸿蒙基础的探索之旅&#xff0c;为您揭开这一神奇系统的神秘面纱。” 各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今…

爬虫学习4

from threading import Thread#创建任务 def func(name):for i in range(100):print(name,i)if __name__ __main__:#创建线程t1 Thread(targetfunc,args("1"))t2 Thread(targetfunc, args("2"))t1.start()t2.start()print("我是诛仙剑")from …

【LeetCode:3242. 设计相邻元素求和服务 + 模拟 + 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

[产品管理-62]:不同角度看产品的生命周期

目录 一、产品的生命周期与不确定性 创意生成 原型开发 规模化和商业化 - 上市前的准备 产品上市 二、产品的生命周期与组合管理 三、产品生命周期变得越来越短的原因 1. 科技进步 2. 消费需求变化 》 物质需求的单一化到精神需求的易变化 3. 市场竞争加剧 4. 全球化…

WPS单元格重复值提示设置

选中要检查的所有的单元格 设置提示效果 当出现单元格值重复时&#xff0c;重复的单元格就会自动变化 要修改或删除&#xff0c;点击

华为eNSP:AAA认证(pap和chap)telnet/ssh

pap模式 一、拓扑图 二、配置过程 1、这个型号路由器是不带串口的&#xff0c;所以需要添加串口板卡 2、加入串行接口卡槽 右击路由&#xff0c;选择设置&#xff0c;将串口板卡拖动到路由器扩展槽&#xff0c;并开机即可 3、认证方路由器配置 [r8]aaa #进入aaa认证 [r8-a…

CSS网格布局:打造现代网页设计的强大工具

在现代网页设计中&#xff0c;布局的灵活性和美观性至关重要。随着需求的不断变化&#xff0c;CSS 网格布局&#xff08;CSS Grid Layout&#xff09;作为一种新兴的布局方式&#xff0c;正在成为开发者们的首选工具。它能够轻松创建复杂的网格结构&#xff0c;使得网页设计更加…

SpringBoot助力的共享汽车业务优化系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

算法 -插入排序

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【算法】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 文章目录 &#x1f4a1;插入排序1. ➡️ 直接插入排序&#x1f5bc;️示意图&#x1f4d6;简介&#x1f4a1;实现思路&#x1f4bb;代码实现&#x1f4dd;具体示例 2. ⬆️…

2025中国(郑州)国际台球产业博览会(壹肆柒·台球展)3月

随着体育经济的迅猛发展&#xff0c;台球作为一项受欢迎的竞技运动&#xff0c;近年来在中国逐渐崭露头角。为促进台球产业的发展&#xff0c;推动各类相关产品及服务的交流与合作&#xff0c;从而实现共享共赢&#xff0c;2025年中国&#xff08;郑州&#xff09;国际台球产业…

开放式耳机如何选择?五款千万不能错过的开放式耳机机型推荐

在这里我先做一个行业的知识科普&#xff0c;目前市场上有超过80%的品牌&#xff0c;都是非专业的开放式耳机品牌&#xff0c;也就是跨界大牌或者网红品牌&#xff0c;这些品牌由于没有开放式声学的技术沉淀&#xff0c;在制作开放式耳机的时候&#xff0c;通常都是直接套用传统…

VulkanTutorial(17`Loading models, Mipmaps)

Loading models 我们将使用tinyobjloader库从OBJ文件加载顶点和索引&#xff0c;它速度快&#xff0c;易于集成&#xff0c;因为它是一个像stb_image一样的单一文件库 因为我们没有学习光照&#xff0c;使用照明烘焙的纹理 在程序中添加两个新的配置变量来定义模型和纹理路径&…

DAO模式的理解

目录 DAO模式 含义 DAO模式 的理解 分层思维 分层含义 分层目的 dao层 dao包&#xff08;对接的是操作数据库的接口&#xff09; dao包下lmpl 包&#xff08;dao包中接口的实现类&#xff09; 补充 1 你创建的实体类需要和数据库中建的表一一对应。 总结 DAO模式 含义…

大健康零售行业帮助中心的构建与客户服务优化

在大健康零售行业&#xff0c;客户服务的质量直接影响着企业的品牌形象和市场竞争力。随着数字化转型的推进&#xff0c;构建一个高效、智能的帮助中心成为了提升客户服务和满意度的关键。本文将分析大健康零售行业如何通过构建帮助中心来优化客户服务&#xff0c;并提升客户满…

【JWT】Asp.Net Core中JWT刷新Token解决方案

Asp.Net Core中JWT刷新Token解决方案 前言方案一:当我们操作某个需要token作为请求头的接口时,返回的数据错误error.response.status === 401,说明我们的token已经过期了。方案二:实现用户无感知的刷新token值,我们希望当响应返回的数据是401身份过期时,响应阻拦器自动帮我…

Error: error:0308010C:digital envelope routines::unsupported

目录 1、前言2、详细问题3、解决方法3.1、nodejs版本降级3.2、针对openssl设置环境变量3.3、在package.json命令里添加设置 4、效果 1、前言 2024年11月某一天&#xff0c;升级了电脑上的nodejs版本&#xff1a;v22.11.0。 本来运行正常的Vue项目&#xff0c;在运行时突然就报…

win10@win10 配置openssh服务

1.下载离线包&#xff1a;https://github.com/PowerShell/Win32-OpenSSH/releases 2.然后管理员打开powershell&#xff0c;cd到这个安装包放置的目录中来&#xff0c;输入以下命令&#xff1a;powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 此时要注意pow…