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

【论文阅读笔记】Detecting Camouflaged Object in Frequency Domain

1.论文介绍

Detecting Camouflaged Object in Frequency Domain
基于频域的视频目标检测
2022年发表于CVPR
[Paper] [Code]

2.摘要

隐藏目标检测(COD)旨在识别完美嵌入其环境中的目标,在医学,艺术和农业等领域有各种下游应用。然而,以人眼的感知能力来识别遮挡的物体是一项极具挑战性的任务。因此,我们主张COD任务的目标不仅仅是在单个RGB域中模仿人类的视觉能力,而是超越人类的生物视觉。然后,我们引入频域作为一个额外的线索,以更好地检测从背景中隐藏的对象。为了更好地将频率线索纳入CNN模型,我们提出了一个具有两个特殊组件的强大网络。我们首先设计了一个新的频率增强模块(FEM),在频域中挖掘隐藏对象的线索。它包含离线离散余弦变换,然后是可学习的增强。然后,我们使用一个特征对齐融合的特征,从RGB域和频域。此外,为了进一步充分利用频率信息,我们提出了高阶关系模块(HOR)来处理丰富的融合特征。在三个广泛使用的COD数据集上的综合实验表明,该方法明显优于其他国家的最先进的方法的大幅度。

Keywords: 频域、频率增强、隐藏目标检测

3.Introduction

以前的尝试:纹理增强模块、注意力机制来引导模型关注隐藏区域、额外边缘信息、新的监督数据、将分割的对象视为两个阶段。

以前的SOTA COD方法都有一个共同的特点:它们只是通过复杂的技术来增强图像的RGB域信息。然而,根据生物学和心理学的研究动物捕食往往利用感知过滤器分离目标猎物与背景,动物比人类在处理视觉场景时有更多的波段,这使得人类视觉系统(HVS)很难发现隐藏的对象。本文提出COD任务的目标不仅仅是模仿人类在单一RGB域的视觉能力,而是超越人类的生物视觉。因此,为了更好地从背景中检测隐藏的对象,需要图像中的一些其他线索(例如,频域中的线索)。

隐藏对象检测(COD)任务是检测与其周围环境融合的隐藏对象。之前的工作:①首先粗略地搜索隐藏的对象,然后执行分割。②将实例分割和对抗性攻击用于COD的方法。③提出了一种基于图的模型,通过对多级关系的综合推理,同时执行隐藏对象检测和隐藏对象感知边缘提取。④考虑了隐藏对象和背景之间的细微纹理差异。

频域中的压缩表示包含用于图像理解任务的丰富模式。之前已经有从频域提取特征以分类图像和将空间域CNN模型转换到频域的算法。还有为了避免复杂的模型转换过程,使用SE-Block来选择频率信道。有人提出频道注意网络。尽管以前的方法在频域上取得了成就,但如何建模频域和RGB域之间的相互作用关系以进行密集预测几乎没有探索。

设计了频率增强模块,将频域感知线索引入CNN模型;特征对齐融合RGB信息与频域信息;设计了频率损失,直接限制在频率和引导网络更专注于频率信号;为了区分真实的隐藏对象,提出了高阶关系模块(由于目标和噪声对象总是共享相似的结构信息,低阶关系不足以获得区分特征)。

4.网络结构详解

在这里插入图片描述
上图是本文的网络结构图,主干采用Res2Net和ResNet50进行特征提取。首先RGB输入被转换到频域并由频率增强模块(FEM)增强。RGB和频率输入分别以RGB流和频率流的形式送入网络。特征对齐(FA)是用来融合这些功能,从RGB和频域。为了在特征中发现更多细微的差异以区分被隐藏的对象,在主网络中构建了高阶关系模块(HOR)。令 x r g b ∈ R H × W × 3 x_{rgb} ∈ R^{H×W×3} xrgbRH×W×3表示RGB输入,其中H,W是图像的高度和宽度。并且来自骨干的每一层的最后一个残差块的特征图可以被认为是{X1,X2,X3,X4}。那么所有这些特征图在跳过连接中被处理并且以自底向上的方式被解码。每个解码块由两个卷积层组成,后面是BN和ReLU。

FEM频率增强模块

在这里插入图片描述
FEM把RGB输入转换到频域并进行频率增强。FEM包含两个步骤:离线DCT(离散余弦变换)过程和神经网络在线增强。

