查找绘制到图像中的矩形的实际尺寸

问题描述 投票:0回答:1

我无法在任何地方找到这个问题的解决方案,所以我在这里询问希望有人能找到解决方案。

问题如下:

给定图像,是否可以找到图像中绘制的矩形的“实际尺寸”,其目的是在道路水平面上的投影?

我有可能解决此问题所需的任何信息:

  • 相机焦距,单位为毫米 mm
  • 相机相对于路面的高度(以厘米为单位)
  • 相机相对于路面的倾斜度(°)
  • 传感器尺寸(英寸)
  • 图像大小(以像素为单位)
  • 矩形的尺寸(以 px 为单位)
  • 与使用 openCV 检索到的以 px 为单位的图像相比,矩形的位置

但是我什至想念公式来开始写代码。

这里有 2 张来自 Google 的屏幕截图。在它们中,矩形的大小相同,只是向上移动,这产生了另一个大问题:透视

image 1

image 2

环顾四周,似乎没有人提到水平面上的投影和透视。老实说,我什至不知道从哪里开始,我以前从未处理过这样的事情。 如果我没有说清楚,请随时询问。

编辑1: 这里有两张图片可以帮助您更好地理解问题。

  • 第一个作为上下文图像:

Context

Visual example

opencv math image-processing computer-vision projection
1个回答
0
投票

您的问题本质上可以归结为“地面上对应于给定像素坐标位置的位置是什么”,因为一旦有了这个位置,确定四边形四个角的地面位置就很容易了。

如果您假设使用针孔相机,则地面上的一点会通过针孔直接照射到传感器。因此,最重要的部分是将传感器坐标系正确嵌入到 3D 空间中。

  1. 从传感器已知像素尺寸的矩形开始。
  2. 将其缩放至传感器的物理尺寸。所以比例因子本质上是像素密度的倒数。
  3. 移动传感器,使传感器中心位于原点。我们假设相机的光轴通过中心。
  4. 将其偏移垂直于传感器平面的物理焦距(不是 35mm 等效焦距)。现在传感器以正确的距离面向针孔。
  5. 旋转到相机的已知倾斜度。
  6. 将地面建模为水平面,到原点的距离与相机的高度相匹配。

步骤 1 到 5 应允许您在生成的图像中获取 (x, y) 位置,并将它们转换为正确定位的传感器上相应点的 3d 位置。该 3d 矢量的任何倍数都是传感器上的点和针孔所跨越的线上的点。选择也位于地平面的倍数,即具有与地面匹配的一个非零坐标。这是你在地面上的位置。

所有这些都将通过使图像中的不同位置对应于地面上的不同位置来处理透视,这样传感器上的相同像素距离并不对应于地面上的相等距离。

OpenCV 可能有一些工具可以帮助解决所有这些问题,但理解如何正确使用这些工具可能比将 4 个矩阵相乘来组合我上面概述的基本变换更困难。如果您不能假设相机像针孔相机一样工作,那么事情就会变得更加复杂。

相关主题:如果您有 4 个匹配点而不是相机参数,请参阅 从 4 个投影点查找变换矩阵 了解如何计算矩阵,并参阅 如何从透视投影计算真实长度? 如果您没有相机参数你知道平面上可见物体的大小。

© www.soinside.com 2019 - 2024. All rights reserved.