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

Color correction for tone mapping

Abstract

色调映射算法提供了复杂的方法,将真实世界的亮度范围映射到输出介质的亮度范围,但它们经常导致颜色外观的变化。在本研究中,我们进行了一系列的主观外观匹配实验,以测量对比度压缩和增强后图像色彩的变化。结果表明,对比度压缩与匹配颜色外观的饱和度校正之间的关系是非线性的,对比度变化小需要较小的色彩校正。我们证明了这种关系不能完全用颜色外观模型来解释。我们提出了色彩校正公式,可用于现有的色调映射算法。我们扩展了现有的全局和局部色调映射算子,并证明了所提出的颜色校正公式可以在色调尺度处理后保持原始图像的颜色。

1. Introduction

虽然许多色调映射算法提供了复杂的方法,将真实世界的亮度范围映射到输出介质的亮度范围,但它们常常会导致颜色外观的变化。最常见的色调操作是亮度压缩,它通常会使较暗的色调看起来更亮,并扭曲对比度关系。图1B显示了HDR图像压缩亮度对比度0.3因子后,同时保留像素色度值(根据CIE xy色坐标)。与图1A中未压缩的图像(曝光调整+ sRGB显示模式)相比,颜色明显过饱和。如果不是压缩亮度,而是压缩所有三个颜色通道(红、绿、蓝),则得到的图像是欠饱和的,如图1C所示。为了解决这个问题,色调映射算法通常采用特别的颜色去饱和步骤,这可以改善结果,但不能保证颜色外观保持不变,需要手动调整每个色调映射图像的参数(图1D)。

这项工作的目标是量化和模型的颜色饱和度,需要在色调映射后进行校正。我们不依赖于现有外观模型的预测,而是进行主观的外观匹配,在其中我们测量必要的颜色校正。给定亮度域的色调曲线,我们希望找到新的色度值,使结果图像与没有色调修改的图像的外观紧密匹配。然而,不同于其他方法[PFFG98,PTYG00,FJ04,AR06,KJF07],我们不希望补偿显示和真实场景之间的观看条件的差异,例如由于绝对亮度级别的差异而适应亮度、颜色适应(白平衡)或颜色外观效果。经过颜色校正的图像应保持参考图像的外观,在同一显示器上显示未修改的对比度。对于HDR场景,参考图像是考虑显示功能(显示模型)后显示的最佳曝光。我们也没有研究颜色偏好方面,尽管我们知道在重现时更喜欢饱和的颜色[FdB97]。这些假设对于隔离不同的效应是必要的,否则会使实验结果模糊不清。

本文提供了以下贡献:

•在第3节中分析了色调映射中常用的颜色校正方法的颜色再现特性。

•我们在实验研究中测量必要的颜色校正,并在第4节推导出一个颜色校正模型。

•我们在第5节中论证了颜色外观模型不能完全解释实验测量的颜色校正。

•在另一个实验中,我们测量了CIELAB颜色空间中的颜色校正[Col86](第6节),然后在第7节讨论了该方法的局限性。

•局部和全局色调映射算子被扩展到包括第8节中建议的颜色校正。

2. Related work

在有限色域设备上的颜色重现已经在色域映射的背景下得到了很好的研究[ML01, GSS∗07]。但是,色域映射与我们的问题有三个主要的不同:首先,色域映射试图同时修改亮度(lightness)和色度(chrominance)来保持颜色的外观。在我们的例子中,亮度修改(色调曲线)是由色调映射算子给出的,我们只允许修改色度。其次,色域映射主要考虑将颜色从一个设备映射到具有可比动态范围的另一个设备。因此,色域映射中使用的对比度压缩要比色调映射中使用的对比度压缩小得多,后者需要将现实世界中的动态范围压缩到输出设备上可用的范围的一小部分。最后,色域映射作用于已经被摄像机映射的显示引用图像,而色调映射作用于场景引用图像。

