07.23 如何根據一張照片判斷出女孩住在幾層樓?

如何根據一張照片判斷出女孩住在幾層樓?

如何根據一張A樓照B樓的照片判斷出這張照片是A樓的幾層?

已知條件:B樓共 14 層,本人住 7 層。女孩住 A樓,兩樓間距約 40 米,樓層高度應該是 3 米。

和同小區一個女孩聊天,她給了我這張照片,說如果猜出她住在幾樓、哪個窗戶,我就可以……

如何根據一張照片判斷出女孩住在幾層樓?

平行直線是圖片測量的基礎,無論是45度仰視拍攝還是兩棟樓朝向不平行,都可以完美解決這一問題。

然而,也並不是畫幾條平行線那麼簡單,下面介紹這種方法的原理。

首先在圖像上找兩組水平平行線。

如何根據一張照片判斷出女孩住在幾層樓?

對於真實世界中的一組平行直線,可以認為它們不相交,也可以認為相交在無窮遠處。因為攝像機把直線映射為直線的性質,對於真實世界中的一組平行直線,可以認為它們不相交,也可以認為相交在無窮遠處。因為攝像機把直線映射為直線的性質,

在圖像上這一交點稱為消影點或者滅點,通過延長平行直線的像得出(藍色圓點)。當平行線段有很多時,其延長線不唯一,這時就需要使用比如最小二乘法,得到一個離所有平行直線都比較接近的點:

如何根據一張照片判斷出女孩住在幾層樓?

兩組水平平行線可以得到兩個消影點(其位置有可能出了圖像邊框),把這兩個消影點連起來,就得到了地平線(上圖亮藍色)。地平線上每一個點都是某一組水平平行直線的交點的像,所有水平平行線的交點都在地平線上。圖像上所有比地平線高的點,在真實世界中都比攝像頭高;所有比地平線低的點,在真實世界中都比攝像頭低。攝像頭朝向是否水平不影響這些關係的成立。

假設兩個樓朝向相同,對應層高度也相同,下面可以使用多種途徑解決題主的問題。

方法1:找到對面樓層某些窗臺,使得窗臺上沿比地平線高(因此在真實世界中比攝像頭高),窗臺下沿比地平線低(因此在真實世界中比攝像頭低),這一層與攝像頭同層。當相機沒有旋轉時,地平線與圖像邊緣平行,因此找到一個消影點就找了地平線,但是大多數情況下相機都有一定旋轉,因此只有找出兩組水平平行線,得到兩個消影點,才能準確定位地平線。

方法2: 因為拍攝者所在的半個窗戶下沿和對面樓某層上所有半個窗戶下沿是水平平行的,把這兩個半窗戶下沿連起來,應該得到一個近似梯形(對應三維空間中水平的平行四邊形):

如何根據一張照片判斷出女孩住在幾層樓?

平行四邊形兩條橫跨兩棟樓房的邊相互水平平行,因此二者延長線的交點應該處在無窮遠處,因此在圖像上也應該在地平線上。

在本圖中,只有正中的那一層窗戶延長線離地平線很近,稍微往高一層或者往低一層,交點與地平線的距離就變得很大:

如何根據一張照片判斷出女孩住在幾層樓?

因此對面等高樓層就是水平平行直線的交點離地平線最接近的那一層。

方法3: 首先在地平線上隨便找一個點(藍色圓點),把這一點和攝像者所在窗臺下沿的兩邊連起來。然後把左邊的消影點(在圖像外面)和這一圖形相連,得到一系列黃色小棒,因為從左邊消影點發出的所有直線都相互水平平行,而任一消影點發出的直線也水平平行,所以這些小棒棒也全都水平平行,長度相等(因為相鄰小棒棒之間的四邊形在真實世界中對邊水平平行,是平行四邊形)。在這些黃色小棒棒裡,只有最上面的小棒棒的長度恰好和那一層的半個窗戶長度近似。其他黃色小棒棒並不與對應樓層半個窗戶吻合,說明它們其實是懸浮在兩樓之間的半空中,而不是貼在對面樓面上。

如何根據一張照片判斷出女孩住在幾層樓?

因此對面等高樓層就是黃色小棒長度和所在樓層半個窗戶吻合的那一層。

上述方法不僅可以估計圖像中的等高樓層,還可以定量測量出其他很多長度、角度的大小,在圖像測量中均有十分廣泛的應用。


分享到:


相關文章: