特征提取算法

特征提取算法

  • 0. 写在前边
  • 1. Harris算法
    • 1.1 写在前面
    • 1.2 Harris算法的本质
    • 1.3 Harris算法的简化
  • 2. Harris3D
  • 2.1 Harris3D算法问题定义
    • 2.2 Harris3D with intensity
    • 2.3 Harris3D without intensity
  • 3. ISS
  • 特征点的应用

0. 写在前边

本篇将介绍几种特征提取算法,特征提取算法的本质是从数据中找出具有特定特征或者信息的部分,并将其表示为更简单、更易于处理的形式。这里将介绍图像处理中的Harris,SUSAN和SIFT(Scale-Invariant Feature Transform)算法,点云处理中的ISS(Intrinsic Shape Signatures)

特征点是在图像处理和点云中具有特定特性的点。1)在图像处理中,特征点通常是指图像中具有显著变化或者重要信息的位置,比如角点、边缘点、纹理点等。这些点通常被用来进行图像配准、目标跟踪、物体识别等任务,因为它们能够提供重要的位置和结构信息。2)在点云中,特征点指的是具有显著几何特性的点,比如曲率变化明显的点、表面法向变化明显的点、高度变化大的点等。这些特征点在点云处理中非常重要,可以用来进行点云配准、目标检测、三维重建等任务,因为它们能够提供点云的关键几何信息。

1. Harris算法

1.1 写在前面

Harris角点检测算法是一种经典的图像特征检测算法,用于在图像中检测角点,即具有显著变化的位置,暂时可以理解为角点(Corner点)。一张图片中的点,在某个尺度上进行划分,可以划分为"flat"点,“edge"点和"corner"点,这三种点的直观理解参见下图:
在这里插入图片描述
直观上来理解,给你一张图,让你来标出你认为的几个"独特"点,我想大概率你会标出与周围邻域内像素点的“颜色"或者"形状"反差较大的点吧。这里用到的“颜色“和“形状“就是上文说的尺度。
在Harris算法中,也是这种思想,记像素点 ( x , y ) (x,y) (x,y)处的特征(多使用颜色值)为 I ( x , y ) I(x,y) I(x,y)。选用移动值 ( δ x , δ y ) (\delta_x,\delta_y) (δx​,δy​)计算像素点 ( x , y ) (x,y) (x,y)处的颜色值变化为 I ( x , y ) − I ( x + δ x , y + δ y ) I(x,y)-I(x + \delta_x,y+\delta_y) I(x,y)−I(x+δx​,y+δy​),也可以理解为 ( x , y ) (x,y) (x,y)处的梯度,但因像素点位置空间是离散的,因此采用差分的方式表达变化率。 设想一下,给你一张1200*900分辨率的图片,你能比较出一个像素点与周围像素点的区别?比较单个像素点,不仅耗时而且对噪声点也不够鲁棒,所以Harris算法中,是选用的一个"path”,也就是一小片区域 Ω \Omega Ω,用这个区域在移动前后的颜色值变化记为:
E ( u , v ) = ∑ x , y ∈ Ω w ( x , y ) [ I ( x + u . y + v ) − I ( x , y ) ] 2 E(u,v) = \sum_{x,y\in\Omega}w(x,y)[I(x+u.y+v)-I(x,y)]^2 E(u,v)=x,y∈Ω∑​w(x,y)[I(x+u.y+v)−I(x,y)]2其中, ( u , v ) (u,v) (u,v)是offset,代表区域 Ω \Omega Ω的移动,就是求梯度时的增量。 w ( x , y ) w(x,y) w(x,y)是权重,代表区域 Ω \Omega Ω内像素点的梯度给区域中心点的贡献度,多采用下图右侧高斯分布的形式。
在这里插入图片描述

到这里,就已经完成了问题的定义,给定一张图片,Harris算法就是通过每个像素位置 ( x , y ) (x,y) (x,y)的 E ( u , v ) E(u,v) E(u,v)来判断该位置是否为特征点,是什么类型的特征点。

