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

融合一致性与差异性约束的光场深度估计

摘要:光场图像深度估计是光场三维重建、目标检测、跟踪等应用中十分关键的技术。虽然光场图像的重聚焦特性为深度估计提供了非常有用的信息,但是在处理遮挡区域、边缘区域、噪声干扰等情况时,光场图像深度估计仍然存在很大的挑战。因此,提出了一种基于极平面图(Epipolarplaneimage,EPI)斜线像素一致性和极平面图区域差异性的深度估计算法用于解决遮挡和噪声问题。EPI斜线像素的一致性采用旋转线性算子(Spinninglinearoperator,SLO)的颜色熵度量,能够提高深度图边缘的准确性以及抗噪能力;EPI区域的差异性采用旋转平行四边形算子(Spinningparallelogramoperator,SPO)的卡方χ2度量,能够提高深度图深度渐变区域的准确性,并使用置信度加权的方法将两种度量进行融合,可以减少遮挡区域和噪声的干扰。另外,充分利用像素邻域的颜色相似性,使用引导保边滤波器和马尔科夫随机(Markovrandomfield,MRF)全局优化策略进行后处理,进一步减少深度图的边缘错误,得到遮挡边缘准确的深度图。在HCI光场数据集上进行了实验,并与经典光场深度估计算法进行了对比,结果表明该算法在主观质量和客观指标两方面都有明显提升。

关键词:光场图像;深度估计;EPI;像素一致性

0 引言

4D光场(LF)图像[1]是一种同时记录场景中的强度信息和光线方向的图像。早些时期,人们通过密集相机阵列获取的4D光场图像,但这种方法成本较高耗时较长,图像基线较大。近年来,随着商用光场相机Lytro[2]和Raytrix[3]的出现,可以更快速便捷的得到基线较小的4D光场图像。4D光场图像与传统2D图像相比有着更加广泛的应用,光场深度估计作为光场图像处理中的关键应用,可以使用数字重聚焦[4]的结果进行处理,是图像超分辨率、三维重建、3D点云[5]中的关键技术。

深度估计是指通过图像中的信息估计对应场景的深度信息,传统图像的深度估计通常通过立体匹配的思想计算深度,而光场图像拥有不同视角的光线方向信息,可以通过光场图像的不同特性计算场景深度。目前,光场深度估计方法一般分为以下几类:基于子孔径图像的多视角立体匹配算法、基于重聚焦图像和角度块的算法、基于极平面图(Epipolar plane image,EPI)[6]的算法。

EPI作为光场图像特有的一种可视化方法,同时包含空间域与角度域的信息,有利于解决深度估计的遮挡问题。文中以EPI斜线像素一致性作为EPI视差图的判断准则,建立了一种基于旋转线性算子(Spinning linear operator,SLO)的代价函数,并利用RGB颜色熵的代价函数对斜线像素的一致性进行衡量。同时,充分利用SPO的优点,采用基于代价成本置信度的融合方法,将SLO的代价成本与SPO代价成本进行加权融合。最后,利用引导保边缘滤波器和全局优化方法,进一步提高深度图准确性。提出的算法与传统光场深度估计算法在HCI数据集上进行了实验验证和比较,结果表明在边缘处理和噪声鲁棒性方面,文中算法表现出更好的性能。

文中的主要贡献包括:

  1. 提出了一种基于颜色熵和旋转线性算子的EPI斜线像素一致性代价函数用于深度估计。该方法可以准确的计算遮挡边缘,并对噪声鲁棒性较强;

(2)引入了一种置信度加权的融合方法,将EPI斜线像素一致性代价函数和基于SPO的EPI区域差异进行代价函数结合,形成代价互补。之后使用引导滤波和基于马尔科夫随机场(Markovrandomfield,MRF)的全局优化策略进行后处理,得到的深度图在HCI数据集上的综合表现优于目前经典算法。

光场深度估计研究现状

传统的光场深度估计方法根据光场可视化方法的不同,主要包括基于多视角立体匹配的算法、基于重聚焦图像和角度块的算法、基于EPI的算法。

基于多视角立体匹配的算法基本思想来自于传统2D立体匹配,通过光场子孔径图像中相邻视角图像的视差关系,进行深度估计。Jeon[7]提出了一种基于相移的亚像素多视角匹配算法用于光场深度估计。Chen[8]设计了一种基于双边统计的光场立体匹配算法。Zhang[9]提出了一种基于微透镜匹配的光场信息恢复框架,可用于深度估计。Fan[10]提出了一种基于光场结构特性优化的多视点匹配光场深度估计算法。然而基于多视角立体匹配的算法与传统的立体匹配算法类似,对遮挡区域的处理效果不好,很难处理多遮挡的场景,对噪声也比较敏感。

