数据归一化在数值计算文献中也被称为预条件处理,它在DLT(Direct Linear Transform)算法中是实质性的,而非可有可无。数据归一化对于条件数(数值分析中,一个问题的条件数是该数量在数值计算中的容易程度的衡量,也就是该问题的适定性。一个低条件数的问题称为良态的,而高条件数的问题称为病态的。)不太好的问题尤为重要,比如多视几何中的基本矩阵和三焦点张量的计算。归一化变换的一般步骤如下:
- 对点进行平移使其形心位于原点。
首先计算点集的形心(即中心),然后将所有点坐标都减去形心即可。 - 对点进行缩放使它们到原点的平均距离等于√2。
比如,对于用齐次坐标表示的二维图像点,这意味着变换后“平均”点为(1, 1, 1)T。如果在变换过程中,对所有坐标维度应用的缩放因子是一样的,则该变换称为各向同性缩放。反之,则是非各向同性缩放,它一般是使得各个坐标维度变换后具有相同的尺度,变换结果形如一个“圆”。需要注意的是,非各向同性缩放会增加额外的开销,且其结果并不比各向同性缩放有显著的提高。 - 若有多个独立数据,则分别对其独立进行上述变换。
- 变换后即可进行计算,最后再将计算结果进行解除归一化即可。
对数据进行归一化变换有两个好处:
- 可以提高数据的精度
- 使算法关于相似变换(缩放、平移)不变。即,无论选择的数据的尺度大小和坐标原点位置是如何的,经过归一化后,其都是一致的。这是因为,归一化步骤通过为测量数据选择有效的标准坐标系,预先消除了坐标变换的影响。