多视图几何中向量叉乘的矩阵转换 Matrix Transformation for Cross Product in MVG

Title: 多视图几何中向量叉乘的矩阵转换 Matrix Transformation for Cross Product in MVG


文章目录

  • I. 向量叉乘的矩阵转换恒等式
  • II. 符号计算 Maxima 程序推导
  • III. 推论和关联公式的说明
    • 1. 推论
    • 2. 应用于对极几何中基本矩阵推导
    • 3. 应用于基本矩阵与单应矩阵关系
    • 4. 与刚体运动旋转矩阵作用的关系
    • 附 - 关于摄像机矩阵广义逆的说明
  • IV. 小节
  • 参考文献


多视图几何读书笔记

[1] 对极约束及其性质 —— 公式详细推导

[2] [笔记] 仿射变换性质的代数证明

[3] 多视图几何中向量叉乘的矩阵转换恒等式 Matrix Transformation for Cross Product in MVG ← \leftarrow 本篇


I. 向量叉乘的矩阵转换恒等式

“Multiple View Geometry in Computer Vision” 中一个关于向量叉乘的矩阵转换的恒等式经常在基本矩阵、单应矩阵、对极几何等相关内容的推导中出现[1].

Lemma A4.2[1]

If M M M is any 3 × 3 3\times3 3×3 matrix (invertible or not), and x \mathbf{x} x and y \mathbf{y} y are column vectors, then
( M x ) × ( M y ) = M ∗ ( x × y ) (A4.8) (M\mathbf{x})\times (M \mathbf{y}) = M^{\ast}(\mathbf{x} \times \mathbf{y})\tag{A4.8} (Mx)×(My)=M(x×y)(A4.8)
where M ∗ M^{\ast} M is the matrix of cofactors of M M M.

StackExchange (Cross product: matrix transformation identity) 上有关于该式数学推导的讨论.

这里尝试利用 Maxima 符号计算进行暴力计算直接证明. 然后再简单讨论一下该恒等式在基本矩阵、单应矩阵推导中的应用, 以及说明其特例——刚体旋转矩阵作用下的向量叉乘积.


II. 符号计算 Maxima 程序推导

简短的 Maxima 程序对上述 Lemma A4.2 进行符号计算推导.

M: matrix([m_11, m_12, m_13], [m_21, m_22, m_23], [m_31, m_32, m_33]);
x: transpose(matrix([x_1, x_2, x_3]));
y: transpose(matrix([y_1, y_2, y_3]));
adjM: adjoint(M);
CoM: transpose(adjM);
Mx: M.x;
My: M.y;
LHS: matrix([i, j, k], [Mx[1][1], Mx[2][1], Mx[3][1]], [My[1][1], My[2][1], My[3][1]]);
LHS_i: determinant(submatrix(1,LHS,1));
LHS_j: -determinant(submatrix(1,LHS,2));
LHS_k: determinant(submatrix(1,LHS,3));
xXy: matrix([i, j, k], [x[1][1], x[2][1], x[3][1]], [y[1][1], y[2][1], y[3][1]]);
xXy_i: determinant(submatrix(1,xXy,1));
xXy_j: -determinant(submatrix(1,xXy,2));
xXy_k: determinant(submatrix(1,xXy,3));
MxXy: transpose(matrix([xXy_i, xXy_j, xXy_k])); 
RHS: CoM.MxXy;
RHS_i: RHS[1][1];
RHS_j: RHS[2][1];
RHS_k: RHS[3][1];
expand(LHS_i - RHS_i);
expand(LHS_j - RHS_j);
expand(LHS_k - RHS_k);

输出结果说明 (A4.8) 式的左右两边相等, 即结果成立.

在这里插入图片描述


III. 推论和关联公式的说明

1. 推论

