image - 如何计算物体和相机之间的距离,知道物体在图像分割中占据的像素
问题描述
通过使用分割,我能够找到图像中对象占用的像素数。现在我需要使用占用的像素来确定距离。
- 我有对象的原始尺寸(W x H)
解决方案
首先,我们假设镜头将图像聚焦到平面上。
分割出对象后,您将获得 W2 x H2,即对象的像素尺寸。
将对象 W x H 的实际尺寸与您测量的尺寸进行比较。拿
%Scale on width axis
W / W2 = s1
%Scale on height axis
H / H2 = s2
%Average both scales
s = (s1 + s2) / 2
s
将以米/像素为单位测量您的比例。现在检查以像素为单位的图像的总尺寸,即1000 x 1000
或类似的。如果s=0.01
那么您的总尺寸将计算为
dim * s = L
1000 * 0.01 = 10 meters
其中 10 米是您的框架的大小。
现在你被卡住了。如果您只有一张图像,您将无法计算到对象的距离。你需要知道镜头的角度有多宽。这可以从相机规格中获取,也可以推导出来。如果您拍摄一张图像,请使用仪表杆测量到物体的距离。让我们称这个维度d
。
我们将使用一些三角函数来推导光圈的角度。例如让d=20 meters
arctan(L/2 / d) = theta
arctan(10/2 / 20) = 14 degrees
推导出 theta,让我们考虑一个例子。你发现L = 10
并观察到theta = 14
。
L/2 / tan(theta) = d
10/2 / tan(14) = 20 meters
推荐阅读
- javascript - 尽管有键,为什么我的所有子组件都重新渲染?
- python - 使用python从doc文件中获取大写/小写的特定单词?
- azure-logic-apps - 逻辑应用视频索引器连接器
- logging - 如何在 UP 板上记录功耗?
- c# - 有没有办法从循环内部获取值
- axios - nuxt如何在nuxt构建后手动更改axios baseUrl
- angular - Rxjs 地图运算符在捕获错误时的奇怪行为
- react-native - 如何在 React Native formSheet 模式中创建嵌入式堆栈导航器?
- flutter - Flutter如何在方向横向上设置小部件全屏尺寸?
- authentication - 如何在 RestFul 应用程序中使用 OAuth 2 在前端处理用户权限?