离线离散余弦变换。也就是上图中的step1。首先处理输入的RGB图像,将 x r g b x^{rgb} xrgb变换到 Y C b C r YCbCr YCbCr空间(表示为 x y c b c r x^{ycbcr} xycbcr R H × W × 3 R^{H×W×3} RH×W×3)。然后,将 x y c b c r x^{ycbcr} xycbcr划分为一组8×8块(在图像的滑动窗口上密集地进行DCT是JPEG压缩等频率处理的常见操作),可以得到{ p i , j c p^c_{ i,j} pi,jc| 1 ≤ i,j ≤ H 8 \frac{H}{8} 8H }, p i , j c p^c_{ i,j} pi,jc R 8 × 8 R^{8×8} R8×8表示某个颜色通道的补丁。每片图像经离散余弦变换(DCT)处理后得到频谱 d i , j c d^c_{ i,j} di,jc R 8 × 8 R^{8×8} R8×8,其中每个值对应于某一频带的强度。为了将相同频率的所有分量分组到一个通道中,展开频谱并重新整形它们以形成新的输入(把三维变成一维),遵循补丁索引: x o f r e q = x i , j f r e q = f l a t t e n ( d i , j ) x^{freq}_o = x^{freq}_{i,j} = flatten(d_{i,j}) xofreq=xi,jfreq=flatten(di,j),其中 x o f r e q x^{freq}_o xofreq R H 8 × W 8 × 192 R^{\frac{H}{8} ×\frac{W}{8}×192} R8H×8W×192 d i , j d_{i,j} di,j R 8 × 8 × 3 R^{8×8×3} R8×8×3表示所有 d i , j c d^c_{i,j} di,jc的级联。通过这种方式,重新排列的信号,在一个补丁的锯齿状秩序和每个通道的 x o f r e q x^{freq}_o xofreq属于一个频带。因此,原始颜色输入被变换到频域。

索引中各值的含义: x o f r e q x^{freq}_o xofreq是三维数组,是频谱展开的最终结果。对于原始图像的每个8x8块,我们会得到一个大小为 192 的频谱展开结果。 x i , j f r e q x^{freq}_{i,j} xi,jfreq表示图像中位置为(i,j)的8x8块,经过频谱展开后的结果。 f l a t t e n ( d i , j ) flatten(d_{i,j}) flatten(di,j)表示图像中位置为(i,j)的8x8块的频谱,经过频谱展开成一维数组。

RGB与YCbCr都是颜色空间。
分离亮度和色度信息:YCbCr颜色空间将亮度信息(Y)与色度信息(Cb和Cr)分离开来。亮度表示图像的明亮度,而色度表示图像的颜色信息。这种分离使得在压缩和处理图像时更加方便,因为在某些情况下,我们可能更关心亮度而不是具体的颜色信息。
人眼感知: YCbCr 颜色空间更符合人眼的感知。人眼对亮度更为敏感,而对颜色的感知相对较弱。通过将图像分成亮度和色度,可以更好地利用有限的数据量来表示图像,尤其在视频压缩等应用中。
压缩和传输效率: 在许多应用中,如视频压缩、广播和存储,YCbCr 被广泛用于提高效率。由于人眼对亮度更敏感,可以对亮度信号进行更高的采样率,而对色度信号进行较低的采样率,从而减小数据量,提高压缩效率。
色彩子样: 在YCbCr中,色度信息被表示为差异信号(Cb和Cr),这种表示方式有助于色彩子样,即降低色彩信息的采样率,以减小数据量。
总的来说,RGB颜色空间更适合直观地表示颜色,而YCbCr颜色空间则更适合处理和传输图像,尤其是在需要考虑带宽和存储空间的情况下。

在线学习增强。即上图中的Step2。其中图像被映射到频域并由可学习模块增强,以发现隐藏在频率空间中的伪装对象的线索。在实际应用中,图像中的物体种类繁多,背景复杂,固定的离线DCT算法可能无法很好地处理这些问题。因此还需要一个适应性学习过程来适应复杂的场景。由于信息在JPEG压缩等预处理过程中会丢失。所以需要加强频率信号;因此,引入在线学习增强,以增加信号的适应性。从单个补丁内和补丁之间构建增强模块。

