第一次接触平面射影几何的人多半会被“无穷远点”“交比”这些词绕晕明明在中学里“平行线不相交”是天经地义的事怎么到了射影平面里它们反而必须相遇了我当时学这一块也绕了很久直到后来做计算机视觉里的图像矫正和测量才发现这些抽象概念全是实打实的工具。这篇算是平面射影几何系列的第二篇重点不再停留在齐次坐标和射影变换的入门概念上而是把交比、调和点列、极点极线和几个关键构图定理串起来讲清楚它们为什么重要、怎么算、又怎么落到实际工程里。适合正在啃射影几何教材的学生也适合做图形学、图像测量、三维重建的工程师——哪怕你只是好奇“投影比例”和“中心点”这类问题读下来也会有不少收获。1. 先理清底层框架从欧氏平面到射影平面1.1 为什么要引入无穷远点欧氏几何处理的是普通平面上的点、线、角、距离。但在真实世界里很多视觉过程是中心投影人眼成像、针孔相机拍照、投影仪投墙都是把一个平面上的点通过一点投射到另一个平面上。这个过程中最尴尬的一件事是两条本来平行的直线在投影平面上往往会交汇到同一个点比如你站在笔直的铁轨中间往远方看两条铁轨在视野尽头“相交”了。欧氏几何没法好好描述这个现象因为平行线不该相交可图像里它偏偏交了。射影几何的做法很直接给每一条直线补上一个“无穷远点”让所有平行于它的直线共享这个无穷远点。所有方向的直线对应的无穷远点合起来就是一条“无穷远直线”。于是射影平面 欧氏平面 无穷远直线。在这个新平面上任意两条直线都有且只有一个交点不存在“平行”这种例外。这个设计不是刻意找麻烦而是为了让“相交关系”在任何投影角度下都保持稳定。你换个角度看铁轨原来图像中的交点会移动但那个交点始终对应“同一个方向的消失点”。如果没有无穷远点这个概念这种稳定关系就很难用简洁的语言描述。1.2 齐次坐标射影平面的数学载体射影平面上的一个点习惯用三维向量 ((x:y:z)) 表示注意是带冒号的等价类只要 ((x,y,z)) 和 ((kx,ky,kz)) 差一个非零倍数就代表同一个点。当 (z \neq 0) 时可以对应成普通二维坐标 ((x/z, y/z))当 (z0) 时它就是一个无穷远点。这种写法的好处很多。最直观的一点是射影变换比如相机成像造成的透视变形在齐次坐标下就是一个 (3\times3) 的可逆矩阵乘法。点 (p) 经过某个射影变换 (H) 变成 (p)只需要算[ p H p ]不用管它是平移、旋转、缩放还是透视投影逻辑完全统一。另一个好处是点和直线的运算关系变得对称为后面极点极线的讨论铺了路。1.3 对偶原理射影几何的“镜像世界”在射影平面里“点”和“直线”的位置关系存在一种奇妙的对称若有一句话只涉及“点在直线上”“两条直线交于一点”“两点确定一条直线”把所有“点”和“直线”互换句子依然成立。例如“两点确定一条直线”互换后变成“两条直线确定一个点”——放在普通欧氏几何里你会觉得奇怪但射影平面上两条不平行直线确实确定一个交点而平行线则确定一个无穷远点仍然是一条直线上的点。对偶原理让很多定理可以“白拿”一半只要证明了其中一个另一个自动成立。平面射影几何中后续的许多推导本质都是在这种对偶框架下展开的。2. 交比与调和点列射影几何的“度量灵魂”2.1 交比的定义四个共线点的比值比例射影变换虽然会改变直线的长度、角度、平行关系但有一样东西它动不了那就是直线上四个点构成的“交比”。定义是这样的直线上四个有序点 (A, B, C, D)交比记为 ((A,B;C,D))它的值是[ (A,B;C,D) \frac{AC/BC}{AD/BD} ]这里的 (AC, BC, AD, BD) 都是带有向线段的长度同向为正反向为负。从代数上更容易操作把直线参数化为 (P(t) P_0 t \cdot v)设四个点对应的参数分别是 (t_A, t_B, t_C, t_D)那么交比可以直接用参数坐标算[ (A,B;C,D) \frac{(t_C - t_A)/(t_C - t_B)}{(t_D - t_A)/(t_D - t_B)} ]这个式子是不是看着有点抽象我这么理解交比描述的是“C 和 D 在分割线段 AB 时位置比例之间的比例”。它可以看成是“分割”的二次嵌套所以即使投影把直线整体压缩拉伸这个比值也不会变。你可以拿一张纸、一支笔实际做个实验在白纸上画一条线取四个点量出它们之间的距离算出交比然后用手机侧面拍这条线相当于一个射影变换在照片上再找这四个点量出照片上的距离算一次交比。两次的结果会非常接近。这个“不变性”就是交比在图像测量里最重要的价值图像上测到的距离不可靠但交比可靠。2.2 调和点列交比为 -1 的特殊局面当交比 ((A,B;C,D) -1) 时我们把这四个点称为“调和点列”也说 C、D 调和分割 A、B。调和点列在射影几何中的地位类似于“直角”在欧氏几何中的地位到处都是它的身影。几何上调和点列有个直观印象C 是线段 AB 的内分点D 是外分点且内外分比例相等方向相反。具体说也就是[ \frac{AC}{CB} -\frac{AD}{DB} ]如果已知 A、B、C怎么找出 D一个经典的尺规构造是任取 C 外一点 P连接 PA、PB再随意作一条过 C 的直线与 PA、PB 分别交于 E、F连接 AF 与 BE交于 G连接 PG 并延长交 AB 于 D。这个 D 就是 C 关于 AB 的调和共轭点。这个构造看起来绕但在动态几何软件里演示非常漂亮无论你怎么拖动 PD 始终固定在同一个位置。这就是调和关系的射影本质它不受辅助线的影响。2.3 一个可手算的交比例子假设直线上的四个参数坐标是 (t_A0)、(t_B1)、(t_C3)、(t_D4)。直接代入公式[ (A,B;C,D) \frac{(3-0)/(3-1)}{(4-0)/(4-1)} \frac{3/2}{4/3} \frac{9}{8} ]如果我把 (C) 和 (D) 调换位置即将 ((A,B;D,C)) 代入结果会变成 (8/9)。所以交比跟“点的顺序”强相关不同顺序对应不同值这点在使用软件或者写代码时要格外注意。实际处理图像时往往需要先把四个点的顺序定义清楚再从图像坐标计算交比。2.4 计算交比时我踩过的坑符号问题纸上量长度通常用正数但交比里的线段必须带“方向”。同向为正反向为负。最容易翻车的就是把外分点对应线段的方向忽略了一通操作算出一个完全不对的正数。分母为零如果四个点里有重合或者某个点恰好在参数化时对应无穷大公式分母会爆炸。这时候应退回到齐次坐标用两两叉积和行列式来计算或者干脆检查原始点是否真的不重合。现实中常遇到图像里两个点因为畸变看起来几乎重叠数值上容易出现问题。坐标归一化用齐次坐标计算时记得把向量归一化到最后一维为 1否则乘出的结果可能整体差个倍数交比就被污染了。3. 极点极线二次曲线里的隐藏透视关系3.1 什么是极点和极线如果说交比研究的是“直线上四个点的关系”极点极线研究的就是“点与二次曲线的关系”。给定一条二次曲线椭圆、双曲线、抛物线都行以及曲线外一点 P。从 P 可以向曲线作两条切线两个切点连成一条直线这条直线就叫 P 的极线P 就叫这条极线的极点。P 在曲线上时极线就是过 P 的切线。P 在曲线内部时虽然不能直接作切线但仍然有对应的极线只是极线落在曲线外。我最初觉得这个定义太绕后来发现它本质上是“从某个点观察曲线的对偶视角”。极点与极线是一一对应的任意一个点都有唯一的一条极线任意一条直线也都有唯一的极点。这个对应关系叫配极变换它是射影几何里最漂亮的结构之一。3.2 怎么用矩阵快速求极线在齐次坐标下二次曲线的方程可以写成一个对称矩阵 (Q)[ x^T Q x 0 ]比如圆 (x^2 y^2 z^2) 对应的矩阵是 (\mathrm{diag}(1,1,-1))。给定一个点 (p)它的极线直接就是[ l Q p ]也就是把矩阵和点的齐次坐标做一次乘法得到的几何向量就是极线的系数。反过来如果已知一条直线 (l)它的极点也可以算[ p Q^{-1} l ]只要 (Q) 可逆。这个简洁性是齐次坐标的最大红利没有这套表述手推极线能算到怀疑人生。举两个例子对单位圆取圆上点 ((1,0,1))它的极线是 (xz)等价于平面直角坐标下的 (x1)正好是过那一点的切线。再取圆心 ((0,0,1))极线是 (z0)也就是无穷远直线。为什么要圆心的极线在无穷远因为从圆心往所有方向看圆的切线都对称它的极线确实没有有限位置这个现象在图像处理里反而特别有用。3.3 用极点极线求椭圆中心一个实战技巧图像处理里经常要从离散点拟合一个椭圆最常见的需求是求椭圆中心。过去普通做法是用最小二乘拟合椭圆参数方程绕来绕去还要解非线性方程。但实际上只要拟合出二次曲线矩阵 (Q)椭圆的中心就是无穷远直线(l_\infty (0,0,1)^T)关于该曲线的极点。用代码写特别短import numpy as np # Q 是通过最小二乘拟合得到的 3x3 对称矩阵 Q np.array([[...]]) # 无穷远直线 l_inf l_inf np.array([0.0, 0.0, 1.0]) # 求解 Q c l_inf得到椭圆中心齐次坐标 c np.linalg.solve(Q, l_inf) # 归一化到 z1 c c / c[2] center c[:2] print(椭圆中心, center)这个做法的奇妙之处在于它完全不需要知道你处理的是圆还是椭圆也不需要额外判断各种参数角。整个计算是线性的稳定快速。我在一个图像测量项目里用过这个方法几千个颗粒的椭圆拟合中心一秒钟跑完准确度比传统的质心法高出一截。极点极线在这里不是课本上束之高阁的概念而是能替代码省掉一堆繁琐步骤的实用算法。4. 几个经典构图定理与它们的现代应用4.1 两个三角形的透视对应共点与共线等价射影几何里有一个基础到不能再基础的构图定理如果两个三角形的对应顶点连线共点那么它们的对应边交点共线反过来也成立。这里我不打算提具体人名你只要记住这个结论就行。它的应用场景很直接画法几何里补全透视图。假设你有一张照片图中有一个矩形物体因为透视它已经变成任意四边形。你要找到它在某个方向上的消失线就可以通过这条定理构造辅助三角形把消失点推算出来。我实际做过一个项目需要在一张斜拍的照片上画一条与已知矩形某边平行的直线用的就是这个构图定理。在没有三维模型的情况下它是唯一干净可靠的解法。4.2 圆锥曲线上的六点构图五点定曲线到六点共线圆锥曲线上的六点构图定理说的是如果六个点都在同一条二次曲线上那么这六点按某种顺序相连后三对对应边的交点会落在一条直线上。反过来如果三对对应边的交点共线则这六个点一定共一条二次曲线。这个定理最大的用处是“尺规构造”给出二次曲线上的五个点你要找第六个点只需要任选一条过某两个交点的直线与对应边相交就能构造出符合曲线条件的点。我看着像魔法但射影几何里这类构图定理非常多本质上都是在用“共线/共点”替代“计算”把平面几何问题变成可徒手完成的画图题。在计算机图形学中这个定理可以用来做曲线拟合的稳健性校验。例如生成一条样条曲线上的离散采样点时可以随机取六个点检查它们是否满足共线条件如果偏差很大就说明拟合模型选择有问题。这是一种不依赖参数方程的几何校验法非常直观。4.3 交比不变性在图像测量中的落地思路我做过的一个小实验在真实场景里放置等间距的四个标记点然后用手机斜拍这张平面试图从照片估算横向间距是否均匀。直接量像素距离会发现靠得越远间距“看起来”越小这是透视变形。但如果我在照片上找到一条穿过四个标记点的直线计算出它们的交比再与真实世界侧的量测值对比会发现两边吻合得很好。更实用的是单目深度估计思路如果已知场景中某条直线上四点之间的真实交比同时从图像中提取四点像素坐标算出交比就可以反推相机角度或物体位置关系。这类方法虽然精度比不上双目视觉但在没有深度传感器的场景里交比是唯一不依赖外部标定物就能保持稳定的几何信息。做三维重建和视觉测量的人迟早会碰到这个知识点。5. 常见问题排查与学习建议5.1 算出来的交比总不对怎么排查按这个顺序检查四个点是否真的共线图像上有噪声时先做直线拟合把点投影到拟合直线上再算交比。点序是否统一(A,B,C,D) 的定义必须和公式里一致尤其注意 C、D 是“后面”的两个点。线段是否带符号更新坐标时别只取绝对值。齐次坐标是否归一化算两两距离时把坐标统一到 (z1)避免分母歧义。5.2 极线画不准怎么验证先别急着手动连线。用动态几何软件只要是能自由拖动点和线的就行把二次曲线、点和极线画出来拖动点看极线是否实时变化。如果手算和软件结果不一致优先检查二次曲线矩阵是否满足对称性因为拟合时如果矩阵不对称计算出的极线会整体偏移。另外注意极点极线对二次曲线的内部点和外部点交互方式不同。外部点的极线看得出来是一条紧密围绕曲线的割线而内部点的极线完全落在曲线外。看到“反直觉”的极线位置不要慌这是正常的。5.3 射影变换矩阵数值不稳定怎么办做图像矫正时经常需要从四组对应点求解 (3\times3) 单应矩阵。如果四个点中有三点近似共线解出来的矩阵会非常脆弱稍微挪动一个点结果抖动剧烈。对策是采集点时尽量选分布开阔的四个点避免近似三角形计算时先对点的坐标做归一化平移缩放到均值 0、方差 1得到结果后再反变换回去。这一步看着多但能显著提升数值稳定性。我自己在拍摄标定板时就吃过亏标定板放歪了导致四角点几乎共线单应矩阵算出来天翻地覆。后来老老实实加归一化结果稳得多。5.4 学习路径建议第一遍学的时候重点放在三个核心齐次坐标下的点线运算、交比不变性、极点极线的代数求法。这三个学会了平面射影几何的主干就算握住了。第二遍才去看各种构图定理和它们的互推关系。练习工具上动态几何软件是个好帮手。手动构造一个二次曲线任取点求极线拖动点观察极线的位置变化很多抽象结论会变成肌肉记忆。代码上可以拿图像里的椭圆检测练手写一个最小二乘拟合二次曲线的函数再用极点极线求中心一套流程下来射影几何的代数面和工程面都打通了。6. 在线实操验证交比不变性和极线关系这里分享一套我平时验证理解对不对的小实验。打开一个动态几何软件画一条水平直线在线段上取四个点 A、B、C、D。用软件自带的测量工具分别测出四点的参数坐标手动计算交比。然后在直线外任取一点作为投影中心把 A、B、C、D 通过中心投影到另一条任意方向的直线上得到 A、B、C、D再测一次交比。你会看到两个交比值完全一致差别只在浮点误差。在这个图的基础上再画一条二次曲线比如标准圆取圆外一点 P作两条切线得到切点连线再用软件的“极线”工具直接看 P 的极线两者会重合。更妙的是当你把一条直线作为极线让软件计算它的极点再验算这个极点关于曲线的极线确实会回到原直线。这种“往返一致”的性质是配极变换的核心亲自动手画一遍就不再觉得它是天书。7. 一些个人的体会这些内容我最初学的时候觉得像纯数学游戏直到一次图像测量项目里需要从斜拍的照片恢复远处的几何比例才意识到交比、极线这些概念就是解决这类问题的“快捷键”。我现在最深的体会是平面射影几何的中心不是背公式而是训练一种看待“关系”的眼光。平行线和无穷远点不再是无端假设而是对中心投影现象的自然抽象交比不再是冰冷比例而是图像里少数几个“骗不了你”的稳定量极线也不再是奇怪的辅助线而是快速提取二次曲线性质的实用工具。如果你正在学这一章不妨把书上的图和定理亲手画一遍、推一遍、算一遍然后找个图像处理的小任务落一下地。等你能在实战里自然说出“这里用交比”“那里用极点极线”的时候这门课就算真正吃透了。