【问题标题】:Avoiding weird homography values when normalizing规范化时避免奇怪的单应值
【发布时间】:2026-01-12 05:55:02
【问题描述】:

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

当该值非常小(例如 0.0000008)并除以一个假定为零的值 (0.0000007) 时,就会出现问题。结果值在假定为零时几乎是 0.875,并且结果投影没有意义。

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

【问题讨论】:

  • 嗯,首先确保你的价值观没有错?
  • 扩展我的简单评论,如果您已经计算出与归一化值具有相似幅度的值,那么可能已经太晚了。
  • 最后一列是位置向量 (x,y,z)。当 z 接近 cero 时,问题就来了。我尽量避免这种情况。但我怀疑我是第一个遇到这个问题的人,所以应该有一种方法来选择规范化元素,我的意思是,一种通用的方法,一种很好的方法。

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


【解决方案1】:

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

0/0.000000001 = 0   = CORRECT

和:

0.000000001/0.000000001 ~ 1    INCORRECT

我将定义一个函数来检查错误,并带有参数 sigma。

如果 value

因此,它将始终使用超过 sigma 误差的值,否则为 0。

【讨论】:

    最近更新 更多