用舒尔补给平面圆“配方“:从齐次矩阵形式到圆心 + 半径形式

在做立体视觉、相机标定、三维重建,或者推导任何带二次曲线的几何问题时,我们经常会看到这样一种"压缩"写法:一个圆被装进一个 3 × 3 3\times 3 3×3 的对称矩阵里,用齐次坐标的二次型表示。这种写法代数上整洁,但有一个致命缺陷------圆心在哪儿、半径多大,完全看不出来

本文介绍一个非常优雅的工具------舒尔补 (Schur Complement)------来完成这次"配方":把齐次矩阵形式逐步整理成可以直接读出几何参数的标准形式。


目录


一、问题的起点:平面圆的两种写法

1.1 我们熟悉的"标准几何形式"

谈到平面圆,我们最熟悉的写法是

∥ p − p 0 ∥ 2 = R 2 , \|\mathbf{p} - \mathbf{p}_0\|^2 = R^2, ∥p−p0∥2=R2,

或者更一般地,带一个对称正定的"度规" A \mathbf{A} A:

( p − p 0 ) T A ( p − p 0 ) = R 2 . (\mathbf{p} - \mathbf{p}_0)^T \mathbf{A} (\mathbf{p} - \mathbf{p}_0) = R^2. (p−p0)TA(p−p0)=R2.

这种形式的好处是几何参数一眼可见 :圆心是 p 0 \mathbf{p}_0 p0,半径是 R R R,主轴方向由 A \mathbf{A} A 的特征向量决定。

1.2 实际推导中常见的"齐次矩阵形式"

可是在实际的几何推导中------比如把空间圆投影到一个参数化平面上、或把一个椭球与平面相交------我们更经常得到这样一种紧凑写法:

x y 1 M b b T τ x y 1 = 0 (1) \begin{bmatrix} x & y & 1 \end{bmatrix} \begin{bmatrix} \mathbf{M} & \mathbf{b} \\ \mathbf{b}^T & \tau \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = 0 \tag{1} xy1MbTbτ xy1 =0(1)

其中

  • M \mathbf{M} M 是 2 × 2 2\times 2 2×2 对称正定矩阵(对应二次曲线为椭圆/圆所要求的);
  • b \mathbf{b} b 是 2 × 1 2\times 1 2×1 列向量;
  • τ \tau τ 是标量。

把它展开,就是一般的二次曲线方程

p T M p + 2 b T p + τ = 0 , p = x y . \mathbf{p}^T \mathbf{M} \mathbf{p} + 2\mathbf{b}^T \mathbf{p} + \tau = 0, \quad \mathbf{p} = \begin{bmatrix} x \\ y \end{bmatrix}. pTMp+2bTp+τ=0,p=xy.

平方项、交叉项、一次项、常数项------全都混在一起。我们要做的,是把它"配方"成形式 (1.1)。

这里的难点不是"想不到要配方",而是想配方时面对一个矩阵不知道该从何下手。中学时配方的对象是一元/二元的标量表达式,有限符号操作很直观;现在面对的是分块矩阵,需要的是矩阵层面的配方法。这就是舒尔补登场的时刻。


二、舒尔补:一种分块的高斯消元

2.1 定义

设有一个分块矩阵

P = A B C D , \mathbf{P} = \begin{bmatrix} \mathbf{A} & \mathbf{B} \\ \mathbf{C} & \mathbf{D} \end{bmatrix}, P=ACBD,

其中 A \mathbf{A} A 是 p × p p\times p p×p 的可逆 方阵, D \mathbf{D} D 是 q × q q\times q q×q 方阵, B \mathbf{B} B 是 p × q p\times q p×q, C \mathbf{C} C 是 q × p q\times p q×p。

则称

P / A    : =    D − C A − 1 B \mathbf{P}/\mathbf{A} \;:=\; \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B} P/A:=D−CA−1B

为 A \mathbf{A} A 在 P \mathbf{P} P 中的 舒尔补 (Schur complement of A \mathbf{A} A in P \mathbf{P} P)

直观上,它就是把分块矩阵做高斯消元之后,右下角剩下的那一块。

2.2 核心恒等式:分块 LDU 分解

