我想知道为什么我们要规范同形或基本矩阵?这是特别的代码。
H = H * (1.0 / H[2, 2]) # Normalization step. H is [3, 3] matrix.
我可以理解,由于线性最小二乘造成的不稳定性,我们必须在计算SVD之前对数据进行规范化,但为什么我们最终要将其规范化呢?
发布于 2022-09-28 09:28:42
三维空间中的同形定义为8自由度,利用透视从一个平面映射到另一个平面。这样的同形可以通过给出四个点来定义,这就形成了八个坐标(标量)。
一个3x3矩阵有9个元素,所以它有9个自由度。这比一个单调词所需要的要高出一个度。
当矩阵被缩放(乘以一个标量)时,单调性不会改变。所有的数学都一样。你不需要标准化你的同形矩阵。
正常化是个好主意。
首先,它使算术变得更容易篡改。有一些维基百科的链接到研究领域,因为所有这些编织成一个连贯的句子..。没有添加任何东西:数值分析,条件数,浮点算法,数值误差,数值稳定性 .
此外,规范化使矩阵更容易被人类解释。最常见的规范化方法是缩放矩阵,使最后一个元素成为1
。这是很方便的,因为整个数学都发生在射影空间中,其中投影导致点被映射到w=1
平面,使得向量具有最后一个元素的1
。
发布于 2022-09-28 03:17:42
同形矩阵是如何提供给你的?
例如,在某些库函数计算并向您提供同形矩阵的场景中,如果函数规范没有提到比例.
在极端情况下,该功能可以实现为:
Matrix3x3 CalculateHomographyMatrix( some arguments )
{
Matrix3x3 H = ...; //Homogoraphy Calculation
return Non_Zero_Random_Value * H; //Wow!
}
元素值可能变得非常大或非常小,使用这些值可能会导致问题(浮点计算错误)。
https://stackoverflow.com/questions/73874757
复制相似问题