本發(fā)明涉及全景地圖技術(shù)領(lǐng)域,具體而言,涉及一種坐標(biāo)轉(zhuǎn)換方法及裝置。
背景技術(shù):
在平安城市項目以及公安的指揮調(diào)度業(yè)務(wù)中,地圖占有十分重要的位置,目前二維地圖應(yīng)用已經(jīng)十分成熟,并且在公安的指揮調(diào)度領(lǐng)域發(fā)揮著重大的作用,如PGIS地圖、天地圖等。二維地圖能夠在全局上十分好地把握整個城市的情況,用戶使用十分方便,并且深受好評。相比二維地圖,衛(wèi)星地圖、E都市地圖和三維地圖都是在細(xì)節(jié)上對二維地圖的補充。例如,當(dāng)某處發(fā)生一件緊急事件,公安希望能夠了解現(xiàn)場的情況,這時二維地圖無法回答用戶現(xiàn)場狀況的問題,此時高分辨率衛(wèi)星地圖、E都市和三維地圖對細(xì)節(jié)的詳細(xì)性便能夠讓用戶清晰地了解現(xiàn)場的狀況。由于高分辨率衛(wèi)星地圖獲取難度較大、E都市和純?nèi)S地圖制作成本非常高,這導(dǎo)致這些技術(shù)在推廣上面臨較大的問題。
全景地圖技術(shù)是近期新起的一項技術(shù),該技術(shù)相對于三維來說制作成本極低,真實感卻十分強。并且隨著VR技術(shù)的發(fā)展不斷得到深化和普及,制作成本也進一步降低。經(jīng)發(fā)明人研究發(fā)現(xiàn),相比于三維地圖,全景地圖的應(yīng)用難點在于其坐標(biāo)系并非由完整的世界坐標(biāo)系構(gòu)成,比較難以構(gòu)建真實坐標(biāo)系與全景坐標(biāo)系之間的映射關(guān)系,這對于安防行業(yè)使用全景地圖構(gòu)成了一個難點。因此,如何完成二維地圖到三維地圖之間的坐標(biāo)轉(zhuǎn)換是業(yè)界目前亟待解決的難題。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種坐標(biāo)轉(zhuǎn)換方法及裝置,以改善上述問題。
本發(fā)明較佳實施例提供一種坐標(biāo)轉(zhuǎn)換方法,該方法包括:
將待轉(zhuǎn)換的二維平面圖中待轉(zhuǎn)換點的像素坐標(biāo)映射到全景球面上,生成全景場景;
將所述全景場景的三維坐標(biāo)系轉(zhuǎn)換為角度坐標(biāo)系;
根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的經(jīng)緯度相對關(guān)系計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系;
根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系以及所述角度坐標(biāo)系到所述三維坐標(biāo)系的逆轉(zhuǎn)換關(guān)系,生成所述待轉(zhuǎn)換點的三維坐標(biāo)值。
本發(fā)明另一較佳實施例提供一種坐標(biāo)轉(zhuǎn)換裝置,該裝置包括:
全景場景生成模塊,用于將待轉(zhuǎn)換的二維平面圖中待轉(zhuǎn)換點的像素坐標(biāo)映射到全景球面上,生成全景場景;
坐標(biāo)系轉(zhuǎn)換模塊,用于將所述全景場景的三維坐標(biāo)系轉(zhuǎn)換為角度坐標(biāo)系;
角度轉(zhuǎn)換模塊,用于根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的經(jīng)緯度相對關(guān)系計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系;
三維坐標(biāo)轉(zhuǎn)換模塊,用于根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系以及所述角度坐標(biāo)系到所述三維坐標(biāo)系的逆轉(zhuǎn)換關(guān)系,生成所述待轉(zhuǎn)換點的三維坐標(biāo)值。
本發(fā)明實施例提供的一種坐標(biāo)轉(zhuǎn)換方法及裝置,利用經(jīng)緯度及高度將空間中的任意一點映射到角度坐標(biāo)系中,通過全景地圖與二維地圖之間的強關(guān)聯(lián),實現(xiàn)了二維坐標(biāo)到三維坐標(biāo)之間的轉(zhuǎn)換,實施方便,易于推廣應(yīng)用。
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實施例,因此不應(yīng)被看作是對范圍的限定,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1為本發(fā)明較佳實施例提供的一種全景地圖坐標(biāo)轉(zhuǎn)換系統(tǒng)的示意性結(jié)構(gòu)框圖。
圖2為本發(fā)明較佳實施例提供的一種坐標(biāo)轉(zhuǎn)換裝置的功能模塊框圖。
圖3為本發(fā)明較佳實施例提供的一種三維引擎的結(jié)構(gòu)框圖。
圖4為本發(fā)明較佳實施例提供的一種三維坐標(biāo)系中坐標(biāo)軸的位置關(guān)系示意圖。
圖5為圖2所示的角度計算子模塊的結(jié)構(gòu)框圖。
圖6為本發(fā)明較佳實施例提供的一種相對距離與經(jīng)緯度距離之間的關(guān)系示意圖。
圖7為本發(fā)明較佳實施例提供的一種坐標(biāo)轉(zhuǎn)換方法的流程圖。
圖8為圖7中步驟S101的子步驟示意圖。
圖9為圖7中步驟S105的子步驟示意圖。
圖10為圖9中步驟S1053的子步驟示意圖。
圖11為圖7中步驟S107的子步驟示意圖。
圖標(biāo):10-全景地圖坐標(biāo)轉(zhuǎn)換系統(tǒng);100-坐標(biāo)轉(zhuǎn)換裝置;110-全景場景生成模塊;111-標(biāo)識子模塊;113-映射子模塊;130-坐標(biāo)系轉(zhuǎn)換模塊;150-角度轉(zhuǎn)換模塊;151-獲取子模塊;153-角度計算子模塊;1531-距離計算子模塊;1533-差值計算子模塊;1535-相對角度計算子模塊;170-三維坐標(biāo)轉(zhuǎn)換模塊;171-坐標(biāo)系逆轉(zhuǎn)換子模塊;173-三維坐標(biāo)生成子模塊;200-處理器;300-存儲器;400-顯示器;500-三維引擎;501-3D渲染模塊;502-場景管理模塊;503-輸入控制模塊;504-內(nèi)存管理模塊;505-幾何基礎(chǔ)模塊。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設(shè)計。
因此,以下對在附圖中提供的本發(fā)明的實施例的詳細(xì)描述并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。
如圖1所示,是本發(fā)明較佳實施例提供的一種全景地圖坐標(biāo)轉(zhuǎn)換系統(tǒng)10的示意性結(jié)構(gòu)框圖。所述全景地圖坐標(biāo)轉(zhuǎn)換系統(tǒng)10包括坐標(biāo)轉(zhuǎn)換裝置100、處理器200、存儲器300及顯示器400。
所述處理器200、所述存儲器300及所述顯示器400之間直接或間接地電性連接,以實現(xiàn)數(shù)據(jù)的傳輸或交互。例如,三者通過通訊總線或信號線實現(xiàn)電性連接。所述坐標(biāo)轉(zhuǎn)換裝置100包括至少一個可以軟件或固件(firmware)的形式存儲于所述存儲器300中的軟件功能模塊。所述處理器200用于執(zhí)行存儲器300中存儲的可執(zhí)行模塊,例如所述坐標(biāo)轉(zhuǎn)換裝置100包括的軟件功能模塊或計算機程序。
其中,存儲器300可以是,但不限于,隨機讀取存儲器(Random Access memory,RAM),只讀存儲器(Read Only Memory,ROM),可編程只讀存儲器(Programmable Read-Only Memory,PROM),可擦除只讀存儲器(Erasable Programmable Read-Only Memory,EPROM),電可擦除只讀存儲器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存儲器300用于存儲程序,所述處理器200在接收到執(zhí)行指令后,執(zhí)行所述程序,下述本發(fā)明實施例任一實施方式所揭示的流程定義的方法可以應(yīng)用于處理器200中,或者由處理器200實現(xiàn)。
處理器200可能是一種集成電路芯片,具有信號的處理能力。上述處理器200可以是通用處理器,包括中央處理器(Central Processing Unit,簡稱CPU)、網(wǎng)絡(luò)處理器(Network Processor,簡稱NP)等。還可以是數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件,可以實現(xiàn)或者執(zhí)行本發(fā)明實施例中的公開的各方法、步驟及邏輯框圖。
可以理解,圖1所示的結(jié)構(gòu)僅為示意,所述全景地圖坐標(biāo)轉(zhuǎn)換系統(tǒng)10還可以包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。圖1中所示的各組件可以采用硬件、軟件或其組合實現(xiàn)。
請參閱圖2,是本發(fā)明較佳實施例提供的一種坐標(biāo)轉(zhuǎn)換裝置100的功能模塊框圖。所述坐標(biāo)轉(zhuǎn)換裝置100應(yīng)用于圖1所示的全景地圖坐標(biāo)轉(zhuǎn)換系統(tǒng)10。所述坐標(biāo)轉(zhuǎn)換裝置100包括全景場景生成模塊110、坐標(biāo)系轉(zhuǎn)換模塊130、角度轉(zhuǎn)換模塊150及三維坐標(biāo)轉(zhuǎn)換模塊170。
其中,所述全景場景生成模塊110用于將待轉(zhuǎn)換的二維平面圖中待轉(zhuǎn)換點的像素坐標(biāo)映射到全景球面上,生成全景場景。
在本實施例中,所述二維平面圖通過采集圖片數(shù)據(jù),并對采集到的所述圖片數(shù)據(jù)進行處理以生成。例如,采用圖像采集裝置對場景進行多角度環(huán)視拍攝以捕捉整個場景的圖像信息,將捕捉到的圖像信息合成二維平面圖。在實際操作時,為了確保對整個場景的圖像信息的完整采集,在使用圖像采集裝置時,盡量使采集到的圖像的畫面保持水平,以便后續(xù)的圖像處理。
可選地,所述全景場景生成模塊110可以包括標(biāo)識子模塊111和映射子模塊113。
所述標(biāo)識子模塊111用于在所述二維平面圖上標(biāo)識出采集所述圖片數(shù)據(jù)的拍攝點的像素坐標(biāo)以及所述待轉(zhuǎn)換點的像素坐標(biāo)。
在本實施例中,所述待轉(zhuǎn)換點為生成的所述二維平面圖中的像素點,所述待轉(zhuǎn)換點為多個,多個所述待轉(zhuǎn)換點均勻分布于待轉(zhuǎn)換的二維平面圖上。為了方便計算,在轉(zhuǎn)換過程中,可以從多個所述待轉(zhuǎn)換點中選取一個待轉(zhuǎn)換點作為參考點,標(biāo)識出該待轉(zhuǎn)換點,例如將其記作A1。同時,標(biāo)識出采集所述圖片數(shù)據(jù)的拍攝點的像素坐標(biāo),例如將其記作A2。
所述映射子模塊113用于將所述待轉(zhuǎn)換點的像素坐標(biāo)映射到全景球面上,生成全景場景,所述全景球面的中心點為所述拍攝點。
可選地,在本實施例中,在標(biāo)識出所述待轉(zhuǎn)換點A1的像素坐標(biāo)后,可以通過三維引擎渲染后將所述待轉(zhuǎn)換點映射到全景球面上以生成全景場景。請參閱圖3,為本實施例較佳實施例提供的一種三維引擎500的結(jié)構(gòu)框圖。如圖3所示,所述三維引擎500包括3D(Three-Dimensional)渲染模塊501、輸入控制模塊503、場景管理模塊502、內(nèi)存管理模塊504及幾何基礎(chǔ)模塊505??蛇x地,常用的三維引擎500包括OpenGL(Open Graphics Library)和DirectX(Direct eXtension)。其中,OpenGL能靈活方便地實現(xiàn)二維和三維的高級圖像技術(shù),在性能上表現(xiàn)優(yōu)異。OpenGL具有建模、變換、光照處理、色彩處理等功能。DirectX能實現(xiàn)高速地實時渲染、交互式音樂和環(huán)境音效等。
可選地,在本實施例中,通過所述三維引擎500中的3D渲染模塊501來實現(xiàn)所述待轉(zhuǎn)換點的圖像渲染工作。需要說明的是,所述3D渲染模塊501是所述三維引擎500中的其中一個模塊,并不是完全獨立的部分,需要與其他的模塊一起才能完成整個圖像渲染工作。
所述3D渲染模塊501可以將所述待轉(zhuǎn)換點的像素以其在三維坐標(biāo)系中的顯示形式以顯示出來。具體地,在所述處理器200中,三維世界的表示由坐標(biāo)系和坐標(biāo)系的點所構(gòu)成,此外,還包括了場景中所有物體的材質(zhì)、紋理及光照等信息。這些信息是由所述處理器200中的數(shù)據(jù)來表示,并不能直接顯示在所述顯示器400中。所述3D渲染模塊501可以實現(xiàn)將所述處理器200中的所述信息轉(zhuǎn)換為所述顯示器400可以顯示出的圖像。而這些顯示出的圖像是映射到全景球面上的,所述全景球面的中心點即為采集所述圖片數(shù)據(jù)的拍攝點A2。所述全景球面上的圖像圍繞所述拍攝點,此時所述圖像紋理完全覆蓋以所述拍攝點為視點的視線,能提供給用戶以真實感。
具體地,所述坐標(biāo)系轉(zhuǎn)換模塊130用于將所述全景場景的三維坐標(biāo)系轉(zhuǎn)換為角度坐標(biāo)系。
在本實施例中,物體在全景場景中的位置主要與視點,即所述全景球面的中心點A2的角度相關(guān),所以首先需要將全景場景的三維坐標(biāo)系轉(zhuǎn)換為角度坐標(biāo)系。
具體地,如圖4所示,所述三維坐標(biāo)系是基于空間中的三條相互垂直的坐標(biāo)軸:x軸、y軸、z軸。要定義所述空間中的一個點,需要三個坐標(biāo):x、y、z。三個所述坐標(biāo)軸構(gòu)成三個平面:x-y平面、x-z平面、y-z平面。所述三個平面將整個空間分為8個子空間,即8個象限。
可選地,在所述全景場景中選定一個參考點Q,將該參考點的三維坐標(biāo)表示為Q(x,y,z),其中,x為該參考點在x軸方向的值,y為該參考點在y軸方向的值,z為該參考點在z軸方向上的值。將該參考點的角度坐標(biāo)表示為Q(va,ha),其中,va為垂直角度值,ha為水平角度值。
可選地,所述坐標(biāo)系轉(zhuǎn)換模塊130能夠根據(jù)該參考點的三維坐標(biāo)值Q(x,y,z)以及以下所示的坐標(biāo)系轉(zhuǎn)換關(guān)系,得到該參考點的角度坐標(biāo)值Q(va,ha)。
r=Math.Sqrt(x*x+y*y+z*z)
a1=Math.A tan(y/-z)
a2=Math.A cos(-x/r)
ha=(float)(a1*180/Math.PI)
va=(float)(a2*180/Math.PI)
其中,r、a1、a2為過程參數(shù),PI為π。在本實施例中,為了便于計算,當(dāng)Q點位于水平方向上的第一象限或第三象限時,其對應(yīng)的水平角度值ha增加180度。
角度轉(zhuǎn)換模塊150用于根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的經(jīng)緯度相對關(guān)系計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系。
在本實施例中,所述全景場景中的物體在場景中的顯示位置主要取決于場景的拍攝點,即所述全景球面的中心點A2,與所述物體之間的相對角度。即,所述物體在所述場景中的顯示位置是以所述全景球面的中心點A2為視點,以此視點發(fā)出的視線所觀察到的顯示畫面。
可選地,在實際操作中,操作者操控鍵盤或鼠標(biāo),使得所述視點和所述視線的方向發(fā)生變化,則所述待轉(zhuǎn)換點A1的顯示位置即會隨之發(fā)生變化。因此需要得到所述全景球面的中心點A2與所述待轉(zhuǎn)換點A1之間的相對角度關(guān)系。
可選地,所述角度轉(zhuǎn)換模塊150可以包括獲取子模塊151和角度計算子模塊153。
所述獲取子模塊151用于獲取所述全景球面的中心點的經(jīng)緯度和高度。
需要說明的是,在實際應(yīng)用情況下,所述全景球面的中心點的經(jīng)緯度和高度較難估算,常常會存在誤差,該誤差會對整體的映射造成影響。所以需要通過估算的方法獲取所述全景球面的中心點的經(jīng)緯度和高度值,并且不斷調(diào)整該值以使結(jié)果盡可能地達(dá)到準(zhǔn)確。
可以采用以下方式對所述全景球面的中心點的經(jīng)緯度進行估算。在全景場景中向場景的底部投射一個底部點,該底部點的角度坐標(biāo)為(0,180)。該底部點位于所述全景場景的底部,通過衛(wèi)星定位,可以得到該底部點在衛(wèi)星地圖中的位置。根據(jù)該底部點在衛(wèi)星地圖中的位置以確定該全景場景的中心點的經(jīng)緯度。通過上述向底部投射的方法得到的所述全景球面的中心點的經(jīng)緯度能夠滿足映射的要求。
再對所述全景球面的中心點的高度進行估算。需要說明的是,若所述底部點的高度值比實際值偏高時,會造成所述待轉(zhuǎn)換點的映射點向所述底部點靠近。若所述底部點的高度值比實際值偏低,會造成所有映射點產(chǎn)生偏離。所述底部點的高度值主要是影響到所述待轉(zhuǎn)換點相對于所述全景球面的中心點在垂直方向上的角度。可選地,在本實施例中,通過逐漸地增加或減小所述底部點在垂直方向上的值,以觀察物體在所述全景場景中的映射是否正確,以最終確定所述底部點的高度值,即得到所述全景球面的中心點的高度值。
在確定所述全景球面的中心點的經(jīng)緯度和高度值后,再通過所述角度計算子模塊153以根據(jù)所述全景球面的中心點的經(jīng)緯度和高度及所述待轉(zhuǎn)換點的經(jīng)緯度和高度計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系。
在本實施例中,為了方便計算,將所述待轉(zhuǎn)換點A1的經(jīng)緯度坐標(biāo)表示為A1(mlat,mlng,mhit),將所述全景球面的中心點A2的經(jīng)緯度坐標(biāo)表示為A2(clat,clng,chit)。
可選地,所述角度計算子模塊153包括距離計算子模塊1531、差值計算子模塊1533和相對角度計算子模塊1535,請參閱圖5。
所述距離計算子模塊1531用于根據(jù)所述待轉(zhuǎn)換點A1的經(jīng)緯度和高度以及所述全景球面的中心點A2的經(jīng)緯度和高度,計算出所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2之間的距離。
在本實施例中,計算獲得所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2之間的距離的方式有多種,本發(fā)明實施例列舉了其中一種實現(xiàn)方式,如下所示。
首先,需要將所述待轉(zhuǎn)換點A1及所述全景球面的中心點A2的經(jīng)緯度值轉(zhuǎn)換為弧度值。例如,若A1點的緯度值為23.5度,那么轉(zhuǎn)換后其弧度值則為23.5*PI/180。在本實施例中,將轉(zhuǎn)換后的所述待轉(zhuǎn)換點A1的緯度的弧度值表示為Lat1InRad、經(jīng)度的弧度值表示為Long1InRad。將所述全景球面的中心點A2的緯度的弧度值表示為Lat2InRad、經(jīng)度的弧度值表示為Long2InRad。
Lat1InRad=this.Lat*(Math.PI/180)
Long1InRad=this.Lng*(Math.PI/180)
Lat2InRad=p.Lat*(Math.PI/180)
Long2InRad=p.Lng*(Math.PI/180)
然后分別計算出所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2之間的經(jīng)緯度弧度值之差,其經(jīng)度的弧度值之差表示為Longitude、緯度的弧度值之差表示為Latitude。
Longitude=dLong2InRad-dLong1InRad
Latitude=dLat2InRad-dLat1InRad
計算出所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2之間的正弦值和余弦值。
b=Math.Pow(Math.Sin(dLatitude/2),2)+Math.Cos(dLat1InRad)*
Math.Cos(dLat2InRad)*Math.Pow(Math.Sin(dLongitude/2),2)
計算出所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2之間的正切值。
c=2*Math.Atan2(Math.Sprt(b),Math.Sqrt(1-b))
最后,得到所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2之間的距離Distance。
Dis tan ce=(6378137)*c
其中,數(shù)值6378137為赤道半徑值。通過上述的方法可以計算出所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2之間的距離。
所述差值計算子模塊1533用于根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的距離計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的經(jīng)度差、緯度差和高度差。
在本實施例中,不失一般性地,假設(shè)函數(shù)以正北方向也就是指南針的方向為0度,以順時針的方向增加。如圖6所示,若Distance的距離為d,則dx為X軸方向的長度,也就是經(jīng)度方向上的長度。dy為Y軸方向的長度,也就是緯度方向上的長度。通過以下方式,可以計算出所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2分別在緯度和經(jīng)度方向上的距離,分別表示為lngdis、latdis。
lngdis=dx=Distance*sin(θ)
latdis=dy=Distance*cos(θ)
通過計算所述待轉(zhuǎn)換點A1與所述全景球面的中心點A2之間的高度可以獲得兩點間的高度差heightdis。
所述相對角度計算子模塊1535用于根據(jù)所述經(jīng)度差、緯度差和高度差計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對垂直角度值和水平角度值。
可選地,以生成的角度坐標(biāo)系為應(yīng)用坐標(biāo)系,根據(jù)獲得的兩點間的經(jīng)度差、緯度差和高度差計算出所述待轉(zhuǎn)換點A1相對于所述全景球面的中心點A2的垂直角度值和水平角度值,分別表示為va和vh。
double q1=Math.A tan(latdis/ln gdis)
double q2=Math.Acos(heightdis/r)
double va=(float)((q1*180)/Math.PI)
double ha=(float)((q2*180)/Math.PI)
其中,q1、q2為過程參數(shù)。在本實施例中,為了方便計算,當(dāng)所述待轉(zhuǎn)換點A1相對于所述全景球面的中心點A2在垂直方向上位于第二象限或第三象限時,所述待轉(zhuǎn)換點A1的垂直角度值va增加180度。
可選地,在本實施例中,若所述全景球面的中心點的經(jīng)緯度和高度確定后,就可以精確地計算出所述待轉(zhuǎn)換點的二維坐標(biāo)到三維坐標(biāo)之間的映射關(guān)系。但是,實際情況中可能存在圖像的畸變等原因會造成部分區(qū)域點位有所偏移,往往會存在幾度的偏差。在本實施例中,可以采用以下方式來降低這種因素帶來的影響。
va=((Math.A tan(latdis/ln gdis)*180)/Math.PI)+σv
ha=(Math.A cos(heightdis/r)*180/Math.PI)+σh
其中σv為所述全景球面的中心點在垂直方向上的偏差值,σh為所述全景球面的中心點在水平方向上的偏差值。經(jīng)過實際的測算,這兩者的值在分布上是連續(xù)的,即在同一區(qū)域會連續(xù)地增加或持續(xù)的降低??蛇x地,在本實施例中,使用一個三階方程來擬合σv和σh。具體地,可隨機選取多個樣本點,在二維平面圖和全景場景中通過人工方法來確定多個所述樣本點的經(jīng)緯度值和角度值。然后使用樣本估計的方法回歸擬合出σv和σh的方程,以得到σv和σh。
所應(yīng)說明的是,在普通的應(yīng)用場景中,通過所述獲取子模塊151估算出的所述全景球面的中心點的經(jīng)緯度和高度值就可滿足實際應(yīng)用需求,并不必進行σv和σh的擬合計算。
三維坐標(biāo)轉(zhuǎn)換模塊170用于根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系以及所述角度坐標(biāo)系到所述三維坐標(biāo)系的逆轉(zhuǎn)換關(guān)系,生成所述待轉(zhuǎn)換點的三維坐標(biāo)值。
在本實施例中,在獲得所述待轉(zhuǎn)換點A1相對于所述全景球面的中心點A2的相對角度關(guān)系后,需要將該相對角度關(guān)系映射到三維坐標(biāo)系中,以進一步地標(biāo)識出所述待轉(zhuǎn)換點A1在全景地圖中的位置。
可選地,所述三維坐標(biāo)轉(zhuǎn)換模塊170可以包括坐標(biāo)系逆轉(zhuǎn)換子模塊171和三維坐標(biāo)生成子模塊173。
所述坐標(biāo)系逆轉(zhuǎn)換子模塊171用于根據(jù)所述三維坐標(biāo)系到所述角度坐標(biāo)系之間的坐標(biāo)系轉(zhuǎn)換關(guān)系得到所述角度坐標(biāo)系到所述三維坐標(biāo)系的逆轉(zhuǎn)換關(guān)系。
所述三維坐標(biāo)生成子模塊173用于根據(jù)計算出的所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對垂直角度值、水平角度值以及所述逆轉(zhuǎn)換關(guān)系生成所述待轉(zhuǎn)換點的三維坐標(biāo)值,完成所述待轉(zhuǎn)換點的二維坐標(biāo)到三維坐標(biāo)的轉(zhuǎn)換。
c1=(float)(ha/360*2*Math.PI)
c2=(float)(va/360*2*Math.PI)
y=(float)(radius*Math.cos(c1))
z=-(float)(radius*Math.sin(c1)*Math.cos(c2))
x=(float)(radius*Math.sin(c1)*Math.sin(c2))
其中,c1、c2為過程參數(shù)。通過上述方式,可以得到所述待轉(zhuǎn)換點A1的三維坐標(biāo)值A(chǔ)1(x,y,z),完成所述待轉(zhuǎn)換點A1的二維坐標(biāo)值到三維坐標(biāo)值的轉(zhuǎn)換。
請參閱圖7,是本發(fā)明較佳實施例提供的一種坐標(biāo)轉(zhuǎn)換方法的流程圖,應(yīng)用于圖1所示的全景地圖坐標(biāo)轉(zhuǎn)換系統(tǒng)10中。所應(yīng)說明的是,本發(fā)明提供的方法不以圖7及以下所示的具體順序為限制。下面將對圖7所示的具體步驟進行詳細(xì)描述。
步驟S101:將待轉(zhuǎn)換的二維平面圖中待轉(zhuǎn)換點的像素坐標(biāo)映射到全景球面上,生成全景場景。
本實施例中,步驟S101可以由圖2中的全景場景生成模塊110執(zhí)行。所述二維平面圖根據(jù)采集到的圖片數(shù)據(jù)以生成。
可選地,請參閱圖8,步驟S101可以包括步驟S1011和步驟S1013兩個子步驟。
步驟S1011:在所述二維平面圖上標(biāo)識出采集所述圖片數(shù)據(jù)的拍攝點的像素坐標(biāo)以及所述待轉(zhuǎn)換點的像素坐標(biāo)。
本實施例中,步驟S1011可以由圖2中的標(biāo)識子模塊111執(zhí)行。
步驟S1013:將所述待轉(zhuǎn)換點的像素坐標(biāo)映射到全景球面上,生成全景場景,所述全景球面的中心點為所述拍攝點。
本實施例中,步驟S1011可以由圖2中的映射子模塊113執(zhí)行。
步驟S103:將所述全景場景的三維坐標(biāo)系轉(zhuǎn)換為角度坐標(biāo)系。
本實施例中,步驟S103可以由圖2中的坐標(biāo)系轉(zhuǎn)換模塊130執(zhí)行。
步驟S105:根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的經(jīng)緯度相對關(guān)系計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系。
本實施例中,步驟S105可以由圖2中的角度轉(zhuǎn)換模塊150執(zhí)行。
可選地,請參閱圖9,步驟S105可以包括步驟S1051和步驟S1053兩個子步驟。
步驟S1051:獲取所述全景球面的中心點的經(jīng)緯度和高度。
在本實施例中,步驟S1051可以由圖2中的獲取子模塊151執(zhí)行。
步驟S1053:根據(jù)所述全景球面的中心點的經(jīng)緯度和高度及所述待轉(zhuǎn)換點的經(jīng)緯度和高度計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系。
在本實施例中,步驟S1053可以由圖2中的角度計算子模塊153執(zhí)行。
可選地,請參閱圖10,步驟S1053可以包括步驟S10531、步驟S10533和步驟S10535三個子步驟。
步驟S10531:根據(jù)所述待轉(zhuǎn)換點的經(jīng)緯度和高度以及所述全景球面的中心點的經(jīng)緯度和高度,計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的距離。
在本實施例中,步驟S10531可以由圖5中的距離計算子模塊1531執(zhí)行。
步驟S10533:根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的距離計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的經(jīng)度差、緯度差和高度差;
在本實施例中,步驟S10533可以由圖5中的差值計算子模塊1533執(zhí)行。
步驟S10535:根據(jù)所述經(jīng)度差、緯度差和高度差計算出所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對垂直角度值和水平角度值。
在本實施例中,步驟S10535可以由圖5中的相對角度計算子模塊1535執(zhí)行。
步驟S107:根據(jù)所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對角度關(guān)系以及所述角度坐標(biāo)系到所述三維坐標(biāo)系的逆轉(zhuǎn)換關(guān)系,生成所述待轉(zhuǎn)換點的三維坐標(biāo)值。
在本實施例中,步驟S107可以由圖2中的三維坐標(biāo)轉(zhuǎn)換模塊170執(zhí)行。
可選地,請參閱圖11,步驟S107可以包括步驟S1071和步驟S1073兩個子步驟。
步驟S1071:根據(jù)所述三維坐標(biāo)系到所述角度坐標(biāo)系之間的坐標(biāo)系轉(zhuǎn)換關(guān)系得到所述角度坐標(biāo)系到所述三維坐標(biāo)系的逆轉(zhuǎn)換關(guān)系。
在本實施例中,步驟S1071可以由圖2中的坐標(biāo)系逆轉(zhuǎn)換子模塊171執(zhí)行。
步驟S1073:根據(jù)計算出的所述待轉(zhuǎn)換點與所述全景球面的中心點之間的相對垂直角度值、水平角度值以及所述逆轉(zhuǎn)換關(guān)系生成所述待轉(zhuǎn)換點的三維坐標(biāo)值。
在本實施例中,步驟S1073可以由圖2中的三維坐標(biāo)生成子模塊173執(zhí)行。
本發(fā)明提供的坐標(biāo)轉(zhuǎn)換方法及裝置,該方法通過將待轉(zhuǎn)換的二維平面圖中待轉(zhuǎn)換點的像素坐標(biāo)映射到全景球面上,生成全景場景。根據(jù)待轉(zhuǎn)換點與全景球面的中心點之間的經(jīng)緯度相對關(guān)系計算出待轉(zhuǎn)換點與全景球面的中心點之間的相對角度關(guān)系。最后根據(jù)待轉(zhuǎn)換點與全景球面的中心點之間的相對角度關(guān)系以及角度坐標(biāo)系到三維坐標(biāo)系的逆轉(zhuǎn)換關(guān)系,生成待轉(zhuǎn)換點的三維坐標(biāo)值,完成待轉(zhuǎn)換點的二維坐標(biāo)到三維坐標(biāo)的轉(zhuǎn)換。通過上述方法,利用經(jīng)緯度及高度將空間中的任意一點映射到角度坐標(biāo)系中,再將其角度坐標(biāo)映射到三維坐標(biāo)系中,進一步地標(biāo)識出待轉(zhuǎn)換點在全景場景中的三維坐標(biāo),實現(xiàn)全景地圖與二維地圖之間的強關(guān)聯(lián),最終實現(xiàn)二維坐標(biāo)到三維坐標(biāo)之間的轉(zhuǎn)換。
在本申請所提供的實施例中,應(yīng)該理解到,所揭露的裝置和方法,也可以通過其它的方式實現(xiàn)。以上所描述的裝置實施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的實施例的裝置、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)方式中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準(zhǔn)。