全景图像摄影测量:如何计算范围?

时间:2015-03-02 20:43:29

标签: c++ algorithm image-processing

假设我拍摄了两幅垂直偏移为H的全景图像,每张图像都以尺寸为Xm和Ym的equirectangular投影呈现。为此,我将全景相机放在A位置拍摄图像,然后移动相机H米并拍摄另一张图像。

我知道坐标为X1,Y1的图像1中的点是图像2上坐标为X2和Y2的相同点(假设X1 = X2,因为我们只有垂直偏移)。

我的问题是如何计算所选择的点的范围(知道其X1和Y1在图像1上的点,它在图像2上的位置是点A的X2和Y2(相机在图像no时) 1被采取。)。

2 个答案:

答案 0 :(得分:1)

是的,你可以做到 - 坚持!!!

关键的事情y =镜头的焦距 - 现在我可以做到!

所以,我认为你的问题可以更简单地重复说明,如果你将相机(图中的右侧)向上移动H米,则一个点向下移动p像素在从新位置拍摄的图像中。

像这样,如果你想象从侧面看,穿过你拍照。

enter image description here

如果你知道相机CCD的规格微米间距,你可以将p从像素转换为米,以匹配H的单位。

从相机到场景平面的范围由x + y(底部为红色)和

提供
x=H/tan(alpha)

y=p/tan(alpha)

所以你的范围是

R = x + y = H/tan(alpha) + p/tan(alpha)

alpha = tan inverse(p/y)

其中y是镜头的焦距。因为y可能是50毫米,它可以忽略不计,因此,对于一个非常合理的近似值,你的范围是

H/tan(alpha)

alpha = tan inverse(p in metres/focal length)

或者,通过类似的三角形

Range =     H x focal length of lens
        --------------------------------
         (Y2-Y1) x CCD photosite spacing

非常小心地将所有东西都放在米里。

答案 1 :(得分:0)

这是一个黑暗中的镜头,鉴于我对手头问题的理解,你想做类似于计算机立体视觉的事情,我指向你http://en.wikipedia.org/wiki/Computer_stereo_vision开始。不确定这是否仍然可以以您建议的方式进行,听起来您可能需要更多的物理限制,但我记得在经历严格的翻译后能够关联图像中的两个2​​d点。想想:

lambda[x,y,1]^t = W[r1, tx;r2, ty;ry, tz][x; y; z; 1]^t

lamda是比例因子,W是覆盖相机内部参数的3x3矩阵,r1, r2, and r3是构成3x3旋转矩阵的行向量(在您的情况下)你可以假设身份矩阵,因为你只应用了翻译),tx, ty, tz是你的翻译组件。

由于您在同一个三维点[x,y,z]处查看两个2d点,因此这两个点由两个点共享。我不能说你是否可以合理化实际的x,y和z值,特别是你的深度计算,但这是我要开始的地方。