图像配准就是要把两张形状不一样但内容相同的照片,强行拼成一张整片。
这听起来像是魔术,实际上背后是数学在打架。 想象一下,你手里拿着一张泛黄的老照片,旁边是刚从广角镜头拍出来的高清扫描图。
这两张图里的树、车、建筑别看都在,但位置全乱了。你没法直接睁眼一看就能发现它们的区别,务必得先让它们套对位。
这就叫配准。目前的技术能把任意形状的物体,不管它倒着、扭着、还带着透视变形,都能找回来。 核心原理实际上挺激进,也就是一句话:空间坐标变换。咱们不用搞啥复杂的深度学习黑箱,本质上就是算出一套数学公式,用来描述一个旧坐标如何变到新坐标。假设我们有一个旧坐标 $P$,它代表物体在某个参考系里的位置。我们要找一个新坐标 $Q$,让它代表的同一个点,在新的视角下看起来也是站着的。
这中间夹着的变换过程,就是配准。 大量人当作这是个封闭的黑盒,非要从头到尾跑一遍程序。
实际上没那么玄乎。
要是场景好办点,比如两幅正对的图片,那就挺好办。我们找两个关键点,比如左上角的树冠,要么正中间的那个柱子。在旧图上,树冠的坐标是 $(x_1, y_1)$,在正对着的新图上,同一根树冠的坐标变成了 $(x_2, y_2)$。
这就构成了一个一一对应的关系。
要是你能算出从 $(x_1, y_1)$ 如何变到 $(x_2, y_2)$ 的变换矩阵,这玩意儿就能套用到整张图上了。 但在现实里,东西往往比我们想的复杂。你可能有一张旋转过的照片,还有一张倾斜的透视图。
这时候,关键就不是找两点对,而是要找三点对,就连更多点。选哪三个点?这玩意儿叫做“特征点检测”。你得在两张图里都找到对应的特征点,比如路边的树根、墙角的柱子、就连画面里的接缝。
要是找不到点,那这就变不成数学难题了,只能靠肉眼猜。但这猜不准,结局肯定差。 一旦有了对应点,算变换矩阵实际上就是一道线性方程组。数学上讲,就是让旧坐标变换后的向量,等于新坐标的向量。
要是选的点多了,这个方程就有多解。
这时候就需求优化算法了,找那个“最像真”的解。最像真,就是让变换后的图像里,特征点本身的形状、颜色、纹理都和原图最接近。
这就叫特征一致性。 举个例子,咱们拿两张交通标志牌当戏。假设左边那张是红底白字,右边那张是黄底黑字。它们别看内容不同,但那个“红”字的像素分布和那个“黄”字的像素分布,在各自的原图中是固定的。
要是你用深度学习模型,会在心里算一堆复杂的权重,最终把每一块像素都映射那会儿。但要是是传统的几何配准,你只需求去特征点里“找茬”。
比如你把旧图里两个角的坐标算出来,对比新图,看看哪个角度最合理。
要是转一个 90 度,旧图上三角形变平行四边形了,那肯定不是好解。你一启动就排除了那些歪歪扭扭的解,剩下的解自然就稳了。 这种方式在“刚性”和“非刚性”场景下各有功能。刚性就是物体没变形,像照镜子那样。非刚性就是物体被风吹扁了,要么被揉皱了一样。
这时候就得搞点轨迹了。勒蒂斯(Lutes)算法就是个典型的例子,它专门对付非刚性物体。 咱就说一个车。新图里,车牌是歪的,出于车刚过镜头,有畸变。车牌上的字母 'A' 和 'B' 在旧图里也是收笔的,新图里也是收笔的,它们形状彻底一样。但位置不一样。
这时候你就得把旧图里 'A' 这个“扁”的字母,强行扭曲成“竖长”的形状。
如何做?得找支撑点。
比如旧图里 'A' 下方的 'C',在新图里对应的位置是空的。你就算出旧图 'A' 下面的文字坐标,如何变到新图对应的空位上。
这一步就是几何约束:要是旧图里 'A' 下方的形状是 $S_1$,新图里 'A' 下方的形状是 $S_2$,那 $S_1$ 务必变形成 $S_2$,变形规则就是几何变换。 这种算法实际上挺暴力,但也尤实际上在。它不需求先识别出“车”是啥,也不需求知道车有多少个轮子。
只要把车这一大块区域,按照中间那个参考点进行扭曲,就能凑出来。
这就像把一张皱巴巴的纸,在中心点按下去,两边慢慢展开,直到它彻底平整。中间那个点不动,其他点跟着走,就形成了新的空间位置。 自然,目前的高级技术还在用深度学习做端到端。但你说教也没用,它只是把那些复杂的计算包在一起。底层逻辑依然是特征点匹配,依然是空间变换。只是被包装成神经网络的形式,换壳不换骨。
要是真到了极致,连“特征点”这种东西都找不出来,那这就不是配准,这是重建。 最终,回到数据。假设我们要配准一张卫星图和一张手机摄像头拍的城市街景。卫星图分辨率高,建筑细节清楚;手机图在路边抓拍,画面不清楚。用几何法,你只能选几个明显的路口、红绿灯来做参考。误差会挺大。但要是能用深度学习做特征点检测,你就能在不清楚的手机图上,先“脑补”出大约的物体位置,再结合卫星图的精确坐标,算一个混合的变换。
这样就算出来,误差也能管住在厘米级。 这就叫配准,把离散的像素,一个个塞进一个数学公式里,找出它们共同的归宿。
这行活,既要算得准,又要算得快。