我正在尝试实施逆透视映射来计算到道路上另一辆车的距离。我知道在应用函数之前我需要生成一个包含源点和目标点的变换矩阵warpPerspective()
,但我不知道如何计算目标点。
我在这个论坛和其他网站上搜索过,但我无法将第一张图片转换为第二张图片:
(来源:shanetuohy.com)
(来源:shanetuohy.com)
我正在尝试实施逆透视映射来计算到道路上另一辆车的距离。我知道在应用函数之前我需要生成一个包含源点和目标点的变换矩阵warpPerspective()
,但我不知道如何计算目标点。
我在这个论坛和其他网站上搜索过,但我无法将第一张图片转换为第二张图片:
(来源:shanetuohy.com)
(来源:shanetuohy.com)
您想要实现的目标要求您计算地平面、其在相机观察到的图像中的位置以及其在鹰视图中的位置之间的全像。
传统上,这是通过在大多数计算机视觉管道中提取特征(角点或关键点)来处理的,但这在这里是不切实际的:道路上没有特征(或变化的特征)。
您可以做的是在校准步骤中计算这些单应性,过程如下:
将相机放在目标车辆上。将已知的矩形图案(通常是棋盘)放在车前的平坦地面上。如果您想要公制距离,那么您还需要知道图案的大小,否则您将只测量相对距离。
使用此设置拍摄校准图案的照片。
在图案的图像中,您需要检测它。这可以通过多种方式完成:如果您有图案的参考图像,您可以自动检测它,或者您可以手动单击 4 个外角。这将为您提供至少四个点对应(图案的每个外角对应一个)。点对应关系是在图像点(例如,4 个角)和参考位置之间建立的,参考位置是所述点在图案的参考图像中的位置(如果 oyu 有一个),或者是您想要的位置在鹰视图中点。
从对应关系中,估计一个单应性H
。H
是一个 3x3 矩阵(请参阅任何计算机视觉参考资料,无论是在线还是教科书)。
这将向您输出相机所看到的内容与校准图案的参考位置之间的转换。如果您将图案的正面平行视图或其在鹰视图中的所需坐标作为参考,您就会得到您正在寻找的单应性。如果没有,您需要估计第二个单应性并将它们的结果链接起来。
请注意,在Gary Bradski 的 Learning OpenCV 书中考虑了此应用程序。你可以在书中阅读更多关于它的信息,并且很可能在网上找到原始代码。