参考论文[Image Enhancement Using a Contrast Measure in the Compressed Domain],对压缩域进行直接增强,通过对DCT系数的处理来增强图像。基于对比度度量实现的,对比度度量定义为DCT矩阵的频带中的高频和低频内容的比率。

下面是论文里的内容:Image Enhancement Using a Contrast Measure in the Compressed Domain

JPEG图像压缩由编码器解码器构成。编码器中,图像被分成不重叠的8*8的块,然后对每个8 × 8块计算二维DCT。一旦获得DCT系数,就使用指定的量化表对它们进行量化。DCT系数的量化是一个有损过程,在这一步中,许多小系数(通常是高频)被量化为零。DCT矩阵的Z字形扫描之后的熵编码利用该属性来降低编码系数所需的比特率。在解码器中,压缩图像被解码,然后通过逐点乘以量化表和逆DCT变换进行解量化。设 x i , j {x_{i,j}} xi,j 为原始图像中的一个8 × 8块,其DCT变换为 d k , l {d_{k,l}} dk,l。2-DCT变换表示为在这里插入图片描述
k,l ∈{0~7},在这里插入图片描述
DCT逆变换为(3):
在这里插入图片描述
从上式中,可以看到每个 d k , l d_{k,l} dk,l 表示对应于第kl个波形的贡献,并且输出DCT块中的系数 d k , l d_{k,l} dk,l 分别按照水平和垂直空间维度中增加的空间频率的顺序从左到右和从上到下排列。DCT系数的空间频率特性提供了一种自然的方式来定义DCT域中的对比度度量。因此,可以将对比度度量定义为DCT矩阵的频带中的高频和低频内容的比率

频带的划分:8*8的块组成的二维DCT输出矩阵,可以把系数沿右上左下的对角可划分成15个频带,第n频带由具有的系数 n = k + l n=k+l n=k+l组成。定义的频带给出了近似于圆的菱形,因此选择近似相等的径向频率。因此,使用(3)通过仅保留一个频带而生成的图像块可以被认为是原始图像块的带通版本。随着频带数的增加,带通图像块的频率内容对应于更高的频率,因此,创建了原始的多尺度结构。我们的局部对比度度量定义在每个波段上,波段数大于0。第n波段的对比度定义为:
在这里插入图片描述
频谱带上的平均振幅:(5) 在这里插入图片描述

令原始块的对比度为 C = ( c 1 , c 2 . . . ) C=(c_1,c_2...) C=(c1,c2...),其中 c n c_n cn是对应于 E n E_n En的特定频带处的对比度,并且令增强块的对比度表示为 C ‾ = ( c ‾ 1 , c ‾ 2 . . . ) \overline{C}=(\overline{c}_1,\overline{c}_2...) C=(c1,c2...)。例如,如果希望针对所有频率均匀地增强对比度,则 c ‾ n = λ c n \overline{c}_n=λc_n cn=λcn
E ‾ n = λ H n E n , n ≥ 1 \overline{E}_n=λH_nE_n,n≥1 En=λHnEn,n1(9),其中 H n = ∑ t = 0 n − 1 E ‾ t ∑ t = 0 n − 1 E t H_n=\frac{\sum^{n-1}_{t=0}{\overline{E}_t}}{\sum^{n-1}_{t=0}{E_t}} Hn=t=0n1Ett=0n1Et(10);增强的DCT系数 d ‾ k , l \overline{d}_{k,l} dk,l d ‾ k , l = λ H k + l d k , l , k + l ≥ 1 \overline{d}_{k,l}=λH_{k+l}d_{k,l}, k+l≥1 dk,l=λHk+ldk,l,k+l1(11)
整个算法流程如下:
在这里插入图片描述
其实就是:1.先初始化;2.n++,计算 H n H_n Hn;3.计算 d k , l d_{k,l} dk,l;4.如果n<14,计算 E ‾ n \overline{E}_n En E n E_{n} En,否则算法完成;5.跳到第二步。
(不懂为什么不是n≤14)

