我正在为Android制作一个基于摄像头的应用程序。我的问题是,当我有以下情况时,在相机上找出图像中对象所包含的真实角度:
1.图像中该对象的长度,以像素为单位,
2.摄像机的垂直视角,
3.以像素为单位的图像长度。
作为图像处理的新手,我有这个(可能是基本的)怀疑。物体在相机上的角度与相机拍摄的物体图像中的像素数量之间是否存在线性关系?角度对接:将对象的最上面的点连接到相机,然后将对象的最下面的点连接到相机。在相机上形成的角度是对角线。例如:考虑一幅垂直高度为200像素的图像。假设摄像机的垂直视角为20度。所以,我可以说,这20度覆盖了200个像素的图像。现在,图像的一部分(一个对象)有10个像素高。我想要找到这个物体在相机上的角度,在物理世界中。既然200个像素被20度覆盖,那么10个像素将被1度覆盖,我这样说对吗?也就是说,该对象在相机上的角度为1度。

如下图所示,我知道L(图像的),P(图像中的对象),x(摄像机的垂直视角)的值,并且我想要找到y,即摄像机上的对象所包含的角度。我的假设是(y/P)=(x/L),这是成正比的。这个假设是正确的吗?
发布于 2011-12-21 14:02:56
绘制水平线。它的长度D是到物体的距离。
D* tg(X/2) = L/2
和
D* tg(Y/2) = P/2
所以
Y=2*圆弧(tg(X/2)*P/ L)
(当角度很小时,它们是(粗略的)正比例)
附加:非居中对象的情况。

P0,P1 -对象端点相对于中心点D的像素坐标
距离Dx = |OD| =L* ctg (X/2)
坐标D=(Dx,0)
Y= OP0)/(|OP1| (OP1,OP0) = ArcCos((OP1 x*|OP0|)),其中x表示标量积
Y= ArcCos((Dx*Dx+P1*P0)/Sqrt((Dx*Dx+P1*P1)_(Dx_Dx+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度(粗略)
https://stackoverflow.com/questions/8585542
复制相似问题