基于重聚焦和角度块的深度估计算法的主要思想是利用光场图像可以先拍照再聚焦的特性,获得全聚焦图像和焦堆栈,然后匹配焦堆栈角块和子孔径图像角块寻求正确的聚焦度,最后根据聚焦度与深度的对应关系求得准确的深度。这类方法利用了光场图像的重聚焦特性,能有效的处理遮挡和噪声问题。Tao[11−12]提出了一种以融合离焦线索和匹配线索作为代价函数的算法,并在之后加以阴影约束优化代价,以获得正确的深度图。Wang[13]提出了一种基于角度块与空间块相似性的算法,对遮挡的鲁棒性十分出色,但初始结果处理较差,依赖于后处理和优化。Willem[14−15]提出了一种基于角度熵的深度估计算法,并采用了全局优化的模型,得到了很好的效果。Guo[16]设计了一种基于多方向角相干的深度估计算法,根据角相干方向与空间中遮挡方向相同的原理处理遮挡问题。Sheng[17]设计了一种基于角度块特性的积分引导滤波器,可以应用到其他光场深度估计框架中处理遮挡问题。Chen[18]提出了一种基于超像素正则化的深度估计算法,在处理部分遮挡场景时展现出杰出的效果。然而这类算法比较依赖于焦堆栈角块中的图像信息,当焦堆栈角块信息不足,例如处理完全遮挡场景和深度变化不明显区域时,表现较差。

EPI作为光场图像的一种特殊的可视化表示方法,最早由Bolles[6]提出。基于EPI的光场深度估计将光场图像的表示形式从普通的子孔径图像转换为EPI,从而在一张图上同时获取空间坐标和角度坐标,将视差具体为EPI斜线斜率。图1为EPI的获取过程两种表示方法,上半为平面表示,下半为3D立体表示。由于这类方法不是直接从图像空间关系入手,会减少遮挡物体的影响。Wanner[19−20]提出的结构张量代价在早期研究中被广泛应用,其泛用性和基本性能很强,但也十分依赖于高分辨率光场图像,对遮挡和噪声处理的效果也不够优秀。Kim[21]提出的从细到粗的深度估计框架,以边缘点为支撑点做对应EPI线的一致性检测,以其深度值做深度扩散得到最终结果。Huang[22]在Kim的基础上更改了代价,提出了三种线索结合的代价度量斜线一致性,提高了边缘效果。Zhang[23]设计了一种旋转平行四边形算子用于EPI斜线左右区域的差异比较,以此差异为依据计算深度图。Sheng[24]在Zhang的基础上提出了基于多方向EPI的算法,进一步处理了遮挡问题。Li[25]提出了一种基于重聚焦和EPI相结合的深度估计算法,通过正确聚焦的EPI线垂直的原理计算深度,对遮挡处理较好。Schilling[26]设计了一种基于EPI线遮挡的优化算法,对SPO算法在某些边缘处处理不好的缺点进行了优化,达到了优秀的效果。其中,SPO算法是目前基于EPI的光场深度估计算法中性能最好的一种算法,其思想是从EPI斜线斜率与深度对应关系出发,通过EPI斜线两侧区域差异性作为EPI斜线选择标准,利用直方图卡方距离度量差异性,得到深度图。该算法对大多遮挡和噪声处理效果较好,但基本忽略了EPI斜线上的像素一致性,所以对某些遮挡边缘区域会产生错误估计。

基于SLO和SPO的光场深度估计

2.1 基于EPI的深度图估计

4D光场图像可表示为:L(x,y,u,v),其中x、y为光场的空间坐标,u、v为光场的角度坐标。EPI图像是一种包含空间域和角度域信息的光场表示形式。因此,当固定光场图像的y和v,改变x和u时,就可以得到以x和u为长和宽的横向EPI,表示为:

Uy;v(x;u)=L(x;y*;u;v*)     (1)

同样,当假定光场图像的x和u固定,只改变y和v可以产生纵向的EPI,表示为:

Ux;u(y;v)=L(x*;y;u*;v)     (2)

视差是真实世界中的一点在不同视角的子孔径图像中位置的差异。在EPI中,视差可以通过同一个像素点组成的EPI斜线倾斜角度来表示。如图2所示,以点P为中心包含一组旋转的EPI斜线,当倾斜角为θ的斜线L1为正确的EPI斜线(所对应的斜率为该点的深度),其深度z就可以计算为:

图片

式中:f 为相机焦距;∆u为相邻视角图像的度量距离;∆x为同一个点在两个相邻不同视角中的视差值;tanθ表示EPI中相同像素组成的斜线斜率。通过公式(3)求解真实深度的问题就被转变成了求解角θ值的问题。

如图2中L1所示,组成这条斜线的每个点的像素值基本一致,所以其斜线一致性相比于错误的EPI斜线L2、L3来说更大。另一方面,由L1分割的两侧区域λ1和λ2的像素分布可以看出,相比于错误EPI斜线L2、L3两侧区域,其区域差异性更大。