首先按照上述方法增强局部频带中的系数。然后对信号进行下采样并将其划分为两部分,低频信号 x l f r e q x^{freq}_{l} xlfreq 和高信号 x h f r e q x^{freq}_{h} xhfreq R 96 × k 2 R^{96×k^2} R96×k2,其中k表示大小。为了增强相应频带中的信号,我们将它们分别馈送到两个多头自注意(MHSA)[Attention is all you need]中,并将它们的输出连接起来以恢复原始形状。然后,再用一个MHSA调和所有不同的频带,并且新形成的信号表示 x f f r e q x^{freq}_{f} xffreq。MHSA能够捕获输入特征中每个项目之间的丰富相关性。在这一点上,图像的不同频谱完全相互作用。对于DCT,图像块是相互独立的,上述过程只增强了单个图像块。为了帮助网络识别被隐藏对象的位置,还需要在补丁之间建立连接。因此,首先将 x f f r e q x^{freq}_{f} xffreq 整形为 x s f r e q x^{freq}_{s} xsfreq R k 2 × C R^{k^2 ×C} Rk2×C。然后,使用MHSA建模所有补丁之间的关系。最后,上采样并得到增强的频率信号 x f r e q x^{freq} xfreq x r g b x^{rgb} xrgb x f r e q x^{freq} xfreq 都被输入网络。

要素对齐

构建FA模块来融合RGB域和频域的特征,如下图所示,特征对齐是一个相互加强的过程。
在这里插入图片描述
频域信息对隐藏物体更有优势,RGB域信息具有更大的感受野可以补偿频率特征。由于前面的处理确保了 x r g b x^{rgb} xrgb x f r e q x^{freq} xfreq在空间上对齐,因此在这部分中只将频域与RGB域对齐。

由于CNN对低频信息更敏感,所以先用滤波器处理 x f r e q x^{freq} xfreq:二进制基滤波器 f b a s e f_{base} fbase覆盖高频段,添加三个可学习的滤波器 f i i = 1 3 {{f_i}^3_{i=1}} fii=13处理Y、Cb、Cr空间。滤波是频率响应和组合滤波器 f b a s e + σ ( f i ) f_{base} + σ(fi) fbase+σ(fi)之间的点积,其中 σ ( y ) = 1 − e x p ( − y ) 1 + e x p ( − y ) σ(y)= \frac{1−exp(−y)}{1+exp(−y)} σ(y)=1+exp(y)1exp(y)。对于输入频域特征 x f r e q x^{freq} xfreq,网络可以通过下式自动聚焦于最重要的频谱: X i f r e q = x i f r e q ⨀ [ f b a s e + σ ( f i ) ] X^{freq}_i = x^{freq}_i\bigodot[f_{base} + σ(f_i)] Xifreq=xifreq[fbase+σ(fi)],其中 ⨀ \bigodot 是逐元素乘积。最后,将它们重新组合在一起:
X f r e q = C o n c a t ( [ X 1 f r e q , X 2 f r e q , X 3 f r e q ] ) X^{freq} = Concat([X^{freq}_1,X^{freq}_2,X^{freq }_3]) Xfreq=Concat([X1freq,X2freq,X3freq])

然后,分别从空间域和频率域计算两种信号的变换。由于 X i X_i Xi具有不同的大小,因此需要将 X f r e q X^{freq} Xfreq缩放到其相应的大小。连接 X i X_i Xi X f r e q X^{freq} Xfreq,然后将其馈送到具有4n个输出通道的Conv层,其输出为T。我们将 T j ∈ R H × W × n ( j = 1 , 2 , 3 , 4 ) T_j ∈ R^{H×W×n}(j = 1,2,3,4) TjRH×W×n(j=1,2,3,4)从第三维中取出,并将它们整形为 H W × n HW × n HW×n。因此,获得RGB域融合矩阵 T 1 ∈ R H W × H W T_1 ∈ R^{HW×HW} T1RHW×HW 和频域的融合矩阵 T 2 T_2 T2 T 1 = T 1 ( T 2 ) T , T 2 = T 3 ( T 4 ) T T_1 = T_1(T_2)^T,T_2 = T_3(T_4)^T T1=T1(T2)T,T2=T3(T4)T。其次,对齐特征图。乘以变换和学习向量 v ∈ R 1 × C v ∈ R^{1×C} vR1×C以调整每个通道的强度,每个通道的对齐特征:
在这里插入图片描述
最后,可以通过添加两个域特征来获得融合特征: X s i = X r b g 2 s i + X f r e q 2 s X^i_s = X^i_{rbg2s} + X_{freq 2s} Xsi=Xrbg2si+Xfreq2s。通过这种方式,可以利用区分频率信息来找到隐藏的对象,同时保持CNN线索,以确保对象的完整性和细节。\

