【如何根据一张照片判断出女孩住在几层楼?】

640?

来源:王小龙(知乎)

转自:超级数学建模

ID:supermodeling

作者:王小龙


如何根据一张A楼照B楼的照片判断出这张照片是A楼的几层?

已知条件:B楼共 14 层,本人住 7 层。女孩住 A楼,两楼间距约 40 米,楼层高度应该是 3 米。
和同小区一个女孩聊天,她给了我这张照片,说如果猜出她住在几楼、哪个窗户,我就可以……

640?wx_fmt=jpeg

平行直线是图片测量的基础,无论是45度仰视拍摄还是两栋楼朝向不平行,都可以完美解决这一问题。

然而,也并不是画几条平行线那么简单,下面介绍这种方法的原理。

首先在图像上找两组水平平行线。

640?wx_fmt=jpeg

对于真实世界中的一组平行直线,可以认为它们不相交,也可以认为相交在无穷远处。因为摄像机把直线映射为直线的性质,对于真实世界中的一组平行直线,可以认为它们不相交,也可以认为相交在无穷远处。因为摄像机把直线映射为直线的性质,在图像上这一交点称为消影点或者灭点,通过延长平行直线的像得出(蓝色圆点)。当平行线段有很多时,其延长线不唯一,这时就需要使用比如最小二乘法,得到一个离所有平行直线都比较接近的点:

640?wx_fmt=jpeg

两组水平平行线可以得到两个消影点(其位置有可能出了图像边框),把这两个消影点连起来,就得到了地平线(上图亮蓝色)。地平线上每一个点都是某一组水平平行直线的交点的像,所有水平平行线的交点都在地平线上。图像上所有比地平线高的点,在真实世界中都比摄像头高;所有比地平线低的点,在真实世界中都比摄像头低。摄像头朝向是否水平不影响这些关系的成立。

假设两个楼朝向相同,对应层高度也相同,下面可以使用多种途径解决题主的问题。

方法1:找到对面楼层某些窗台,使得窗台上沿比地平线高(因此在真实世界中比摄像头高),窗台下沿比地平线低(因此在真实世界中比摄像头低),这一层与摄像头同层。当相机没有旋转时,地平线与图像边缘平行,因此找到一个消影点就找了地平线,但是大多数情况下相机都有一定旋转,因此只有找出两组水平平行线,得到两个消影点,才能准确定位地平线。

方法2: 因为拍摄者所在的半个窗户下沿和对面楼某层上所有半个窗户下沿是水平平行的,把这两个半窗户下沿连起来,应该得到一个近似梯形(对应三维空间中水平的平行四边形):

640?wx_fmt=jpeg

平行四边形两条横跨两栋楼房的边相互水平平行,因此二者延长线的交点应该处在无穷远处,因此在图像上也应该在地平线上。

在本图中,只有正中的那一层窗户延长线离地平线很近,稍微往高一层或者往低一层,交点与地平线的距离就变得很大:

640?wx_fmt=jpeg

因此对面等高楼层就是水平平行直线的交点离地平线最接近的那一层。

方法3: 首先在地平线上随便找一个点(蓝色圆点),把这一点和摄像者所在窗台下沿的两边连起来。然后把左边的消影点(在图像外面)和这一图形相连,得到一系列黄色小棒,因为从左边消影点发出的所有直线都相互水平平行,而任一消影点发出的直线也水平平行,所以这些小棒棒也全都水平平行,长度相等(因为相邻小棒棒之间的四边形在真实世界中对边水平平行,是平行四边形)。在这些黄色小棒棒里,只有最上面的小棒棒的长度恰好和那一层的半个窗户长度近似。其他黄色小棒棒并不与对应楼层半个窗户吻合,说明它们其实是悬浮在两楼之间的半空中,而不是贴在对面楼面上。

640?wx_fmt=jpeg

因此对面等高楼层就是黄色小棒长度和所在楼层半个窗户吻合的那一层。

上述方法不仅可以估计图像中的等高楼层,还可以定量测量出其他很多长度、角度的大小,在图像测量中均有十分广泛的应用。

推荐阅读:

90后女演员被传销组织拘禁30多天 最后竟因蚂蚁森林幸运逃离!

40分钟推理出明星住址

丰台区:女模特在微博上发图自杀,警方破门而入

640?wx_fmt=jpeg

640?wx_fmt=png

阅读更多
换一批

没有更多推荐了,返回首页