因此,文中从EPI斜线斜率的角度出发,通过EPI斜线像素一致性性和EPI斜线两侧区域差异性两个方面的约束来确定正确的EPI斜线,提出基于SLO的EPI斜线一致性代价函数和基于SPO的EPI区域差异性代价函数来估计光场的深度图。如图3所示为整体流程:首先对子孔径图像进行剪切得到EPI,然后分别通过基于SLO的EPI斜线一致性代价函数和基于SPO的EPI区域差异性代价函数得到两种代价成本,再通过自适应置信度权值融合两种代价,并置信度融合横纵EPI代价,最后采用引导滤波器和MAP-MRF进行后处理,得到最终深度图。

图片

2.2基于SLO的EPI斜线一致性代价函数

为了得到EPI斜线,文中建立了新型的旋转线性算子:

图片

式中:R(x*,θN)表示对应θN的假设EPI斜线;x*为中心视角中的所求像素点的水平坐标;E(x*+ΔxN,u)表示在不同的角度坐标下,假设EPI线上的像素在图像中的坐标信息;tanθN表示假定EPI斜线斜率。

特别地,为了解决半像素问题,文中采用了线性插值的方法来计算EPI斜线上每一个像素的假定像素值:

图片

式中:I(x,u)表示E(x*+ΔxN,u)坐标位置的假定像素值;I1和I2表示该假定像素左右相邻的整像素值;w1和w2表示该像素位置到左右两点的水平距离权值,根据该式,距离该像素近的整像素占比大,距离该像素远的整像素占比小,可以求得假定的EPI斜线像素值。

得到斜线像素值之后,需要对这组像素值进行一致性衡量,由于信息熵这类代价函数对比于直接通过像素值进行计算的代价函数,考虑的是EPI斜线的像素复杂程度,当有噪声干扰使某个像素值变化较大时,不会对整体斜线的代价函数结果产生过大的影响,对噪声鲁棒性更强。因此文中设计了基于颜色熵的EPI斜线像素一致性代价函数:

图片

式中:h(x,u)表示I(x,u)的像素值概率。

由于颜色熵基本舍弃了像素值本身的信息,只考虑了概率分布,对某些特殊像素分布会产生错误衡量。为了考虑像素值信息,文中通过计算EPI斜线上点的像素值与中心视角像素值差值的均值,设计了一种基于颜色相似性的自适应权重,并加以高斯核,从两方面约束了EPI斜线上的像素一致性,增加代价函数的鲁棒性。表示为:

图片

式中:Ce(P,θN)表示最终的单通道熵代价函数;Cei(P,θN)为公式(7)计算得到的初始单通道熵代价函数;w(P,θN)表示假定EPI斜线上所有点与目标像素点的颜色相似性权重;N为像素个数;SW表示EPI斜线像素与中心视角像素的差异,具体表示为所有像素与中心视角像素的像素值差值平方和。当假定EPI斜线上像素点差异性越小,其熵值和颜色差异就越小,初始颜色熵成本值和权重值就越大,最终代价值就越大,达到了双线索互补的效果。

最后充分利用颜色空间信息,通过RGB三通道均值求得最终的颜色熵代价函数:

图片

2.3基于SPO的EPI区域差异性代价函数

基于SPO的EPI区域差异性代价函数主要通过计算EPI斜线两侧区域直方图卡方距离作为差异度量,并依据像素点到直方图的距离加以不同的直方图权重,得到最终的代价函数。

为了计算SPO算法的代价成本,首先设计算子和相应权重:

图片

式中:dθ(i,j)=i—(xr+(j—ur)·tanθ)为EPI同一行中所选取的深度测量点与其左右邻域中某一点的水平距离,(xr+(j—ur)·tanθ)为假定EPI斜线与该点交点的水平位置;α为衡量SPO宽度的尺度参数;c为正则化系数。实验中,一般取SPO的大小为u*3α,即高为角度分辨率u,宽为尺度参数α的三倍。

之后,通过直方图的卡方距离【27】衡量假定EPI斜线左右领域的颜色差异:

图片

式中:aθ(i)和bθ(i)为两侧区域的颜色直方图。如果χ2的值很大,即表示两侧区域差异大,所以选取的EPI斜线就越正确。按照该原理,可以得到代价成本最大的EPI斜线斜率,从而计算正确深度值。特别的,该算法利用卷积的计算方法计算χ2距离,提高了计算效率。最终得到了SPO算法的最终直方图卡方距离代价函数:

图片

SLO代价函数和SPO代价函数都值分别考虑了对应的EPI斜线衡量特性,如图4为HCI数据集box的一张横向EPI对的代价成本分布,SPO求得最大标签为68,SLO求得最大标签为69,GT标签值为68.5317。可以看出两种代价函数都能分别计算出正确的EPI斜线。

图片

