專利名稱:渲染、查看和注釋全景圖像及其應(yīng)用的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及渲染、查看和注釋全景圖像。在第一實施例中,一種方法可以用于查看 全景圖像。該方法包括接收第一全景圖像的至少一部分,并且呈現(xiàn)顯示第一全景圖像的該 部分的視口。該視口包括用第一全景圖像渲染的三維覆蓋圖(overlay)。在用第一全景圖 像來渲染三維覆蓋圖時,在三維空間中改變?nèi)S覆蓋圖的定向,以與第一全景圖像的定向 的改變相匹配。 在第二實施例中,一種系統(tǒng)可以用于查看全景圖像。該系統(tǒng)包括全景查看器,該全 景查看器接收第一全景圖像的至少一部分,并且呈現(xiàn)顯示第一全景圖像的該部分的視口。 該視口包括用全景圖像渲染的三維覆蓋圖。在用全景圖像來渲染三維覆蓋圖時,全景查看 器在三維空間中改變?nèi)S覆蓋圖的定向,以與視口內(nèi)的全景圖像的定向的改變相匹配。
在第三實施例中, 一種方法可以用于渲染表面。該方法包括計算在由從視口到表 面的第一變換定義的表面上的區(qū)域;計算從該區(qū)域映射到視口的第二變換;以及確定與該 區(qū)域交叉的圖像的一部分。最后,將第二變換應(yīng)用于與該區(qū)域交叉的所述圖像的所述一部 分,得到變換的圖像。該變換的圖像在視口中被渲染用于顯示。 在第四實施例中,一種系統(tǒng)渲染表面。該系統(tǒng)包括服務(wù)器,該服務(wù)器計算根據(jù)從視 口到該表面的第一變換定義的表面上的區(qū)域。該服務(wù)器還計算從該區(qū)域映射到視口的第二 變換。該系統(tǒng)進(jìn)一步包括全景查看器,該全景查看器確定與該表面上的區(qū)域交叉的圖像的 一部分。該全景查看器將第二變換應(yīng)用于與該表面上的該區(qū)域交叉的該圖像的所述一部 分,得到變換的圖像。該變換的圖像在視口中被渲染用于顯示。 在第五實施例中,一種方法可以用于處理對全景的注釋。該方法包括接收對第一 全景中的特征的第一用戶注釋,并且接收對第二全景中的該特征的第二用戶注釋。基于針 對該特征的為第一用戶注釋以及為第二用戶注釋生成的數(shù)據(jù)之間的交叉部分交叉部分來
5確定坐標(biāo)。最后,該坐標(biāo)與表示該特征的注釋相關(guān)聯(lián)地被存儲。 在第六實施例中,一種系統(tǒng)可以用于處理對全景的注釋。該系統(tǒng)包括服務(wù)器,該服 務(wù)器接收對第一全景中的特征的第一用戶注釋,并且接收對第二全景中的該特征的第二用 戶注釋。該服務(wù)器基于針對該特征的第一用戶注釋的第一位置和第二用戶注釋的第二位置 來確定該特征的位置。 以下參考附圖來詳細(xì)描述本發(fā)明的其他實施例、特征和優(yōu)點,以及本發(fā)明各種實 施例的結(jié)構(gòu)和操作。
參考附圖來描述本發(fā)明的實施例。在附圖中,相同的附圖標(biāo)記可以指示相同或功
能上類似的元素。 圖1是適用于實踐一個實施例的示例性分布式系統(tǒng)的圖。 圖2是圖示根據(jù)一個實施例如何將地圖服務(wù)與全景查看器集成的示例的圖。 圖3描繪了根據(jù)一個實施例的瀏覽器顯示的示例。 圖4是圖示根據(jù)一個實施例的由全景查看器執(zhí)行的示例性處理的流程圖。 圖5描繪了示例性可擴(kuò)展標(biāo)記語言(XML)配置信息。 圖6圖示了全景圖像的示例。 圖7A、圖7B和圖7C圖示了與全景查看器視口的用戶交互。 圖8是根據(jù)一個實施例的由渲染器執(zhí)行的處理的流程圖。 圖9A、圖9B和圖9C圖示了在表面、預(yù)先計算區(qū)域和視口之間的關(guān)系。 圖10A和圖10B圖示了生成變換參數(shù)的簡單示例。 圖11描繪了根據(jù)本發(fā)明的一個實施例的已經(jīng)扭曲的全景。 圖12描繪了基于用于形成圖11的全景的側(cè)傾(yaw)和縱傾(pitch)的示例性變 換。 圖13描繪了根據(jù)本發(fā)明的一個實施例顯示的示例性全景圖像。 圖14是圖示根據(jù)一個實施例如何為用戶注釋生成坐標(biāo)的圖。 圖15是根據(jù)一個實施例在生成用戶注釋坐標(biāo)中所執(zhí)行的處理的流程圖。 參考附圖來描述本發(fā)明。其中元素第一次出現(xiàn)的附圖通常用對應(yīng)附圖標(biāo)記中最左
邊的一個或多個數(shù)字來指示。
具體實施例方式
本發(fā)明涉及對渲染、查看和注釋全景圖像及其應(yīng)用。在這里本文對本發(fā)明的詳細(xì) 描述中,引用"一個實施例"、"實施例"、"示例性實施例"等來指示描述的實施例可以包括特 定的特征、結(jié)構(gòu)或特性,但是每個實施例可能不必包括該特定的特征、結(jié)構(gòu)或特性。另外,這 樣的短語不必指代同一實施例。另外,當(dāng)結(jié)合實施例來描述特定的特征、結(jié)構(gòu)或特性時,應(yīng) 當(dāng)認(rèn)為不論是否明確描述,結(jié)合其他實施例來實現(xiàn)這樣的特征、結(jié)構(gòu)或特性都在本領(lǐng)域技 術(shù)人員的知識范圍內(nèi)。 圖1是適合于實踐本發(fā)明的一個實施例的分布式系統(tǒng)??蛻舳?10例如通過諸如 因特網(wǎng)或局域網(wǎng)的網(wǎng)絡(luò)來與一個或多個服務(wù)器150進(jìn)行通信??蛻舳?10可以是通用計算機(jī),該通用計算機(jī)具有處理器、本地存儲器、顯示器和一個或多個輸入設(shè)備,諸如鍵盤或鼠
標(biāo)。替選地,客戶端110可以是專用計算設(shè)備,例如,移動手持式電話。類似地,可以使用能
夠向客戶端110提供數(shù)據(jù)的任何通用計算機(jī)來實現(xiàn)服務(wù)器150。 客戶端110執(zhí)行全景查看器120,這里將對其操作做進(jìn)一步描述。 如圖1所示,全景查看器120請求來自服務(wù)器150的配置信息130。如這里進(jìn)一
步詳細(xì)討論的,配置信息包括關(guān)于要加載的全景的元信息,包括關(guān)于在該全景內(nèi)到其他全
景的鏈接的信息。在一個實施例中,以諸如可擴(kuò)展標(biāo)記語言(XML)的形式來呈現(xiàn)配置信息。
全景查看器120檢索例如全景圖像的形式或全景圖像切片(tile)的形式的全景視覺資料
140。在另一實施例中,視覺資料包括與文件格式相關(guān)的配置信息。如這里進(jìn)一步描述的,
全景查看器120按照從配置信息130和視覺資料140生成的來在全景的客戶端顯示和附加
用戶界面元素上呈現(xiàn)視覺表示。當(dāng)用戶與輸入設(shè)備進(jìn)行交互以操控全景的視覺表示時,全
景查看器120更新視覺表示,并且繼續(xù)按需要下載附加的配置信息和視覺資料。 在一個實施例中,全景查看器120可以是單機(jī)應(yīng)用,或者可以在諸如Mozilla
Firefox或Microsoft Internet Explorer的瀏覽器115內(nèi)被執(zhí)行。例如,全景查看器120
可以被執(zhí)行為瀏覽器115內(nèi)的腳本、瀏覽器115內(nèi)的插件、或在諸如Adobe (Macromedia)
Flash插件的瀏覽器插件內(nèi)執(zhí)行的程序。在一個實施例中,將全景查看器120與地圖服務(wù)集
成,諸如在美國專利No. 7, 158, 878,"DIGITAL MAPPING SYSTEM(數(shù)字地圖系統(tǒng))"中描述的
地圖服務(wù),將該專利的全部內(nèi)容以引用的方式并入本文。 圖2圖示了地圖服務(wù)210如何與全景查看器120集成的示例。例如,地圖服務(wù)210 將地圖的視覺表示作為視口顯示成地圖切片的網(wǎng)格。使用標(biāo)記和腳本元素的組合,例如,使 用HTML和Javascript,來實現(xiàn)地圖系統(tǒng)210。當(dāng)移動視口時,在假設(shè)所請求的地圖切片還 沒有在本地緩沖存儲器中被緩沖的情況下,地圖服務(wù)210請求來自服務(wù)器150的其他地圖 切片220。注意,提供地圖切片220的服務(wù)器可以是與提供全景切片140或這里所涉及的其 他數(shù)據(jù)的服務(wù)器相同或不同的服務(wù)器。 在一個實施例中,地圖服務(wù)210可以請求瀏覽器115繼續(xù)從服務(wù)器150下載用于 全景查看器120的程序250,并且實例化運行程序250所必需的任何插件。程序250可以是 Flash文件或一些其他形式的可執(zhí)行內(nèi)容。全景查看器120如以上描述的執(zhí)行和操作。替 選地,配置信息130以及甚至全景切片140可以由地圖服務(wù)210來檢索,并且被傳遞到全景 查看器120。全景查看器120和地圖服務(wù)210進(jìn)行通信,以協(xié)調(diào)用戶界面元素的操作,使得 用戶可以與全景查看器120或地圖服務(wù)210進(jìn)行交互,并且使得位置或定向的變化在兩者 中都有體現(xiàn)。 圖3是示例性瀏覽器顯示300,該顯示300呈現(xiàn)諸如地圖服務(wù)210的地圖服務(wù)以及 諸如全景查看器120的集成的全景查看器二者。地圖服務(wù)提供標(biāo)題為"街道景觀(Street View)"的按鈕310,當(dāng)選擇該按鈕310時,優(yōu)選地改變在全景數(shù)據(jù)可用的區(qū)域中的地圖的呈 現(xiàn)。例如,在圖3中,突出顯示了具有可用全景數(shù)據(jù)的街道。該突出顯示可以是,例如,有顏 色的和/或有陰影的輪廓或覆蓋圖,或顏色和/或陰影的改變。這可以通過使用具有地圖 切片的透明圖像或通過將效果直接包括在提供給地圖服務(wù)的地圖切片中來實現(xiàn)。
地圖服務(wù)允許用戶通過進(jìn)一步選擇地圖上的點來激活全景查看器。當(dāng)用戶選擇點 時,在地圖上的該點處顯示字符或替代圖標(biāo)320。在一個實施例中,替代圖標(biāo)包括替代圖標(biāo)所朝向的方向的指示符,在圖3中該指示符被表示為替代圖標(biāo)下的箭頭。 在一個實施例中,當(dāng)?shù)貓D服務(wù)實例化全景查看器時,以嵌入在與替代圖標(biāo)320相
關(guān)聯(lián)的信息氣球窗口中的視口 330的形式來呈現(xiàn)全景查看器。視口 330內(nèi)的全景的視覺
表示的定向與替代圖標(biāo)320的定向匹配。當(dāng)用戶在視口 330內(nèi)操控全景的視覺表示時,全
景查看器將在定向或位置上的任何改變通知給地圖服務(wù),使得地圖服務(wù)可以更新替代圖標(biāo)
320的定向和位置。同樣,當(dāng)用戶在地圖服務(wù)內(nèi)操控替代圖標(biāo)320的定向或位置時,地圖服
務(wù)通知全景查看器,使得全景查看器可以更新其視覺表示。 在一個實施例中,全景查看器的視口 330呈現(xiàn)了選擇的區(qū)域的全景圖像。用戶可 以在圖像上進(jìn)行點擊并且拖動,以環(huán)視360度。在圖3中描繪的示例性視口 330中,將多種 用戶界面元素添加到底層全景。這些元素包括導(dǎo)航輸入,例如視口左側(cè)的縮放和平移控制 (例如,導(dǎo)航按鈕),以及在全景本身中直接提供的線/條、箭頭、和文本形式的注釋。以大 致匹配在全景中所描繪的三維場景的三維方式來渲染注釋。 在圖3中,例如,在視口 330中的線/條與對應(yīng)地圖中所描繪的街道相對應(yīng),并且 甚至可以用與地圖中所描繪的街道相同的顏色來進(jìn)行渲染。箭頭可由用戶(通過點擊或沿 著街道線拖動)來選擇,每個箭頭在有另一全景可用的方向上前進(jìn)。這些使得用戶可以向 上和向下導(dǎo)航街道(即,改變從其觀看街道的有利點)。當(dāng)用戶環(huán)視360度時,線和箭頭平 滑地跟蹤底層影像,使得線保留在底層街道的上方,并且使得箭頭總是在屏幕上可見。這使 得用戶可以在一直向前觀看的同時、或者在看向店面的側(cè)面的同時沿著街道進(jìn)行導(dǎo)航。
當(dāng)用戶在箭頭上點擊以在視口內(nèi)導(dǎo)航時,縮放交叉淡變效果和其他視覺提示給用 戶一種移動的感覺。當(dāng)用戶到達(dá)兩條街道的交叉口時,每條街道都有一條綠線和兩個箭頭。 所有這些同時可見并且均被標(biāo)示,使得用戶知道當(dāng)前位置并且可以在任何方向上前進(jìn)。該 技術(shù)可以容易地按比例縮放以容納多于四個方向的復(fù)雜交叉口。當(dāng)用戶到達(dá)道路繼續(xù)向前 但是沒有進(jìn)一步可用的影像的"死胡同"時,在街道上只有一個箭頭指示用戶可以在其上導(dǎo) 航的方向。在其他方向上,可以呈現(xiàn)嵌入在圖像中的符號和消息,以向用戶通知在該方向上 沒有可用的圖像。 用戶界面不被限制成沿著線導(dǎo)航以順著街道行走,而是可以很容易地被擴(kuò)展成允 許用戶在有用時偏離線元素例如,穿過到街道的對面以更近地注視某物。另外,在城市內(nèi) 的環(huán)境中,可能期望用戶希望離開街道,并且在附近區(qū)域內(nèi),例如公園、廣場、購物區(qū)、或其 他行人友好的公共場所內(nèi),自由地導(dǎo)航??梢匀菀椎赜?自由移動區(qū)"來增強(qiáng)界面以提供該 功能。還應(yīng)當(dāng)注意,盡管在離散的街道級全景之間進(jìn)行導(dǎo)航的場境中呈現(xiàn)了用戶界面,但是 用戶界面同樣可以很好地用于允許用戶通過在更加連續(xù)的全景數(shù)據(jù)集中進(jìn)行導(dǎo)航,使得沿 著街道進(jìn)行導(dǎo)航將象視頻一樣平滑。 以下進(jìn)一步詳細(xì)描述用戶界面元素的操作和實現(xiàn)。 圖4是根據(jù)本發(fā)明的一個實施例由諸如全景查看器120的全景查看器來執(zhí)行的處 理的示例性流程圖。 在步驟402,全景查看器接收用于要呈現(xiàn)的初始全景和各種視口參數(shù)的標(biāo)識符,諸 如視口的大小以及要在全景內(nèi)查看的方向。例如,可以通過使用在地圖服務(wù)中的FLASH插 件和Javascript之間的Flashvars或External Interface來將該信息從地圖服務(wù)傳遞到 全景查看器。
在步驟404,全景查看器使用全景標(biāo)識符請求來自服務(wù)器的配置信息(例如,XML 文件)。圖5描繪了示例性XML配置信息500,并且以下進(jìn)一步詳細(xì)討論。解析XML,并且將 信息加載到各種數(shù)據(jù)結(jié)構(gòu)中以供全景查看器進(jìn)行使用。在一個實施例中,XML包括用于全 景查看器的信息,諸如當(dāng)前全景的數(shù)據(jù)屬性和投影屬性,以及關(guān)于全景內(nèi)的包括對其他全 景的鏈接的注釋/鏈接的信息。 在步驟406,全景查看器請求用于全景的視覺資料,并且將接收到的視覺資料存儲 在例如本地存儲器/存儲裝置中。在一個實施例中,全景查看器可以維護(hù)視覺資料的高速 緩存存儲器,并且限制帶寬的使用,以檢索不在高速緩存存儲器中的視覺資料。圖6圖示了 初始全景圖像600的示例??梢杂扇安榭雌鳈z索完整的全景圖像600,或者可以將全景圖 像600劃分成多個全景圖像切片,并且全景查看器僅按需要來請求切片。
在步驟408,全景查看器對配置信息和視覺資料進(jìn)行處理,以準(zhǔn)備在步驟410在視 口中渲染全景的視覺表示。關(guān)于視覺資料,全景查看器可以將全景圖像切片組合成與視口 重疊的那部分完整全景圖像。如這里進(jìn)一步討論的,全景查看器可以將全景圖像呈現(xiàn)為平 面或紋理映射的三維表面,例如,圓柱或球體。關(guān)于在視口中呈現(xiàn)的注釋覆蓋圖,全景查看 器使用配置信息來計算用于諸如在視口中呈現(xiàn)的線/條和箭頭的這些各種元素的形狀和 位置。 在一個實施例中,在與全景中所描繪的空間相對應(yīng)的三維空間中建模多邊形/形 狀。例如,可以使用針孔相機(jī)模型來建模這些多邊形/形狀(例如,可以通過視口的高度乘 以旋轉(zhuǎn)中心的恒定相對深度來生成焦距長度)。注釋覆蓋圖的多邊形/形狀以匹配視口定 向的改變的方式來三維空間中改變其定向。在一個實施例中,按照在配置信息中所指定的, 多邊形/形狀被旋轉(zhuǎn)了等于在全景中用戶的視點的當(dāng)前定向和注釋的方向之間的差值的 角度。如這里進(jìn)一步描述的,為了考慮非平面全景,可以繞著不同的空間軸進(jìn)一步變換該多 邊形/形狀。 在步驟410,渲染在視口中的全景的視覺表示。 在步驟412,例如,全景查看器通過捕捉輸入事件,諸如鼠標(biāo)和鍵盤事件,來接收和 管理輸入。例如,全景查看器檢測用戶是否已經(jīng)平移了視口 (例如,通過拖動鼠標(biāo)或通過選 擇平移控制按鈕)、是否已經(jīng)選擇了縮放(例如,通過用鼠標(biāo)在全景上進(jìn)行點擊或移動視口 左側(cè)的縮放滑塊控制)或者是否已經(jīng)選擇了到另一個全景的鏈接(例如,通過用鼠標(biāo)在箭 頭上進(jìn)行點擊)。 在步驟420,做出關(guān)于用戶是否已經(jīng)平移了視口的確定。如果用戶已經(jīng)平移了視
口 ,則控制轉(zhuǎn)到步驟422。如果用戶還沒有平移視口 ,則控制轉(zhuǎn)到步驟430。 在步驟422,全景查看器確定視口是否將與需要從服務(wù)器或高速緩存裝置檢索的
任何全景圖像切片重疊。 在步驟424,如以下將要詳細(xì)描述的,全景查看器執(zhí)行必須的計算,以允許可以在 不同定向上正確呈現(xiàn)視口。 在步驟426,全景查看器將用戶選擇的新的定向通知給地圖服務(wù),使得地圖服務(wù)可 以更新其替代圖標(biāo)的朝向指示符。全景查看器重新計算用于視口元素的形狀和位置,并且 渲染該視口。為了說明該點,考慮圖7A,圖7A描繪了來自圖3的全景查看器視口。圖7B示 出了在用戶已經(jīng)選擇將全景平移到左邊之后的結(jié)果。注意,與在全景中描繪的道路相對應(yīng)
9的線/條隨著全景查看器改變?nèi)暗亩ㄏ蚨淖兤浞较颉?在步驟430,做出關(guān)于用戶是否已經(jīng)縮放了視口的確定。如果用戶已經(jīng)縮放了視
口 ,則控制轉(zhuǎn)到步驟432。如果用戶還沒有縮放視口 ,則控制轉(zhuǎn)到步驟440。 在步驟432,全景查看器確定例如是否從服務(wù)器(或從高速緩存裝置)請求新的更
高分辨率的全景圖像切片,或者是否例如以不同的特寫(close-up)分辨率來使用現(xiàn)有切
片,其中不存在比其更高的分辨率的切片。 在步驟434,改變視口參數(shù)以反映不同的縮放水平??梢栽诳s放水平之間提供過渡,以給出活動地縮放到全景的下一縮放水平的呈現(xiàn)。圖7C中示出了在用戶已經(jīng)選擇了在圖7A中的特征上放大之后的結(jié)果。 在步驟440,做出關(guān)于用戶是否已經(jīng)選擇了到其他全景的鏈接的確定。如果用戶已經(jīng)選擇了到另一個全景的鏈接,則控制轉(zhuǎn)到步驟442。如果用戶沒有選擇到其他全景的鏈接,則控制轉(zhuǎn)到步驟412。 在步驟442,全景查看器繼續(xù)開始在原始全景和新全景之間進(jìn)行過渡的處理。例如,全景查看器可以縮放原始全景,并且執(zhí)行到新全景交叉淡變,以給用戶一種移動的感覺。替選地,全景查看器可以播放兩個全景之間的實際視頻過渡。 在步驟444,全景查看器將用戶選擇的新位置通知給地圖服務(wù),使得地圖服務(wù)可以更新其替代圖標(biāo)的位置,并且可以相應(yīng)地滾動地圖。 在一個實施例中,可以使用任何有利的編程語言或編程方式來實現(xiàn)全景查看器。例如,可以使用具有獨立的類(class)的面向?qū)ο蟮某绦騺韺崿F(xiàn)全景查看器,所述獨立的類被指定用來處理XML配置信息、注釋、紋理生成、切片管理和網(wǎng)格生成。
圖5闡述了示例性XML配置信息500(例如,元數(shù)據(jù))。如圖5中所示的示例所說明的,用于配置信息的方案被組織成"data—properties"、"projection—properties"和"a皿otation—properties,,。 子組Data_Properties包含屬性,諸如"panojd"(例如,用于全景的唯一標(biāo)識符)、"i腿gejidth "和"imagejieight"(例如,在被分割成切片之前的全景圖像的尺寸)、"tile—width"和"tilejieight"(例如,切片的尺寸)、"lat"和"lng"(例如,當(dāng)前全景的坐標(biāo))和"num—zoom—levels"(例如,用戶將能夠在全景查看器中查看的縮放水平的編號)。該子組還包含元素,諸如"text"(例如,可以用于表示當(dāng)前全景的街道名稱)、"copyright"(例如,版權(quán)信息)和"street—range"(例如,給定街道中的編號范圍)。
子組Projection—properties包含屬性,諸如"Pano—yaw—deg,,(例如,捕捉至U生成全景圖像的圖像的車輛的方向)、"ti 1 t_yaW_deg"和"ti 1 t_pitch_deg"(例如,如這里進(jìn)一步描述的,有助于處理具有斜坡特征的全景的最高斜坡的線的側(cè)傾和縱傾)以及"vertical—scale"(例如,沿著在較低的縮放水平上可見的y軸的圖像的片段)。
子組Annotation—properties包含屬性,諸如"horizon—height—fraction,,(例如,地平線的垂直位置(高度),被表達(dá)為可視長條的片段,可以對其進(jìn)行調(diào)整以最大化注釋和切片的圖像之間的適合度)以及"annotationJieight—fraction"(例如,包含注釋的平面的垂直位置(高度),被表達(dá)為可視長條的一片段)。該子組還包括"pano—link"子組,其描述了允許用戶導(dǎo)航到鄰居全景或到另一個相關(guān)文檔的鏈接符號的屬性。"link"子組將"link—text"(例如,著陸全景的描述)包括進(jìn)來作為元素,并且將下述包括進(jìn)來作為屬性"yaW_deg"(例如,鏈接所指向的方向)、"panojd"(例如,對鏈接的全景的標(biāo)識符)和"roacLargb"(例如,道路的屬性,諸如地圖上的道路的顏色)(未示出)。子組還可以包括"floating—text"組或元素,其標(biāo)識了全景中的任意特征,并且還可以支持例如到本地數(shù)據(jù)儲存庫或網(wǎng)站(未示出)的任意鏈接。 應(yīng)當(dāng)注意,以上用于配置信息的方案僅僅是說明性的,并且可以以很多有利的方式來進(jìn)行安排,包括使用不依賴于XML的技術(shù)。 圖8是根據(jù)本發(fā)明的一個實施例的由渲染器執(zhí)行的處理的流程圖。
在步驟802,渲染器通過反向變換來預(yù)先計算視口的前圖像(pre-image)。這定義了表面的一部分,這里將其稱為"預(yù)先計算的區(qū)域"。圖9A圖示了在具有矩形視口 920的圓柱形表面900的上下文中說明了這點,矩形視口 920通過反向變換定義了預(yù)先計算的區(qū)域910。應(yīng)當(dāng)注意,視口不必是矩形,并且該技術(shù)用于離散化的圓柱形(基于網(wǎng)格)或用于連續(xù)的體素到像素的映射。例如,可以通過圓柱形上的對應(yīng)網(wǎng)格來在視口上定義網(wǎng)格。這些網(wǎng)格不必是統(tǒng)一的,并且是如正向或反向映射所定義的彼此的圖像。圓柱形上的網(wǎng)格典型地將僅覆蓋圓柱形的一部分。在連續(xù)變換的情況下,視口的前圖像將定義圓柱形的連續(xù)區(qū)域。 在步驟804,渲染器預(yù)先計算變換,該變換將每個像素從預(yù)先計算的區(qū)域映射到視口中的像素。從某種意義上說,假定圓柱形在空間中保持靜止。假定紋理將在圓柱形上"滑動",而不是將紋理圖像附加到變化的圓柱形。 在步驟806,渲染器響應(yīng)于用戶輸入來對圖像/紋理進(jìn)行平移。 在步驟808,渲染器確定與預(yù)先計算的表面的區(qū)域交叉的圖像/紋理部分。這定義
了需要在視口中進(jìn)行渲染的像素集。如果用戶最近已經(jīng)改變了視點,則這需要被更新。更準(zhǔn)
確地說,在步驟806,可以通過在對應(yīng)方向上平移紋理來容易地實現(xiàn)向視口的左邊或右邊的
任何平移,從而生成與預(yù)先計算的區(qū)域的不同的交叉部分。同樣,通過沿著這些方向平移紋理可以實現(xiàn)向上或向下的任何平移。僅通過在對應(yīng)方向上平移紋理來實現(xiàn)任何任意方向的平移。每一次都生成與預(yù)先計算的區(qū)域的新交叉部分。這在圖9B和圖9C中進(jìn)行了圖示,其中950表示預(yù)先計算的區(qū)域,而960表示圖像/紋理。 在步驟810,將預(yù)先計算的變換應(yīng)用于與預(yù)先計算的區(qū)域交叉的圖像/紋理部分。
最后,在步驟812,變換的影像被渲染在視口中。 在一個實施例中,渲染器使用直線投影的屬性來加速對全景圖像的渲染。如果將如圓柱形的表面視作是無限的,則它是天生具有自然操作(例如,沿著軸線平移,并且沿著軸線旋轉(zhuǎn))組G。同樣,如果將紋理視作是無限的,則紋理也天生是具有在平面中平移的組H。結(jié)果是G和H之間是規(guī)范同態(tài)(canonical homomorphism)。換言之,圓柱形繞其軸旋轉(zhuǎn)等同于紋理在例如x方向上平移。圓柱形沿其軸的平移等同于紋理在例如y方向上平移。這允許提前預(yù)先計算所有的投影參數(shù),并且將視點的變化模擬為紋理的平移。圖IOA和圖10B圖示了如何計算從屏幕空間到紋理空間的投影參數(shù)的示例。如圖IOA和圖IOB所圖示的 (1)如果屏幕1020上的點M具有坐標(biāo)(x,y),則在空間中其具有坐標(biāo)(x,y,R),其中R是圓柱形1010的半徑。
11
(2)在該情況下,tan^ = ^ ,并且點P在紋理空間中具有以下坐標(biāo)<formula>formula see original document page 12</formula>
可以生成基于當(dāng)前縮放水平的動態(tài)紋理,并且將其置于圖像空間中。當(dāng)用戶(例如,通過縮放或平移)改變視點時,該紋理改變??梢酝ㄟ^以適當(dāng)?shù)乃胶鸵?guī)模將來自切片金字塔的切片連接起來獲得該紋理。如果一些切片丟失,則可以后退到切片金字塔中的父輩級處的切片。將紋理建模為在圓柱形上被映射。在屏幕空間上執(zhí)行投影。該非線性投影可以與分段仿射變換大致相同。更準(zhǔn)確地說,可以使用三角形網(wǎng)格來使圓柱形和屏幕空間離散化??梢酝ㄟ^在其上線性(或仿射)映射一片紋理來渲染每個三角形。因為它是通過其在三個點上上動作來唯一地確定的(因此,使用三角形),所以這被明確定義為二維平面中的仿射變換。可以使得網(wǎng)格在屏幕空間中是唯一的(而在紋理空間中不唯一)。不論縮放水平,屏幕網(wǎng)格總是相同的。根據(jù)縮放水平,可以使用不同的紋理網(wǎng)格。對于每個三角形,紋理網(wǎng)格與屏幕網(wǎng)格中的唯一的三角形和唯一 (仿射)變換矩陣相對應(yīng)??梢詫⑦@樣的矩陣預(yù)先計算為屏幕矩陣和紋理矩陣(逆矩陣)的乘積。 當(dāng)用戶平移時,所有需要渲染器要做的是調(diào)整和/或刷新紋理。因為其是由存儲器副本組成,所以這是很快的。通常以若干編程語言來大大優(yōu)化對大塊像素的復(fù)制。
在一個實施例中,放大包括將水平和垂直視野二者分成兩個,并且使用下一個縮放水平來生成紋理。當(dāng)用戶放大/縮小時,全景查看器可以預(yù)先緩沖一些位像,以使動畫平滑。就投影本身來說,可以在整數(shù)縮放水平上使用各種變換矩陣的集合。在非整數(shù)縮放水平上,可以在先前的縮放水平和下一個縮放水平之間線性插值變換矩陣(仍然很快)。
在假定像素是正方形的情況下,它們與均勻立體角相對應(yīng)。給定像素的基本視野在水平和垂直方向上相同。這使得可以進(jìn)行折衷。例如,可以選擇完全保留直線,但是這將引起側(cè)面的較高失真。替選地,可以決定使直線變得有些彎曲,并且從而減少失真量。在一個實施例中,原始圖像的高度被擴(kuò)展成視口的高度。因為像素是正方形,所以視口的寬度對高度的比率確定了水平視野。 在球形而不是圓柱形的情況下,以上的假設(shè)不再正確。因此,因為所執(zhí)行的所有都是在視覺向量與圓柱形的軸垂直的情況下,沿著該圓柱形的軸移動,所以僅僅以上技術(shù)不能模擬真實的上/下平移。然而,可以通過預(yù)先計算一系列變換并且在變換之間進(jìn)行線性內(nèi)插來模擬真實的上/下平移的運動。 在一個實施例中,全景查看器被配置成處理非平面的全景。并非所有全景都描繪平面和水平的特征,例如,考慮舊金山的很多街道。例如,用于捕捉全景的安裝在車輛上的相機(jī)與地面平行。所以,在陡峭的斜坡上行使可能導(dǎo)致方向不明的圖片。因此,在這樣的情況下,將全景進(jìn)行彎曲以確保真實世界的垂直建筑在紋理空問上保持垂直是有利的。圖11描繪了如何如此扭曲全景1100的示例。如圖12所圖示的,該示例大致遵循周期函數(shù),其可以用于引導(dǎo)視口的放置以及以考慮全景的斜坡的方式來生成注釋。
如這里注意到的,配置信息可以包括投影屬性,諸如在全景中的最大斜坡的側(cè)傾和縱傾。如圖12所圖示的,全景查看器可以使用最陡斜坡的方向的側(cè)傾和縱傾來將視口限制成扭曲全景的正弦?guī)?。還可以修改在視口中的注釋元素的渲染以考慮到全景的斜坡的側(cè)傾和縱傾信息??梢曰趥?cè)傾和縱傾信息來變換,或者替選地,可以基于注釋的相對側(cè)傾和最陡斜坡的側(cè)傾來估計線/條和箭頭的空間方向。圖13圖示了在全景斜坡上的對配置信息進(jìn)行這樣的處理的結(jié)果。全景正確地在全景圖像中將垂直建筑置于陡坡街道上。另外,以大致上匹配街道的斜坡的角度來縱傾描繪道路的線/條(例如,街道線元數(shù)據(jù))。
在一個實施例中,全景查看器還能夠促進(jìn)用戶對全景圖像的注釋。用戶對全景的注釋再次提出了關(guān)于如何在三維空間中引用注釋的挑戰(zhàn)。 圖14和圖15圖示了解決三維空間中的用戶注釋的實施例。圖15中圖示的處理可以在全景查看器(或地圖服務(wù))、在服務(wù)器或在兩者的組合上發(fā)生。 參考圖15,在步驟1502,用戶輸入關(guān)于一個全景的注釋。全景查看器可以以用多種不同方式中的任何一種來接收用戶輸入,包括通過接收在用戶期望注釋的全景的點上的點擊事件。以一些有利的坐標(biāo)系來記錄在全景上的注釋的二維位置,例如,通過全景圖像上的位置,或通過側(cè)傾和縱傾坐標(biāo)。 在步驟1504,用戶導(dǎo)航到全景查看器中的另一附近全景、定位要注釋的相同特征、并且再次輸入關(guān)于第二全景的注釋。全景查看器或地圖服務(wù)可能也可以提供添加與諸如標(biāo)題、鏈接、圖形等的注釋相關(guān)聯(lián)的附加元數(shù)據(jù)的能力。 在步驟1506,在兩個全景上的注釋坐標(biāo)用于生成針對該注釋的三維坐標(biāo)。給定為全景1410U420拍攝圖像的相機(jī)的已知位置和相對于二維圖像的用戶輸入的注釋的坐標(biāo),則如圖14中所示,能夠計算描繪為1450的兩者的交叉部分。該結(jié)果是用于注釋的三維坐標(biāo)。 在步驟1508,用于注釋的三維坐標(biāo)被指派給注釋,并且被存儲在注釋的數(shù)據(jù)庫中。然后,可以與在計算的坐標(biāo)的一些有利范圍內(nèi)的任何全景一起包括該注釋,該任何全景包括用戶初始沒有注釋的全景。 替選地,當(dāng)相對縱傾信息對注釋不是特別重要時,能夠按兩個全景上的一維側(cè)傾方向來接收用戶注釋,這有助于將二維地理編碼指派給注釋(具有或不具有默認(rèn)的縱傾信息)。 盡管以上已經(jīng)描述了本發(fā)明的多種實施例,但是應(yīng)當(dāng)理解,通過示例而不是限定
的方式呈現(xiàn)了本發(fā)明。對于相關(guān)領(lǐng)域的技術(shù)人員顯而易見的是,在不偏離本發(fā)明范圍的前
提下,可以在其中做出各種改變。另外,應(yīng)當(dāng)意識到,這里提供的對本發(fā)明的詳細(xì)描述,而不
是發(fā)明內(nèi)容和摘要部分,旨在用于解釋權(quán)利要求。發(fā)明內(nèi)容和摘要部分可能闡述了如發(fā)明
人設(shè)想的本發(fā)明的一個或多個示例性實施例,而非所有的示例性實施例。 特定實施例的前述描述完整地披露了本發(fā)明的一般屬性,使得他人可以在不偏離
本發(fā)明的一般概念的前提下,可以通過應(yīng)用本領(lǐng)域內(nèi)的知識來容易地對這樣的特定實施例
的各種應(yīng)用進(jìn)行修改和/或使這樣的特定實施例適用于各種應(yīng)用,而無需進(jìn)行過多的實
驗。所以,基于這里呈現(xiàn)的教導(dǎo)和引導(dǎo),希望這樣的改編和修改在公開實施例的意義和范圍
內(nèi)。應(yīng)當(dāng)理解,這里的用語或術(shù)語是出于描述的目的而不是限定的目的,使得本領(lǐng)域技術(shù)人
員鑒于該教導(dǎo)和指導(dǎo)來解釋本說明書的術(shù)語或用語。
權(quán)利要求
一種用于查看全景圖像的方法,包括(a)接收第一全景圖像的至少一部分;(b)呈現(xiàn)顯示所述第一全景圖像的所述部分的視口,所述視口包括用所述第一全景圖像渲染的三維覆蓋圖;以及(c)在用所述第一全景圖像渲染所述三維覆蓋圖時,在三維空間中改變所述三維覆蓋圖的定向,以與所述第一全景圖像的定向中的改變相匹配。
2. 根據(jù)權(quán)利要求l所述的方法,其中,所述接收(a)包括接收街道級影像。
3. 根據(jù)權(quán)利要求1和2中的任何一項所述的方法,其中,所述呈現(xiàn)(b)包括在所述覆蓋 圖中顯示導(dǎo)航圖標(biāo),其中,所述導(dǎo)航圖標(biāo)用于在全景圖像之間進(jìn)行導(dǎo)航。
4. 根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括響應(yīng)于用戶選擇所述導(dǎo)航圖標(biāo)來確定第二全景圖像,其中,所述第二全景圖像位于相 對于所述第一全景圖像的位置的方向,所述方向與在所述三維覆蓋圖中的所述導(dǎo)航圖標(biāo)的 位置相對應(yīng);以及在所述視口中顯示所述第二全景圖像的至少一部分。
5. 根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括在地圖上的第一位置處顯示用戶定向符號,所述第一位置與所述第一全景圖像的位置 相對應(yīng);以及響應(yīng)于用戶選擇所述導(dǎo)航圖標(biāo)來在地圖上的第二位置處顯示所述用戶定向符號,其 中,所述第二位置位于相對于所述第一位置的方向,所述方向與所述三維覆蓋圖中的所述 導(dǎo)航圖標(biāo)的位置相對應(yīng)。
6. —種用于查看全景圖像的系統(tǒng),包括全景查看器,所述全景查看器接收第一全景圖像的至少一部分,并且呈現(xiàn)顯示所述第 一全景圖像的所述部分的視口,所述視口包括用所述全景圖像渲染的三維覆蓋圖,其中,所述全景查看器在用所述全景圖像渲染所述三維覆蓋圖時,在所述三維空間中 改變所述三維覆蓋圖的定向,以與所述視口內(nèi)的所述全景圖像的定向上的改變相匹配。
7. 根據(jù)權(quán)利要求6所述的系統(tǒng),其中,所述全景圖像包括街道級圖像。
8. 根據(jù)權(quán)利要求6和7中的任何一項所述的系統(tǒng),其中,所述覆蓋圖包括用于在全景圖 像之間進(jìn)行導(dǎo)航的導(dǎo)航圖標(biāo)。
9. 根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述全景查看器響應(yīng)于用戶選擇所述導(dǎo)航圖標(biāo) 來確定第二全景圖像,并且在所述視口中顯示所述第二全景圖像的至少一部分,以及其中,所述第二全景圖像位于相對于所述第一全景圖像的位置的方向,所述方向與所 述三維覆蓋圖中的所述導(dǎo)航圖標(biāo)的位置相對應(yīng)。
10. 根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述全景查看器在地圖上的第一位置處顯示用 戶定向符號,所述第一位置與所述第一全景圖像的位置相對應(yīng)。
11. 根據(jù)權(quán)利要求io所述的系統(tǒng),其中,所述全景查看器響應(yīng)于用戶選擇所述導(dǎo)航圖標(biāo)來在地圖的第二位置處顯示所述用戶定向符號。其中,所述第二位置處于相對于所述第一位置的方向,所述方向與所述三維覆蓋圖中 的所述導(dǎo)航圖標(biāo)的位置相對應(yīng)。
12. —種用于渲染表面的方法,包括(a) 計算通過從視口到所述表面的第一變換定義的表面上的區(qū)域;(b) 計算第二變換,所述第二變換從所述區(qū)域映射到所述視口 ;(c) 確定與所述區(qū)域交叉的圖像部分;以及(d) 將所述第二變換應(yīng)用于與所述區(qū)域交叉的所述圖像部分,以獲得變換的圖像,所述 變換的圖像在所述視口中被渲染用于顯示。
13. 根據(jù)權(quán)利要求12所述的方法,其中,所述計算(a)包括計算圓柱形上的區(qū)域。
14. 根據(jù)權(quán)利要求12和13中的任何一項所述的方法,其中,所述計算(a)包括計算通 過從第二網(wǎng)格到第一網(wǎng)格的所述第一變換定義的所述第一網(wǎng)格上的區(qū)域,并且其中,所述計算(b)包括計算所述第二變換,所述第二變換從所述第一網(wǎng)格映射到所 述第二網(wǎng)格。
15. 根據(jù)權(quán)利要求12和13中的任何一項所述的方法,其中,所述計算(a)包括將所述 第一變換計算為從體素到像素的連續(xù)變換,并且其中,所述計算(b)包括將所述第二變換計算為從體素到像素的連續(xù)變換。
16. 根據(jù)權(quán)利要求12或13中所述的方法,進(jìn)一步包括(e) 平移所述圖像;(f) 確定與在(a)中計算的所述區(qū)域交叉的(e)中所平移的所述圖像的第二部分;以及(g) 將在(b)中計算的所述第二變換應(yīng)用于在(f)中確定的所述圖像的第二部分,得到 第二變換的圖像,所述第二變換的圖像在所述視口中被渲染用于顯示。
17. 根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括確定在(d)中確定的所述變換的圖像 和在(g)中確定的所述第二變換的圖像之間的插值。
18. 根據(jù)權(quán)利要求12所述的方法,進(jìn)一步包括基于捕捉到所述圖像的相機(jī)的角度來 調(diào)整所述圖像。
19. 根據(jù)權(quán)利要求12、13和18中的任何一項所述的方法,其中,所述確定(c)包括確 定與所述區(qū)域交叉的全景圖像的一部分。
20. —種用于渲染表面的系統(tǒng),包括服務(wù)器,所述服務(wù)器計算通過從視口到所述表面的第一變換定義的所述表面上的區(qū) 域,并且計算從所述區(qū)域映射到所述視口的第二變換,以及全景查看器,所述全景查看器確定與所述表面上的所述區(qū)域交叉的圖像的一部分,并 且將所述第二變換應(yīng)用于與所述表面上的所述區(qū)域交叉的所述圖像的所述一部分,得到第 一變換的圖像,所述第一變換的圖像在所述視口中被渲染用于顯示。
21. 根據(jù)權(quán)利要求20所述的系統(tǒng),其中,所述表面是圓柱形的。
22. 根據(jù)權(quán)利要求20所述的系統(tǒng),其中,在所述視口上定義有網(wǎng)格,并且在所述表面上 定義有網(wǎng)格,并且其中,所述第一和第二變換是從一個網(wǎng)格到另一網(wǎng)格。
23. 根據(jù)權(quán)利要求20所述的系統(tǒng),其中,第一和第二變換是從體素到像素的連續(xù)變換。
24. 根據(jù)權(quán)利要求20、21、22和23中的任何一項所述的系統(tǒng),其中,所述全景查看器響 應(yīng)于用戶輸入來平移所述圖像,確定與所計算的區(qū)域交叉的所平移的圖像的第二部分,以 及將所述第二變換應(yīng)用于所確定的圖像的所述第二部分,得到第二變換的圖像,所述第二 變換的圖像在所述視口中被渲染用于顯示。
25. 根據(jù)權(quán)利要求24所述的系統(tǒng),其中,所述全景查看器確定在所述第一和第二變換 的圖像之間的插值。
26. 根據(jù)權(quán)利要求20所述的系統(tǒng),其中,基于捕捉到所述圖像的相機(jī)的角度來調(diào)整所 述圖像。
27. 根據(jù)權(quán)利要求20、21、22、23和26中的任何一項所述的系統(tǒng),其中,所述圖像是全景圖像。
28. —種用于處理對全景的注釋的方法,包括(a) 接收對于第一全景中的特征的第一用戶注釋;(b) 接收對于第二全景中的所述特征的第二用戶注釋;(c) 基于針對所述特征的為所述第一用戶注釋和為所述第二用戶注釋生成的數(shù)據(jù)之間 的交叉部分來確定坐標(biāo);以及(d) 與表示所述特征的注釋相關(guān)聯(lián)地存儲所述坐標(biāo)。
29. 根據(jù)權(quán)利要求28所述的方法,進(jìn)一步包括(e) 在第三全景內(nèi)渲染所述注釋,包括根據(jù)所述坐標(biāo)在所述第三全景上投影所述注釋。
30. 根據(jù)權(quán)利要求28所述的方法,其中,所述確定(c)包括基于針對所述特征的為所 述第一用戶注釋和為所述第二用戶注釋生成的數(shù)據(jù)之間的交叉部分來確定三維坐標(biāo)。
31. 根據(jù)權(quán)利要求28所述的方法,其中,所述接收(a)包括接收所述第一用戶注釋, 所述第一用戶注釋包括第一元數(shù)據(jù),并且其中,所述接收(b)包括接收所述第二用戶注釋,所述第二用戶注釋包括第二元數(shù)據(jù)。
32. 根據(jù)權(quán)利要求28、29、30和31中的任何一項所述的方法,其中,所述接收(a)包括 接收所述第一用戶注釋,所述第一用戶注釋包括所述第一全景圖像的第一縱傾、第一側(cè)傾 以及位置,并且其中,接收(b)包括接收所述第二用戶注釋,所述第二用戶注釋包括所述第二全景圖 像的第二縱傾、第二側(cè)傾以及位置。
33. 根據(jù)權(quán)利要求32所述的方法,其中,所述確定(c)包括基于所述第一全景圖像的所 述第一縱傾、所述第一側(cè)傾、位置,所述第二全景圖像的所述第二縱傾、所述第二側(cè)傾、位置 確定所述交叉部分。
34. —種用于處理全景的注釋的系統(tǒng),包括服務(wù)器,所述服務(wù)器接收對在第一全景中的特征的第一用戶注釋,接收對在第二全景 中的所述特征的第二用戶注釋,并且基于針對所述特征的所述第一用戶注釋的第一位置和 所述第二用戶注釋的第二位置來確定所述特征的位置。
35. 根據(jù)權(quán)利要求34所述的系統(tǒng),進(jìn)一步包括全景查看器,所述全景查看器在第三全景內(nèi)渲染所述注釋,并且根據(jù)所述特征的位置 在所述第三全景上投影所述注釋。
36. 根據(jù)權(quán)利要求34所述的系統(tǒng),其中,由三維坐標(biāo)來定義所述特征的位置。
37. 根據(jù)權(quán)利要求34、35和36中的任何一項所述的系統(tǒng),其中,所述第一注釋包括第一 元數(shù)據(jù),并且其中,所述第二注釋包括第二元數(shù)據(jù)。
全文摘要
本發(fā)明涉及渲染、查看和注釋全景圖像。在一個實施例中,一種系統(tǒng)可以用于查看全景圖像。該系統(tǒng)包括全景查看器,該全景查看器接收第一全景圖像的至少一部分,并且呈現(xiàn)顯示第一全景圖像的該部分的視口。視口包括用全景圖像渲染的三維覆蓋圖。在用全景圖像來渲染三維覆蓋圖時,全景查看器在三維空間中改變?nèi)S覆蓋圖的定向,以與視口內(nèi)的全景圖像的定向的變化相匹配。
文檔編號G06T15/20GK101743569SQ200880024902
公開日2010年6月16日 申請日期2008年5月27日 優(yōu)先權(quán)日2007年5月25日
發(fā)明者丹尼爾·菲利普, 盧克·文森特, 安德魯·蒂莫西·希巴爾斯基, 斯特芬尼·拉豐, 斯蒂芬·周, 楊鐘皓 申請人:谷歌公司