在用谷歌3D城市點(diǎn)云模型的算法中,我們來到了合成點(diǎn)云這一塊,這里跟大家說說合成點(diǎn)云的方法吧。
合成點(diǎn)云
利用Google Street View API提供的不同地址間的鏈接,我們得到了相信全景圖片的標(biāo)識點(diǎn)和地理信息。
所以,我們現(xiàn)在可以以新的地點(diǎn)坐標(biāo)重復(fù)之前的步驟,用全景圖片創(chuàng)造3D場景并能夠豐富此前我們用個(gè)點(diǎn)創(chuàng)建的場景,或者重建一個(gè)真實(shí)世界的場景。
我們這個(gè)項(xiàng)目來說,會使用兩個(gè)界限:兩個(gè)全景圖片間的最短距離以及深度信息的重復(fù)。
可以將第一個(gè)載入的全景圖片想象成一個(gè)數(shù)的根部,然后以一種廣度優(yōu)先的方式(breadth-first)進(jìn)行探索。
平均來說,我們注意到谷歌的深度地圖通常包含現(xiàn)實(shí)世界的200-300米的距離,所以我們決定以1:1的比例來重建場景。
我們將第一個(gè)點(diǎn)云的中心坐標(biāo)設(shè)為(0,0,0),然后我們根據(jù)真實(shí)世界到全景位置的距離,按照offset proportional來加入其他的數(shù)據(jù)。
利用一些幾何和近似值,我們可以用這樣一個(gè)算法來計(jì)算[x,z]平面的distance vector:
除了這個(gè)轉(zhuǎn)化,這個(gè)點(diǎn)云需要根據(jù)從谷歌街景中提取的Heading特定信息來沿著垂直Y軸來旋轉(zhuǎn),然后才得到了一個(gè)近似于如圖的效果。