1.2 Harris算法的本质

承接上文, E ( u , v ) E(u,v) E(u,v)可以作如下推导:
E ( u , v ) = ∑ x , y ∈ Ω ( I ( x + u , y + v ) − I ( x , y ) ) 2 E ( u , v ) = ∑ x , y ∈ Ω ( I ( x , y ) + u I x ( x , y ) + v I y ( x , y ) − I ( x , y ) ) 2 E ( u , v ) = ∑ x , y ∈ Ω u 2 I x 2 + v 2 I y 2 + 2 u v I x I y E ( u , v ) = [ u v ] ( ∑ x , y ∈ Ω [ I x 2 I x I y I x I y I y 2 ] ) [ u v ] , M = ∑ x , y ∈ Ω [ I x 2 I x I y I x I y I y 2 ] E ( u , v ) = [ u v ] M [ u v ] \begin{align} E(u,v) &= \sum_{x,y\in\Omega}(I(x+u,y+v)-I(x,y))^2 \\ E(u,v) &= \sum_{x,y\in\Omega}(I(x,y) + uI_x(x,y)+vI_y(x,y)-I(x,y))^2 \\ E(u,v) &= \sum_{x,y\in\Omega}u^2I_x^2 + v^2I_y^2+2uvI_xI_y \\ E(u,v) &= \left[ \begin{matrix} u & v \end{matrix} \right] (\sum_{x,y\in\Omega} \left[ \begin{matrix} I_x^2 & I_xI_y \\ I_xI_y & I_y^2 \\ \end{matrix} \right] ) \left[ \begin{matrix} u \\ v \\ \end{matrix} \right] , M= \sum_{x,y\in\Omega}\left[ \begin{matrix} I_x^2 & I_xI_y \\ I_xI_y & I_y^2 \\ \end{matrix} \right] \\ E(u,v) &= \left[ \begin{matrix} u & v \end{matrix} \right] M\left[ \begin{matrix} u \\ v \\ \end{matrix} \right] \end{align} E(u,v)E(u,v)E(u,v)E(u,v)E(u,v)​=x,y∈Ω∑​(I(x+u,y+v)−I(x,y))2=x,y∈Ω∑​(I(x,y)+uIx​(x,y)+vIy​(x,y)−I(x,y))2=x,y∈Ω∑​u2Ix2​+v2Iy2​+2uvIx​Iy​=[u​v​](x,y∈Ω∑​[Ix2​Ix​Iy​​Ix​Iy​Iy2​​])[uv​],M=x,y∈Ω∑​[Ix2​Ix​Iy​​Ix​Iy​Iy2​​]=[u​v​]M[uv​]​​

可见,已经将 E ( u , v ) E(u,v) E(u,v)转化为了谱定理的形式,也就是说这个区域 Ω \Omega Ω移动前后的特征变化可以用区域内所有像素点的颜色梯度 I x , I y I_x,I_y Ix​,Iy​的分布来表示,见下图
在这里插入图片描述
记矩阵 M M M的特征值为 λ 1 , λ 2 \lambda_1,\lambda_2 λ1​,λ2​。“flat“点均为0,"edge"点其中一个为零,"corner"两者均不为零。因此Harris的本质就是求某点周围邻域内所有点的颜色颜色梯度构成的协方差均值的特征值。

1.3 Harris算法的简化

承接上文,得到矩阵 M M M的特征值以后,特征值的阈值怎么设置?,如果有多个特征值,怎么来判断这个点是否维特征值?1988年,1994年1998年,三位作者给出了特征值Response的三种不同计算方法,使用Pesponse值来代表所有特征值,通过Response值的阈值直接判断是否为特征点。
在这里插入图片描述
在使用Harris算法的时候,如果Response阈值设置的比较小,就会造成特征点太多的问题,这个时候可以采用NMS算法的思想进行去重。1)首先找到R值最大的特征点,删除周围邻域r内的特征点。然后重复步骤1)。结果实例如下:

