正常化时避免奇怪的单应性值

时间:2012-06-07 15:34:45

标签: c++ numerical-methods homography divide-by-zero

熟悉Homographies的人会知道你必须将其标准化除以任何矩阵分量,以保持齐次坐标。单应性是3x3矩阵,通常归一化除以(3,3)处的元素。

http://www.cg.tu-berlin.de/fileadmin/fg144/Courses/06WS/scanning/Dennis/Extrinsic%20calibration-Dateien/image006.jpg

当该值非常小(例如0.0000008)时,问题就出现了,并且将一个被上述的值除以零(0.0000007)。当它被假定为零时,结果值几乎为0.875,并且得到的投影没有任何意义。

我想知道解决这个问题的常用方法。我使用C ++和浮点运算。

1 个答案:

答案 0 :(得分:3)

所以,如果我理解这个问题:

0/0.000000001 = 0   = CORRECT

0.000000001/0.000000001 ~ 1    INCORRECT

我将使用参数sigma定义一个检查错误的函数。

如果值< sigma = 0.001,假设为零,并返回0,否则返回值。

因此,它总是在sigma错误上有效,如果没有则为0。