舒尔补真正的力量,在于它给出一个分块的 LDU 分解:

A B C D = I p 0 C A − 1 I q ⏟ L   :   下三角 A 0 0 D − C A − 1 B ⏟ D b   :   分块对角 I p A − 1 B 0 I q ⏟ U   :   上三角 (2) \begin{bmatrix} \mathbf{A} & \mathbf{B} \\ \mathbf{C} & \mathbf{D} \end{bmatrix}= \underbrace{\begin{bmatrix} \mathbf{I}p & \mathbf{0} \\ \mathbf{C}\mathbf{A}^{-1} & \mathbf{I}q \end{bmatrix}}{\mathbf{L}\,:\,\text{下三角}} \underbrace{\begin{bmatrix} \mathbf{A} & \mathbf{0} \\ \mathbf{0} & \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B} \end{bmatrix}}{\mathbf{D}_b\,:\,\text{分块对角}} \underbrace{\begin{bmatrix} \mathbf{I}_p & \mathbf{A}^{-1}\mathbf{B} \\ \mathbf{0} & \mathbf{I}q \end{bmatrix}}{\mathbf{U}\,:\,\text{上三角}} \tag{2} ACBD=L:下三角 IpCA−10IqDb:分块对角 A00D−CA−1BU:上三角 Ip0A−1BIq(2)

2.3 推导:从右往左乘

简单验证一下。先算后两个矩阵的乘积:

A 0 0 D − C A − 1 B I p A − 1 B 0 I q = A A ⋅ A − 1 B 0 D − C A − 1 B = A B 0 D − C A − 1 B . \begin{bmatrix} \mathbf{A} & \mathbf{0} \\ \mathbf{0} & \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B} \end{bmatrix} \begin{bmatrix} \mathbf{I}_p & \mathbf{A}^{-1}\mathbf{B} \\ \mathbf{0} & \mathbf{I}_q \end{bmatrix}= \begin{bmatrix} \mathbf{A} & \mathbf{A}\cdot\mathbf{A}^{-1}\mathbf{B} \\ \mathbf{0} & \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B} \end{bmatrix}= \begin{bmatrix} \mathbf{A} & \mathbf{B} \\ \mathbf{0} & \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B} \end{bmatrix}. A00D−CA−1BIp0A−1BIq=A0A⋅A−1BD−CA−1B=A0BD−CA−1B.

再左乘下三角矩阵:

I p 0 C A − 1 I q A B 0 D − C A − 1 B = A B C A − 1 A C A − 1 B + D − C A − 1 B = A B C D . \begin{bmatrix} \mathbf{I}_p & \mathbf{0} \\ \mathbf{C}\mathbf{A}^{-1} & \mathbf{I}_q \end{bmatrix} \begin{bmatrix} \mathbf{A} & \mathbf{B} \\ \mathbf{0} & \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B} \end{bmatrix}= \begin{bmatrix} \mathbf{A} & \mathbf{B} \\ \mathbf{C}\mathbf{A}^{-1}\mathbf{A} & \mathbf{C}\mathbf{A}^{-1}\mathbf{B} + \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B} \end{bmatrix}= \begin{bmatrix} \mathbf{A} & \mathbf{B} \\ \mathbf{C} & \mathbf{D} \end{bmatrix}. IpCA−10IqA0BD−CA−1B=ACA−1ABCA−1B+D−CA−1B=ACBD.

恒等式得证。

2.4 它的几何含义

这个 LDU 分解本质上是高斯消元的矩阵语言:

  • 左乘下三角 L \mathbf{L} L :相当于对块行做一次消元,把第二块行减去 C A − 1 \mathbf{C}\mathbf{A}^{-1} CA−1 倍的第一块行;
  • 右乘上三角 U \mathbf{U} U :相当于对块列做一次消元,把第二块列减去 A − 1 B \mathbf{A}^{-1}\mathbf{B} A−1B 倍的第一块列;
  • 消元的剩余物 ,正是 D − C A − 1 B \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B} D−CA−1B,也就是舒尔补 P / A \mathbf{P}/\mathbf{A} P/A。

