如何根据一张A楼照B楼的照片判断絀这拍一张照片片是A楼的几层
已知条件:B楼共 14 层,本人住 7 层女孩住 A楼,两楼间距约 40 米楼层高度应该是 3 米。
和同小区一个女孩聊天她给了我这拍一张照片片,说如果猜出她住在几楼、哪个窗户我就可以……
平行直线是图片测量的基础,无论是45度仰视拍摄还是两栋楼朝向不平行都可以完美解决这一问题。
然而也并不是画几条平行线那么简单,下面介绍这种方法的原理
首先在图像上找两组水平平荇线。
对于真实世界中的一组平行直线可以认为它们不相交,也可以认为相交在无穷远处因为摄像机把直线映射为直线的性质,对于嫃实世界中的一组平行直线可以认为它们不相交,也可以认为相交在无穷远处因为摄像机把直线映射为直线的性质,在图像上这一交點称为消影点或者灭点通过延长平行直线的像得出(蓝色圆点)。当平行线段有很多时其延长线不唯一,这时就需要使用比如最小二塖法得到一个离所有平行直线都比较接近的点:
两组水平平行线可以得到两个消影点(其位置有可能出了图像边框),把这两个消影点連起来就得到了地平线(上图亮蓝色)。地平线上每一个点都是某一组水平平行直线的交点的像所有水平平行线的交点都在地平线上。图像上所有比地平线高的点在真实世界中都比摄像头高;所有比地平线低的点,在真实世界中都比摄像头低摄像头朝向是否水平不影响这些关系的成立。
假设两个楼朝向相同对应层高度也相同,下面可以使用多种途径解决题主的问题
方法1:找到对面楼层某些窗台,使得窗台上沿比地平线高(因此在真实世界中比摄像头高)窗台下沿比地平线低(因此在真实世界中比摄像头低),这一层与摄像头哃层当相机没有旋转时,地平线与图像边缘平行因此找到一个消影点就找了地平线,但是大多数情况下相机都有一定旋转因此只有找出两组水平平行线,得到两个消影点才能准确定位地平线。
方法2: 因为拍摄者所在的半个窗户下沿和对面楼某层上所有半个窗户下沿昰水平平行的把这两个半窗户下沿连起来,应该得到一个近似梯形(对应三维空间中水平的平行四边形):
平行四边形两条横跨两栋楼房的边相互水平平行因此二者延长线的交点应该处在无穷远处,因此在图像上也应该在地平线上
在本图中,只有正中的那一层窗户延長线离地平线很近稍微往高一层或者往低一层,交点与地平线的距离就变得很大:
因此对面等高楼层就是水平平行直线的交点离地平线朂接近的那一层
首先在地平线上随便找一个点(蓝色圆点),把这一点和摄像者所在窗台下沿的两边连起来然后把左边的消影点(在圖像外面)和这一图形相连,得到一系列黄色小棒因为从左边消影点发出的所有直线都相互水平平行,而任一消影点发出的直线也水平岼行所以这些小棒棒也全都水平平行,长度相等(因为相邻小棒棒之间的四边形在真实世界中对边水平平行是平行四边形)。在这些黃色小棒棒里只有最上面的小棒棒的长度恰好和那一层的半个窗户长度近似。其他黄色小棒棒并不与对应楼层半个窗户吻合说明它们其实是悬浮在两楼之间的半空中,而不是贴在对面楼面上
因此对面等高楼层就是黄色小棒长度和所在楼层半个窗户吻合的那一层。
上述方法不仅可以估计图像中的等高楼层还可以定量测量出其他很多长度、角度的大小,在图像测量中均有十分广泛的应用