频率预测损失:

引入了一种新的损失来约束网络:除了直接在RGB域中计算损耗外,还在频域中提供网络的监督。给定输入RGB图像x、对应的真实掩码M和预测掩码Y,定义损失:
在这里插入图片描述
其中,q是量化表,并且 ⊗ \otimes 表示元素级乘积。特别地,Y和M将首先被复制并扩展到与x相同的大小。

高阶频道选择

为了更好地区分被标记的物体和其他未被标记的物体,需要深入挖掘 X s i X^i_s Xsi中不同像素之间的关系。具体地说,真正的干扰和干扰对象可以从背景中分离出来,与频域信息的帮助。然而,真正的干扰对象和干扰对象通常具有极其相似的结构信息,并且频域线索很难区分细微的差异。一种直观的方法是引入注意机制(例如常用的自我注意模块[Non-local neural networks])来探索特征 X s i X^i_s Xsi内不同像素的关系,这可能有助于区分细微的差异。然而,常用的注意机制只能捕捉到低层次的关系,不足以发现这种细微的差异。因此,本文提出了一个高阶关系模块(HOR)来解决这个问题,以充分利用频率信号中的信息,如下图所示。
在这里插入图片描述

通过采用位置感知的门控操作来构造结构关系,从而为进一步的信道交互和判别谱选择提供高阶空间增强。设 X ∈ R C × H × W X ∈ R^{C×H×W} XRC×H×W表示输入特征,首先将其整形为 C × H W C×HW C×HW。由于频率响应来自局部区域,因此需要对具有位置重要性的原始特征进行编码,以将被捕获的对象与其他对象区分开。位置注意力权重可以表示为:
在这里插入图片描述
ψ(X)表示比X更后面的层,具有更大的感受野。因此,W用作注意力权重以找到跨不同层的RGB和频率响应相关性。然后,位置权重加强原始特征,并随后通过自适应选通操作来选择出现不同样本时最有用的特征:
在这里插入图片描述
其中 g ( W ) ∈ R H W g(W)∈ R^{HW} g(W)RHW表示由FC层生成的选通权重,并且它可以被认为是函数 G : R H W → R 1 G:R^{HW} → R^1 GRHWR1。门控操作是基于空间感知生成的,以形成位置感知特征。

在获得位置增强特征A之后,可以通过类似的操作来构建信道感知关系矩阵:
在这里插入图片描述
其中C表示位置感知特征的通道维度。通道感知关系中的每个张量具有对应于原始特征通道和频谱的语义和频率映射的相同C维。最后,将该关系矩阵应用于X,得到有利于伪装目标的选择信息 X o u t = r e s h a p e ( H X ) ∈ R H × W × C X_{out} = reshape(HX)∈ R^{H×W×C} Xout=reshape(HX)RH×W×C。然后将特征Xout馈送到解码过程中。

监督损失

如网络整体结构图中可见,令{D1,D2,D3,D4}表示从解码块的每一级提取的特征。在网络中的不同分辨率下进行四次预测{Pi}4 i=1,并且在每次FA之后从卷积层进行{Yi}4 i=1。每个Pi和Yi首先被重新缩放到输入图像大小。通过频率感知损失Lf在频域中监督网络。还在通用RGB域中提供监督,以确保细节。将联合收割机的加权BCE损失率和加权IoU损失率结合起来,以更多地关注牵引区域。损失函数定义为:
在这里插入图片描述

其中M表示真值标签,i表示网络的第i级。最后,总损失函数为:
在这里插入图片描述

5. 结果

在这里插入图片描述
在这里插入图片描述

相关文章:

【论文阅读笔记】Detecting Camouflaged Object in Frequency Domain

1.论文介绍 Detecting Camouflaged Object in Frequency Domain 基于频域的视频目标检测 2022年发表于CVPR [Paper] [Code] 2.摘要 隐藏目标检测&#xff08;COD&#xff09;旨在识别完美嵌入其环境中的目标&#xff0c;在医学&#xff0c;艺术和农业等领域有各种下游应用。…...

Mysql(5日志备份恢复)