颜色外观研究已经揭示了影响我们颜色感知的许多因素。均匀色块的明显色度随亮度(Hunt效应)[Hun52]、图像大小[NB06]和环绕物颜色[BM97]而变化。异色斑块的视明度或亮度取决于色度(Helmholtz&Kohlrausch效应)[Nay97],视色度取决于亮度(Abney效应)[ANK87]。Calabria和Fairchild [CF03]发现复杂图像的感知对比度随着色度的降低而降低,二者呈s形关系。s形关系不适用于消色度为20%的图像,消色度为20%的图像对比度更高。

色调映射中的颜色复制的大部分工作都集中在保持真实世界场景的颜色外观上,因为它是由人眼在计算机屏幕上感知的[PFFG98,PTYG00,FJ04,AR06,KJF07]。Pattanaik等人引入了一种复杂的人类颜色视觉模型,将杆状和锥状视觉、对手颜色处理以及亮度和对比度信号的增益控制结合在一起[PFFG98]。后来的工作[PTYG00]侧重于时间适应方面,采用光感受器模型代替亮度增益控制,并采用基于Hunt模型的简化外观模型。早期的iCAM颜色外观模型[FJ04]通过对LMS颜色空间中的三个颜色通道应用空间变化的幂函数来实现对比度压缩。较新的iCAM06模型[KJF07]将幂函数替换为光感受器响应模型,并分别考虑暗位和光信号。它还解释了由于史蒂文斯效应[SS63]和由于巴特尔森-布里曼效应[BB67]而适应亮度水平而感知的对比度变化,并补偿了由于亨特效应而增加的亮度[Hun52]。虽然这些论文描述了解决颜色外观问题的自包含的色调映射器,Akyüz和Reinhard [AR06]提出了一个颜色处理框架,该框架可以适应于任何保持颜色通道之间比例的色调映射。他们的方法使用前向和后向的CIECAM ' 02颜色外观模型[MFH∗02]对HDR图像进行变换,然后用色调映射算子的结果替换生成的亮度图。

上面的色调映射操作符解释了真实场景和显示观看条件之间不同亮度和色彩适应的结果的颜色差异。然而,这些方法都没有考虑到色调映射曲线本身引起的颜色外观的变化,而这正是我们研究的主题。

3. Color correction in tone mapping

Schlick [Sch94]介绍了色调映射中颜色处理的常用方法,即保持颜色比例:

其中C表示其中一个颜色通道(红、绿、蓝),L为像素亮度,in/out下标表示色调映射前后的像素。所有的值都是在线性化(非伽玛校正)颜色空间中给出的。后来的色调映射论文采用了更强的对比度压缩,观察到结果图像过饱和,如图1B所示,并提出了一个专门的公式[TT99]:

s控制颜色饱和度。上述方程的缺点是,对于和不同于灰色的颜色,它会改变得到的亮度,即kRRout + kGGout + kBBout6Lout,其中是用于计算给定颜色空间的亮度的线性因子。这个公式可以将高饱和度像素的亮度改变3倍,这是一个不受欢迎的副作用。因此,我们在本文中引入并检验另一个公式,该公式保留了亮度,只涉及彩色和相应的消色差颜色之间的线性插值:

公式2和公式3的颜色校正公式的差异在CIECAM02色相模型预测的色度、色度和亮度的图上表现得最好,如图2所示。由式2得到的非线性公式的颜色校正因子s的变化,不仅改变了色度,也改变了颜色的明度。公式3中的亮度保持公式可以防止这种亮度的变化,但会导致色相的变化更强烈,尤其是红色和蓝色。因此,选择一个公式而不是另一个公式,可能取决于对特定应用来说,保持色调或亮度是否更重要。

色彩处理的另一种方法是将相同的色调映射曲线应用于所有三个颜色通道。但可以看出,当颜色校正因子s等于对比度压缩因子c时,这等价于方程2,色调曲线有如下形式:

其中b是亮度(曝光)调整,使最大显示亮度归一化(峰值显示亮度的Lout = 1)。

如果色调曲线是任意函数,在s = c下将相同的色调曲线应用于所有颜色通道并不等同于方程2,但结果非常接近。在使用局部色调映射算子的情况下,通常不能同时修改三个颜色通道。因此,这些算子必须依赖于颜色转移公式,如方程2或3。假设s = c,或者同时改变三个颜色通道,对于较小的对比度压缩效果很好,但是对于较小的c,会导致图像颜色褪色,如图1C所示。

