如何将图像中的物体大小(以像素为单位)转换成现实世界中的长度单位(如英寸、厘米等)来测量物体大小?

5

我已经从包含对象的图像中以像素为单位计算了对象大小。我想要测量实际世界中的对象大小。是否有办法找到乘法因子来测量实际大小?我目前正在使用Python进行实现。


可能是计算图像像素长度的重复问题 - Christian Dean
是的。使用数学应该可以做到这一点。 - Håken Lid
谢谢您的快速回复。我有一个尺寸为1200*800的图像。 我检测到一个宽度为199,高度为150的对象。 您能给我一些关于计算对象尺寸的其他参数的想法吗?比如说以厘米为单位。 - Sagar Gautam
我同时拥有从相机到物体的距离。 - Sagar Gautam
1个回答

7
通常情况下,您会使用相机获取图像,该相机通过镜头将三维场景投影到二维传感器上。以下图示代表垂直(高度)投影(我假设使用矩形镜头):

Lens Scene to Sensor projection (Vertical axis)

您说您感兴趣的对象在图像中的高度为150像素:

h_{obj} = 150 pixels

您说图像尺寸的总高度为800像素,假设这是传感器分辨率:

h_{sensor} = 800 pixels

你有兴趣找出距离摄像机距离为D的物体H_{obj}在公制系统中的真实高度。
弧度表示角度,我们可以建立以下关系:

D \cdot \theta = H_{obj} , f \cdot \theta = h_{obj}

其中f是镜头的焦距。

隔离项并代入,我们得到\frac{D}{f}\cdot h_{obj} = H_{obj}

但是您已经用像素表示了h_{obj},而您希望以公制系统表示H_{obj}。因此,让我们先从像素转换为毫米。

h_{obj} (mm) = \frac{h_{obj}(pixels)}{h_{sensor}(pixels)}\cdot h_{sensor} (mm)

假设您不知道传感器的高度,因此我们将其暂时保留为变量。重新排列,将焦距表示为毫米(mm),并替换到先前的方程中,我们得到:

D \cdot \frac{h_{obj}(pixels)}{h_{sensor}(pixels)} \cdot \frac{h_{sensor}(mm)}{f(mm)} = H_{obj}

注意术语: \frac{h_{sensor}(mm)}{f(mm)} = \alpha (radians) 其中,\alpha 代表相机的垂直视场角(由于我们使用了传感器高度),这是相机和镜头计算中通常给出的参数。

3dimensional Field of View

通常给定的是角度,所以我们只需要将其转换为弧度。

\frac{V_{fov}º}{180º}\cdot \pi = V_{fov} (radians)

  • 如果您知道镜头的焦距和传感器的尺寸,可以直接计算视场。这将给我们留下以下方程:

H_{obj} = D \cdot \frac{h_{obj}(pixels)}{h_{sensor}(pixels)} \cdot V_{FOV} (radians)

视野(Field of View)是您缺少的参数,以便完成计算。为了完成示例,假设它为90º:

V_{FOV} = \frac{\pi}{2} (radians)

您现在用来表示距离D的单位将定义用于表示h_{obj}的单位。

H_{obj} (meters) = D(meters) \cdot \frac{150}{800} \cdot \frac{\pi}{2}


另一种方法是,在给定视场的情况下,假设使用矩形镜头,您可以计算相机距离定义位置处的像素高度和像素宽度。

在距离D处的垂直分辨率

V_{resolution@D(meters)} \left(\frac{mm}{pixel}\right) = \frac{1000(mm)}{1(meter)} \cdot D (meters) \cdot \frac{V_{FOV}(radians)}{V_{sensor}(pixels)}


关于视野的更多信息:


这正是我所需要的。 因为这个问题,我的项目一直停滞不前。干杯!! - Sagar Gautam
我对Vfov有些困惑,你能解释一下吗? - Sagar Gautam
Vfov是垂直视场角,Hfov则是水平视场角,而单独的Field of View通常指对角线视场角,但并非总是如此。我已经更新了我的答案,并附上了一些链接,请阅读。 - Pau Coma Ramirez
我已经计算出人类颈部的前宽度和深度,现在我该如何计算颈部的周长?我应该将其视为椭圆形还是圆形? - Sagar Gautam
1
嗨,@Sagar,这是一个不同的问题,因此应该作为一个新问题发布。话虽如此,我不是关于人类尺寸的专家,但我建议您搜索“人类颈部人体测量”。人体测量学是对人体测量和比例的科学研究。祝你好运! - Pau Coma Ramirez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接