一.日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data 先看下mysql的日志文件有无&#xff1a; 修改配置文件添加&#xff1a;错误日志&#xff0c;用来记录当MySQL启动、停止或运行时发生的错误信息&#xff0c;默认已开启 修改配置文件添加&#xff1a;通用查…...

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、Map阶段实现&#xff08;1&#xff09;创建Maven项目&#xff08;2&#xff09;添加相关依赖…...

JVM 常用知识和面试题

1. 什么是JVM内存结构&#xff1f; jvm将虚拟机分为5大区域&#xff0c;程序计数器、虚拟机栈、本地方法栈、java堆、方法区&#xff1b; 程序计数器&#xff1a;线程私有的&#xff0c;是一块很小的内存空间&#xff0c;作为当前线程的行号指示器&#xff0c;用于记录当前虚拟…...

【教3妹学编程-算法题】一年中的第几天

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开森。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;经过了一周多的寒潮&#xff0c;天气总算暖和些了。 2哥&#xff…...

ramdump 中的memory统计

0. 前言 ramdump是指某个时刻系统或者子系统发生crash等异常&#xff0c;系统将内存中的数据通过一定的方式保存下来&#xff0c;相当于一个系统内存快照&#xff0c;用以开发者离线分析系统异常问题。 ramdump 工具中有很多内存统计的脚本&#xff0c;本文逐一剖析内存相关的…...

Element-Ui树形数据懒加载,删除到最后一个空数组不刷新问题

使用elemenui树形删除数据的时候刷新页面&#xff0c;我在网上找了好多方法&#xff0c;要么没用&#xff0c;要么都是部分代码&#xff0c;自己又看不懂&#xff0c;不得不硬着头皮看源码&#xff0c;发现了有个方法可以刷新。 使用elemenui树形删除数据的时候刷新页面。源码里…...

基于NASM搭建一个能编译汇编语言的汇编软件工具环境(利用NotePad++)

文章目录 一、创建汇编语言源程序二、Notepad的下载、安装、使用三、下载和安装编译器NASM3.1 下载NASM编译器3.2 安装并配置环境变量 四、编译汇编语言源程序&#xff08;使用命令&#xff09;五、下载和使用配套源码及工具六、将编译功能集成到Notepad 一、创建汇编语言源程序…...

使用setoolkit制作钓鱼网站并结合dvwa靶场储存型XSS漏洞利用

setoolkit是一款kali自带的工具 使用命令启动 setoolkit 1) Social-Engineering Attacks 1&#xff09; 社会工程攻击 2) Penetration Testing (Fast-Track) 2&#xff09; 渗透测试&#xff08;快速通道&#xff09; 3) Third Party Module…...

计算机组成原理-总线概述

文章目录 总线简图总线的物理实现总览总线定义总线的特性总线的分类按数据格式分类串行总线并行总线 按总线功能分类注意系统总线的进一步分类 总线的结构单总线的机构双总线的结构三总线的结构四总线的结构 小结 总线简图 总线的物理实现 如果该为数据总线&#xff0c;那么当…...

三角函数两角和差公式推导

一.几何推理 1.两角和公式 做一斜边为1的直角△ABC,任意旋转非 k Π , k N kΠ,kN kΠ,kN,补充如图,令 ∠ A B C ∠ α &#xff0c; ∠ C B F ∠ β ∠ABC∠α&#xff0c;∠CBF∠β ∠ABC∠α&#xff0c;∠CBF∠β ∴ ∠ D B F ∠ D B A ∠ α ∠ β 90 , ∠ D A …...

HarmonyOS page生命周期函数讲解

下面 我们又要看一个比较重要的点了 页面生命周期 页面组件有三个生命周期 onPageShow 页面显示时触发 onPageHide 页面隐藏时触发 onBackPress 页面返回时触发 这里 我们准备两个组件 首先是 index.ets 参考代码如下 import router from ohos.router Entry Component struc…...

3D视觉-结构光测量-线结构光测量

概述 线结构光测量中&#xff0c;由激光器射出的激光光束透过柱面透镜扩束&#xff0c;再经过准直&#xff0c;产生一束片状光。这片光束像刀刃一样横切在待测物体表面&#xff0c;因此线结构光法又被成为光切法。线结构光测量常采用二维面阵 CCD 作为接受器件&#xff0c;因此…...