上面的公式2和公式3提供了一种方便的方法来校正RGB颜色空间中的颜色,但它们需要手动调整参数s。这项工作的主要目标是在给定特定亮度的色调曲线时估计参数s。

本文使用的RGB颜色空间假设sRGB色基色和D65白点。RGB三色值与亮度(非伽玛校正)是线性的。本文和补充材料中包含的所有结果都转换到sRGB颜色空间(γ= 2.2)。

4. Experiment 1: color matching for tone mapping

我们进行了一项主观研究,以调查需要多少颜色校正来补偿对比度压缩。

4.1. Participants

实验分为两部分,分别测试非线性(方程2)和亮度保持(方程3)的颜色校正公式。8名参与者(3女5男)完成了第一部分,10名参与者(2女8男)完成了第二部分。他们的年龄在23 - 38岁之间,平均32岁。他们的视力正常或矫正到正常。6名参与者在图像处理方面有基本的专业知识,其余4名参与者对计算机图形学没有经验。他们中没有人知道这个实验的技术细节。所有的参与者都有正确的颜色视觉,只有三个人拥有这两个部分。

4.2. Stimuli

我们在实验中使用了8张自然图像(如图3所示)。它们包含了广泛的色彩色调和饱和度,出现在人脸、特写、室内和室外场景的照片中。为了测试场景和输出参考图像,我们使用了4张HDR和4张LDR图像。

图像显示在26英寸的LCD显示屏上(NEC SpectraView 2690,屏幕尺寸55x33.5 cm,分辨率1920x1200像素,最小和最大亮度分别为0.7和300 cd/m2)。我们使用NEC 2690的原色和白点设置,接近sRGB模型。使用美能达CS-100A色度计仔细测量红色、绿色和蓝色通道的显示响应,然后在显示模型和反向显示模型中用作查找表。实验在昏暗的照明(60勒克斯)下进行。

图4演示了LDR和HDR图像在显示之前的图像处理。利用公式4对图像对比度进行修正,对比度因子c的取值范围为0.1 ~ 1.6。颜色饱和度因子由参与者调整,并使用公式2或公式3对颜色进行校正。对LDR图像应用逆显示模型后,在线性域进行对比度压缩和颜色校正。将单个HDR图像的曝光调整到在显示器上显示未修改HDR图像的最佳水平。

对比度压缩和色彩校正会导致c值小、s值高时亮度增加,从而导致色域外色彩,以及由于色彩裁剪引起的色调变化而导致的色彩主观比较问题。为了避免色域失调,我们决定将输入图像的亮度降低到显示器峰值亮度的33% (100 cd/m2),这也使峰值亮度更接近办公室显示器的典型设置。

4.3. Experimental procedure

图6显示了实验的屏幕截图。参与者被要求调整左侧图像的整体色彩,使其看起来尽可能接近参考图像,但稍微明显地低一些。同样地,正确的图像应该被调整,使其看起来稍微但明显地更加丰富多彩。然后,假设匹配的色彩是左右目标图像的均值。正如我们在一项初步研究中证实的那样,与直接颜色匹配图像进行相同数量的比较相比,这种方法在受试者之间和受试者内部提供的变化更少。色彩差异难以区分,直接匹配结果是一个随机点的分布,具有较大的标准误差。通过测量±1的显著差异(JND)并取平均值,我们得到一个更有可能接近分布平均值的点。

对于每个颜色校正公式,参与者在总共48次测试中匹配图像的颜色,8张图像和6个压缩级别(c=0.1, 0.35, 0.6, 0.85, 1.35,和1.6)各1次。整个实验过程对一个参与者来说大约需要30分钟。在实际实验前,每个被试进行了一个小的试点实验,在这个实验中,被试被解释如何解读“整体图像色彩”。

4.4. Results