如果把对称的二次型 x T P x \mathbf{x}^T\mathbf{P}\mathbf{x} xTPx 嵌入到上下三角矩阵之间,那么 L \mathbf{L} L 和 U \mathbf{U} U 实际上代表一次线性换元,而中间的分块对角矩阵则给出换元之后的纯平方项。


三、把舒尔补用在圆上

3.1 套用分解

回到式 (1) 中的分块矩阵

P = M b b T τ . \mathbf{P} = \begin{bmatrix} \mathbf{M} & \mathbf{b} \\ \mathbf{b}^T & \tau \end{bmatrix}. P=MbTbτ.

对照舒尔补的符号: A = M \mathbf{A}=\mathbf{M} A=M, B = b \mathbf{B}=\mathbf{b} B=b, C = b T \mathbf{C}=\mathbf{b}^T C=bT, D = τ \mathbf{D}=\tau D=τ。注意 P \mathbf{P} P 是对称的,所以分解中下三角是上三角的转置。直接套用 (2):

M b b T τ = I 2 0 b T M − 1 1 M 0 0 τ − b T M − 1 b I 2 M − 1 b 0 1 . (3) \begin{bmatrix} \mathbf{M} & \mathbf{b} \\ \mathbf{b}^T & \tau \end{bmatrix}= \begin{bmatrix} \mathbf{I}_2 & \mathbf{0} \\ \mathbf{b}^T\mathbf{M}^{-1} & 1 \end{bmatrix} \begin{bmatrix} \mathbf{M} & \mathbf{0} \\ \mathbf{0} & \tau - \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} \end{bmatrix} \begin{bmatrix} \mathbf{I}_2 & \mathbf{M}^{-1}\mathbf{b} \\ \mathbf{0} & 1 \end{bmatrix}. \tag{3} MbTbτ=I2bTM−101M00τ−bTM−1bI20M−1b1.(3)

(用到了 M \mathbf{M} M 对称所以 M − T = M − 1 \mathbf{M}^{-T} = \mathbf{M}^{-1} M−T=M−1。)

代回到圆方程 (1):

x y 1 I 2 0 b T M − 1 1 M 0 0 τ − b T M − 1 b I 2 M − 1 b 0 1 x y 1 = 0. (4) \begin{bmatrix} x & y & 1 \end{bmatrix} \begin{bmatrix} \mathbf{I}_2 & \mathbf{0} \\ \mathbf{b}^T\mathbf{M}^{-1} & 1 \end{bmatrix} \begin{bmatrix} \mathbf{M} & \mathbf{0} \\ \mathbf{0} & \tau - \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} \end{bmatrix} \begin{bmatrix} \mathbf{I}_2 & \mathbf{M}^{-1}\mathbf{b} \\ \mathbf{0} & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = 0. \tag{4} xy1I2bTM−101M00τ−bTM−1bI20M−1b1 xy1 =0.(4)

3.2 把上下三角"吸"进齐次向量

观察右半部分:

I 2 M − 1 b 0 1 p 1 = p + M − 1 b 1 . \begin{bmatrix} \mathbf{I}_2 & \mathbf{M}^{-1}\mathbf{b} \\ \mathbf{0} & 1 \end{bmatrix} \begin{bmatrix} \mathbf{p} \\ 1 \end{bmatrix}= \begin{bmatrix} \mathbf{p} + \mathbf{M}^{-1}\mathbf{b} \\ 1 \end{bmatrix}. I20M−1b1p1=p+M−1b1.

左半部分(它是右半部分的转置):

p T 1 I 2 0 b T M − 1 1 = ( p + M − 1 b ) T 1 . \begin{bmatrix} \mathbf{p}^T & 1 \end{bmatrix} \begin{bmatrix} \mathbf{I}_2 & \mathbf{0} \\ \mathbf{b}^T\mathbf{M}^{-1} & 1 \end{bmatrix}= \begin{bmatrix} (\mathbf{p} + \mathbf{M}^{-1}\mathbf{b})^T & 1 \end{bmatrix}. pT1I2bTM−101=(p+M−1b)T1.

