《计算机视觉中的多视图几何》笔记(13)
13 Scene planes and homographies
本章主要讲述两个摄像机和一个世界平面之间的射影几何关系。
我们假设空间有一平面 π \pi π,平面上的一点为 x π x_{\pi} xπ。 x π x_{\pi} xπ分别在两幅图像 P , P ′ P, P' P,P′上形成了 x , x ′ x, x' x,x′。
那么我们可以从两个方面来讨论:首先,从对极几何的角度来说, x x x在 P ′ P' P′上决定了一条直线,也就是极线。极线是由 x x x出发的射线在 P ′ P' P′上投影形成的。第二,从homography角度来说, x x x可以在 P ′ P' P′上唯一确定一个点,因为从 x x x出发的射线和空间平面 π \pi π的交点可以求出来,也就是 x π x_{\pi} xπ,知道了 x π x_{\pi} xπ自然可以唯一确定 x ′ x' x′。
文章目录
- 13 Scene planes and homographies
- 13.1 Homographies given the plane and vice versa
- 13.1.1 Homographies compatible with epipolar geometry
- 13.2 Plane induced homographies given F F F and image correspondences
- 13.2.1 Three points
- 13.2.2 A point and line
- 13.3 Computing F F F given the homography induced by a plane
- 13.4 The infinite homography H ∞ H_{\infin} H∞
13.1 Homographies given the plane and vice versa
现在我们来讨论一下单应性与平面之间的关系。空间内任意的一个平面可以唯一确定单应性,反之亦然。需要注意的是,空间内的平面不可以包括摄像机的光心,如果包括了光心,单应性就变成了退化的情况。
我们首先给出一个结论:
假设两个摄像机的投影矩阵分别是 P = [ I ∣ 0 ] , P ′ = [ A ∣ a ] P=[I|0],P'=[A|a] P=[I∣0],P′=[A∣a],空间内的平面表示为 π T X = 0 , π = ( V T , 1 ) \pi^T X = 0, \pi=(V^T, 1) πTX=0,π=(VT,1),由该平面确定的单应性就是 x ′ = H x x'=Hx x′=Hx,并且 H = A − a v T H = A-av^T H=A−avT。
13.1.1 Homographies compatible with epipolar geometry
单应性与对极几何的关系。假设我们从空间平面上随机选择4个点,把他们投影到两幅图像,就会形成4对对应点。这4对对应点就确定了一个单应性矩阵 H H H。而且这4对对应点是满足对极几何约束的,i.e. x ′ T F x = 0 x'^T F x = 0 x′TFx=0。这种情况叫对极几何与单应性是相容(consistent or compatible)的。
假设我们从第一幅图像中随机选择四个点,第二幅图像也随机选四个点,可以利用它们计算出一个单应性矩阵,不一定能满足对极几何的约束,这种情况叫对极几何与单应性不相容。
现在我们考虑相容的情况。那么对应点之间可以表示为 x ↔ H x x \leftrightarrow Hx x↔Hx,带入对极几何的关系式,我们就得到 ( H x ) T F x = x T H T F x = 0 (Hx)^T F x = x^T H^T Fx = 0 (Hx)TFx=xTHTFx=0。
根据此式我们可以得出一个结论:
单应性矩阵 H H H与基本矩阵 F F F相容当且仅当 H T F H^T F HTF是一个斜对称矩阵(skew-symmetric),我们将其表达为: H T F + F T H = 0 H^T F + F^T H =0 HTF+FTH=0, H H H的自由度是8-5=3。
由于以上关系是一个隐性的约束,我们接下来给出一个显式表达式。
结论 13.3
给出由两幅图像确定的基本矩阵 F F F,其对应的单应性矩阵 H H H可以表示为 H = A − e ′ V T H=A-e'V^T H=A−e′VT F = [ e ′ ] × A F=[e']_\times A F=[e′]×A。
引理 13.4
一个变换 H H H是两幅图像的单应矩阵当且仅当这两幅图像确定的 F F F可以分解成 [ e ′ ] × H [e']_\times H [e′]×H, e ′ e' e′是第二幅图像的极点。
根据以上介绍,我们知道单应性矩阵 H H H是由空间内某一平面 π \pi π确定的,那么在已知 H H H的情况下,我们如何求出平面 π \pi π?求解方程组 λ H = A − a v T \lambda H=A-av^T λH=A−avT就行。
13.2 Plane induced homographies given F F F and image correspondences
从基本矩阵和图像对应点来计算单应性矩阵。在前文我们是利用空间中的平面来计算单应性矩阵,在本节中我们直接从两幅图像中的对应元素来计算单应性矩阵。这是因为三维空间的平面可以用三个不共线的点来计算,或者用一条直线和一个点。这些元素都可以直接从两幅图中的对应元素推导出来。对应元素应该满足一些性质:
- 对应元素要满足对极几何的约束
- 三维空间中的元素会出现退化的情况,这是因为元素之间共面或者共线
我们首先讨论从三个对应点来计算单应性矩阵的情况。
13.2.1 Three points
假设我们知道空间中的三个点 X i X_i Xi在两幅图像上形成的投影,并且我们已知基本矩阵 F F F,我们可以这样计算单应矩阵 H H H:
首先空间点 X i X_i Xi的坐标可以计算出来(12章的三角化),知道了三个点的位置,那么它们所在的平面就可以被计算出来(3.3-P66),已知平面就可以根据13.1节的方法来计算 H H H,这种方法叫显式法。
其次,我们也可以用四个点来计算 H H H,第四个点就是极点。所以我们可以有这样的方程组: x ′ = H x , e ′ = H e x'=Hx, e'=He x′=Hx,e′=He,这种方法叫隐式法。
那么这两种方法有啥区别?我们应该用哪一种?答案是我们应该用显示法,因为隐式法包含了退化的情况。为什么呢?因为如果有两个点和极点共线,那么 H H H就算不出来了,参见4.1.3 P91。同时,如果点和极点几乎共线,那么隐式法会给出一个非常差的结果,但是显式法没有这个问题,它可以处理点和极点共线的情况。
我们下面来形式化的表示一下。
结论13.6 给定一个基本矩阵 F F F和三对对应点 x i ↔ x i ′ x_i \leftrightarrow x'_i xi↔xi′,由这三对点所在平面构成的 H H H可以表达为: H = A − e ′ ( M − 1 b ) T H=A-e'(M^{-1}b)^T H=A−e′(M−1b)T。
A = [ e ′ ] × F A=[e']_\times F A=[e′]×F b b b是一个三维向量,每一维可以表达成:
b i = ( x i ′ × ( A x i ) ) T ( x i ′ × e ′ ) / ∣ ∣ x i ′ × e ′ ∣ ∣ 2 b_i = (x'_i \times (Ax_i))^T (x'_i \times e')/||x'_i \times e'||^2 bi=(xi′×(Axi))T(xi′×e′)/∣∣xi′×e′∣∣2
M M M是 3 × 3 3 \times 3 3×3的矩阵, 每一行是 x i T x_i^T xiT。
一致性条件 每一对对应点都会对 H H H增加一个约束,该约束可以表达为: e ′ × x i ′ = e ′ × A x i = F x i e' \times x'_i = e' \times Ax_i = Fx_i e′×xi′=e′×Axi=Fxi,这个等式左边 e ′ × x i ′ e' \times x'_i e′×xi′的几何意义是通过 x i ′ x'_i xi′的极线,右边 F x i F x_i Fxi就是 x i x_i xi在第二幅图像中的极线。所以整个式子的意思就是 x i ′ x'_i xi′在 x i x_i xi对应的极线上。
存在噪声的情况 一般情况下图像中都包含噪声,那么我们就用迭代的方法来优化 x , x ′ x,x' x,x′的位置(12.1节P318),然后用12.6节的极大似然估计来求3D空间点的坐标和 H H H。
13.2.2 A point and line
点和线来估计 H H H。本节先将线对应关系,再讲点对应关系。
线对应 两幅图像中的对应线确定了三维空间中的一条对应线。三维空间中的线位于一族平面上(不是一个平面)。这一族平面对应于一族 H H H。
结论 13.7 由一对对应直线 l ↔ l ′ l \leftrightarrow l' l↔l′ 确定的一族平面对应了一族单应性矩阵 H H H,它可以表达为
H ( μ ) = [ l ′ ] × F + μ e ′ l T H(\mu) = [l']_{\times} F + \mu e'l^T H(μ)=[l′]×F+μe′lT
从这个式子我们可以看出, H H H只取决于 μ \mu μ这一个参数。我们回忆一下13.1节, H H H同样有一个表达式,该表达式是在已知两个摄像机矩阵 P = K [ I ∣ 0 ] , P ′ = K ′ [ R ∣ t ] P=K[I|0],P'=K'[R|t] P=K[I∣0],P′=K′[R∣t] 和空间平面 π = ( n T , d ) T \pi=(n^T,d)^T π=(nT,d)T的情况下给出的。
H = K ′ ( R − t n T / d ) K − 1 H=K'(R-tn^T/d)K^{-1} H=K′(R−tnT/d)K−1
这个式子由三个参数决定,因为 n T n^T nT是一个三维向量。对比上文的两个式子,我们可以看出由直线确定的 H H H只需要一个参数,由平面确定的 H H H需要三个参数,也就是说直线将参数的维度从3压缩到了1。
线和点的对应 从上文我们知道线对应关系可以确定 H ( μ ) H(\mu) H(μ),那么怎么确定 μ \mu μ的取值呢?我们用点对应 x ↔ x ′ x \leftrightarrow x' x↔x′ 来确定。
结论13.8 已知 F F F和一对对应点 x ↔ x ′ x \leftrightarrow x' x↔x′,一对对应线 l ↔ l ′ l \leftrightarrow l' l↔l′, H H H可以表达为如下式子:
H = [ l ′ ] × F + ( x ′ × e ′ ) T ( x ′ × ( ( F x ) × l ′ ) ) ∣ ∣ x ′ × e ′ ∣ ∣ 2 ( l T x ) e ′ l T H=[l']_{\times} F + \frac{(x' \times e')^T(x' \times ((Fx) \times l'))} {||x' \times e'||^2 (l^Tx)} e'l^T H=[l′]×F+∣∣x′×e′∣∣2(lTx)(x′×e′)T(x′×((Fx)×l′))e′lT
应用这个公式的前提是 x , x ′ x, x' x,x′得满足对极几何约束,那么在有噪声的情况下,我们首先就得用算法12.1(P318)先优化一下。
H ( μ ) H(\mu) H(μ)的几何解释
H ( μ ) H(\mu) H(μ)首先满足 x = H ( μ ) x ′ x=H(\mu)x' x=H(μ)x′。我们将 H ( μ ) H(\mu) H(μ)的表达式带入,可以得到:
x ′ = H ( μ ) x = ( [ l ′ ] × F + μ e ′ l T ) x = [ l ′ ] × F x x'=H(\mu)x = ([l']_{\times} F + \mu e'l^T)x = [l']_{\times}Fx x′=H(μ)x=([l′]×F+μe′lT)x=[l′]×Fx
最后得到的结果跟 μ \mu μ没关系,只和 F F F有关系。所以我们说对极几何为 l ↔ l ′ l \leftrightarrow l' l↔l′上的每一点都确定了对应关系。这个结论很显然。因为 F F F本来就是描述两幅图像上点对应关系的,只不过现在的点都在 l , l ′ l, l' l,l′上了。
退化的单应矩阵 如果说三维空间中的平面包括了摄像机的光心,那么 H H H就属于退化的情况。在退化情况下 H H H就不是满秩矩阵,如果 r a n k ( H ) = 2 rank(H)=2 rank(H)=2, H H H投影结果就是一条直线。 r a n k ( H ) = 1 rank(H) = 1 rank(H)=1, H H H投影结果就是一个点。如果我们从 H ( μ ) H(\mu) H(μ)的情况考虑,那么退化就可以表达成 μ → inf \mu \rightarrow \inf μ→inf或者 μ → 0 \mu \rightarrow 0 μ→0。
13.3 Computing F F F given the homography induced by a plane
我们讨论如何在已知 H H H的情况下求解 F F F。前几章我们讲述的是已知 F F F,怎么求解 H H H。现在我们反过来,求已知 H H H的情况下,如何求解 F F F。
主要思路就是构造一个平面 π \pi π, X X X不在 π \pi π上。那么 x x x和 π \pi π有一个交点 x π x_{\pi} xπ,该交点向 P ′ P' P′投影,得到 x ~ ′ \tilde{x}' x~′。 x ~ ′ \tilde{x}' x~′肯定和 x ′ x' x′不一样,除非 X X X在 π \pi π上。那么我们用 x ~ ′ , x ′ \tilde{x}', x' x~′,x′做叉乘,得到的线段肯定过极点 e ′ e' e′,再找另外一个 x ~ ′ \tilde{x}' x~′,重复一遍,就得到第二条过极点 e ′ e' e′的极线,两个极线交点就是极点 e ′ e' e′,知道了 e ′ e' e′,就可以用 [ e ′ ] × H = F [e']_{\times} H =F [e′]×H=F求出 F F F。
所以最简单的办法就是找出6对对应点,其中有4对共面的。用这4对点来计算 H H H (求解方程组 x i ′ = H x i x'_i=Hx_i xi′=Hxi),然后用 x 5 , x 6 x_5,x_6 x5,x6求出两条直线 ( H x 5 ) × x 5 ′ (Hx_5) \times x'_5 (Hx5)×x5′, ( H x 6 ) × x 6 ′ (Hx_6) \times x'_6 (Hx6)×x6′,两个直线做叉乘就是极点 e ′ e' e′, 所以 F = [ e ′ ] × H F=[e']_{\times} H F=[e′]×H。
投影点的深度
一个世界平面内的点 X = ( x T , ρ ) T X=(x^T,\rho)^T X=(xT,ρ)T投影在第一幅图像上形成了 x x x,第二幅图像上形成了 x ′ = H x + ρ e ′ x'=Hx+\rho e' x′=Hx+ρe′,根据上一节的模型,我们知道 x ′ , e ′ H x x', e' Hx x′,e′Hx三点共线。 ρ \rho ρ可以被看做偏离 H H H相对程度的一个指标,那么它就可以被认为是 X X X与平面 π \pi π之间的距离。 ρ = 0 \rho=0 ρ=0表明 X X X在平面 π \pi π上 ρ \rho ρ的符号就可以表明 X X X位于平面的哪一边。
两个平面求F
假设我们知道两个平面 π 1 , π 2 \pi_1,\pi_2 π1,π2,那么他们确定两个单应矩阵 H 1 , H 2 H_1,H_2 H1,H2。这两个单应矩阵足以确定 F F F,其实他们是超定了。我们可以构造一个矩阵 H = H 2 H 1 H=H_2 H_1 H=H2H1,这是第一幅图像到自己的映射。那么极点 e e e在 H H H的映射下是不变的。那么 F = [ e ′ ] × H i , i = 1 , 2 , e ′ = H i e F=[e']_{\times} H_i, i=1,2, e'=H_ie F=[e′]×Hi,i=1,2,e′=Hie, H H H的另外一个性质是有相同的两个特征值。因为 H 1 , H 2 H_1,H_2 H1,H2在空间中会相交,然后形成一条直线。这个直线往第一幅图像中投影,得到的投影直线在 H H H的映射下是不变的。所以这个 H H H有一条固定的直线,还有一个固定点也就是极点 e e e。
13.4 The infinite homography H ∞ H_{\infin} H∞
无穷远处的单应矩阵。
定义 13.10 H ∞ H_{\infty} H∞ 是由无穷远处平面 π ∞ \pi_{\infty} π∞定义的单应矩阵。
我们回忆参数化的 H H H表达式 H = K ′ ( R − t n T / d ) K − 1 H=K'(R-tn^T/d)K^{-1} H=K′(R−tnT/d)K−1(由三个参数确定),那么
H ∞ = lim d → ∞ H = K ′ R K − 1 H_{\infty} = \lim_{d \to \infty} H = K'RK^{-1} H∞=d→∞limH=K′RK−1
由上式可以看出 H ∞ H_{\infty} H∞ 并不依赖于图像之间的平移,只和旋转、内参有关系。
如果我们考虑两幅图之间对应的点,我们可以由下式:
x ′ = K ′ R K − 1 + K ′ t / Z = H ∞ x + K ′ t / Z x'=K'RK^{-1} + K't/Z = H_{\infty} x + K't/Z x′=K′RK−1+K′t/Z=H∞x+K′t/Z
Z Z Z就是点相对于第一幅图像的深度。从上式中我们可以看出无穷远处的点( z = ∞ z=\infty z=∞)是由 H ∞ H_{\infty} H∞映射到图像上的。如果平移 t t t是零,那么我们就可以得到 H ∞ H_{\infty} H∞,这相当与摄像机绕自己光心进行旋转。所以如果摄像机绕自己光心进行旋转,那么 H ∞ H_{\infty} H∞就是关于图像上任意深度点的一个单应矩阵。
如果我们考虑到 e ′ = K ′ t e'=K't e′=K′t那么 x ′ = H ∞ x + e ′ / z x'=H_{\infty}x+e'/z x′=H∞x+e′/z,我们对比书中式13.9
x ′ = H x + ρ e ′ x'=Hx+\rho e' x′=Hx+ρe′可以看出来 1 / z 1/z 1/z就相当于 ρ \rho ρ,所以说逆深度可以解释为点相对于无穷远平面 π ∞ \pi_{\infty} π∞的距离。
消失点和消失线
无穷远处平面上的点是由 H ∞ H_{\infty} H∞映射到图像上的,这些点就是消失点。所以 H ∞ H_{\infty} H∞在两幅图像中的消失点 v ′ , v v', v v′,v之间建立了映射 v ′ = H v v'=Hv v′=Hv,所以 H ∞ H_{\infty} H∞可以由三个不共线的消失点计算,也可以由对应的消失线计算(13.2.2节)。
仿射重建和度量重建
回忆chapter 10,知道了无穷远平面 π ∞ \pi_{\infty} π∞可以把投影重建升级成度量重建。 H ∞ H_{\infty} H∞会出现在重建过程中,因为我们如果指定 P = [ I ∣ 0 ] , P ′ = [ H ∞ ∣ λ e ′ ] P=[I|0],P'=[H_{\infty}|\lambda e'] P=[I∣0],P′=[H∞∣λe′],重建过程就是仿射重建。
假设我们规定 π ∞ \pi_{\infty} π∞的坐标是 ( 0 , 0 , 0 , 1 ) (0,0,0,1) (0,0,0,1), H ∞ H_{\infty} H∞可以直接从摄像机矩阵中来决定。我们假设 P = [ M ∣ 0 ] , P ′ = [ M ′ ∣ t ] P=[M|0], P'=[M'|t] P=[M∣0],P′=[M′∣t],那么无穷远平面上的一点 X = ( x ∞ T , 0 ) T X=(x^T_{\infty},0)^T X=(x∞T,0)T就会被映射到 x = P X = M x ∞ , x ′ = P ′ X = M ′ x ∞ x=PX=Mx_{\infty}, x'=P'X=M'x_{\infty} x=PX=Mx∞,x′=P′X=M′x∞,所以 x ′ = M ′ M − 1 x'=M'M^{-1} x′=M′M−1, 那么 H i n f t y = M ′ M − 1 H_{infty} = M'M^{-1} Hinfty=M′M−1。
H ∞ H_{\infty} H∞还可以被用来进行两个相机之间的标定。假设 π ∞ \pi_{\infty} π∞上的绝对圆 Ω ∞ \Omega_{\infty} Ω∞映射在两个图像上,分别表示为 ω , ω ′ \omega, \omega' ω,ω′,他们之间存在如下关系: ω ′ = H ∞ − T ω H ∞ − 1 \omega'=H_{\infty}^{-T} \omega H_{\infty}^{-1} ω′=H∞−TωH∞−1,那么我们如果知道 ω \omega ω,就可以计算 ω ′ \omega' ω′,然后分解它,就知道了第二个相机的内参。
立体匹配
H ∞ H_{\infty} H∞还可以用来缩小立体匹配时极线搜索的范围。因为 x x x和无穷远平面由一个交点,记为 X ∞ X_{\infty} X∞,它往图像二上投影,得到 x ∞ ′ x'_{\infty} x∞′,那么与 x x x匹配的 x ′ x' x′肯定位于 e ′ e' e′与 x ∞ ′ x'_{\infty} x∞′ 之间,所以我们不用搜索整个极线。
相关文章:
《计算机视觉中的多视图几何》笔记(13)
13 Scene planes and homographies 本章主要讲述两个摄像机和一个世界平面之间的射影几何关系。 我们假设空间有一平面 π \pi π,平面上的一点为 x π x_{\pi} xπ。 x π x_{\pi} xπ分别在两幅图像 P , P ′ P, P P,P′上形成了 x , x ′ x, x x,x′。 那…...
H5移动端购物商城系统源码 小型商城全新简洁风格全新UI 支持易支付接口
一款比较简单的 H5 移动端购物商城系统源码,比较适合单品商城、小型商城使用。带有易支付接口。 源码下载:https://download.csdn.net/download/m0_66047725/88391704 源码下载2:评论留言或私信留言...
全志ARM926 Melis2.0系统的开发指引⑤
全志ARM926 Melis2.0系统的开发指引⑤ 编写目的8. 固件修改工具(ImageModify)使用8.1.界面说明8.2.操作步骤8.2.1. 配置平台8.2.2. 选择固件8.2.3. 选择要替换的文件8.2.4. 替换文件8.2.5. 保存固件 8.3.注意事项8.4.增加固件修改权限设置8.4.1. 概述8.4.2. 操作说明8.4.2.1.打…...
【AI视野·今日Robot 机器人论文速览 第四十七期】Wed, 4 Oct 2023
AI视野今日CS.Robotics 机器人学论文速览 Wed, 4 Oct 2023 Totally 40 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚基于神经网络的多模态触觉感知, classification, position, posture, and force of the grasped object多模态形象的解耦(f…...
GPX可视化工具 GPX航迹预览工具
背景 当我们收到别人分享的航迹文档,即gpx文档时,如何快速的进行浏览呢?我们可以使用GIS软件来打开gpx文档并显示gpx中所记录的航迹,例如常用的GIS软件有googleEarth, Basecamp, GPXsee, GPX E…...
学信息系统项目管理师第4版系列18_采购管理
1. 协议 1.1. 合同 1.1.1. 国际合作的项目经理应牢记,无论合同规定如何详尽,文化和当地法律对合同及其可执行性均有影响 1.2. 服务水平协议(SLA) 1.3. 谅解备忘录 1.4. 协议备忘录(MOA) 1.5. 订购单 …...
标准化数据模型
标准化数据模型 标准化被定义为减少或消除数据集中冗余的过程。 它已成为关系数据库中数据建模的事实上的方法,很大程度上是由于这些系统最初设计时所围绕的底层资源限制:缓慢的磁盘和昂贵的 RAM。更少的数据冗余/重复意味着更有效地从磁盘读取数据并占…...
linux平台源码编译ffmpeg
目录 编译平台 编译步骤 编译平台 中标麒麟 编译步骤 1 从Download FFmpeg 下载源码,我选中了4.2.9版 2 解压 3 在解压后的目录下输入 ./configure --enable-shared --prefix/usr/local/ffmpeg 4 make 5 sudo make install 6 ffmpeg的头文件、可执行程…...
Vue中如何进行拖拽与排序功能实现
在Vue中实现拖拽与排序功能 在Web应用程序中,实现拖拽和排序功能是非常常见的需求,特别是在管理界面、任务列表和图形用户界面等方面。Vue.js作为一个流行的JavaScript框架,提供了许多工具和库来简化拖拽和排序功能的实现。本文将介绍如何使…...
新款UI动态壁纸头像潮图小程序源码
新款UI动态壁纸头像潮图小程序源码,不需要域名服务器,直接添加合法域名,上传发布就能使用。 可以对接开通流量主,个人也能运营,不需要服务器源码完整。整合头像,动态壁纸,文案功能齐全。 源码…...
Python逐日填补Excel中的日期并用0值填充缺失日期的数据
本文介绍基于Python语言,读取一个不同的列表示不同的日期的.csv格式文件,将其中缺失的日期数值加以填补;并用0值对这些缺失日期对应的数据加以填充的方法。 首先,我们明确一下本文的需求。现在有一个.csv格式文件,其第…...
【C语言经典100例题-70】求一个字符串的长度(指针)
代码 使用指针来遍历字符串,直到遇到字符串结尾的空字符\0为止,统计字符数量即为字符串长度。 #include<stdio.h> #define n 20 int getlength(char *a) {int len 0;while(*a!\0){len;a;}return len; } int main() {char *arr[n] { 0 };int l…...
十天学完基础数据结构-第八天(哈希表(Hash Table))
哈希表的基本概念 哈希表是一种数据结构,用于存储键值对。它的核心思想是将键通过哈希函数转化为索引,然后将值存储在该索引位置的数据结构中。 哈希函数的作用 哈希函数是哈希表的关键部分。它将输入(键)映射到哈希表的索引位…...
flink集群部署
虚拟机配置 bigdata-hmaster 192.168.135.112 4核心 32GB bigdata-hnode1 192.168.135.113 4核心 16GB bigdata-hnode2 192.168.135.114 4核心 16GB 安装包:https://dlcdn.apache.org/flink/flink-1.17.1/flink-1.17.1-bin-scala_2.12.tgz 放到/usr/lcoal/lib目录…...
2.证明 非单一点 Oct.2023
目录 原题解引申出的编程问题非单一点题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 题解题目正解 原题 已知等边 Δ P 0 P 1 P 2 \Delta P_0P_1P_2 ΔP0P1P2,它的外接圆是 O O O,设 O O O的半径是 R R R。同时,设 Δ …...
常见的软件脱壳思路
单步跟踪法 1.本方法采用OD载入。 2.跟踪F8,实现向下的跳。 3.遇到程序回跳按F4。 4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现! 5.刚载入程序有一个CALL的,我们就F7跟进去,不然程序很容…...
Python:torch.nn.Conv1d(), torch.nn.Conv2d()和torch.nn.Conv3d()函数理解
Python:torch.nn.Conv1d(), torch.nn.Conv2d()和torch.nn.Conv3d()函数理解 1. 函数参数 在torch中的卷积操作有三个,torch.nn.Conv1d(),torch.nn.Conv2d()还有torch.nn.Conv3d(),这是搭建网络过程中常用的网络层,为了用好卷积层࿰…...
scala 连接 MySQL 数据库案例
1 依赖准备 mysql 8添加: <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency> mysql 5 添加: <dependency><grou…...
guava工具类常用方法
Guava是Google开发的一个Java开源工具类库,它提供了许多实用的工具类和功能,可以简化Java编程中的常见任务。 引入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>2…...
CSShas伪类选择器案例附注释
<!DOCTYPE html> <html lang="en"> <head><meta charset...
nodejs+vue中医体质的社区居民健康管理系统elementui
可以实现首页、中医体质量表、健康文章、健康视频、我的等,在我的页面可以对医生、小区单元、医疗药品等功能进行操作。目前主要的健康管理系统是以西医为主,而为了传扬中医文化,提高全民健康意识,解决人民日益增长的美好生活需要…...
Kotlin中reified 关键字
前言 在开始之前,让我们先讨论一下泛型。泛型用于为类、函数或接口提供通用的实现。下面是一个示例泛型方法: fun <T> displayValue(value: T) {println(value) }fun main() {displayValue<String>("Generics")displayValue<…...
Linux命令(95)之alias
linux命令之alias 1.alias介绍 linux命令alias是用来将/bin目录下的命令进行别名设置,将一些较长的命令进行简化。 alias命令的作用只局限于该次登入的操作,相当于临时变量。 如果对当前用户永久生效,需修改~/.bashrc文件,使用…...
DHCPsnooping 配置实验(2)
DHCP报文泛洪攻击 限制接收到报文的速率 vlan 视图或者接口视图 dhcp request/ dhcp-rate dhcp snooping check dhcp-request enable dhcp snooping alarm dhcp-request enable dhcp snooping alarm dhcp-request threshold 1 超过则丢弃报文 查看[Huawei]dis dhcp statistic…...
Qt 综合练习小项目--反金币(2/2)
目录 4 选择关卡场景 4.2 背景设置 4.3 创建返回按钮 4.3 返回按钮 4.4 创建选择关卡按钮 4.5 创建翻金币场景 5 翻金币场景 5.1 场景基本设置 5.2 背景设置 5.3 返回按钮 5.4 显示当前关卡 5.5 创建金币背景图片 5.6 创建金币类 5.6.1 创建金币类 MyCoin 5.6.…...
安装matplotlib__pygame,以pycharm调入模块
安装pip 安装matplotlib 安装完毕,终端输入pip list检查 导入模块出现bug,发现不是matplotlib包的问题,pycharm版本貌似不兼容,用python编辑器可正常绘图,pygame也可正常导入。 pycharm版本问题解决 终…...
编写可扩展的软件:架构和设计原则
在今天的软件开发领域,可扩展性是一个至关重要的概念。无论您是开发一个小型应用程序还是一个大规模的软件系统,都需要考虑如何使您的软件能够在不断变化的需求下进行扩展和演进。本文将探讨编写可扩展软件的关键架构和设计原则,以帮助开发人…...
算法-排序算法
0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间…...
Android_Monkey_测试执行策略及标准
一、Monkey命令概述 NO命令说明用法解释1 -p ALLOWED_PACKAGE用于指定某个apk,可以使用多个-p选项,但是每个-p命令选项只能用于一个apk 如果不指定-p,Monkey就会默认进行全系统测试。 -p com.android.contacts可以进行特定apk的Monkey测试2 …...
windows安装nginx
官网提供的下载地址:nginx: download nginx1.25.2下载地址:http://nginx.org/download/nginx-1.25.2.zip 直接运行nginx.exe会闪退,我们还得使用cmd/git bash/power shell 命令进行启动; 个人更喜欢git bash; 运行命…...
网站建设选择本地/百度app安装下载
使用VS2010编译运行ACE版本号为6.0.1 按照网上步骤添加config.h,在ACE_wrappers/ace目录下 ,新建 config.h 文件加入以下内容: #include "ace/config-win32.h" #define ACE_HAS_STANDARD_CPP_LIBRARY 1 添加用户变量: 变量名 PAT…...
软件开发流程是哪几个/站内seo优化
大学计算机课程标准 大学计算机 课程总学时:64学时(理论学时:32学时;实验、实训学时:32学时) 学分:4学分 开课对象:全校所有专业 课程类别:公共基础课 一、说明 (一)课程性质 大学计算机是各个专…...
网站建设费可以走办公费吗/湖南关键词优化首选
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1&#…...
87网站建设工作室/广告推广投放平台
author: skatetime: 2009/04/11 环境: 交易库A oracle9i出票库B oracle10g 在交易库A和出票库B之间通过DBlink连接 在交易库A上的表T1有触发器,并且触发器里用了sequence和merage into 触发器代码如下: create or…...
网站主题如何制作/佳木斯seo
本文要点Arrow 为分析应用程序提供了零复制数据传输Arrow 支持内存中、列式格式和数据处理Arrow 是跨平台、跨语言可互操作的数据交换方式Arrow 是大数据系统的骨干大数据天生就太大了,无法装进单独的一台机器里。数据集需要在多台计算机上分区存储。每个分区都分配…...
温州市企业网站制作/怎么样优化网站seo
设计一个父类,表示游戏角色:派生出多个子类用于表示不同职业的角色,为每一个类设置必要的属性和方法,并实例化对象进行测试。更多python教学内容及代码访问omegaxyz.com①父类:Player所有角色有普通杀与普通防御功能&a…...