ssm基于web的马病管理系统设计与实现+jsp论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;马病信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广大…...

SaaS版Java基层健康卫生云HIS信息管理平台源码(springboot)

云his系统源码&#xff0c;系统采用主流成熟技术开发&#xff0c;B/S架构&#xff0c;软件结构简洁、代码规范易阅读&#xff0c;SaaS应用&#xff0c;全浏览器访问&#xff0c;前后端分离&#xff0c;多服务协同&#xff0c;服务可拆分&#xff0c;功能易扩展。多集团统一登录…...

redis,memcached,nginx网络组件,网络编程——reactor的应用

目录 目标网络编程关注的问题连接的建立连接的断开消息的到达消息发送完毕 网络 IO 职责检测 IO检测 io剖析 操作 IO 阻塞IO 和 非阻塞IOIO 多路复用epoll结构以及接口 reactor编程连接建立连接断开数据到达数据发送完毕 reactor 应用&#xff1a;后续补充源码解析单 reacrtor多…...

【机电、机器人方向会议征稿|不限专业|见刊快】2024年机械、 图像与机器人国际会议(IACMIR 2024)

【机电、机器人方向会议征稿|不限专业|见刊快】2024年机械、 图像与机器人国际会议&#xff08;IACMIR 2024&#xff09; 2024 International Academic Conference on Machinery, Images, and Robotics 会议将聚焦“机械、成像和机器人”相关的最新研究领域&#xff0c;为国内…...

uniapp学习之路

uniapp 学习之路 1. 下载HBuilderX2. 下载uView初始框架3. 开始学习1.更改页面背景色&#xff0c;渐变色 1. 下载HBuilderX https://www.dcloud.io/hbuilderx.html?ivk_sa1024320u2. 下载uView初始框架 https://ext.dcloud.net.cn/plugin?id15933. 开始学习 1.更改页面背景…...

移动开发新的风口?Harmony4.0鸿蒙应用开发基础+实践案例

前段时间鸿蒙4.0引发了很多讨论&#xff0c;不少业内人士认为&#xff0c;鸿蒙将与iOS、安卓鼎足而三了。 事实上&#xff0c;从如今手机操作系统竞赛中不难看出&#xff0c;安卓与iOS的形态、功能逐渐趋同化&#xff0c;两大系统互相取长补短&#xff0c;综合性能等差距越来越…...

