新闻  |   论坛  |   博客  |   在线研讨会
CVPR2023 | 如何设计一个更快更鲁棒的P3P求解器?(2)
计算机视觉工坊 | 2023-08-19 19:54:39    阅读:168   发布文章

(11)中三次方程的通解可能有四种情况: 三个实根,一个实根和两个复根,一个实根和一个重根、一个实三重根。 这四种可能性对应于直线和交点的不同情况。在本文的例子中,第一个圆锥曲线(4)是不定的,第二个圆锥曲线(5)是双曲线(b>0)。不失一般性,假设第一个是椭圆,并在图3中展示两个圆锥曲线的可能相对位置。 简要起见,以图3b作为示例。两个圆锥曲线有四个实交点,特征三次方程有三个实根,每个实根对应于一对实直线。每对实直线在四个实交点处与两个圆锥曲线中的任何一个相交(图3b)。在其他情况下也存在类似的情况。

图片图3:双曲线和椭圆相对位置的八种可能情况的图解。具有不同颜色的一对线对应于不同的三次根。(a)-(c): 两个圆锥曲线分别具有零、四和两个实交点的一般情况。(d)-(f): 两个圆锥曲线相切的临界情况,分别有一个二重交点、两个二重交点、一个二重交点和两个交点。(g)-(h): 两个圆锥曲线彼此密切(两个圆锥在切点具有相同的曲率),分别有一个三重交点和一个四重交点

三次方程的根、线的数量和交点之间的关系如表1所示。

图片表1:三次方程的根、退化圆锥曲线的直线数和两个圆锥曲线交点之间的关系。1D、1T和1Q分别表示一个二重交点、一个三重交点和一个四重交点

假设三次方程(11)可以写成

进行变量替换可得关于的沮丧三次方程(没有二次项)

其中

(30)的判别式为:

  • ,(30)有三个不同的实根,其对应于情况(a)和(b)。对于情况(a),由于所有的实根都不对应于任何实交点,我们可以选择三个根中的任何一个。使用三角解找到根,该根可以对应于一对实线,也可以不对应于实线。如果选择的实根给出一对实线,可以在验证第一条直线没有实交点后跳过第二条直线。对于情况(b),三个根中的任何一个都将产生一对实线和四个实交点。
  • ,(30)具有一个实根和两个共轭复根,这对应于情况(c)。使用Cardano公式可以找到实根,并且可以得到一对实直线。如果其中第一条直线与圆锥曲线有实交点,则可以跳过第二条直线。否则,如果第一条直线没有实交点,就需要检查第二条直线。
  • ,则(30)有一个单实根和一个重实根,这对应于情况(d)、(e)和(f)。对于情况(d),可以看到重实根在虚直线中产生。因此,对于这种情况,可以使用单实数根。
  • ,则。在这种情况下,方程(30)有三重根γ,这对应于情况(g)和(h)。三次方的实根给出了一对实线,并且可以很容易地找到实交点。

基于以上分析和表1,可以注意到,可以使用任何一对实线来恢复实交点,并且除了情况(d)之外,三次方程的任何实根都对应于一对实直线。只需要在时避免使用重实根。 另一方面,如果,则这对直线和圆锥曲线之间一定有双重交点。为了避免重复的解,需要检查直线和圆锥曲线之间的交点。整个过程如算法1所示。

图片


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客