然而,由于两种代价函数都只考虑了一个方面,所以各有缺点。基于SLO的斜线一致性代价函数在深度渐变区域表现较差,会检测出错误边缘。而基于SLO的区域差异性代价函数在边缘判定和噪声鲁棒性方面表现较差,边缘不够准确噪点过多。如图5所示,一张横向EPI上SPO和SLO两种代价函数分别会在某些点计算正确或计算错误。而整体效果如图6所示,boxes、dino图像用SPO代价函数与SLO代价函数直接WTA选择和进行不做后处理的结果比较,从结果可以看出SPO代价函数在边缘处有模糊现象,而物体内部噪点也较多;而SLO代价函数在深度渐变区域分层较为严重,会检测出错误的边缘情况。从结果可以看出,SPO算法和SLO算法各有利弊。

图片

因此,文中提出了一种基于置信度权值的代价融合算法,将两种代价有机的结合在一起,从而使两种算法的形成互补,得到一种新的代价,弥补了两种算法的不足。

2.4代价融合

首先,文中设计了一种基于代价成本最大值和平均值比值的置信度权值,当代价函数计算出的代价成本属于正确EPI斜线时,其分布应乘单峰形状,所以按照以下公式,其权值就会更大,从而更容易被最后的MRF函数选择:

图片

式中:Dmax=maxDD(P;θ),D-=∑θD(P;θ)。

之后通过置信度权值将两种代价结合:

图片

特别的,EPI可以有横向和纵向两种选取方式如公式(1)、(2),所以可以将两个方向的EPI代价相结合,解决不同视角下的遮挡问题:

图片

然后对得到的新代价成本采用引导图为中心子孔径的引导滤波器[28]进行保边滤波,得到了初步优化的整体代价成本,文中公式物理量具体含义如表1所示。

图片

2.5基于MAP-MRF的全局优化策略

得到初步优化的整体代价成本后,需要对每个深度标签的对应代价成本进行选择,传统方法采用赢者通吃(Winnertakeall,WTA)的算法,直接通过代价值选择出最优结果。文中采用了一种基于马尔科夫随机场框架[29]的全局优化模型用于代价优化和选择,定义为:

图片

式中:p为被测量深度的像素点;α(p)为该像素点的深度标签;Eunary为马尔科夫最小能量函数的成本项,用于衡量深度标签给予该像素的能量大小;N(p)为像素p的邻域像素;Ebinary为马尔科夫最小能量函数的平滑项,通过计算像素p与其邻域像素的强度一致性(forces consistency)得到。

文中提出了一种全局优化模型用于优化每个深度标签代价成本,可展开为:

图片

式中:Es(p,p(α))为基于选择平行四边形算子算法(SPO)计算得到的最终代价值;Ee(p,p(α))为基于旋转线性算子所计算得到的最终代价值;cs和ce分别为两项数据项的置信度权值,用于增加算法的鲁棒性;

cs和ce的具体数值为自适应权值,由公式(15)计算得到。

平滑项体现了图像局部空间内的平滑特性,可展开为:

图片

式中:▽I(p,q)为邻域像素p与中心像素q的强度差异;τ为截断值。将初始优化的整体代价通过MRF全局模型处理后,既能对代价进行后处理,也能通过最小能量函数选择出正确的深度标签。最终将深度标签对应的深度值映射到图中,就能够得到了文中算法的最终深度图结果。

实验比较

文中将所提出的算法在HCI[30]的公开4D光场数据集进行了实验验证,并与经典的光场深度估计算法CAE[15]、IGF[17]、LF[7]、LF_DC[12]、LF_OOC[13]、LF_PAC[16]、MBM[9]、POBR[18]、SPO[23]进行了比较。

主观质量方面,采取了深度误点图和深度细节图进行对比验证,实验结果如图7所示是图片boxes,cotton,sideboard,dino测试的误点图结果。从图中可以看出,CAE算法虽然边缘计算准确,但在深度渐变及背景区域会检测出错误的边缘,LF_DC算法处理新HCI数据集会产生模糊效应,LF_OOC算法在物体内部噪点较多无法滤除,SPO算法处理某些物体边缘较差,物体内部也会有少量噪点。文中算法误点最少,边缘和背景区域计算也基本正确,对比于其他传统算法基本达到了最好的效果。

图片

如图8所示的boxes细节部分,文中提出的算法相比于其他算法在盒子的边缘区域处理的更好,对塑料框的上沿也处理的很好;dino细节部分的橱柜和积木边缘也较其他算法更为清晰准确。

图片

在定量评估方面,文中采取了均方误差MSE和坏点率BP评判标准:

图片

式中:α*为p点计算出的深度;GT(p)为p点真值深度;N为像素点个数;δ是深度误差阈值,如果计算结果中的深度值与深度真值差距大于阈值则会将该像素点判定为坏点,此次选择BP>0.07作为评判标准。

定量指标上,如表2、表3所示,文中所提出的算法在所有图片的BP>0.07上,与其他算法相比达到了最佳,MSE也有两张图片达到最佳,综合效果也十分杰出。

图片

图片

结论

