android - 物体对角与像素数的关系

标签 android image image-processing geometry

我正在为 Android 制作一个基于相机的应用程序。我的问题是,当我有以下情况时,在相机上找到图像中物体所对的真实角度:

1.图像中该对象的长度,以像素为单位,

2.相机的垂直视角,

3.图像的长度,以像素为单位。

作为图像处理的新手,我有这个(可能是基本的)疑问。物体对着相机的角度与相机拍摄的物体图像的像素数之间是否存在线性关系?对角:将物体的最顶端点连接到相机,然后将物体的最底部点连接到相机。在相机处形成的角度是对角。例如:考虑一个垂直的图像,高度为 200 像素。假设摄像机的垂直视角为 20 度。所以,我可以说,这 20 度覆盖了图像的 200 个像素。现在,图像的一部分(对象)的高度为 10 像素。我想在物理世界的相机上找到这个物体所对的角度。我说得对吗,因为 200 个像素被 20 度覆盖,10 个像素将被 1 度覆盖?也就是说,这个物体在相机上的角度为 1 度?。

enter image description here

如图所示,我知道 L(图像)、P(图像中的对象)、x(相机的垂直视角)的值,我想找到 y,即对象所对的角度在相机上。我的假设是 (y/P)=(x/L),即成正比。这个假设是否正确?

最佳答案

绘制水平线。它的长度 D 是到物体的距离。

D * tg(X/2) = L/2

D * tg(Y/2) = P/2

所以

Y = 2 * Arctg(tg(X/2) * P/L)

(当角度很小时,它们是(粗略的)正比)

添加:非居中对象的情况。

enter image description here

P0,P1——物体端点相对中心点D的像素坐标

距离 Dx = |OD| = L * ctg (X/2)

坐标D=(Dx,0)

Y = 角度(OP1, OP0) = ArcCos((OP1 x OP0)/(|OP1| * |OP0|)) ,其中 x 表示标量积

Y = ArcCos((Dx*Dx+P1*P0)/Sqrt((Dx*Dx+P1*P1)(DxDx+P0*P0)))

例子: L=L1-L0=768像素

X = 42 度

Dx = 1000(粗略)

P1 位置 = 100 像素

P0 位置 = -50 像素

Y = ArcCos((1000*1000-100*50)/(Sqrt((1000*1000 +100*100)*(1000*1000+50*50)))) = 7 度(粗略)

关于android - 物体对角与像素数的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8585542/

相关文章:

image - 基于纹理的图像分割

javascript - 将图像宽度设置为 span 标签

java - 自然特征追踪 - 增强现实

c# - 穿越 BMP 中的像素

matlab - 丹尼尔森函数

android - Android中如何创建弹出窗口(PopupWindow)

android - 使用 charles 调试 Android 设备的套接字

java - android,asynctask,在 doInBackground() 中写入/读取数据库失败

javascript - Android 需要点击两次按钮才能运行 Jquery Ajax?

xml - 引用在 Umbraco 中使用富文本编辑器放置的图像