这正是关键的一步 :上下三角矩阵在齐次坐标下,起的就是一个平移换元 p    ↦    p + M − 1 b \mathbf{p} \;\mapsto\; \mathbf{p} + \mathbf{M}^{-1}\mathbf{b} p↦p+M−1b 的作用。

把它代回式 (4):

( p + M − 1 b ) T 1 M 0 0 τ − b T M − 1 b p + M − 1 b 1 = 0. \begin{bmatrix} (\mathbf{p} + \mathbf{M}^{-1}\mathbf{b})^T & 1 \end{bmatrix} \begin{bmatrix} \mathbf{M} & \mathbf{0} \\ \mathbf{0} & \tau - \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} \end{bmatrix} \begin{bmatrix} \mathbf{p} + \mathbf{M}^{-1}\mathbf{b} \\ 1 \end{bmatrix} = 0. (p+M−1b)T1M00τ−bTM−1bp+M−1b1=0.

中间是分块对角矩阵,展开后两块独立:

( p + M − 1 b ) T M ( p + M − 1 b ) + ( τ − b T M − 1 b ) = 0. (\mathbf{p} + \mathbf{M}^{-1}\mathbf{b})^T \mathbf{M} (\mathbf{p} + \mathbf{M}^{-1}\mathbf{b}) + (\tau - \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b}) = 0. (p+M−1b)TM(p+M−1b)+(τ−bTM−1b)=0.

移项:

   ( p + M − 1 b ) T M ( p + M − 1 b )    =    b T M − 1 b − τ    (5) \boxed{\; (\mathbf{p} + \mathbf{M}^{-1}\mathbf{b})^T \mathbf{M} (\mathbf{p} + \mathbf{M}^{-1}\mathbf{b}) \;=\; \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} - \tau \;} \tag{5} (p+M−1b)TM(p+M−1b)=bTM−1b−τ(5)

一次项被彻底消掉了。


四、从 (5) 读出圆心和半径

4.1 圆心:让平方项归零的点

式 (5) 左侧是关于 p + M − 1 b \mathbf{p} + \mathbf{M}^{-1}\mathbf{b} p+M−1b 的纯二次型,在

p + M − 1 b = 0 \mathbf{p} + \mathbf{M}^{-1}\mathbf{b} = \mathbf{0} p+M−1b=0

处取得唯一极值。这就是圆心:

   p 0    =    −   M − 1 b    (6) \boxed{\;\mathbf{p}_0 \;=\; -\,\mathbf{M}^{-1}\mathbf{b}\;} \tag{6} p0=−M−1b(6)

4.2 进一步对角化 M \mathbf{M} M

式 (5) 没有了一次项,但 M \mathbf{M} M 本身还可能带交叉项(即非对角元素非零)。对对称的 M \mathbf{M} M 做特征值分解:

M = X M   Λ M   X M T , Λ M = d i a g ( Λ M 1 ,   Λ M 2 ) , \mathbf{M} = \mathbf{X}\mathbf{M}\, \boldsymbol{\Lambda}\mathbf{M}\, \mathbf{X}\mathbf{M}^T, \quad \boldsymbol{\Lambda}\mathbf{M} = \mathrm{diag}(\Lambda_{\mathbf{M}1},\,\Lambda_{\mathbf{M}2}), M=XMΛMXMT,ΛM=diag(ΛM1,ΛM2),

其中 X M \mathbf{X}_\mathbf{M} XM 是正交矩阵,列向量是 M \mathbf{M} M 的特征向量。代入 (5):

( p − p 0 ) T X M   Λ M   X M T ( p − p 0 ) = b T M − 1 b − τ . (7) (\mathbf{p}-\mathbf{p}0)^T \mathbf{X}\mathbf{M}\, \boldsymbol{\Lambda}\mathbf{M}\, \mathbf{X}\mathbf{M}^T (\mathbf{p}-\mathbf{p}_0)= \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} - \tau. \tag{7} (p−p0)TXMΛMXMT(p−p0)=bTM−1b−τ.(7)

令 q : = X M T ( p − p 0 ) \mathbf{q} := \mathbf{X}_\mathbf{M}^T(\mathbf{p}-\mathbf{p}_0) q:=XMT(p−p0)(即在 M \mathbf{M} M 的主轴方向上重新建坐标),则

