【问题标题】:Matlab: Epipolar lines in what coordinate system?Matlab:什么坐标系中的极线?
【发布时间】:2014-07-10 16:52:28
【问题描述】:

基本上,我在一张图像中有一个点(以像素坐标表示),而另一张图像中有对应的外延线,由 Matlab 的 epipolarLine() 函数给出(我也有所有内在、外在、基本矩阵)。此外,我确切地知道对应点位于该图像中的哪一行 - 因此,从数学上讲,可以通过将该行与 epiline 相交来找到匹配点。但是,我对所涉及的不同坐标系感到非常困惑,并将它们混合在一起。

我尝试在极线 Ax+By+C=0 中使用整数行值作为 x 并求解 y,但我得到了一个十进制答案(小数部分在 0.3-.6 范围内,所以舍入不没有意义)。对应的y值不应该也是整数吗?

但是,我不知道核线所在的坐标系。Matlab 是否以像素坐标、第二个相机坐标或第一个相机坐标返回这些线?另外,像素坐标中的(x,y)是对应图像中的(row, col)还是(col,row)?

【问题讨论】:

    标签: math computer-vision matlab matlab-cvst


    【解决方案1】:

    核线在图像坐标中以像素为单位定义。如果您查看documentation for epipolarLine 中的示例,您将看到线方程以像素为单位定义。

    (x,y) 对应于(col, row)。请参阅documentation 了解更多信息。因此,如果您知道对应点的行,那将是 y 值,而不是 x。看来你那里有一个错误。

    就您获得的分数位置而言,这绝对没有错。可以这样想:你有一个 3D 世界点,它恰好投影到图像 1 中具有整数坐标的 2D 点上。没有说图像 2 中相应的 2D 点也必须具有整数坐标。事实上,一个 3D 点极不可能在两幅图像中都投影到具有整数坐标的 2D 点。

    出于好奇,你怎么知道对应点的行?

    【讨论】:

    • 非常感谢!现在说得通了。对于行索引,我正在使用Gray codes 处理structured light 扫描。简而言之,通过解码来自投影仪的条纹图案(建模为立体系统中的第二个摄像头),我可以将来自第一个摄像头的光线充足的像素对应到“第二个摄像头”中的行。然后我可以将行与极线相交以获得配对匹配,然后进行三角测量(但我不知道坐标是如何匹配的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    相关资源
    最近更新 更多