图5显示了两个颜色校正公式的平均结果。图中显示,对于较小的对比度修改(斜率<1),对比度校正为中等,而对于较强的对比度压缩,对比度校正则强得多。非线性色彩校正公式(左图)的插值线不过s(1) =1点,这可能是由于测量误差和该点附近缺乏数据所致。

为了检查其他因素的统计意义,我们进行了几个方差分析(ANOVA)检验。我们发现LDR和HDR图像之间没有统计学差异(2 LDR/HDR × 6对比度水平× 2对比度校正公式的检验F(1,863) = 0.1),说明这种关系适用于输出参考和场景参考图像。性别差异有显著性(F(1,863) = 12.13;2(性别)× 6(对比)× 2(公式)检验P < 0.01,女性选择饱和度略低的图像。我们还发现了成像专业知识的影响(F(1,863) = 9.53;2(专家)× 6(对比)× 2(公式)检验P < 0.01。

5. Color appearance models and color correction

实验1的结果表明,理想的颜色饱和度水平与对比度压缩之间存在复杂的非线性关系。颜色外观模型试图预测视觉系统中的非线性,并提供一组感知属性预测器,如色彩、色度和饱和度,它们应该与我们的颜色感知线性相关。在这一节中,我们测试外观模型是否可以解释我们在实验中发现的非线性关系。我们想要找到对比度压缩后应该保留哪些感知属性,以达到与原始图像的最佳颜色匹配。

我们选择不同色相、饱和度和明度的6种基本色,对参考白进行压缩对比度(c∈[0,2])对其进行扭曲,并利用实验中模型给出的颜色校正因子s(式5),用两个颜色校正公式(式2和3)对其进行处理。得到的颜色被转换到色相、明度、色度、饱和度、色彩等感知属性预测因子空间中,使用流行的外观模型之一:CIELAB、CIELUV [Col86]、CIECAM02 [MFH∗02]和iCAM [FJ04]。

从所有的感知属性来看,CIECAM02饱和度在对比度变化中是最一致的,并被选为图7中的图表。其余的图可以在补充材料中找到。尽管CIECAM02饱和度是最一致的,图7中的实线表明了CIECAM02饱和度与对比度压缩之间的非线性关系。因此,当对比度被压缩时,保留CIECAM02饱和度或根据简单的线性规则改变它不能纠正颜色。这表明,任何被考虑的外观模型中的知觉属性都不能解释我们的实验数据。

6. Experiment 2: Color correction in CIELAB

在第3节中,我们讨论了简单的颜色校正公式在RGB颜色空间中的局限性,这些公式要么保留亮度但扭曲色调,要么更好的是,保留色调但扭曲亮度。也许如果在感知属性空间中,沿着色度轴或色彩轴(沿着图7中色度/色度图上的半径)对颜色进行校正,颜色校正会更简单,得到的图像会与原始图像更好地匹配。我们在下面的实验中检验这个假设。

CIELAB和CIELUV模型都可以很容易地适应我们的颜色校正方案。当CIELAB或CIELUV色度沿色度轴保持或修改时,亮度可以使用对比度改变公式(公式4)进行修改。CIELAB颜色空间中的颜色校正框架如图8所示。在CIECAM02中找不到类似的颜色校正程序。由于在CIECAM02中建模了色度和亮度之间的交互作用,因此在改变亮度之后,不可能有颜色坐标能够产生完全相同的色彩和色调值。我们只能找到原始色彩的最小二乘近似,但对于任何实际应用来说,这将是非常昂贵的计算。因此,我们将我们的考虑限制在CIELAB的色彩空间。

实验2的目标和过程与实验1相同,但这次我们将被试人数限制为4人,并在CIELAB色彩空间中进行色彩校正,如图8所示。实验结果如图9所示。对于小的对比度修改(0.6 < c < 1.6),颜色校正几乎是不必要的(sLAB≈1)。因此,在CIELAB空间中保留色度对于小的对比度变化应该产生理想的结果。这与色域映射中的常见做法是一致的,在色域映射中,颜色操作通常在亮度/色度空间中执行。然而,对于强对比压缩(c < 0.6),颜色需要去饱和,类似于RGB颜色校正公式。

7. Are color appearance models suitable for tone mapping?

实验2的结果表明,CIELAB色度预测器可以更好地保持对比度修改后的颜色外观,因此在RGB颜色空间中是一种有吸引力的颜色校正方法(公式2和3)。然而,CIELAB颜色空间以及CIECAM02或CIELUV不能很容易地用于高动态范围场景。主要的困难是准确估计参考白色,无论是在色度和绝对亮度。图11显示了不同的参考白色选择导致色调映射图像中完全不同的颜色。在上面一行,我们假设参考白色适合背景,在下面一行,我们假设参考白色适合前景。像素级参考白的自动估计是一个困难的问题,虽然存在一些方法[KMS05],但它们可能导致不可靠的估计。与此同时,CIELAB的预测完全失败,因为参考白色的估计很差。因此,在CIELAB色彩空间中实现全自动色彩校正是目前仅适用于低动态范围场景的可行方案。

另一个重要的观察是,大多数外观模型的目标与我们实验的目标和大多数色调映射算子的目标是不同的。外观模型试图预测感知到的颜色,以解释视觉系统的所有限制,如在低光下的颜色视力差。在我们的研究和大多数色调映射算子中,目标是保存照片的颜色,这是在最佳相机曝光设置下可以预期的颜色。这些摄影色彩在弱光下不会变淡,更接近特定物体的记忆色彩[BT02]。

8. Application in tone mapping

在本节中,我们将演示对比度压缩和期望的颜色校正之间的关系,这是我们在主观研究中发现的,可以用来扩展全局和局部色调映射算子。

可能最常见的音调操作是使用幂函数进行对比度压缩和增强(公式4)。图12显示了我们用于验证的一个大型测试集的示例(完整的测试集可以在补充材料中找到)。图中包含了经过对比压缩和增强后的图像,这些图像的颜色都经过了色彩校正公式(公式2和公式3)的校正,色彩校正系数要么假设等于对比压缩系数(s = c),要么由我们的实验模型(公式5)计算得到。假设s = c对于很多图像都得到了满意的结果。然而,这个例子展示了用于对比度增强的过度饱和图像,以及用于对比度压缩的过度冲刷图像。通过模型(第1行、第2行和第4列)进行颜色校正的对比度压缩图像可能看起来有点不自然,因为饱和度过高,但我们的颜色校正的目标是与参考图像的最佳匹配,而不是最自然的外观或偏好。另一个重要的观察结果是,亮度保持公式(右边)经常导致红色的色调变化,如第3节所讨论的和图7所示。

基于双边滤波的色调映射[DD02]可以很容易地扩展到包括提出的颜色校正公式。该算子均匀地降低了基础层的对比度(低通+边缘),同时保留了细节(高频)。对数域的压缩量相当于对比压缩因子c。原算法不做任何去饱和,采用式1。当使用默认参数运行操作符时,这会产生良好的结果,但在强烈对比压缩时,会导致颜色过饱和,如图13所示。我们利用非线性色彩校正公式(式2)和实验模型(式5)对过饱和色彩进行校正。

9. Discussion

本文的考虑似乎只局限于全局音调映射算子,它只影响低频率。我们进行了一项试点研究,其中我们调查了局部操作的影响,不尖锐掩蔽,对图像的色彩。图15显示了增强(左)或减少(右)细节(上)和全局对比度(下)的图像。图像清晰地表明锐化对感知到的图像色彩几乎没有影响。由于锐化通常是局部色调映射算子的主要组成部分,我们的颜色校正方法也适用于这些算子。

为了更好地隔离对比压缩对图像色彩的影响,所有实验的设计都是为了尽量减少超出显示色域的颜色剪切。我们没有使用显示的全动态范围来为高饱和颜色保留边缘,我们也没有考虑非常强的对比度增强。我们还允许在峰值亮度为100 cd/m2的sRGB显示器上不能使用的颜色。我们进行了一项初步研究,在该研究中,如果我们将颜色剪切到有限的sRGB色域,或如果我们使用我们显示的所有可用色域,在测量中没有观察到任何差异。然而,进一步的研究应该调查颜色裁剪对必要的对比度校正的影响,特别是对于大对比度增强。

10. Conclusions and Future Work

色调映射不可避免地会导致图像失真,影响色调和色彩的再现。在这项工作中,我们分析如何可以减少这种颜色失真。

本文的主要贡献是两个模型预测理想的颜色校正由于色调映射对比度失真。该模型采用了简单且计算费用低廉的颜色校正公式,适用于全局色调映射算子,并对局部色调映射算子有较好的实用效果。我们发现非线性色彩校正公式会对亮度产生强烈的畸变,但与亮度保持公式相比,引入的色调畸变较少,因此更适合于色调映射。我们对颜色外观模型进行了实验,这种模型可能会产生较少的色调和色度失真,但由于参考白估计和不同的渲染意图的问题,它不太适合高动态范围的图像。

我们的结果表明,图像的色彩受整体图像对比度的影响,定义为对数-对数曲线(伽马)上的色调曲线的斜率,而不受锐化的影响。然而,对于在音调曲线上引入强不连续的局部音调映射算子来说,这种整体对比是很难定义的。需要进一步的研究来隔离一组影响局部色调映射操作后色彩的因素。

相关文章:

Color correction for tone mapping

Abstract色调映射算法提供了复杂的方法&#xff0c;将真实世界的亮度范围映射到输出介质的亮度范围&#xff0c;但它们经常导致颜色外观的变化。在本研究中&#xff0c;我们进行了一系列的主观外观匹配实验&#xff0c;以测量对比度压缩和增强后图像色彩的变化。结果表明&#…...

JavaScript-XHR-深入理解

JavaScript-XHR-深入理解1. XHR(Asynchronous JavaScript And XML)初始1.1. xhr request demo1.2. status of XHRHttpRequest1.3. send synchronous request by xhr1.4. onload监听数据加载完成1.5. http status code1.6. get/post request with josn/form/urlcoded1.7. encaps…...

mathtype7.0最新版安装下载及使用教程

MathType是一款专业的数学公式编辑器&#xff0c;理科生专用的必备工具&#xff0c;可应用于教育教学、科研机构、工程学、论文写作、期刊排版、编辑理科试卷等领域。2014年11月&#xff0c;Design Science将MathType升级到MathType 6.9版本。在苏州苏杰思网络有限公司与Design…...

响应状态码

✨作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 一、状态码大类 状态码分类说明1xx响应中——临时状态码&#xff0c;表示请求已经接受&#xff0c;告诉客户端应该继续请求或者如果…...

第六章.卷积神经网络(CNN)—CNN的实现(搭建手写数字识别的CNN)

第六章.卷积神经网络(CNN) 6.2 CNN的实现(搭建手写数字识别的CNN) 1.网络构成 2.代码实现 import pickle import matplotlib.pyplot as plt import numpy as np import sys, ossys.path.append(os.pardir)from dataset.mnist import load_mnist from collections import Order…...

【go】defer底层原理

defer的作用 defer声明的函数在当前函数return之后执行&#xff0c;通常用来做资源、连接的关闭和缓存的清除等。 A defer statement pushes a function call onto a list. The list of saved calls is executed after the surrounding function returns. Defer is commonly u…...

TypeScript 学习笔记

最近在学 ts 顺便记录一下自己的学习进度&#xff0c;以及一些知识点的记录&#xff0c;可能不会太详细&#xff0c;主要是用来巩固和复习的&#xff0c;会持续更新 前言 想法 首先我自己想说一下自己在学ts之前&#xff0c;对ts的一个想法和印象&#xff0c;在我学习之前&a…...

【C++】map和set的使用

map和set一、set1.1 set的介绍1.2 set的使用1.2.1 set的构造1.2.2 set的迭代器1.2.3 set的修改1.2.3.1 insert && find && erase1.2.3.2 count1.3 multiset二、map2.1 map的介绍2.2 map的使用2.2.1 map的修改2.2.1.1 insert2.2.1.2 统计次数2.3 multimap一、se…...

微电影广告具有哪些特点?

微电影广告是广告主投资的&#xff0c;以微电影为形式载体&#xff0c;以新媒体为主要传播载体&#xff0c;综合运用影视创作手法拍摄的集故事性、艺术性和商业性于一体的广告。它凭借精彩的电影语言和强大的明星效应多渠道联动传播&#xff0c;润物细无声地渗透和传递着商品信…...

Android RxJava框架源码解析(四)

目录一、观察者Observer创建过程二、被观察者Observable创建过程三、subscribe订阅过程四、map操作符五、线程切换原理简单示例1&#xff1a; private Disposable mDisposable; Observable.create(new ObservableOnSubscribe<String>() {Overridepublic void subscribe(…...

Linux信号-进程退出状态码

当进程因收到信号被终止执行退出后&#xff0c;父进程可以通过wait或waitpid得到它的exit code。进程被各信号终止的退出状态码总结如下&#xff1a;信号编号信号名称信号描述默认处理方式Exit code1SIGHUP挂起终止12SIGINT终端中断终止23SIGQUIT终端退出终止、coredump1314SIG…...

springcloud+vue实现图书管理系统

一、前言&#xff1a; 今天我们来分享一下一个简单的图书管理系统 我们知道图书馆系统可以有两个系统&#xff0c;一个是管理员管理图书的系统&#xff0c;管理员可以&#xff08;1&#xff09;查找某一本图书情况、&#xff08;2&#xff09;增加新的图书、&#xff08;3&…...

GEE学习笔记 六十:GEE中生成GIF动画

生成GIF动画这个是GEE新增加的功能之一&#xff0c;这一篇文章我会简单介绍一下如何使用GEE来制作GIF动画。 相关API如下&#xff1a; 参数含义&#xff1a; params&#xff1a;设置GIF动画显示参数&#xff0c;详细的参数可以参考ee.data.getMapId() callback&#xff1a;回调…...

react中的useEffect

是函数组件中执行的副作用&#xff0c;副作用就是指每次组件更新都会执行的函数&#xff0c;可以用来取代生命周期。 1. 基本用法 import { useEffect } from "react"; useEffect(()>{console.log(副作用); });2. 副作用分为需要清除的和不需要清除 假如设置…...

故障安全(Crash-Safe) 复制

二进制日志记录是故障安全的:MySQL 仅记录完成的事件或事务使用 sync-binlog 提高安全性默认值是1&#xff0c;最安全的&#xff0c;操作系统在每次事务后写入文件将svnc-binloq 设置为0&#xff0c;当操作系统根据其内部规则写入文件的同时服务器崩溃时性能最好但事务丢失的可…...

Spring aop之针对注解

前言 接触过Spring的都知道&#xff0c;aop是其中重要的特性之一。笔者在开发做项目中&#xff0c;aop更多地是要和注解搭配&#xff1a;在某些方法上加上自定义注解&#xff0c;然后要对这些方法进行增强(很少用execution指定&#xff0c;哪些包下的哪些方法要增强)。那这时就…...

【JavaScript速成之路】JavaScript数据类型转换

&#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录前言数据类型转换1&#xff0c;转换为字符串型1.1&#xff0c;利用“”拼接转换成…...

21-绑定自定义事件

绑定自定义事件 利用自定义事件获取子组件的值 父组件给子组件绑定一个自定义事件&#xff0c;实际上是绑定到了子组件的实例对象vc上&#xff1a; <!-- 自定义myEvent事件 --> <Student v-on:myEventgetStudentName/>在父组件中编写getStudentName的实现&#…...

【Mysql】触发器

【Mysql】触发器 文章目录【Mysql】触发器1. 触发器1.1 介绍1.2 语法1.2.1 创建触发器1.2.2 查看触发器1.2.3 删除触发器1.2.4 案例1. 触发器 1.1 介绍 触发器是与表有关的数据库对象&#xff0c;指在insert、update、delete之前(BEFORE)或之后(AFTER)&#xff0c;触发并执行…...

CODESYS开发教程11-库管理器

今天继续我们的小白教程&#xff0c;老鸟就不要在这浪费时间了&#x1f60a;。 前面一期我们介绍了CODESYS的文件读写函数库SysFile。大家可能发现了&#xff0c;在CODESYS的开发中实际上是离不开各种库的使用&#xff0c;其中包括系统库、第三方库以及用户自己开发的库。实际…...

OCRmyPDF技术解构:3大创新点与制造业/法律服务效能优化实践

OCRmyPDF技术解构&#xff1a;3大创新点与制造业/法律服务效能优化实践 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF 一、技术内核&…...

OBS多平台直播同步解决方案:从配置到优化的完整指南

OBS多平台直播同步解决方案&#xff1a;从配置到优化的完整指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 在当今内容创作领域&#xff0c;多平台同步直播已成为扩大受众覆盖的关键…...

小白也能玩转GLM-4V-9B:免费开源多模态模型部署全流程

小白也能玩转GLM-4V-9B&#xff1a;免费开源多模态模型部署全流程 1. 环境准备与快速部署 1.1 硬件要求与系统配置 GLM-4V-9B作为90亿参数的多模态模型&#xff0c;对硬件有一定要求&#xff1a; GPU推荐&#xff1a;至少24GB显存的显卡&#xff08;如RTX 4090&#xff09;…...

Mojo嵌入Python项目的4种架构模式(含GIL绕过实测数据+内存安全验证报告)

第一章&#xff1a;Mojo嵌入Python项目的4种架构模式&#xff08;含GIL绕过实测数据内存安全验证报告&#xff09;Mojo 作为兼具 Python 兼容性与系统级性能的新兴语言&#xff0c;其嵌入 Python 项目的能力已通过多种生产就绪架构得到验证。以下四种主流集成模式均在 macOS Ve…...

C++ 中this的秘密

class Test {public:void test() {test1();}void test1() {i = 10...

ComputeSharp未来展望:GPU计算在.NET生态中的发展路线图

ComputeSharp未来展望&#xff1a;GPU计算在.NET生态中的发展路线图 【免费下载链接】ComputeSharp A .NET library to run C# code in parallel on the GPU through DX12, D2D1, and dynamically generated HLSL compute and pixel shaders, with the goal of making GPU comp…...

Isaac Sim 4.1.0 国内网络环境下的三种下载与安装提速方案(含离线包处理)

Isaac Sim 4.1.0 国内网络环境下的高效安装指南 对于国内开发者而言&#xff0c;安装NVIDIA Isaac Sim往往面临下载速度缓慢、连接不稳定等问题。本文将提供三种经过验证的解决方案&#xff0c;帮助您快速完成安装。 1. 直链下载加速方案 通过分析Omniverse Launcher的日志文件…...

SpringBoot微服务架构:集成AnythingtoRealCharacters2511实现分布式转换服务

SpringBoot微服务架构&#xff1a;集成AnythingtoRealCharacters2511实现分布式转换服务 1. 引言 想象一下&#xff0c;一个电商平台每天需要处理成千上万的动漫风格商品图片&#xff0c;想要将它们转换为真实人像风格来提升商品吸引力。传统方案要么依赖人工设计效率低下&am…...

CAN总线数字信号特性与工程应用解析

1. CAN总线信号本质解析CAN总线采用数字信号传输机制&#xff0c;这是由其底层电气特性和协议设计决定的。在物理层上&#xff0c;CAN总线使用差分电压信号&#xff08;CAN_H和CAN_L&#xff09;表示逻辑状态&#xff1a;当CAN_H电压高于CAN_L约1.5V时表示显性位&#xff08;逻…...

Contriever论文精读:手把手拆解对比学习与MoCo如何‘炼成’通用文本嵌入

Contriever技术解析&#xff1a;对比学习与MoCo如何重塑文本嵌入模型 在自然语言处理领域&#xff0c;文本嵌入模型一直是核心基础技术之一。传统的有监督训练方法虽然在某些特定领域表现出色&#xff0c;但当面临跨领域应用时&#xff0c;其性能往往大幅下降。Facebook Resear…...