直接线性变换(DLT)是单应性估计的一种方法,它通过SVD $$ Ah = b $$解决了超定线性系统,以找到约束$ \ | h \ | = 1 $的解$ h $。实际上,它找到的最小二乘解最小化了$ \ | Ah-b \ | $。 ,这是有关如何进行标准化的介绍。据讲,数据规范化对DLT很重要,如果不进行规范化,则DLT的结果将不稳定。

我想知道为什么吗?仅仅因为DLT涉及使用SVD和$ A $求解线性系统而可能是奇异的?

#1 楼

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

归一化变换也由a表示在单应性估计的情况下,矩阵恰好可用作良好的前置条件矩阵。这样做的原因更为详尽,并在H&Z的书(4.4.4,第107页:为什么要进行规范化?)中作了简要说明,或者在“防御八点算法”一文中作了更详细的说明。简单地说,矩阵$ A $由图像坐标的乘积组成,可以具有不同的比例。如果比例尺相差$ 10 $,则乘积相差$ 10 ^ 2 $。

源坐标和目标坐标数据通常都很嘈杂。如果不进行归一化,则来自源的数据的方差可能比来自目标的方差大两个数量级(反之亦然)。仅在参数方差相同(或预先知道,但更实际的是对输入进行归一化)时才可找到估计值。例如,将一个非常大的数除以一个非常小的数很容易导致数值溢出。)

迭代求解器需要更多次迭代才能与条件差的矩阵作斗争。

因此规范化不是必不可少的仅用于数值稳定性,还用于在存在噪声和更快求解的情况下进行更准确的估计(对于迭代求解器)。

评论


$ \ begingroup $
另外,我想知道为什么预处理矩阵不像以前那么奇异?通过标准化,预处理矩阵的条件数会减少吗?
$ \ endgroup $
–鳄梨
2013年9月29日23:55

$ \ begingroup $
因为数据中的错误不会对结果造成太大的影响。想象一下通过钟面上的两个点来估计指针在钟上的位置。如果一个点非常靠近中心而另一个点位于边界上,则中心附近的点的位置波动会严重影响结果,而边界上的点会轻微影响手的位置。归一化基本上将两个点都放在边界上,这使解更稳定,并使它离钟面中心(奇点)更远。
$ \ endgroup $
– Libor
2013年9月30日18:00

#2 楼

Wikipedia文章指出:

“使直接线性变换问题不同的原因是,定义方程[X = AY]的左侧[X]和右侧[AY]可以不同由未知的乘数决定,该乘数取决于k“

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

因此,为了避免估计因子,您只需将其标准化即可您拥有的所有数据。

评论


$ \ begingroup $
这听起来不对...如果我们可以归一化以使因子不重要,则可以使用常规方法$ A = XY ^ T(YY ^ T)^ {-1} $解决问题。
$ \ endgroup $
– Michael Litvin
2014年7月24日17:00



#3 楼

这是数值精度的问题。通过标准化数据集,您可以使数据居中并为其提供单位方差。那么,这些条件最好由solbver处理。

评论


$ \ begingroup $
通过更好地解决问题,您的意思是说,当我通过SVD解决这种线性系统时,我应该始终对数据集进行归一化吗?
$ \ endgroup $
–鳄梨
2013年9月29日在1:39

$ \ begingroup $
请注意,规范化甚至会影响SVD计算(moe稳定)。然后,您应该获得较小的奇异值之间的比率。还要注意,数据集通常比较嘈杂,最好对所有点使用相同的方差以获得更准确的估计。
$ \ endgroup $
– Libor
2013年9月29日在18:40