阶段结果
原始图片$1600
Harris处理$12
NMS处理在这里插入图片描述

2. Harris3D

Harris3D算法是Harris2D的推广,也就是Harris算法从图像处理到点云处理的转化。承接上文,Harris算法应用在3D点云中需要明确几个问题:

    1. 点云是离散的
    1. 点云中的"patch"也就是2D图像中的区域 Ω \Omega Ω怎么选取
    1. 如何移动"patch"

针对1,与2D图像中的像素点都是离散的,只不过点云是稀疏的,并不是每个位置都有点。
针对2,在2D图片中,通过领域来确定某个点的邻域空间 Ω \Omega Ω。
针对3,在2D图片中,通过增量 ( u , v ) (u,v) (u,v)来完成patch的移动,求得像素点的梯度 I x , I y I_x, I_y Ix​,Iy​。在3D点云中, I x , I y , I z I_x,I_y,I_z Ix​,Iy​,Iz​应该怎么求解?

2.1 Harris3D算法问题定义

记点 P ( x , y , z ) P(x,y,z) P(x,y,z)周围的小邻域为 Ω \Omega Ω, 点 P P P的激光反射强度为 I ( x , y , z ) I(x,y,z) I(x,y,z),增量记为 ( u , v , w ) (u,v,w) (u,v,w),则增量前后区域 Ω \Omega Ω的反射强度变化为:
E ( u , v , w ) = ∑ u , v , w ∈ Ω [ I ( x + u , y + v , z + w ) − I ( x , y , z ) ] 2 E(u,v,w) = \sum_{u,v,w\in\Omega}[I(x+u,y+v,z+w)-I(x,y,z)]^2 E(u,v,w)=u,v,w∈Ω∑​[I(x+u,y+v,z+w)−I(x,y,z)]2
进一步推导得,
E ( u , v , w ) = ∑ x , y , z ∈ Ω [ u I x ( x , y , z ) + v I y ( x , y , z ) + w I z ( x , y , z ) ] 2 = [ u v w ] ( ∑ x , y , z ∈ Ω [ I x 2 I x I y I x I y I x I y I y 2 I y I z I x I z I y I z I z 2 ] ) [ u v w ] , M = ∑ x , y ∈ Ω [ I x 2 I x I y I x I y I x I y I y 2 I y I z I x I z I y I z I z 2 ] = [ u v w ] M [ u v w ] \begin{align} E(u,v,w) &= \sum_{x,y,z\in\Omega}[uI_x(x,y,z) + vI_y(x,y,z)+wI_z(x,y,z)]^2 \\ &= \left[ \begin{matrix} u & v & w\end{matrix} \right] (\sum_{x,y,z\in\Omega} \left[ \begin{matrix} I_x^2 & I_xI_y & I_xI_y\\ I_xI_y & I_y^2 & I_yI_z\\ I_xI_z & I_yI_z& I_z^2\\ \end{matrix} \right] ) \left[ \begin{matrix} u \\ v \\ w \\ \end{matrix} \right] , M= \sum_{x,y\in\Omega} \left[ \begin{matrix} I_x^2 & I_xI_y & I_xI_y\\ I_xI_y & I_y^2 & I_yI_z\\ I_xI_z & I_yI_z& I_z^2\\ \end{matrix} \right] \\ &= \left[ \begin{matrix} u & v & w \end{matrix} \right] M\left[ \begin{matrix} u \\ v \\ w\\ \end{matrix} \right] \end{align} \\ E(u,v,w)​=x,y,z∈Ω∑​[uIx​(x,y,z)+vIy​(x,y,z)+wIz​(x,y,z)]2=[u​v​w​](x,y,z∈Ω∑​ ​Ix2​Ix​Iy​Ix​Iz​​Ix​Iy​Iy2​Iy​Iz​​Ix​Iy​Iy​Iz​Iz2​​ ​) ​uvw​ ​,M=x,y∈Ω∑​ ​Ix2​Ix​Iy​Ix​Iz​​Ix​Iy​Iy2​Iy​Iz​​Ix​Iy​Iy​Iz​Iz2​​ ​=[u​v​w​]M ​uvw​ ​​​
其中, I x , I y , I z I_x,I_y,I_z Ix​,Iy​,Iz​就为某位置在对应尺度上三个方向的梯度,图像中尺度可以选择颜色空间,但是点云中即可以使用反射强度尺度,也可以选择空间位置尺度。使用空间位置的尺度的话,Harris3D求出的特征点就是几何空间的特征点。下边将分别介绍以反射强度为尺度和以空间位置尺度的Harris 3D算法。称为Harris3D with Intensity和Harris3D without Intensity。

