为什么在应用直接线性变换之前对数据集进行归一化

信息处理 图像处理 单应性 正常化
2022-01-07 11:39:05

直接线性变换(简称DLT)是一种单应性估计方法,它通过SVD求解超定线性系统

Ah=b
寻找解决方案h受约束h=1. 实际上它找到了最小二乘解Ahb.

我了解这个算法的基本思想,但建议在对数据集应用 DLT 之前对其进行归一化,这里是关于如何进行归一化的介绍。据说数据规范化对 DLT 很重要,如果没有规范化,DLT 的结果是不稳定的。

我想知道为什么?仅仅因为 DLT 涉及使用 SVD 求解线性系统,并且A可能是单数?

3个回答

归一化基本上是减少矩阵条件数的预处理A(条件数越大,矩阵越接近奇异矩阵)。

在单应性估计的情况下,归一化变换也由矩阵表示,这恰好可以用作良好的预条件矩阵。原因更详细,并在H&Z 书(4.4.4,第 107 页:为什么归一化必不可少?)中进行了简要解释,或者在论文“为八点算法辩护”中进行了更详细的解释。

简单地说,矩阵A由可以具有不同比例的图像坐标的乘积组成。如果比例因因子而异10, 产品相差一个因素102.

源和目标坐标数据通常是有噪声的。如果没有标准化,来自源的数据的方差可能比来自目标的数据大两个数量级(反之亦然)。

单应性估计通常以最小二乘的方式找到参数 - 因此,只有当参数的方差相同(或事先已知,但仅对输入进行归一化更实际)时,才能找到最佳统计估计。

直接求解器不喜欢尺度较差的问题,因为会出现数值不稳定性(例如,将非常大的数除以非常小的数很容易导致数值溢出)。

迭代求解器通过需要更多迭代来处理条件不良的矩阵。

因此,归一化不仅对于数值稳定性至关重要,而且对于在存在噪声和更快求解(在迭代求解器的情况下)的情况下进行更准确的估计也是必不可少的。

维基百科文章指出:

“使直接线性变换问题与众不同的原因是……定义方程 [X = AY] 的左侧 [X] 和右侧 [AY] 可以相差一个取决于 k 的未知乘法因子”

在上面的X,A,Y是矩阵。

因此,为避免不得不估计该因子,您只需对所有数据进行归一化即可。

这是数值准确性的问题。通过规范化数据集,您可以将数据居中并为其提供单位方差。这些条件最好由溶解器处理。