文中从光场极平面图入手,根据EPI斜线斜率与深度的对应关系设计了基于旋转线性算子SLO的EPI斜线像素一致性代价函数,并与基于SPO的EPI斜线两侧区域差异性代价函数置信度加权结合,得到了兼顾两种特性的融合代价函数,最后使用了引导滤波和基于MRF的全局优化的后处理方法,得到最终的深度图。并将文中的结果与经典的传统光场深度估计算法进行了比较,实验结果表明,在边缘处理和噪声鲁棒性上都有很大提升,综合效果达到最佳。

文章来源:《红外与激光工程》第 50 卷第 11 

文献作者:何泽阳,邓慧萍向森吴谨

声明:转载此文目的在于传递更多信息,仅供读者学习、交流之目的。文章版权归原作者所有,如有侵权,请联系删除。

相关文章:

融合一致性与差异性约束的光场深度估计

摘要:光场图像深度估计是光场三维重建、目标检测、跟踪等应用中十分关键的技术。虽然光场图像的重聚焦特性为深度估计提供了非常有用的信息,但是在处理遮挡区域、边缘区域、噪声干扰等情况时,光场图像深度估计仍然存在很大的挑战。因此&#…...

转运机器人可以绕障吗?

在工业物流场景中,障碍物动态分布、路径突发拥堵是常态。传统AGV依赖固定轨道或磁条,面对复杂环境时往往“束手无策”。转运机器人可以绕障吗?富唯智能用技术创新给出答案——搭载激光SLAM导航与多传感器融合技术,其转运机器人不仅…...

【Web前端开发】CSS基础

2.CSS 2.1CSS概念 CSS是一组样式设置的规则,称为层叠样式表,用于控制页面的外观样式。 使用CSS能够对网页中元素位置的排版进行像素控制,实现美化页面的效果,也能够做到页面的样式和结构分离。 2.2基本语法 通常都是&#xff…...

【物流开单专用软件】佳易王物流管理系统:常见的物流信息系统以及软件程序实操教程 #物流软件定制#物流软件开发#物流软件推荐

一、概述 软件试用版资源文件下载方法: 【进入头像主页第一篇文章最后 卡片按钮 可点击了解详细资料 或左上角本博客主页 右侧按钮了解具体资料信息】 本实例以 佳易王物流管理系统 为例说明,其他版本可参考本实例。试用版软件资源可到文章最…...

力扣-94.二叉树的中序遍历