Λ M 1   q 1 2 + Λ M 2   q 2 2 = b T M − 1 b − τ . \Lambda_{\mathbf{M}1}\, q_1^2 + \Lambda_{\mathbf{M}2}\, q_2^2 = \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} - \tau. ΛM1q12+ΛM2q22=bTM−1b−τ.

交叉项也被消掉了。

4.3 半径:当且仅当两个特征值相等

(7) 一般描述的是椭圆 ,只有当 Λ M 1 = Λ M 2 \Lambda_{\mathbf{M}1} = \Lambda_{\mathbf{M}2} ΛM1=ΛM2(记作 Λ \Lambda Λ)时才退化成圆。此时

Λ ⋅ ∥ p − p 0 ∥ 2 = b T M − 1 b − τ      ⟹      R 2 = b T M − 1 b − τ Λ . \Lambda \cdot \|\mathbf{p} - \mathbf{p}_0\|^2 = \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} - \tau \;\;\Longrightarrow\;\; R^2 = \frac{\mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} - \tau}{\Lambda}. Λ⋅∥p−p0∥2=bTM−1b−τ⟹R2=ΛbTM−1b−τ.

在工程实践中, M \mathbf{M} M 来自数值计算,两个特征值往往略有偏差。一种稳健的写法是取两个特征值的均值:

   R    =    2 ( b T M − 1 b − τ ) Λ M 1 + Λ M 2    (8) \boxed{\; R \;=\; \sqrt{\dfrac{2\bigl(\mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} - \tau\bigr)}{\Lambda_{\mathbf{M}1} + \Lambda_{\mathbf{M}2}}} \;} \tag{8} R=ΛM1+ΛM22(bTM−1b−τ) (8)

至此,圆心 (6) 和半径 (8) 都从原始的齐次矩阵中提了出来。

4.4 半径有解的条件

值得注意的是,要让 R R R 是个实数,必须有

b T M − 1 b − τ    >    0. \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} - \tau \;>\; 0. bTM−1b−τ>0.

这个条件其实就是要求舒尔补 τ − b T M − 1 b \tau - \mathbf{b}^T\mathbf{M}^{-1}\mathbf{b} τ−bTM−1b 为负 ------它等价于整个 3 × 3 3\times 3 3×3 矩阵 P \mathbf{P} P 不是正定的(否则二次型恒大于零,不会有解)。这是熟悉的线性代数结论的另一种打开方式:舒尔补的符号决定了原矩阵的惯性指数


相关推荐
AI科技星16 小时前
精细结构常数α的多维度物理比值特性及空间螺旋模型研究
人工智能·线性代数·架构·概率论·学习方法
AI科技星17 小时前
基于奇合数边界的离散解析数论与双螺旋宇大统一体系(中英文双语纯净终稿)
人工智能·线性代数·架构·概率论·学习方法
写代码写到手抽筋19 小时前
PMI预编码矩阵全解:矩阵含义\+系统作用\+实战案例
线性代数·矩阵·预编码算法
chsmiao1 天前
深度学习之线性代数
人工智能·深度学习·线性代数
zhangfeng11332 天前
光驱动的 AI 算力卡,也就是光子计算(Photonic Computing)芯片,用光子(光)代替电子来做矩阵乘法和数据传输
人工智能·语言模型·矩阵·架构·transformer·芯片
会Tk矩阵群控的小木2 天前
小红书矩阵系统2026最新技术架构与多账号自动化运营实战
运维·矩阵·架构·自动化·个人开发
Eloudy2 天前
光子的单缝衍射模型
线性代数·机器学习·概率论
2601_957884842 天前
面向内容合规性的短视频矩阵分发机制:感知哈希去重与语义检索优化实践
矩阵·音视频·哈希算法
2601_957787582 天前
异构网络媒体中台的容灾与安全架构:分布式资产生命周期、零信任网关与跨域路由实践
人工智能·矩阵
2601_957879333 天前
基于LBS位置服务与跨域OpenAPI的同城矩阵系统:边缘裂变与数据网关架构实践
线性代数·矩阵·架构