由式 (A4.8),
( M x ) × ( M y ) = M ∗ ( x × y ) ⇒ [ M x ] × M y = M ∗ [ x ] × y (III-1-1) (M\mathbf{x})\times (M \mathbf{y}) = M^{\ast}(\mathbf{x} \times \mathbf{y})\\ \Rightarrow \quad [M\mathbf{x}]_\times M \mathbf{y} = M^{\ast}[\mathbf{x}]_\times \mathbf{y} \tag{III-1-1} (Mx)×(My)=M(x×y)[Mx]×My=M[x]×y(III-1-1)
因为任意的 y \mathbf{y} y 都成立, 则有
[ M x ] × M = M ∗ [ x ] × (III-1-2) \quad [M\mathbf{x}]_\times M = M^{\ast}[\mathbf{x}]_\times \tag{III-1-2} [Mx]×M=M[x]×(III-1-2)
t ≜ M x \mathbf{t} \triangleq M \mathbf{x} tMx. 当 M M M 可逆时, x = M − 1 t \mathbf{x} = M^{-1}\mathbf{t} x=M1t, 并有 M ∗ = ∣ M ∣ M − T M^{\ast}=|M|\ M^{\rm -T} M=M MT. 则上式
[ t ] × M = M ∗ [ M − 1 t ] × = M − T [ M − 1 t ] × (Result A4.3) [\mathbf{t}]_{\times}M=M^{\ast}[M^{-1}\mathbf{t}]_{\times}= M^{\rm -T}[M^{-1}\mathbf{t}]_{\times} \tag{Result A4.3} [t]×M=M[M1t]×=MT[M1t]×(Result A4.3)
上式中的 “等号” 是射影空间 R P 3 \mathbb{RP}^{3} RP3 下的等价关系, 两个向量相差一个非零比例常数即为等价或者相等. 此即为参考文献 [1] 中 Result A4.3 的结果.

进一步, 可得
[ M − 1 t ] × = M T [ t ] × M (III-1-3) [M^{-1}\mathbf{t}]_{\times} = M^{\rm T} [\mathbf{t}]_{\times}M \tag{III-1-3} [M1t]×=MT[t]×M(III-1-3)

[ M t ] × = M − T [ t ] × M − 1 (III-1-4) [M\mathbf{t}]_{\times} = M^{\rm -T} [\mathbf{t}]_{\times}M^{-1} \tag{III-1-4} [Mt]×=MT[t]×M1(III-1-4)

[ M T t ] × = M − 1 [ t ] × M − T (III-1-5) [M^{\rm T}\mathbf{t}]_{\times} = M^{-1} [\mathbf{t}]_{\times}M^{\rm -T} \tag{III-1-5} [MTt]×=M1[t]×MT(III-1-5)


2. 应用于对极几何中基本矩阵推导

参考文献 [1] 中 Example 9.2 对对极几何中的基本矩阵 (Fundamental Matrix) 进行了变形推导.

以第一个相机坐标系作为世界参考坐标系, 已知第一个相机的摄像机矩阵 P P P、第二个相机的摄像机矩阵 P ′ P' P、摄像机矩阵 P P P 的广义逆矩阵 P + P^{+} P+、第一个相机的光心坐标 C C C 如下
P = K [ I ∣ 0 ] , P ′ = K ′ [ R ∣ t ] P + = [ K − 1 0 T ] , C = [ 0 1 ] (III-2-1) P=K[I|\mathbf{0}],\quad P'=K'[R|\mathbf{t}]\\ P^{+}=\begin{bmatrix}K^{-1}\\\mathbf{0}^{\rm T}\end{bmatrix},\quad C=\begin{bmatrix}\mathbf{0}\\1\end{bmatrix} \tag{III-2-1} P=K[I0],P=K[Rt]P+=[K10T],C=[01](III-2-1)
其中 K K K K ′ K' K 分别为第一个相机和第二个相机的内参矩阵. 而 [ R ∣ t ] [R|\mathbf{t}] [Rt] 是第一个相机坐标系 (此处设定为世界坐标系) 相对于第二个相机坐标系的位姿称为相机外参矩阵 (相机坐标姿态变换可参考博文 “对极约束及其性质 —— 公式详细推导” 中的描述).