题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 class Solution { public:void inorder(TreeNode* root, vector<int>& res){//C这里&一定要加if(!root)return;inorder(root->left,res);res.push_back(root->val);inorder(ro…...

对基于再生龙制作的Linux系统的硬盘进行扩容

背景 公司一个仪器产品是基于x86核心板开发的&#xff0c;因此制作系统镜像时用的再生龙软件&#xff0c;好处是制作的系统镜像比ARM平台那种raw image小很多&#xff0c;缺点是操作有点麻烦。 最近客户反馈512GB的SSD硬盘容量不够&#xff0c;因此公司决定升级成1TB的&#x…...

Spring Boot 注解详细解析:解锁高效开发的密钥

一、引言 Spring Boot 以其快速开发、自动配置等特性&#xff0c;成为构建 Java 应用程序的热门框架。而注解在 Spring Boot 中扮演着至关重要的角色&#xff0c;它们如同魔法指令&#xff0c;简化了配置流程&#xff0c;增强了代码的可读性与可维护性。本文将深入剖析 Spring…...

【速写】KV-cache与解码的再探讨(以束搜索实现为例)

文章目录 1 Beam Search 解码算法实现2 实现带KV Cache的Beam Search解码3 关于在带kv-cache的情况下的use_cache参数 1 Beam Search 解码算法实现 下面是一个使用PyTorch实现的beam search解码算法&#xff1a; 几个小细节&#xff1a; 束搜索可以加入length_penalty&#…...

ElasticSearch聚合操作案例

1、根据color分组统计销售数量 只执行聚合分组&#xff0c;不做复杂的聚合统计。在ES中最基础的聚合为terms&#xff0c;相当于 SQL中的count。 在ES中默认为分组数据做排序&#xff0c;使用的是doc_count数据执行降序排列。可以使用 _key元数据&#xff0c;根据分组后的字段数…...

微信小程序单双周选择排序有效果图

效果图 .wxml <view class"group-box"><label class"radio" wx:for"{{[单周,双周,全选]}}" wx:key"index" bind:tap"radioChange"data-index"{{index}}"><radio checked"{{index zcTem.ind…...

保持Word中插入图片的清晰度

大家有没有遇到这个问题&#xff0c;原本绘制的高清晰度图片&#xff0c;插入word后就变模糊了。先说原因&#xff0c;word默认启动了自动压缩图片功能&#xff0c;分享一下如何关闭这项功能&#xff0c;保持Word中插入图片的清晰度。 ①在Word文档中&#xff0c;点击左上角的…...

Matlab 基于GUI的汽车巡航模糊pid控制

1、内容简介 Matlab 225-基于GUI的汽车巡航模糊pid控制 可以交流、咨询、答疑 2、内容说明 略 依据比例—积分—微分控制的基本原理&#xff0c;我们利用MATLAB软件中SMULINK建立一个简单的PID控制器模型&#xff0c;利用这个模型在模糊控制过程中对PID控制参数进行在线的实时…...

(网络)应用层协议-HTTPS

1.HTTPS是什么&#xff1f; HTTPS是应用层的一种协议&#xff0c;是在HTTP的基础上进行了加密层的处理。 HTTP协议的内容都是按照文本的形式进行传输的&#xff0c;所以呢就很容易被别人知道传输的是什么。 我们在了解了TCP/IP之后是知道我们的数据在传输的过程中是通过路由器进…...

Browserless 快速上手

要将你提供的 HTML 模板和数据结构转换为可以用于 Browserless /pdf 接口的 JSON 请求体&#xff08;且能正确渲染为 PDF&#xff09;&#xff0c;需要满足以下几点&#xff1a; ✅ 最终目标格式&#xff08;这是能用的格式&#xff09;&#xff1a; json 复制编辑 { "h…...

JWT的介绍与在Fastapi框架中的应用

什么是JWT JWT (JSON Web Token) 是一个开放标准 ( RFC 7519 )&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间安全地以 JSON 对象的形式传输信息。由于这些信息经过数字签名&#xff0c;因此可以被验证和信任。JWT 可以使用密钥&#xff08;采用HMAC算…...

Html5新特性_js 给元素自定义属性_json 详解_浅克隆与深克隆

文章目录 1. html5新特性2.用 js 给元素自定义属性3.json3.1 json与普通对象的区别3.2 json对象与 js对象的转化 4.浅克隆和深克隆 1. html5新特性 html5中引入了新的特性&#xff08;新的标签&#xff09;&#xff0c;下面的新标签是新的结构标签&#xff0c;不过不太常用 h…...

一般纯软工程学习路径

基础 阶段一&#xff1a;基本熟悉工具链代码托管流程和配置 代码托管基本 1. 成见和管理代码库&#xff08;组&#xff09; 2. 成员配置和权限配置 代码迁移 1. 手工迁移 2. 脚本自动化迁移 代码提交 1. SSH key配置 2. 代码提交commit message 管理需求单 MR合并请求 1. 合并请…...

ES6基础特性

1.定时器 ——延时定时器 setTimeout&#xff08;function&#xff08;&#xff09;>{ },2000&#xff09; ——间隔执行定时器 setInterval&#xff08;function&#xff08;&#xff09;>{ },2000&#xff09; *定时器方法都返回唯一标识编号id&…...

SSTI记录

SSTI(Server-Side Template Injection&#xff0c;服务器段模板注入) 当前使用的一些框架&#xff0c;如python的flask、php的tp、java的spring&#xff0c;都采用成熟的MVC模式&#xff0c;用户的输入会先进入到Controller控制器&#xff0c;然后根据请求的类型和请求的指令发…...

Go语言爬虫系列教程(一) 爬虫基础入门

Go爬虫基础入门 1. 网络爬虫概念介绍 1.1 什么是网络爬虫 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网页蜘蛛、网络机器人&#xff0c;是一种按照一定规则自动抓取互联网信息的程序或脚本。其核心功能是模拟人类浏览网页的行为&#xff0c;通过发送网络…...

c/c++爬虫总结

GitHub 开源 C/C 网页爬虫探究&#xff1a;协议、实现与测试 网页爬虫&#xff0c;作为一种自动化获取网络信息的强大工具&#xff0c;在搜索引擎、数据挖掘、市场分析等领域扮演着至关重要的角色。对于希望深入理解网络工作原理和数据提取技术的 C/C 开发者&#xff0c;尤其是…...

【HarmonyOS 5】鸿蒙碰一碰分享功能开发指南

【HarmonyOS 5】鸿蒙碰一碰分享功能开发指南 一、前言 碰一碰分享的定义 在 HarmonyOS NEXT 系统中&#xff0c;华为分享推出的碰一碰分享功能&#xff0c;为用户带来了便捷高效的跨端分享体验。开发者通过简单的代码实现&#xff0c;就能调用系统 API 拉起分享卡片模板&…...

vue H5解决安卓手机软键盘弹出,页面高度被顶起

开发中安卓机上遇到的软键盘弹出导致布局问题 直接上代码_ 在这里插入代码片 <div class"container"><div class"appContainer" :style"{height:isKeyboardOpen? Heights :inherit}"><p class"name"><!-- 绑定…...

【pypi镜像源】使用devpi实现python镜像源代理(缓存加速,私有仓库,版本控制)

【pypi镜像源】使用devpi实现python镜像源代理&#xff08;缓存加速&#xff0c;私有仓库&#xff0c;版本控制&#xff09; 文章目录 1、背景与目标2、devpi-server 服务端搭建3、devpi 镜像源使用 1、背景与目标 背景1&#xff08;访问速度优化&#xff09;&#xff1a; 直…...

Spring Bean有哪几种配置方式?

大家好&#xff0c;我是锋哥。今天分享关于【Spring Bean有哪几种配置方式&#xff1f;】面试题。希望对大家有帮助&#xff1b; Spring Bean有哪几种配置方式&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Bean的配置方式主要有三种&#xff…...

无人机信号线被电磁干扰导致停机

问题描述&#xff1a; 无人机飞控和电调之间使用PWM信号控制时候&#xff0c;无人机可以正常起飞&#xff0c;但是在空中悬停的时候会出现某一个电机停机&#xff0c;经排查电调没有启动过流过压等保护&#xff0c;定位到电调和飞控之间的信号线被干扰问题。 信号线被干扰&am…...

RWA开发全解析:技术架构、合规路径与未来趋势

RWA开发全解析&#xff1a;技术架构、合规路径与未来趋势 ——2025年真实世界资产代币化的创新逻辑与实践指南 一、RWA的核心定义与爆发逻辑 1. 什么是RWA&#xff1f; RWA&#xff08;Real World Asset Tokenization&#xff09;是通过区块链技术将现实资产&#xff08;房地…...

消息队列作用及RocketMQ详解(1)

目录 1 什么是消息队列 2 为什么要使用消息队列 2.1 异步处理 2.2 解耦 2.3 削峰填谷 3. 如何选择消息队列&#xff1f; 4. RocketMQ 4.1 生产者 4.2 消费者 4.3 主题 4.4 NameSever 4.5 Broker 5. 生产者发送消息 5.1 普通消息发送 5.1.1 同步发送 5.1.2 异步发送 5…...

DICOM 网络服务实现:医学影像传输与管理的技术实践

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

恰到好处TDR

了解我的人都知道我喜欢那些从 1 到 10 到 11 的东西。对于那里的年轻人&#xff0c;参见 Spinal Tap&#xff0c;1984 年。但是有没有把它调得太高这样的事情呢&#xff1f;我收到并回答了很多关于使用时域反射仪 &#xff08;TDR&#xff09; 进行测量的问题。 我需要多少带宽…...

kubernetes服务自动伸缩-VPA

实验环境 安装好k8s集群 一、准备工作 1、部署Metrics Server VPA 依赖 Metrics Server 来获取 Pod 的资源使用数据。首先需要部署 Metrics Server 下载地址&#xff08;需要连接VPN&#xff09;&#xff1a;wget https://github.com/kubernetes-sigs/metrics-server/relea…...

stm32之BKP备份寄存器和RTC时钟

目录 1.时间戳1.1 Unix时间戳1.2 UTC/GMT1.3 时间戳转换**1.** time_t time(time_t*)**2.** struct tm* gmtime(const time_t*)**3.** struct tm* localtime(const time_t*)**4.** time_t mktime(struct tm*)**5.** char* ctime(const time_t*)**6.** char* asctime(const stru…...

OSCP - Hack The Box - Sau

主要知识点 CVE-2023-27163漏洞利用systemd提权 具体步骤 执行nmap扫描&#xff0c;可以先看一下55555端口 Nmap scan report for 10.10.11.224 Host is up (0.58s latency). Not shown: 65531 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp o…...

C++色彩博弈的史诗:红黑树

文章目录 1.红黑树的概念2.红黑树的结构3.红黑树的插入4.红黑树的删除5.红黑树与AVL树的比较6.红黑树的验证希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 红黑树是一种自平衡二叉查找树&#xff0c;每个节点都带有颜色属性&#xff0c;颜色或为…...

14.three官方示例+编辑器+AI快速学习webgl_buffergeometry_instancing_interleaved

本实例主要讲解内容 这个Three.js示例展示了如何结合使用索引几何体、GPU实例化和交错缓冲区来高效渲染大量相同模型的不同实例。通过这种技术组合&#xff0c;我们可以在保持较低内存占用的同时渲染数千个独立变换的对象。 核心技术包括&#xff1a; 索引几何体的实例化渲染…...

「华为」人形机器人赛道投资首秀!

温馨提示&#xff1a;运营团队2025年最新原创报告&#xff08;共210页&#xff09; —— 正文&#xff1a; 近日&#xff0c;【华为】完成具身智能赛道投资首秀&#xff0c;继续加码人形机器人赛道布局。 2025年3月31日&#xff0c;具身智能机器人头部创企【千寻智能&#x…...

GitHub 趋势日报 (2025年05月11日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1harry0703/MoneyPrinterTurbo利用ai大模型&#xff0c;一键生成高清短视频使用…...

MySQL查询优化100条军规

概述 以下是MySQL查询优化的关键军规&#xff0c;分为不同类别&#xff0c;帮助您系统化提升数据库性能资料已经分类整理好&#xff0c;喜欢的朋友自取&#xff1a;https://pan.quark.cn/s/f52968c518d3 一、索引优化 为WHERE、JOIN、ORDER BY字段建索引联合索引遵循最左前缀…...

WEBSTORM前端 —— 第3章:移动 Web —— 第1节:平面转换、渐变

目录 一.平面转换 二.平面转换 – 平移 ①属性 ②取值 ③技巧 三.平移实现居中效果 四.案例——双开门效果 五.平面转换 – 旋转 ①属性 ②技巧 六.平面转换 – 改变转换原点 ①属性 ②取值 七.案例-时钟 八.平面转换 – 多重转换 九.平面转换 – 缩放 ①属性 …...

1.10-数据传输格式

1.10-数据传输格式 在对网站进行渗透测试时&#xff0c;使用目标服务器规定的数据传输格式来进行 payload 测试非常关键 如果不按规定格式发送数据&#xff0c;服务器可能直接拒绝请求或返回错误响应&#xff0c;比如&#xff1a; 接口要求 JSON 格式&#xff0c;而你用的是…...

Python制作Dashboard【待续】

运行环境&#xff1a;jupyter notebook (python 3.12.7)...

物理:海市蜃楼是宇宙背景辐射吗?

宇宙背景辐射(特别是宇宙微波背景辐射,CMB)与海市蜃楼是两种完全不同的现象,它们的物理机制、来源和科学意义截然不同。以下是详细的解释: 1. 宇宙微波背景辐射(CMB)的本质 起源:CMB是大爆炸理论的关键证据之一。它形成于宇宙诞生后约38万年(即“最后散射时期”),当…...

联想 SR550 服务器,配置 RAID 5教程!

今天的任务&#xff0c;是帮客户的一台联想Lenovo thinksystem x SR550 服务器&#xff0c;配置RAID 5&#xff0c;并安装windows server 2019操作系统。那么依然是按照我的个人传统&#xff0c;顺便做一个教程&#xff0c;分享给有需要的粉丝们。 第一步&#xff0c;服务器开机…...

Docker-配置私有仓库(Harbor)

配置私有仓库&#xff08;Harbor&#xff09; 一、环境准备安装 Docker 三、安装docker-compose四、准备Harbor五、配置证书六、部署配置Harbor七、配置启动服务八、定制本地仓库九、测试本地仓库 Harbor(港湾)&#xff0c;是一个用于 存储 和 分发 Docker 镜像的企业级 Regi…...

1.5 连续性与导数

一、连续性的底层逻辑&#xff08;前因&#xff09; 为什么需要研究连续性&#xff1f; 数学家在研究函数图像时发现两类现象&#xff1a;有些函数能用一笔画完不断开&#xff08;如抛物线&#xff09;&#xff0c;有些则会出现"断崖"“跳跃"或"无底洞”&a…...

Day22打卡-复习

复习日 仔细回顾一下之前21天的内容&#xff0c;没跟上进度的同学补一下进度。 作业&#xff1a; 自行学习参考如何使用kaggle平台&#xff0c;写下使用注意点&#xff0c;并对下述比赛提交代码 泰坦尼克号人员生还预测https://www.kaggle.com/competitions/titanic/overview K…...

配置Hadoop集群环境准备

&#xff08;一&#xff09;Hadoop的运行模式 一共有三种&#xff1a; 本地运行。伪分布式完全分布式 &#xff08;二&#xff09;Hadoop的完全分布式运行 要模拟这个功能&#xff0c;我们需要做好如下的准备。 1&#xff09;准备3台客户机&#xff08;关闭防火墙、静态IP、…...

HTTPS全解析:从证书签发到TLS握手优化

HTTPS&#xff08;超文本传输安全协议 本质上是HTTP的安全版本。标准的HTTP协议仅规范了客户端与服务器之间的通信格式&#xff0c;但所有数据传输都是明文的&#xff0c;容易被中间人窃听和篡改。HTTPS通过加密传输数据解决了这一安全问题。 HTTPS可以理解为"HTTPTLS/SS…...

#将一个 .c 文件转变为可直接运行的文件过程及原理

将一个 .c 文件&#xff08;C语言源代码&#xff09;转变为可直接运行的可执行文件&#xff0c;涉及从源代码到机器码的编译和链接过程。以下是详细的过程与原理&#xff0c;分为步骤说明&#xff1a; 一、总体流程 .c 文件到可执行文件的过程通常包括以下几个阶段&#xff1a…...

【软件学习】GeneMiner 2:系统发育基因组学的一体化全流程分析工具

【软件学习】GeneMiner 2—— 系统发育基因组学的一体化全流程分析工具 文章目录 【软件学习】GeneMiner 2—— 系统发育基因组学的一体化全流程分析工具前言一、软件了解二、软件安装三、软件使用示例演示3.1 快速掌握使用方法3.2 获取质体基因组和质体基因3.3 单拷贝基因建树…...