2.2 Harris3D with intensity

结合harris2d算法的理解,重点还在求出区域 Ω \Omega Ω内所有点在三个方向上的反射强度梯度构成的协方差矩阵M的特征值,图像中 I x , I y I_x,I_y Ix​,Iy​可以通过差分的方式求解,在3D点云中,邻域中心点P还在反射强度尺度上的 I x , I y 和 I z I_x,I_y和I_z Ix​,Iy​和Iz​需要怎么求出来;因为点云的稀疏特性,不能单纯使用增量完成差分求解。

  • 最小二乘法
    选定点P和点云的邻域r范围 Ω \Omega Ω。使用最小二乘法完成,邻域内点的平面拟合(这个平面需要最能拟合所有点反射强度值,也就是说函数自变量为坐标位置,函数值为反射强度),拟合平面的法向量 e = [ I x , I y , I z ] e = [I_x,I_y,I_z] e=[Ix​,Iy​,Iz​]即为所求。
    不过请注意,这是在邻域内点的反射强度空间上求出的值,很有可能会被点P旁边的某个点带偏,所以在使用最小二乘法得到基础的 I x , I y , I z I_x,I_y,I_z Ix​,Iy​,Iz​后,还要做个处理。
    记坐标位置点 p ( p x , p y , p z ) p(p_x,p_y,p_z) p(px​,py​,pz​),邻域 Ω \Omega Ω内点的坐标位置是 p i = [ x i , y i , z i ] p_i=[x_i,y_i,z_i] pi​=[xi​,yi​,zi​],点p处的反射强度梯度变化为 e = [ e x , e y , e z ] e=[e_x,e_y,e_z] e=[ex​,ey​,ez​].构建等式,
    ( x i − p x ) e x + ( y i − p y ) e y + ( z i − p z ) e z = I ( x i , y i , z i ) − I ( p x , p y , p z ) \left(x_{i}-p_{x}\right) e_{x}+\left(y_{i}-p_{y}\right) e_{y}+\left(z_{i}-p_{z}\right) e_{z}=I\left(x_{i}, y_{i}, z_{i}\right)-I\left(p_{x}, p_{y}, p_{z}\right) (xi​−px​)ex​+(yi​−py​)ey​+(zi​−pz​)ez​=I(xi​,yi​,zi​)−I(px​,py​,pz​)
    向量表示:
    x i ′ T e = Δ I i x i ′ = [ x i ′ , y i ′ , z i ′ ] T = [ x i − p x , y i − p y , z i − p z ] T \begin{array}{l} \mathbf{x}_{i}^{\prime T} \mathbf{e}=\Delta I_{i} \\ \mathbf{x}_{i}^{\prime}=\left[x_{i}^{\prime}, y_{i}^{\prime}, z_{i}^{\prime}\right]^{T}=\left[x_{i}-p_{x}, y_{i}-p_{y}, z_{i}-p_{z}\right]^{T} \end{array} xi′T​e=ΔIi​xi′​=[xi′​,yi′​,zi′​]T=[xi​−px​,yi​−py​,zi​−pz​]T​
    矩阵表示,
    A e = b , A = [ x 1 ′ y 1 ′ z 1 ′ ⋮ ⋮ ⋮ x i ′ y i ′ z i ′ ⋮ ⋮ ⋮ ] , b = [ Δ I 1 ⋮ Δ I i ⋮ ] A \mathbf{e}=\mathbf{b}, A=\left[\begin{array}{ccc} x_{1}^{\prime} & y_{1}^{\prime} & z_{1}^{\prime} \\ \vdots & \vdots & \vdots \\ x_{i}^{\prime} & y_{i}^{\prime} & z_{i}^{\prime} \\ \vdots & \vdots & \vdots \end{array}\right], \mathbf{b}=\left[\begin{array}{c} \Delta I_{1} \\ \vdots \\ \Delta I_{i} \\ \vdots \end{array}\right] Ae=b,A= ​x1′​⋮xi′​⋮​y1′​⋮yi′​⋮​z1′​⋮zi′​⋮​ ​,b= ​ΔI1​⋮ΔIi​⋮​ ​
    因此,要求解 e = [ e x , e y , e z ] e=[e_x,e_y,e_z] e=[ex​,ey​,ez​]的优化函数为:
    min ⁡ e ∥ A e − b ∥ 2 2 \min _{\mathbf{e}}\|A \mathbf{e}-\mathbf{b}\|_{2}^{2} emin​∥Ae−b∥22​得, e = ( A T A ) − 1 A T b e = (A^TA)^{-1}A^Tb e=(ATA)−1ATb上文提到,求出的e方向会被点周围的点噪声点带跑偏,所以需要求出点p邻域 Ω \Omega Ω内点的法向量,完成e的优化。 e ′ = e − n ( n n T ) = e − n ( e T n ) e^{'} = e - n(nn^T)=e-n(e^Tn) e′=e−n(nnT)=e−n(eTn)其中,法向量n可以有PCA算法求解。
    在这里插入图片描述

综上,就可以得到Harris 3D with intensity算法中,点p的反射强度梯度 [ I x , I y , I z ] [I_x,I_y,I_z] [Ix​,Iy​,Iz​]的求解,然后进一步求出反射强度梯度构成的协方差矩阵的特征值,就能算出点p是否为特征点(在反射强度空间)。

2.3 Harris3D without intensity

不考虑反射强度的前提下,3D点云的harris特征点,可以直接通过点云的法向量 ( n x , n y , n z ) (n_x,n_y,n_z) (nx​,ny​,nz​)求解。构建邻域范围内点的法向量的协方差矩阵,计算协方差矩阵的特征值即可。
Harris3D without intensity和Harris3D with intensity两种尺度下,判读点是否特征点的策略如下:
在这里插入图片描述
如果,需要综合考虑反射强度和空间位置来进行harris特征点的判断,就需要一个包含发射强度梯度和法向量的协方差矩阵,并且Response值的判读也更为复杂,请看下图:
在这里插入图片描述
Input  Covariance Matrix  Criteria  Intuition  Harris Image  Image  Intensity gradient  λ 2 is small  Intensity corners  Harris 3D  PC with Intensity  Intensity gradient  λ 2 is small  Intensity corners in local surface  Harris 3D  PC  Surface normals  λ 3 is small  Corners in 3D space  Harris 6D  PC with Intensity  Intensity gradient  + surface normals  λ 4 is small  Corners in either 3D space /  local surface intensity  \begin{array}{l|l|l|l|l|} \hline & \text { Input } & \text { Covariance Matrix } & \text { Criteria } & \text { Intuition } \\ \hline \text { Harris Image } & \text { Image } & \text { Intensity gradient } & \lambda_{2} \text { is small } & \text { Intensity corners } \\ \hline \text { Harris 3D } & \text { PC with Intensity } & \text { Intensity gradient } & \lambda_{2} \text { is small } & \text { Intensity corners in local surface } \\ \hline \text { Harris 3D } & \text { PC } & \text { Surface normals } & \lambda_{3} \text { is small } & \text { Corners in 3D space } \\ \hline \text { Harris 6D } & \text { PC with Intensity } & \begin{array}{l} \text { Intensity gradient }+ \\ \text { surface normals } \end{array} & \lambda_{4} \text { is small } & \begin{array}{l} \text { Corners in either 3D space / } \\ \text { local surface intensity } \end{array} \\ \hline \end{array}  Harris Image  Harris 3D  Harris 3D  Harris 6D ​ Input  Image  PC with Intensity  PC  PC with Intensity ​ Covariance Matrix  Intensity gradient  Intensity gradient  Surface normals  Intensity gradient + surface normals ​​ Criteria λ2​ is small λ2​ is small λ3​ is small λ4​ is small ​ Intuition  Intensity corners  Intensity corners in local surface  Corners in 3D space  Corners in either 3D space /  local surface intensity ​​​

3. ISS

Harris3D算法是从2D图片的hsrris算法延伸而来的,ISS算法是3D点云原生特征点提取算法,思路与Harris 3D without intensity的思路类似。只不过ISS算法中的空间位置协方差矩阵使用了距离权重,Harris3D没有使用距离权重。

写不动了
在这里插入图片描述

在这里插入图片描述
Input  Covariance Matrix  Criteria  Intuition  Harris Image  Image  Intensity gradient  λ 2 is small  Intensity corners  Harris 3D  PC with Intensity  Intensity gradient  λ 2 is small  Intensity corners in local surface  Harris 3D  PC  Surface normals  λ 3 is small  Corners in 3D space  Harris 6D  PC with Intensity  Intensity gradient +  surface normals  λ 4 is small  Corners in either 3D space /  local surface intensity  ISS  PC  Weight point  coordinates  λ i 2 λ i 1 < γ 21 , λ i 3 λ i 2 < γ 32 Point distribution is different in  3 dimensions  \begin{array}{|l|l|l|l|l|} \hline & \text { Input } & \text { Covariance Matrix } & \text { Criteria } & \text { Intuition } \\ \hline \text { Harris Image } & \text { Image } & \text { Intensity gradient } & \lambda_{2} \text { is small } & \text { Intensity corners } \\ \hline \text { Harris 3D } & \text { PC with Intensity } & \text { Intensity gradient } & \lambda_{2} \text { is small } & \text { Intensity corners in local surface } \\ \hline \text { Harris 3D } & \text { PC } & \text { Surface normals } & \lambda_{3} \text { is small } & \text { Corners in 3D space } \\ \hline \text { Harris 6D } & \text { PC with Intensity } & \begin{array}{l} \text { Intensity gradient + } \\ \text { surface normals } \end{array} & \lambda_{4} \text { is small } & \begin{array}{l} \text { Corners in either 3D space / } \\ \text { local surface intensity } \end{array} \\ \hline \text { ISS } & \text { PC } & \begin{array}{l} \text { Weight point } \\ \text { coordinates } \end{array} & \frac{\lambda_{i}^{2}}{\lambda_{i}^{1}}<\gamma_{21}, \frac{\lambda_{i}^{3}}{\lambda_{i}^{2}}<\gamma_{32} & \begin{array}{l} \text { Point distribution is different in } \\ \text { 3 dimensions } \end{array} \\ \hline \end{array}  Harris Image  Harris 3D  Harris 3D  Harris 6D  ISS ​ Input  Image  PC with Intensity  PC  PC with Intensity  PC ​ Covariance Matrix  Intensity gradient  Intensity gradient  Surface normals  Intensity gradient +  surface normals ​ Weight point  coordinates ​​ Criteria λ2​ is small λ2​ is small λ3​ is small λ4​ is small λi1​λi2​​<γ21​,λi2​λi3​​<γ32​​ Intuition  Intensity corners  Intensity corners in local surface  Corners in 3D space  Corners in either 3D space /  local surface intensity ​ Point distribution is different in  3 dimensions ​​​

特征点的应用

在图片和点云中,特征点可以应用在二维图像驱动三维物体,提取视频中人脸的特征点对应在三维空间中的脸上,就可以实现动画人表情的变换。两者需要二维到三维的转换关系。

  • 图像处理:在图像处理中,特征点常用于物体识别、图像配准、运动跟踪等任务。比如在人脸识别中,特征点可以用来标记面部的关键特征,帮助识别不同的人脸;在图像配准中,特征点可以用来匹配不同图像之间的对应位置,实现图像的对齐和融合。
  • 计算机视觉:在计算机视觉领域,特征点被广泛应用于目标检测、目标跟踪、三维重建等任务。比如在自动驾驶中,特征点可以用来识别道路标志、车辆等目标,帮助车辆进行导航和避障。
  • 点云处理:在点云处理中,特征点常用于点云配准、场景分割、物体识别等任务。比如在工业领域,特征点可以用来检测和识别工件表面的缺陷或者特定形状,帮助质检和生产。
  • 机器学习:在机器学习中,特征点可以作为输入数据的重要特征之一,用于训练模型和进行预测。比如在文本分类中,特征点可以是文本中的关键词或者短语,用来区分不同类别的文本。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记 | 软件工程:需求分析

1 需求分析 #需求分析 1.1 需求分析概述 初步软件需求存在的问题&#xff1a;不具体&#xff0c;不清晰&#xff0c;关系不明朗&#xff0c;存在潜在缺陷&#xff0c;没有区分不同软件需求&#xff08;有必要鉴别不同软件需求项的重要性差别&#xff0c;区分不同软件需求的开…

【C语言】——指针八:指针运算笔试题解析

【C语言】——指针八&#xff1a;指针运算笔试题解析 一、题一二、题二三、题三四、题四五、题五六、题六七、题七 一、题一 //程序输出结果是什么 int main() {int a[5] { 1,2,3,4,5 };int* ptr (int*)(&a 1);printf("%d, %d", *(a 1), *(ptr - 1));return…

Python基于Tkinter的加法游戏

定制魏:QTWZPW,获取更多源码等 目录 题目概述 详细设计 函数设计 总体设计 重要代码

责任链模式详解+代码案例

责任链设计模式 定义&#xff1a; 又名职责链模式&#xff0c;为了避免请求发送者与多个请求处理者耦合在一起&#xff0c;将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链&#xff1b;当有请求发生时&#xff0c;可将请求沿着这条链传递&#xff0c;直到…

算法|ss dfsbfs

200.岛屿数量—1207.课程表—1547.省份数量695.岛屿的最大面积17.15.最长单词 200.岛屿数量—1 /*** param {character[][]} grid* return {number}*/ var numIslands function (grid) {let ans 0;let m grid.length;let n grid[0].length;const dirs [[1, 0],[-1, 0],[…

揭开“栈和队列”的神秘面纱

前言 在线性表中不止有顺序表和链表&#xff0c;今天的主角就如标题所说--->认识栈和队列。把他们俩放一起总结是有原因的&#xff0c;还请看官听我娓娓道来~ 什么是栈&#xff1f; 栈&#xff08;stack&#xff09;是限定仅在表尾进行插入和删除操作的线性表 咱可以把栈理…

Pro版 v3.0首页DIY热区神器,让图片更全能!

Pro版v3.0新增了很多新功能&#xff0c;为了方便大家能快速了解使用&#xff0c;今天&#xff0c;我们就开始来逐步了解这些新功能。 在此次更新中&#xff0c;Pro版的首页DIY功能实现了全新重构升级&#xff0c;新增了DIY热区、视频、排行榜、积分商城、预售、签到组件&#…

python类中的__call__函数有什么用法?

在 Python 中,如果一个类实现了 __call__ 方法,那么这个类的实例对象就可以像函数一样被调用。当调用一个实现了 __call__ 方法的对象时,实际上会调用这个对象的 __call__ 方法。 __call__ 方法的主要作用是让对象具有函数的行为,可以在调用对象时执行一些操作。这对于需要…

【Hadoop技术框架-MapReduce和Yarn的详细描述和部署】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;今天的内容主要是Hadoop的后两个组件&#xff1a;MapReduce和yarn的相关内容。同时还有Hadoop的完整流程。希望对大家有所帮助。感谢大家关注点赞。 &#x1f49e;&#x1f49e;前路漫漫&…

mysql学习笔记NO.1

MySQL入门笔记 1.MySQL 5.7 安装配置 下载MySQL 5.7安装包并进行安装。配置MySQL的环境变量。启动MySQL服务。 2.命令行连接到MySQL 打开命令行终端。输入以下命令连接到MySQL服务器&#xff1a; mysql -u 用户名 -p 输入密码以登录MySQL服务器。​​​​​​​ 3.SQLyog 下载并…

蓝桥杯刷题-07-整数删除-暴力

给定一个长度为 N 的整数数列&#xff1a;A1, A2, . . . , AN。你要重复以下操作 K 次&#xff1a; 每次选择数列中最小的整数&#xff08;如果最小值不止一个&#xff0c;选择最靠前的&#xff09;&#xff0c;将其删除。并把与它相邻的整数加上被删除的数值。输出 K 次操作后…

深度学习实战73-基于多模态CLIP模型的实战项目,CLIP模型的架构介绍与代码实现

大家好,我是微学AI,今天给大家介绍一下深度学习实战73-基于多模态CLIP模型的实战项目,CLIP模型的架构介绍与代码实现。多模态CLIP(Contrastive Language-Image Pre-training)模型是一种深度学习模型,其核心设计理念是通过大规模的对比学习训练,实现图像与文本之间的跨模…

【JAVASE】面向对象程序三大特性之一( 封装)

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609;\n &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1.包的使用 2.static关键字的使用 3.代码…

Python+Vuecil笔记

Nginx 进入目录: C:\nginx-1.20.2\nginx-1.20.2 start nginx 开始 nginx -s stop 停止 nginx -s quit 退出CSS 通过标签去写css 循环展示数据 JS 点击时执行事件 Django 配置media 在seetings里面修改 STATIC_URL /static/ MEDIA_URL /upload/ MEDIA_ROOT os.pat…

windows terminal美化教程

安装terminal 微软商店下载安装terminal 配置文件 进入terminal&#xff0c;打开设置。 {"$schema": "https://aka.ms/terminal-profiles-schema",// global settings"profiles": {// profile settings"defaults": {// default sett…

阿里云服务器租赁一年收费标准

阿里云服务器租用价格表2024年最新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核…

Docker设置时区

Dockerfile中设置时区的方法 # 设置环境变量TZ ENV TZAsia/Shanghai# 配置时区 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone创建容器时设置时区 将宿主机与容器的时间进行挂载&#xff0c;直接使用宿主机的时区 -v /etc/lo…

【亲测有效】微信公众号设置菜单栏显示,未开启自定义菜单,微信公众平台自定义菜单接口开发

微信公众平台自定义菜单接口开发 问题:运营人员在设置微信公众号设置菜单栏显示,未开启自定义菜单解决方案(微信公众平台自定义菜单接口开发):自定义菜单-创建接口请求链接完整代码第一步:在WeChat类里添加代码情况一:没有WeChat类情况,如果已有请看情况二情况二:已有…

【系统架构师】-软件架构设计

1、软件架构的概念 架构的本质 1、软件架构为软件系统提供了一个结构、行为和属性的高级抽象。 2、软件架构风格是特定应用领域的惯用模式&#xff0c;架构定义一个词汇表和一组约束。 架构的作用 1、软件架构是项目干系人进行交流的手段。 2、软件架构是可传递和可复用的模型…

day21java学习打卡:匿名对象的使用

/* * 一.理解“万事万物皆对象” * 1.在java语言范畴中&#xff0c;我们的都将功能&#xff0c;结构封装到类中&#xff0c;通过类的实例化, * 来调节具体的功能结构 * >Scanner&#xff0c;String * >文件&#xff1a;File * >网络资源&#xff1a…