P ′ C = K ′ t , P ′ P + = K ′ R K − 1 (III-2-2) P'C=K'\mathbf{t},\quad P'P^{+}=K'RK^{-1} \tag{III-2-2} PC=Kt,PP+=KRK1(III-2-2)
另外, 旋转矩阵
R − T = ( R − 1 ) T = ( R T ) T = R (III-2-3) R^{\rm -T}= ({R^{-1}})^{\rm T}=(R^{\rm T})^{\rm T}=R \tag{III-2-3} RT=(R1)T=(RT)T=R(III-2-3)

然后就可以推导参考文献 [1] 中关于基本矩阵 F F F 的关系式 (Page 244-eq (9.4))
F = [ P ′ C ] × P ′ P + = [ K ′ t ] × ‾ I I I − 1 − 4 K ′ R K − 1 = K ′ − T [ t ] × K ′ − 1 ‾ K ′ R K − 1 = K ′ − T [ t ] × R ‾ K − 1 = K ′ − T R R − 1 [ t ] × R − T ‾ ‾ I I I − 1 − 5 K − 1 = K ′ − T R [ R T t ] × K − 1 = K ′ − T R K T K − T [ R T t ] × K − 1 ‾ I I I − 3 − 4 = K ′ − T R K T [ K R T t ] × (III-2-4) \begin{aligned} F&=[P'{C}]_{\times}P'P^{+}\\ &=\underset{\rm III-1-4}{\underline{[K'\mathbf{t}]_{\times}}} K'RK^{-1}\\ &=\underline{K'^{\rm -T}[\mathbf{t}]_{\times}K'^{-1}} K'RK^{-1}\\ &= K'^{\rm -T}[\mathbf{t}]_{\times}\underline{R}K^{-1}\\ &= K'^{\rm -T}R \underset{\rm III-1-5}{\underline{R^{-1}[\mathbf{t}]_{\times}\underline{R^{\rm -T}}}} K^{-1}\\ &= K'^{\rm -T}R [R^{\rm T}\mathbf{t}]_{\times} K^{-1}\\ &= K'^{\rm -T}R K^{\rm T} \underset{\rm III-3-4}{\underline{K^{\rm -T} [R^{\rm T}\mathbf{t}]_{\times} K^{-1}}}\\ &= K'^{\rm -T}R K^{\rm T}[KR^{\rm T} \mathbf{t}]_{\times} \end{aligned} \tag{III-2-4} F=[PC]×PP+=III14[Kt]×KRK1=KT[t]×K1KRK1=KT[t]×RK1=KTRIII15R1[t]×RTK1=KTR[RTt]×K1=KTRKTIII34KT[RTt]×K1=KTRKT[KRTt]×(III-2-4)


3. 应用于基本矩阵与单应矩阵关系

基本矩阵与平面单应矩阵的关系可以表示为 (参考文献 [3] 第四章 eq(4.26) 和 eq(4.27))
F = [ e ′ ] × H (III-3-1-a) F=[\mathbf{e}']_{\times}H \tag{III-3-1-a} F=[e]×H(III-3-1-a)

F = H − T [ e ] × (III-3-1-b) F=H^{\rm -T}[\mathbf{e}]_{\times} \tag{III-3-1-b} F=HT[e]×(III-3-1-b)

其中 H H H 为平面单应矩阵, e \mathbf{e} e e ′ \mathbf{e}' e 为两幅图像上的极点坐标. 两极点是对应点, 故有
e ′ = H e , e = H − 1 e ′ (III-3-2) \mathbf{e}'=H \mathbf{e}, \quad \mathbf{e}=H^{-1}\mathbf{e}' \tag{III-3-2} e=He,e=H1e(III-3-2)
根据一般式 (III-1-3),
[ H − 1 e ′ ] × = H T [ e ′ ] × H ⇒ [ e ′ ] × H = H − T [ H − 1 e ′ ] × ⇒ [ e ′ ] × H = H − T [ e ] × [H^{-1}\mathbf{e}']_{\times} = H^{\rm T}[\mathbf{e}']_{\times}H \\ \Rightarrow\quad [\mathbf{e}']_{\times}H =H^{\rm -T} [H^{-1}\mathbf{e}']_{\times}\\ \Rightarrow\quad [\mathbf{e}']_{\times}H =H^{\rm -T} [\mathbf{e}]_{\times}\\ [H1e]×=HT[e]×H[e]×H=HT[H1e]×[e]×H=HT[e]×
故有基本矩阵与单应矩阵之间的两个关系式 (III-3-1-a) 与 (III-3-1-b) 等价.


4. 与刚体运动旋转矩阵作用的关系

之前的博文中经常用到关于刚体运动旋转矩阵 R R R 的如下两个恒等式
R a × R b = R ( a × b ) (III-4-1) R\mathbf{a}\times R\mathbf{b} = R(\mathbf{a}\times \mathbf{b}) \tag{III-4-1} Ra×Rb=R(a×b)(III-4-1)

[ R θ ] × = R [ θ ] × R − 1 = R [ θ ] × R T (III-4-2) [R \boldsymbol{\theta}]_{\times} = R[\boldsymbol{θ}]_{\times} R^{−1}=R[\boldsymbol{θ}]_{\times}R^{\rm T} \tag{III-4-2} [Rθ]×=R[θ]×R1=R[θ]×RT(III-4-2)

以上两式中 a , b , θ ∈ R 3 \mathbf{a}, \mathbf{b}, \boldsymbol{\theta} \in \mathbb{R}^3 a,b,θR3 R ∈ S O ( 3 ) R\in \mathbb{SO}(3) RSO(3).

因为旋转矩阵 ∣ R ∣ = 1 |R|=1 R=1 R − T = R R^{\rm -T}=R RT=R
∣ R ∣ = 1 R − T = R } ⇒ R ∗ = ∣ R ∣ R − T = R (III-4-3) \left. \begin{aligned} |R|=1\\ R^{\rm -T}=R \end{aligned} \right\}\quad \Rightarrow\quad R^{\ast}=|R|\ R^{\rm -T}=R \tag{III-4-3} R=1RT=R}R=R RT=R(III-4-3)
所以式 (III-4-1) 是式 (A4.8) 的特例. 同样地可以看出式 (III-4-2) 是式 (III-1-4) 的特例.


附 - 关于摄像机矩阵广义逆的说明

下面对上文中式 (III-2-1) 中的第一个相机的摄像机矩阵 P P P 的广义逆矩阵 P + P^+ P+ 进行简单说明.

参考博文 “四足机器人中不同优先级任务的执行——Null-Space Projection方法” 中对长方形矩阵的广义逆的讨论.

J ∈ R m × n J\in \mathbf{R}^{m\times n} JRm×n,

if J J J is fat ( n > m n > m n>m),
J + = J T ( J J T ) − 1 (IV-1-1) J^+=J^{\rm T}(JJ^{\rm T})^{−1} \tag{IV-1-1} J+=JT(JJT)1(IV-1-1)
called a right inverse since J J + = I J J^+ = I JJ+=I.

Else if J J J is tall ( n < m n<m n<m),
J + = ( J T J ) − 1 J T (IV-1-2) J^+= (J^{\rm T} J)^{−1} J^{\rm T} \tag{IV-1-2} J+=(JTJ)1JT(IV-1-2)
called a left inverse since J + J = I J^+ J = I J+J=I.

第一个相机的摄像机矩阵 P P P 的矩阵维度 P 3 × 4 = K 3 × 3 [ I ∣ 0 ] 3 × 4 P_{3 \times 4}=K_{3\times 3}[I|\mathbf{0}]_{3 \times 4} P3×4=K3×3[I0]3×4, 列数大于行数, 是一个 “胖矩阵”. 故利用右逆的定义构造广义逆
P + = P T ( P P T ) − 1 = [ I 0 T ] K T ( K [ I ∣ 0 ] [ I 0 T ] K T ) − 1 = [ I 0 T ] K T ( K K T ) − 1 = [ I 0 T ] K − 1 = [ K − 1 0 T ] (IV-1-3) \begin{aligned} P^+ &= P^{\rm T}(P P^{\rm T})^{-1}\\ &=\begin{bmatrix}I\\ \mathbf{0}^{\rm T}\end{bmatrix} K^{\rm T} \left( K [I|\mathbf{0}] \begin{bmatrix}I\\ \mathbf{0}^{\rm T}\end{bmatrix} K^{\rm T}\right)^{-1}\\ &= \begin{bmatrix}I\\ \mathbf{0}^{\rm T}\end{bmatrix} K^{\rm T} \left( K K^{\rm T}\right)^{-1}\\ &= \begin{bmatrix}I\\ \mathbf{0}^{\rm T}\end{bmatrix} K^{-1}\\ &=\begin{bmatrix}K^{-1} \\ \mathbf{0}^{\rm T} \end{bmatrix} \end{aligned} \tag{IV-1-3} P+=PT(PPT)1=[I0T]KT(K[I0][I0T]KT)1=[I0T]KT(KKT)1=[I0T]K1=[K10T](IV-1-3)


IV. 小节

本篇博客笔记主要对叉乘积的矩阵变换恒等式进行了讨论, 对多视图几何中用到该恒等式的公式进行简单推导说明.

仅为学习记录.


参考文献

[1] Richard Hartley, Andrew Zisserman, Multiple View Geometryin Computer Vision, 2nd edition, Cambridge University Press, 2004

[2] cross product: matrix transformation identity, https://math.stackexchange.com/questions/859836/cross-product-matrix-transformation-identity

[3] 吴福朝, 计算机视觉中的数学方法, 教育科学出版社, 2008


版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/woyaomaishu2/article/details/144142452
本文作者:wzf@robotics_notes

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

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

相关文章

支持多种快充协议的取电芯片,支持最大功率140W

前言 在快节奏的现代生活中&#xff0c;人们对于小家电的依赖日益加深&#xff0c;而随之而来的充电问题也日益凸显。传统的充电方式往往受限于电压、电流的限制&#xff0c;难以满足不同设备对电力的多样化需求。而PD快充协议的诞生&#xff0c;则为这一难题提供了全新的解决…

分页查询功能

EmployeeController /** * 员工分页查询 * * param employeePageQueryDTO * return */ GetMapping("/page") ApiOperation("员工分页查询") public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO) { log.info("…

深度学习读书笔记 绪论

深度学习是什么&#xff1f; 机器学习的分支。 深度学习问题也是指从有限样例中总结出一般的规律&#xff0c;应用在新的未知数据上的方法。 机器学习的三个基本要素 模型 机器学习任务首要弄明白的&#xff0c;也就是一个机器学习任务所面对的输入空间和输出空间。 输入…

“移门缓冲支架:为家庭安全加码”

在智能家居日益普及的今天&#xff0c;科技不仅改变了我们的生活方式&#xff0c;也提升了家居的安全。移门缓冲支架作为一项结合了现代技术的小型装置&#xff0c;正逐渐成为提升家庭安全的重要配件。它通过吸收门关闭时的冲击力、减缓关门速度以及减少噪音等多重功能&#xf…

npm error code ETIMEDOUT 简单排查

今天突然没到一个仓库的ius问题。改完之后想发布npm包 出现下面的场景 npm addUser npm adduser npm notice Log in on https://registry.npmjs.org/ Create your account at: https://www.npmjs.com/login?next/login/cli/12596c8b-ba4a-4763-8a97-215087d380c4 Press ENTER…

力扣96:不同的二叉搜索树

给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输入&#xff1a;n 1 输出&#xff1a;1 卡…

小程序-基于java+SpringBoot+Vue的微信小程序养老院系统设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

Torchtune在AMD GPU上的使用指南:利用多GPU能力进行LLM微调与扩展

Torchtune on AMD GPUs How-To Guide: Fine-tuning and Scaling LLMs with Multi-GPU Power — ROCm Blogs 这篇博客提供了一份详细的使用Torchtune在AMD GPU上微调和扩展大型语言模型&#xff08;LLM&#xff09;的指南。Torchtune 是一个PyTorch库&#xff0c;旨在让您轻松地…

计算机网络--网络安全测试

问题 1 以下关于网络安全威胁发展的趋势的描述中错误的是___A_____。 答案&#xff1a; A云计算可以有效地防止网络攻击发生 B网络攻击、病毒与垃圾邮件是网络安全的三大公害 C网络攻击开始演变成某些国家或利益集团重要的政治、军事工具 D趋利性是当前网络攻击的主要特点 …

Java使用replaceAll替换时不使用正则表达式

前言 public String replaceAll(String regex, String replacement) {return Pattern.compile(regex).matcher(this).replaceAll(replacement);}在使用String.replaceAll() 方法时&#xff0c;由于入参时regex &#xff0c;而入参刚好是正则表达式的字符该怎么办&#xff1f;我…

【0346】Postgres内核 Startup Process 通过 signal 与 postmaster 交互实现 (5)

1. Startup Process 进程 postmaster 初始化过程中, 在进入 ServerLoop() 函数之前,会先通过调用 StartChildProcess() 函数来开启辅助进程,这些进程的目的主要用来完成数据库的 XLOG 相关处理。 如: 核实 pg_wal 和 pg_wal/archive_status 文件是否存在Postgres先前是否发…

STM32C011开发(3)----Flash操作

STM32C011开发----3.Flash操作 概述硬件准备视频教学样品申请源码下载参考程序生成STM32CUBEMX串口配置堆栈设置串口重定向FLASH数据初始化FLASH 读写演示 概述 STM32C011 系列微控制器内置 Flash 存储器&#xff0c;支持程序存储与数据保存&#xff0c;具备页面擦除、双字写入…

电商项目高级篇06-缓存

电商项目高级篇06-缓存 1、docker下启动redis2、项目整合redis3、redis改造三级分类业务 缓存 流程图&#xff1a; data cache.load(id);//从缓存加载数据 If(data null){ data db.load(id);//从数据库加载数据 cache.put(id,data);//保存到 cache 中 } return data;在我们…

TypeScript 命名空间与模块

在 TypeScript 中&#xff0c;命名空间和模块是两种不同的代码组织方式&#xff0c;它们都旨在帮助你管理和维护大型代码库。命名空间提供了一种将相关功能组织在一起的方式&#xff0c;而模块则允许你将代码分解成可重用的单元。在本文中&#xff0c;我们将探讨命名空间和模块…

Vue 原理详解

Vue 原理详解 Vue.js 是一个渐进式框架&#xff0c;它通过数据驱动视图更新和响应式编程使得前端开发变得更加简单高效。在 Vue 的内部实现中&#xff0c;编译过程和响应式机制是两个至关重要的组成部分。本文将详细介绍 Vue.js 的编译器、响应式系统和运行时的工作原理&#…

PS的功能学习

背景差色较大&#xff0c;就魔棒 魔棒的连续就是倒水点的跨越问题 魔棒的容差的选择就有点看经验了&#xff0c;看颜色的统一程度选择 Ctrl D 取消当前所有的选区 至于快速选择工具&#xff0c;和对象选择工具也差不多&#xff0c;只不过控制范围变成了一块一块的&#x…

深度学习实验--初步探索数据增强、优化器对模型的影响

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 这次主要是探究&#xff0c;优化器、数据增强对模型训练的影响&#xff1b;基础篇还剩下几个, 后面的难度会逐步提升;越学&#xff0c;越觉得这个东西很…

新型大语言模型的预训练与后训练范式,谷歌的Gemma 2语言模型

前言&#xff1a;大型语言模型&#xff08;LLMs&#xff09;的发展历程可以说是非常长&#xff0c;从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初&#xff0c;LLM的训练过程只关注预训练&#xff0c;但后来逐步扩展到了包括预训练和后训练在内的完整…

Linux:systemd进程管理【1】

整体理解 要快速掌握Linux的systemd并覆盖80%的使用场景&#xff0c;以下是最重要的20%知识点&#xff1a; Systemd简介与核心功能&#xff1a; Systemd是一个系统和服务管理器&#xff0c;作为Linux系统的PID 1进程&#xff0c;负责启动和管理其他系统组件。它提供并行启动服…

SQL Server管理员sa登录失败原因

文章目录 一、开启混合登录模式二、启用sa三、更改密码四、登录sa一、开启混合登录模式 用Windows身份登录数据库服务。 在连接名上右键→属性。 在安全性选项卡下,选择【SQL Server和Windows身份验证模式】,点击【确定】,提示需要重启服务。 Win+R,输入指令:services.ms…