QT上位机开发(倒计时软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 倒计时软件是生活中经常遇到的一种场景。比如运动跑步&#xff0c;比如学校考试&#xff0c;比如论文答辩等等&#xff0c;只要有时间限制规定的地…...

2023 楚慧杯 --- Crypto wp

文章目录 初赛so large e 决赛JIGE 初赛 so large e 题目&#xff1a; from Crypto.Util.number import * from Crypto.PublicKey import RSA from flag import flag import randomm bytes_to_long(flag)p getPrime(512) q getPrime(512) n p*q e random.getrandbits(1…...

Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置

文章目录 前言相关链接环境配置&#xff1a;AnacondaPython配置OpenCVOpencv-contrib:Opencv扩展 Notebook:python代码笔记vscode配置配置AnacondaJupyter文件导出 前言 作为一个C# 上位机&#xff0c;我认为上位机的终点就是机器视觉运动控制。最近学了会Halcon发现机器视觉还…...

Spring Cloud Gateway 常见过滤器的基本使用

目录 1. 过滤器的作用 2. Spring Cloud Gateway 过滤器的类型 2.1 内置过滤器 2.1.1 AddResponseHeader 2.1.2 AddRequestHeader 2.1.3 PrefixPath 2.1.4 RequestRateLimiter 2.1.5 Retry 2.2 自定义过滤器 1. 过滤器的作用 过滤器通常用于拦截、处理或修改数据流和事…...

maven依赖无法传递问题排查

一、背景 在A模块中引入B模块&#xff0c;C服务引入A模块但是B模块没有传递进来。 二、排查 使用mvn clean install -Dmaven.test.skiptrue查看打包日志信息&#xff0c;通过搜索A模块名称&#xff0c;出现如下警告信息&#xff1a; [WARING] The POM for A:jar:0.0.1-SNAP…...

JVM钩子

JVM钩子 简介 在Java应用程序中&#xff0c;可以通过注册关闭钩子&#xff08;Shutdown Hook&#xff09;函数来实现在JVM关闭时执行特定的代码。关闭钩子是一种用于在JVM关闭时执行清理任务的机制&#xff0c;它允许开发者在JVM关闭之前执行一些必要的清理工作&#xff0c;如…...

linux cat命令增加-f显示文件名功能

在使用cat命令配合grep批量搜索文件内容时&#xff0c;我仅仅能知道是否搜索到&#xff0c;不知道是在哪个文件里找到的。比如cat ./src/*.c | grep full_write,在src目录下的所有.c文件里找full_write,能匹配到所有的full_write&#xff0c;但是不知道它们分别在哪些文件里。于…...

linux更改登录shell

从bash修改成python 在/etc/passwd下可以更改用户登录bash 例 root:x:0:0:root:/root:/bin/bash //更改bin/bash为/bin/python&#xff0c;就可以用root登录python页面了从python修改成bash 方法一 重启页面按e进入内核编辑模式linux16这行后添加&#xff1a;init/bin/…...

【JS】报错:Uncaught TypeError: Cannot read properties of null (reading ‘classList‘)

错误展示 今天写js代码的时候遇到报错&#xff1a; 源代码&#xff1a; <ul class"slider-indicator"><li class"active"></li><li></li><li></li><li></li><li></li><li><…...

kali2.0安装VMware Tools 和自定义改变分辨率

kali2.0安装VMware Tools 和自定义改变分辨率 VMware Tools 简介&#xff1a;VMware Tools安装&#xff1a;自定义改变分辨率&#xff1a;xrandr命令修改分辨率&#xff1a; 前言&#xff1a; 因为kali2.0比较老 所以需要手动安装 WMware Tools 进行复制粘贴操作&#xff01; …...

redis中根据通配符删除key

redis中根据通配符删除key 我们是不是在redis中keys user:*可以获取所有key&#xff0c;但是 del user:*却不行这里我提供的命令主要是SCANSCAN 0 MATCH user:* COUNT 100使用lua保证原子性 SCAN参数描述 在示例中&#xff0c;COUNT 被设置为 100。这是一个防止一次性获取大…...

网站备案步骤/2345网址大全下载到桌面

1、使用异步任务加载网络上的图片 我们可以打开这个网址&#xff1a;http://img1.3lian.com/img2011/07/20/05.jpg可以看到一副很好看的图片&#xff0c;我们就要把这个图片显示出来&#xff0c;首先&#xff0c;还是先要布局&#xff0c;我们要显示一幅图片&#xff0c;所以我…...

宁夏网站建设优化/百度网盘官网下载

在这篇 Linux 黑话解释中&#xff0c;你将了解 Linux 中的显示管理器。它是桌面环境的一部分吗&#xff1f;它的作用是什么&#xff1f;什么是 Linux 中的显示管理器&#xff1f;简单来说&#xff0c;显示管理器display manager(DM)是一个为你的 Linux 发行版提供图形登录功能的…...

可以制作app的软件/零基础学seo要多久

在Python中&#xff0c;安装第三方模块&#xff0c;是通过包管理工具pip完成的。如果你正在使用Mac或Linux&#xff0c;安装pip本身这个步骤就可以跳过了。如果你正在使用Windows&#xff0c;请参考安装Python一节的内容&#xff0c;确保安装时勾选了pip和Add python.exe to Pa…...

wap网站建设/磁力搜索引擎哪个好

654琴弦&#xff0c;面对吉他正面往琴头上部方向转(逆时针)是紧的 321琴弦&#xff0c;面对吉他正面往琴尾下部方向转(逆时针)是紧的...

企业英文网站建设/定制开发公司

前言 本文我们不去谈int、float、char等基本数据类型&#xff0c;而是用一般的类来说明。因为Java中可以直接通过 int varName 的方式来定义和使用一个基本类型的变量&#xff0c;但对于其它一般类型的对象&#xff0c;必须使用 new 来创建。 因此&#xff0c;为了更一般性地…...

阿里服务器可以做多少个网站/网站推广投放

DataTable da CommonBLL.GetList("*", "sys_dict", "IfState1 and DictTypeId14");string strField "CACCNUM as 账号账号,Loannumber as 借据号,BILLDATE as 借款时间,CAName as 借款人姓名,CPOSITION as 质押商品房位置,LoanAmount as …...