使用warpPerspective()opencv生成道路的自上而下视图

时间:2013-04-12 00:32:45

标签: c++ opencv

我正在尝试实施逆透视图来计算到道路上另一辆车的距离。我知道在应用函数warpPerspective()之前我需要生成包含源点和目标点的变换矩阵,但我不知道如何计算目标点。

我在这个论坛和其他网站上搜索过但我无法将第一张图片转换为第二张图片:

Image 1 http://shanetuohy.com/fyp/Images/img.png

Image 2 http://shanetuohy.com/fyp/Images/IPMim.png

1 个答案:

答案 0 :(得分:4)

您想要达到的目标要求您计算地平面,相机在相机中查看的位置以及它在鹰视图中的位置之间的荣誉。

传统上通过在大多数计算机视觉管道中提取特征(角点或关键点)来处理这一点,但这在这里是不切实际的:在路上没有特征(或改变特征)。

您可以做的是在校准步骤中计算这些单应性,使用以下步骤:

  1. 将相机放在目标车辆上。将已知的矩形图案(通常是棋盘)放在汽车前面的平地上。如果你想要公制距离,那么你还需要知道模式的大小,否则你只会测量相对距离。

  2. 使用此设置拍摄校准图案。

  3. 在图案的图像中,您需要检测它。这可以通过多种方式完成:如果您有模式的参考图像,您可以自动检测它,或者您可以手动点击4个外角。这将为您提供至少四个点对应关系(模式的每个外角为1)。在图像点(例如,4个角)和参考位置之间建立点对应关系,该参考位置是图案的参考图像中的所述点的位置(如果oyu具有一个)或者您想要的位置。在鹰视图中指出。

  4. 根据对应关系,估计单应性HH是一个3x3矩阵(请参阅任何计算机视觉参考,无论是在线还是教科书)。

  5. 这将输出相机所看到的内容与校准图案的参考位置之间的变换。 如果您在鹰视图中将模式的前额平行视图或其所需坐标作为参考,那么您将获得正在寻找的单应性。如果没有,你需要估计第二个单应性并将结果链接起来。

    请注意,此应用程序在Gary Bradski's Learning OpenCV book中考虑。您可以在书中阅读更多相关信息,并在网上找到原始代码。