專利名稱:用于管理圖像數(shù)據(jù)的傳送和/或存儲的系統(tǒng)和方法
技術領域:
本發(fā)明一般涉及計算機的圖形縮放用戶界面。更具體而言,本發(fā)明是一種用于以既在計算上高效又精確的方式來漸進地呈現(xiàn)可縮放可視內(nèi)容的系統(tǒng)和方法,計算上的高效能得到良好的用戶響應性和高幀速率,而精確的意義在于向量圖形、文本和其它非照相內(nèi)容最終在不進行通常導致圖像質(zhì)量降低的重采樣的前提下繪出。
背景技術:
大多數(shù)當前的圖形計算機用戶界面(GUI)是使用固定空間比例的可視組件來設計的。然而,從計算機圖形領域的誕生可以認識到,可視組件可以用使得它們在顯示器上不具有固定空間比例,而是可被放大和縮小的方式來表示和處理。對可縮放組件的期望在許多應用領域中都是明顯的;此處僅舉幾個例子查看地圖、瀏覽諸如報紙等大型的不同種類文本布局、查看數(shù)碼照片的相冊、以及用大數(shù)據(jù)集的可視化來工作。即使在查看諸如電子表格和報表等普通文檔時,能夠粗看一下文檔概述,然后在感興趣的區(qū)域上放大通常也是有用的。許多現(xiàn)代的計算機應用程序包括可縮放組件,諸如Microsoft_Word_和其它Office_產(chǎn)品(View(視圖)菜單下的Zoom(縮放))、Adobe_Photoshop_、Adobe_Acrobat_、QuarkXPress_等等。在大多數(shù)情況下,這些應用程序允許對文檔進行放大和縮小,但是無需對應用程序本身的可視組件進行放大和縮小。此外,縮放一般是用戶與軟件的交互的一個外圍方面,且縮放設置僅偶爾被更改。盡管對文檔的連續(xù)掃視是標準(即,使用滾動條或光標來將所查看的文檔向左、右、上或下平移),但連續(xù)縮放的能力幾乎總是不存在。在一種更一般化的縮放框架中,可縮放任何種類的可視內(nèi)容,且縮放幾乎與掃視一樣是用戶體驗的一部分。遵循這些思路的概念使得甚至在早至1960年代1的1例如Stanley Kubrick在2001年的ASpace Odyssey,Turner Entertainment公司,Time Warner公司的子公司(1968)。
電影中已經(jīng)出現(xiàn)了未來派的計算機用戶界面;而近期的電影延續(xù)了這一趨勢2。從1970年代開始到現(xiàn)在3,已構思和/或開發(fā)了多種連續(xù)縮放界面。在1991年,這些概念中的某一些在紐約大學的Kenneth Perlin和Jacob Schwarts的美國專利5,341,466(“Fractal Computer User Centerface with Zooming Capability”)中定形。由Perlin和同事Pad開發(fā)的原型縮放用戶界面Pad及其后繼產(chǎn)品Pad++自那以來經(jīng)歷了一些開發(fā)4。然而,就發(fā)明人所知,部分地由于多種技術不足,在大量市場上尚未出現(xiàn)基于全ZUI(縮放用戶界面)的主要應用程序,這些技術不足中的一個在本發(fā)明中得以解決。
發(fā)明概述
本發(fā)明具體化了新開發(fā)的縮放用戶界面框架(下文按其運作名稱稱為Voss)作為基礎的新概念。Voss由于其軟件體系結構中有多種革新而比其前驅(qū)產(chǎn)品更強大、更具響應性、視覺上更引人注目且更通用。本專利特別地是關于Voss方法中針對對象小塊化和非照相內(nèi)容的呈現(xiàn)的革新之一。
多分辨率可視對象通常是以不同的分辨率或細節(jié)水平(“圖像金字塔”)從一組離散的經(jīng)采樣圖像來呈現(xiàn)的。在諸如3D游戲等使用了連續(xù)縮放的某些技術上下文中,將期望的細節(jié)水平夾在中間的兩個相鄰細節(jié)水平被混合在一起以呈現(xiàn)每一幀,因為情況通常并不是期望的細節(jié)水平正是由該離散組所表示的那些細節(jié)水平之一。這些技術有時被稱為三線性過濾或MIP映射。所得的經(jīng)內(nèi)插的呈現(xiàn)通常對于照相內(nèi)容是令人滿意的,但對于按照幾何圖元來定義的內(nèi)容,諸如文本、圖形、繪圖以及簡而言之用戶在游戲或多媒體應用程序之外與其交互的大多數(shù)可視內(nèi)容而言卻不令人滿意。這是因為混合細節(jié)水平必然會引入模糊和混疊效應。對于這一問題的理想解決方案是完全以實時方式呈現(xiàn)每一幀的視圖,而不依賴于預先存在的一組離散的分辨率。盡管在原則上這將允許對每一幀的完美呈現(xiàn),但是它可能是不切實際的,因為通常需要太多的時間來以高質(zhì)量從零開始呈現(xiàn)每一幀。因此,幀速率
—————————
2例如,Steven Spielberg的MinorityReport,20th Century Fox and Dreamworks Pictures(2002)。
3早先出現(xiàn)在W.C.Donelson的SpatialManagement ofInformation,SIGGRAPH的Computer Graphics會議論文集(1978),ACM出版社第203-9頁中。近來的一個示例是2002年夏天推出的Zanvas.com。
4Perlin在http://mrl.nyu.edu/projects/zui/上描了后繼開發(fā)。將會極大地降低,從而導致該方法對于交互式應用程序而言將變得毫無吸引力。
本發(fā)明涉及一種混合策略,其中通常在快速縮放和掃視期間使用具有多個離散細節(jié)水平的基于圖像金字塔的方法,但是當視圖足夠穩(wěn)定時,呈現(xiàn)“精確視圖”并將其在若干幀上混和。由于人類視覺系統(tǒng)在可視內(nèi)容仍處于運動中時對于其細微的細節(jié)是不敏感的,因此該混合策略可以一小部分計算負荷來產(chǎn)生連續(xù)的“完美呈現(xiàn)”的錯覺。
本發(fā)明的一個目的是允許在縮放用戶界面中呈現(xiàn)文本、曲線圖、圖表、繪圖、地圖以及任何其它基于向量的內(nèi)容(此處也稱為向量內(nèi)容),而不會相對于普通GUI中的最高可能質(zhì)量呈現(xiàn)降低最終圖像質(zhì)量。
本發(fā)明的另一目的是允許在縮放用戶界面中查看任意大或復雜的基于向量的內(nèi)容。
本發(fā)明的又一目的是即使在任意復雜的基于向量的可視內(nèi)容最終是使用非常大量的數(shù)據(jù)來表示的情況下,以及即使在這些數(shù)據(jù)被儲存在遠程位置并通過低帶寬網(wǎng)絡共享的情況下,仍允許接近即時地查看這些內(nèi)容。
本發(fā)明的再一目的是允許用戶對向量內(nèi)容進行任意程度的放大,同時維持內(nèi)容的明晰、不模糊的視圖并維持交互式幀速率。
本發(fā)明的還有一個目的是允許用戶在保持復雜向量內(nèi)容的總體外觀和維持交互式幀速率的過程中進行任意程度的縮小以獲得該內(nèi)容的概觀。
本發(fā)明的此外一個目的是在交互期間最小化用戶對細節(jié)水平或呈現(xiàn)質(zhì)量之間的轉(zhuǎn)變的感知。
本發(fā)明的另有一個目的是允許在由于呈現(xiàn)向量內(nèi)容的某些部分所需的信息不可用或由于精確呈現(xiàn)仍在進行中而使它們的精確呈現(xiàn)尚無法進行時通過模糊來適度降低圖像質(zhì)量。
本發(fā)明的進一步的一個目的是在向量內(nèi)容的某些部分的精確呈現(xiàn)首先變得可用時通過銳化來適度提高圖像質(zhì)量。
本發(fā)明的這些和其它目的將在本領域的技術人員仔細閱讀了以下說明書之后變得顯而易見。
現(xiàn)有技術多分辨率成像和縮放用戶界面
從技術觀點來看,縮放用戶界面是作為視覺計算的根本的普通概念的推廣,從而允許克服經(jīng)典用戶/計算機/文檔交互模型中固有的多種限制。一個這樣的限制是對于可從計算機應用程序“打開”的文檔的大小的限制,因為傳統(tǒng)上整個這樣的文檔必須在查看或編輯能夠開始之前被“加載”。即使對特定計算機可用的短期存儲器(通常是ROM)的量較大,但是仍會感受到這一限制,因為所有文檔信息在打開期間必須從某一存儲庫(例如,從硬盤或通過網(wǎng)絡)傳送到短期存儲器;由此,有限帶寬可使得發(fā)出“打開”命令以及能夠開始查看或編輯之間的延遲變得不可接受地長。
靜態(tài)數(shù)字圖像既提供了這一問題的一個極佳示例,又是對計算機科學團體如何在克服該問題時已超越用于可視計算的標準模型的說明。以下表1示出了對于典型壓縮大小的各種不同圖像類型,從最小的有用圖像(縮略圖,有時用作圖標)到當今常用的最大圖像的在不同帶寬下的下載時間。打陰影的框表示對其難以或不可能按特定的連接速度進行交互式瀏覽的圖像大小。
表1
*注意,這些數(shù)字表示中等質(zhì)量的實際經(jīng)壓縮大小而非原始圖像數(shù)據(jù)。具體地,對高達40MB的大小假定1位/像素,而對更大的圖像假定0.25位/像素,這一般更可壓縮。
**本地無線網(wǎng)絡可以快得多;該數(shù)字指的是常用于無線PDA的類型的無線廣域網(wǎng)。
目前Web上的幾乎每一圖像都在100K(0.1MB)以下,因為大多數(shù)用戶以DSL或更低的帶寬連接到Web,且較大的圖像會花費太長時間來下載。即使是在本地設置中,在典型的用戶硬盤驅(qū)動器上,一般也不會遇到大于500K(0.5MB)的圖像。更大(即,更詳細)的圖像通常有用是用以下事實來證明的普通家庭中帶插圖的書本、地圖冊、地圖、報紙和藝術作品包括大量圖像,這些圖像如果以全分辨率數(shù)字化則大小很容易達到幾十兆字節(jié)。
若干年前,缺少大圖像很大程度是由于存儲庫中存儲空間的短缺,但是硬盤驅(qū)動器技術的進步、刻錄CDROM的方便以及大型聯(lián)網(wǎng)服務器的日益普及已使得存儲庫空間不再是限制性因素?,F(xiàn)在的主要瓶頸是帶寬,然后是短期存儲器(即,RAM)空間。該問題實際上比上表所暗示的惡劣得多,因為在大多數(shù)情況下,用戶不僅僅對查看單個圖像感興趣,而且對查看整個圖像集合感興趣;如果圖像大于某一適度大小,則等待一個接一個地下載圖像變得不切實際。
設計了諸如JPEG20005等現(xiàn)代圖像壓縮標準恰好來解決該問題。并非以線性方式(即,通常從上到下且從左到右在像素上經(jīng)過一遍)儲存圖像內(nèi)容,而是使圖像基于多分辨率分解。圖像首先被調(diào)整大小成一分辨率比例層次,這通常以2為因數(shù)來進行;例如,512×512像素的圖像被調(diào)整大小成256×256像素、128×128、64×64、32×32、16×16、8×8、4×4、2×2以及1×1。很明顯,精細的細節(jié)只能以更高分辨率來捕捉,而寬的筆劃則使用少得多的信息以低分辨率來捕捉。這就是不同大小的圖像通常被稱為細節(jié)水平或簡稱LOD的原因。乍看可能會看到對于該系列不同大小圖像的存儲要求好像可能比對于單獨的高分辨率圖像的要求更高,但是實際上情況并非如此;低分辨率圖像用作下一更高分辨率的“預測器”。這允許非常高效地對整個圖像層次編碼一實際上比單獨使用高分辨率圖像的非分層表示可行的更高效。
如果想像按照逐漸增大的大小的順序在存儲庫中儲存圖像的多分辨率版本的序列,則自然的結果是當經(jīng)由數(shù)據(jù)鏈路將圖像傳送到高速緩存時,用戶可非常迅速地獲得整個圖像的低分辨率概觀;當傳送進展時越來越精細的細節(jié)然后將“填入”。這被稱為“遞增”或“漸進”傳送。當被正確實現(xiàn)時,它具有根本上所有圖像一無論有多大一都可幾乎立即在空間上整體查看(盡管并不是以其全細節(jié)來查看),即使與存儲庫的連接的帶寬十分普通。盡管以全細節(jié)下載圖像所需的最終時間量保持相同,但是發(fā)送該信息的順序已改變,使得圖像的大比例特征被首先發(fā)送;這比以全細節(jié)且按“讀取順序”從上到下和從左到右地發(fā)送像素信息對用戶更有幫助。
————————————
5http://www.jpeg.org/JPEG2000.html
這樣提前隱藏是對“打開”不適合前一節(jié)中所描述的經(jīng)典應用程序模型的圖像而言的新概念?,F(xiàn)在正在想像用戶能夠如同下載時那樣查看圖像,這是因在下載開始之后不久且可能在下載完成之前很久圖像的寬筆劃即可用的這一事實而有用的概念。因此,應用程序強迫用戶等待下載完成已經(jīng)毫無意義;應用程序應當改為立即顯示文檔中它能顯示的部分,并且在它繼續(xù)“在后臺”下載細節(jié)時不導致延遲或不必要地中斷其與用戶的交互。這要求應用程序一次性地完成一項以上任務,這被稱為多線程化。注意,大多數(shù)現(xiàn)代web瀏覽器在略微不同的容量中使用多線程化以便在顯示網(wǎng)頁的文本布局并保持對用戶響應的同時下載網(wǎng)頁上的圖像。在這一情況下,可以將嵌入的圖像本身視為是額外的細節(jié)水平,這增強了由網(wǎng)頁的基本要素文本布局所構成的基本細節(jié)水平。這一類推在以后將會證明是重要的。
很清楚,圖像文檔的分層圖像表示和漸進傳送是優(yōu)于線性表示和傳送的進步。然而,當圖像在其最高細節(jié)水平具有比用戶的顯示器能一次性示出的更多信息(即,更多像素)時,進一步的進展是重要的。采用當前的顯示技術,這始終是對于表1中最底下四種圖像的情況,但是較小的顯示器(諸如PDA屏幕)可能無法示出甚至最底下八種圖像。這使得縮放特征對于大圖像是強制性的如果無法放大以發(fā)現(xiàn)額外的細節(jié),則查看比顯示器更大的圖像是無用的。
當大圖像開始下載時,假定用戶正在完整地查看該圖像。第一細節(jié)水平通常相當粗略,使得所顯示的圖像會取決于在大顯示區(qū)域上擴展少量可用信息所使用的“內(nèi)插”的種類顯現(xiàn)為塊狀或模糊。然后圖像會逐漸細化,但是在某一點處它會使顯示對信息“飽和”,從而使得所下載的任何額外的細節(jié)都沒有任何可視效果。因此在這一點之后繼續(xù)下載完全沒有任何意義。然而,假定用戶決定放大以更詳細地查看一特定區(qū)域,從而使得圖像的有效投影大小實質(zhì)上比物理屏幕更大。然后,在前一節(jié)描述的下載模型中,將需要以遞增的順序下載更高的細節(jié)水平。難點是每一細節(jié)水平都包含前一細節(jié)水平約4倍的信息;當用戶放大時,下載過程將不可避免地滯后。更糟的是,下載的大多數(shù)信息都被浪費,因為它是由查看區(qū)域之外的高分辨率細節(jié)構成的。很清楚,所需要的是僅下載某一細節(jié)水平的所選部分的能力一即僅可視的細節(jié)應被下載。有了這一改變,可制造不僅能夠查看任意大小的圖像,而且還能以任何細節(jié)水平有效地導航(即,縮放和掃視)這些圖像的圖像瀏覽系統(tǒng)。
先前的文檔訪問模型本質(zhì)上是串行的,這意味著信息對象的整體是以線性順序傳送的。相反,本模型是隨機訪問的,這意味著僅請求信息對象的所選部分,并且這些請求可按任何順序且在延長的時間段上,即在查看會話的過程中作出。計算機和存儲庫現(xiàn)在參與擴展的對話,從而使得用戶的“對話”與在顯示器上查看的文檔并行化。
為產(chǎn)生隨機訪問效果,方便(盡管并不是絕對必需)的是將每一細節(jié)水平細分成網(wǎng)格,使得網(wǎng)格正方形,即小塊(tiIe)成為基本傳送單元。每一小塊以像素為單位的大小可被保持為恒定大小或以下,使得每一遞增的細節(jié)水平包含大約前一細節(jié)水平的4倍的小塊。較小的小塊會出現(xiàn)在圖像的邊緣處,因為其尺寸可能并非正好是額定小塊大小的倍數(shù);同樣,在最低細節(jié)水平,整個圖像將小于單個額定小塊。所得的小塊化圖像金字塔在圖2中示出。注意,金字塔的“尖端”,即比例縮小的圖像小于單個小塊之處,看似圖1的未小塊化金字塔。JPEG2000圖像格式包括剛描述的用于表示小塊化的、多分辨率和隨機訪問圖像的所有特征。
迄今為止僅考慮了靜態(tài)圖像的情況,但是帶有應用程序?qū)S酶牡南嗤夹g可以應用于幾乎任何類型的可視文檔。這包括(但不限于)大文本、地圖或其它向量圖形、電子表格、視頻、以及諸如網(wǎng)頁等混合文檔。本文的討論迄今為止已經(jīng)隱含地考慮了僅供查看的應用程序,即其中只需定義對應于打開和繪圖的動作或方法。顯然其它方法也可能是合乎需要的,諸如由用于靜態(tài)圖像的畫圖程序?qū)崿F(xiàn)的編輯命令、由用于文本的文字處理程序?qū)崿F(xiàn)的編輯命令等。然而考慮編輯文本的問題諸如插入類型化輸入等普通的動作僅僅在與底層文檔有關的一定范圍的空間比例上相關。如果縮小程度太大以致于文本不再清晰,則交互式編輯也不再可行。也可能會爭論,如果放大成單個字母填滿了整個屏幕,交互式編輯也不再可行。因此,縮放用戶界面也可能將某些方法的動作限于其相關的細節(jié)水平。
當可視文檔沒有被內(nèi)部表示為圖像,而是被表示為更抽象的數(shù)據(jù)一諸如文本、電子表格條目或向量圖形時一有必要推廣在前一節(jié)中引入的小塊化概念。對于靜止圖像,一旦獲得即呈現(xiàn)小塊的過程是平凡的,因為信息(一旦經(jīng)解壓)恰好是小塊的逐個像素內(nèi)容。此外,速度瓶頸通常是壓縮數(shù)據(jù)向計算機的傳輸(例如,下載)。然而,在某些情況下,速度瓶頸在于小塊的呈現(xiàn);用于進行呈現(xiàn)的信息可能已經(jīng)在高速緩存中,或者可能非常緊湊,使得下載不再會導致延遲。因此,將響應于“小塊繪圖請求”的已完成的、完全繪出的小塊的產(chǎn)生稱為小塊呈現(xiàn),并且要理解這可能是較慢的過程。它是因為所需的數(shù)據(jù)非常大量且必須通過慢連接來下載而緩慢、還是因為呈現(xiàn)過程本身是計算密集型而緩慢是無關緊要的。
完整的縮放用戶界面以使得用戶能夠查看其子文檔通常在空間上不重疊的大型且可能動態(tài)的合成文檔的方式組合了這些概念。這些子文檔進而可包含(通常不重疊的)子-子文檔,依此類推。因此,文檔形成了樹,這是其中每一文檔具有指向子文檔,即孩子的集合的指針的結構,而每一子文檔都包含在父文檔的空間邊界內(nèi)。將每一這樣的子文檔稱為節(jié)點,這借用了用于樹的編程術語。盡管對所有節(jié)點以所有細節(jié)水平定義了繪圖方法,但是可以僅對某些節(jié)點定義對應于應用程序?qū)S霉δ艿钠渌椒?,且其動作可僅限于某些細節(jié)水平。因此,某些節(jié)點可以是可使用類似畫圖的命令來編輯的靜態(tài)圖像,而其它節(jié)點可以是可編輯文本,另一些節(jié)點可以是為查看和點擊所設計的網(wǎng)頁。所有這些都可在一公共的大空間環(huán)境一“超節(jié)點”一中共存,該超節(jié)點可通過縮放和掃視來導航。
對于實現(xiàn)良好的縮放用戶界面,有多個直接結果,包括
一它能夠瀏覽非常大的文檔而無需從存儲庫中整體地下載它們;由此即使文檔大于可用的短期存儲器,或文檔大小以其它方式受到限制,文檔也可無限制地查看。
一內(nèi)容僅在導航期間才按需下載,這導致對可用帶寬的最優(yōu)有效使用。
一縮放和掃視是空間上直觀的操作,從而允許以容易理解的方式組織大量信息。
一由于“屏幕空間”本質(zhì)上是不受限的,因此無需最小化窗口、使用多個桌面、或?qū)⒋翱陔[藏在彼此之后以一次在多個文檔或視圖上工作。相反。文檔可按需地排列,且用戶可縮小以查看所有文檔的概觀,或可在特定文檔上放大。這不排除重新排列這些文檔的位置(或甚至是比例)以允許其任何組合同時在屏幕上以有用的比例可見的可能性。也不必排除以更傳統(tǒng)的方法來組合縮放。
一由于縮放是導航的一個內(nèi)在方面,因此能以適當?shù)目臻g比例來查看任何種類的內(nèi)容。
一高分辨率顯示器不再意味著將文本和圖像收縮至小的(有時候是難以辨認的)大??;取決于縮放水平,它們要么允許一次性查看更多內(nèi)容,要么允許以正常大小和更高的保真度來查看內(nèi)容。
一弱視的人只需更進一步地放大就可像視力正常的人一樣容易地導航相同的內(nèi)容。
這些益處緊隨著對于連接到Web的普通計算機可用的信息量的爆炸之后變得特別有價值。十幾年前,ZUI允許人們查看的非常大的文檔的種類是非常少的,此外這些文檔會占據(jù)非常多的空間,使得很少有文檔適合對大多數(shù)計算機可用的存儲庫(例如,40MB硬盤)。然而,當今面臨的是非常不同的局勢服務器可容易地儲存大量文檔和文檔分層結構,并且使得該信息對連接到Web的任何客戶機可用。然而這些潛在大量的存儲庫和普通用戶之間的連接的帶寬遠低于到本地硬盤的連接的帶寬。這恰好是ZUI對于常規(guī)的圖形用戶界面具有最大優(yōu)勢的情形。
發(fā)明詳述
在下文中,使用兩個變量名f和g來指小塊相對于顯示器的采樣密度。該采樣密度或“相對細節(jié)水平”是取決于縮放的,它由f=(以小塊像素為單位的線性小塊大小)/(以屏幕像素為單位測量的屏幕上投影的小塊長度)給出。如果f=1,則小塊像素與屏幕像素為1∶1;如果f=10,則小塊中的信息比顯示器能夠示出的要詳細得多(10*10=100個小塊像素擬合在單個屏幕像素內(nèi)部);且如果f=0.1,則小塊相對于顯示器是粗略的(每一小塊像素必須被“拉伸”或內(nèi)插以覆蓋10*10=100個顯示器像素)。將寫作變量g的小塊化粒度定義為高LOD的線性小塊化網(wǎng)格大小與下一較低LOD的線性小塊化網(wǎng)格大小之比。在前一節(jié)中考慮的JPEG2000示例中,g=2從概念上而言,每一小塊在下一更高LOD上“分裂”成2×2=4個小塊。粒度2到目前為止是類似應用程序中最常見的,但是在本文中,g可以取其它值。
注意,迄今為止所描述的細節(jié)水平方案涉及按粒度g為因數(shù)分割的不同比例下的一組固定的、離散的LOD。在顯示器的任何區(qū)域上繪出的圖像因而通常是兩個細節(jié)水平之間的加權混和,其中一個細節(jié)水平比顯示器分辨率略微精細(f>1),而另一細節(jié)水平略微粗略(f<1) (盡管更一般而言,如果圖像區(qū)域是短暫的單個未采樣LOD,或者是兩個以上LOD之間的混和,則本發(fā)明也適用)。這一未經(jīng)修改的方案對于由諸如數(shù)碼照片或視頻等采樣圖像定義的內(nèi)容產(chǎn)生了視覺上引人注目的結果。然而,用戶與之交互的大多數(shù)內(nèi)容相反通常是向量地定義的;這包括文本以及線、矩形、圓以及其它向量圖元的組合。對于向量圖形元素特殊的是它們涉及數(shù)學上精確的邊緣;因此對單個顯示器像素的值的控制一般必須產(chǎn)生準確的結果。這對于諸如黑白像素的棋盤等數(shù)字填充圖案也是如此。這種可視內(nèi)容并不能通過迄今為止所描述的混和方法來很好地再現(xiàn)。所得的視覺偽像的示例在圖3中示出。這些偽像包括模糊、比例變化的模糊度中的不期望的變化、以及在縮放期間移動的Moiré圖案。所示的圖像都具有小的像素尺寸,且被放大以清楚地示出在該像素水平發(fā)生了什么。圖3(a)是純黑白(沒有混疊)地呈現(xiàn)的文本的一個示例;(b)是以混疊呈現(xiàn)的同一文本;(c)是間隔密集的線的圖案;(d)是交替的黑白像素的棋盤填充圖案。底行圖像示出對于頂行中的精確圖像的LOD混和效應。很清楚,(a)中混和文本的邊緣模糊要次于(b)中頂部圖像的像素級混疊的結果。另一方面,如果文本開始被適當混疊,則LOD混和將會使其進一步模糊,再次導致次最優(yōu)圖像。因此,(a)和(b)不產(chǎn)生糟糕的結果,但是很清楚在每一情況下精確的版本總是較好的。另兩個圖像產(chǎn)生更嚴重的錯誤,包括亂真的Moiré圖案、閃光、斑點和模糊。
本發(fā)明定義了一種用于帶有這種內(nèi)容的節(jié)點的程序性小塊繪圖方法,從而允許它們呈現(xiàn)精確地,即正好以f=1映射到顯示器像素的空間精確小塊。在縮放或掃視期間的每一次幀刷新時簡單地調(diào)用該方法一般都極慢;該精確繪圖方法可容易地取若干幀來執(zhí)行,且在某些情況下仍然慢得多。這并不是對于精確繪圖方法是特定的;“普通的”繪圖方法也可能較慢,尤其是當它可能涉及以低帶寬下載信息或者執(zhí)行擴展計算的時候。然而,“普通”繪圖方法的目標是在掃視和縮放的整個范圍上保持相關的小塊,從而使得可實現(xiàn)即使在呈現(xiàn)較慢且異步的情況下也允許平滑導航和適度圖像質(zhì)量降低的排隊和分辨率回落方案。相反,精確小塊的質(zhì)量是完美的,但是對于特定視圖是專用的。因此采用了一種混合方法,其中充分利用離散LOD表示的優(yōu)點來允許即使在不令人滿意的情況下(即,低帶寬,或更一般地,緩慢小塊繪圖方法)也進行響應性導航,同時為視覺準確度而使用精確繪圖方法。這是通過當用戶停頓時請求使用精確繪圖方法的精確小塊實現(xiàn)的;這些請求排隊在所有相關的固定細節(jié)水平之后。由此,精確小塊是顯示細化的最終階段。在精確小塊在用戶掃視或縮放時變得不可使用的意義上,它們是“拋棄物”,因為用戶不可能精確地掃視或縮放回到舊視圖。注意,不僅僅是縮放,掃視也會使精確小塊無效,因為對于小塊而言要使其精確,不僅有必要使比例f恰好為1;而且小塊像素還必須與顯示器像素精確地對齊。精確對齊因此會在掃視期間丟失,除非掃視是按照整數(shù)個顯示器像素來進行的。因此,掃視和縮放丟棄任何高速緩存的精確小塊;僅當視圖達到停頓時才將對于新的精確小塊的請求排隊。當精確小塊變得可用時,它們在底層的“非精確”小塊“之上”(即,使其模糊)被混和到顯示中?;旌碗S時間推移而發(fā)生,從而避免了銳度的突然變化。
本發(fā)明的總體效果是當在大量文本或其它向量圖形上掃視或縮放時導航性能保持不變;在這一導航期間,所呈現(xiàn)的圖像較不理想,但是由于圖像正在運動中,因此在大多數(shù)情況下劣化并不是注意得到的。當達到停頓時,請求精確小塊并在它們到達時從接近顯示器的中心開始并向外擴展將它們凹入地(foveally)混和,從而導致圖像的銳化??臻g和時間混和一般會使得這一銳化的進展難以用肉眼來檢測,但是所得的圖像質(zhì)量是完美的,即不受允許基于離散細節(jié)水平之間的連續(xù)內(nèi)插的ZUI體系結構操作的混和和模糊操作的影響。
標題用于在縮放用戶界面中進行凹入的、無縫的漸進呈現(xiàn)的系統(tǒng)和方法
發(fā)明人BLAISE HILARY AGUERA Y ARCAS
發(fā)明領域
本發(fā)明一般涉及用于計算機的縮放用戶界面(ZUI)。更具體而言,本發(fā)明是一種用于在縮放環(huán)境中漸進地呈現(xiàn)任意大或復雜的可視內(nèi)容,同時維持良好的用戶響應性和高幀速率的系統(tǒng)和方法。盡管在某些情況下必須臨時降低呈現(xiàn)質(zhì)量以滿足這些目標,但是本發(fā)明很大程度上通過充分利用人類視覺系統(tǒng)的公知特性來掩蓋這一降低。
背景技術:
大多數(shù)當前的圖形計算機用戶界面(GUI)是使用固定空間比例的可視組件來設計的。然而,從計算機圖形領域的誕生可以認識到,可視組件可以用使得它們在顯示器上不具有固定空間比例,而是可被放大和縮小的方式來表示和處理。對可縮放組件的期望在許多應用領域中都是明顯的;此處僅舉幾個例子查看地圖、瀏覽諸如報紙等大型的不同種類文本布局、查看數(shù)碼照片的相冊、以及用大數(shù)據(jù)集的可視化來工作。即使在查看諸如電子表格和報表等普通文檔時,能夠粗看一下文檔概述,然后在感興趣的區(qū)域上放大通常也是有用的。許多現(xiàn)代的計算機應用程序包括可縮放組件,諸如Microsoft_Word_和其它Office_產(chǎn)品(View(視圖)菜單下的Zoom(縮放))、Adobe_Photoshop_、Adobe_Acrobat_、QuarkXPress_等等。在大多數(shù)情況下,這些應用程序允許對文檔進行放大和縮小,但是無需對應用程序本身的可視組件進行放大和縮小。此外,縮放一般是用戶與軟件的交互的一個外圍方面,且縮放設置僅偶爾被更改。盡管對文檔的連續(xù)掃視是標準(即,使用滾動條或光標來將所查看的文檔向左、右、上或下平移),但連續(xù)縮放的能力幾乎總是不存在。在一種更一般化的縮放框架中,可縮放任何種類的可視內(nèi)容,且縮放幾乎與掃視一樣是用戶體驗的一部分。遵循這些思路的概念使得甚至在早至1960年代1的
————————
1例如,Stanley Kubrick在2001年的A Space Odyssey,Turner Entertainment公司,Time Warner公司的子公司(1968)。
電影中已經(jīng)出現(xiàn)了未來派的計算機用戶界面;而近來的電影延續(xù)了這一趨勢2。從1970年代開始到現(xiàn)在3,構思和/或開發(fā)了多種連續(xù)縮放界面。在1991年,這些概念中的某一些在紐約大學的Kenneth Perlin和Jacob Schwarts的美國專利5,341,466(“Fractal Computer User Centerface with Zooming Capability”)中定形。由Perlin和同事Pad開發(fā)的原型縮放用戶界面Pad及其后繼產(chǎn)品Pad++自那以來經(jīng)歷了一些開發(fā)4。然而,就發(fā)明人所知,部分地由于多種技術不足,在大量市場上尚未出現(xiàn)基于全ZUI(縮放用戶界面)的主要應用程序,這些技術不足中的一個在本發(fā)明中得以解決。
發(fā)明概述
本發(fā)明具體化了新開發(fā)的縮放用戶界面框架(下文按其運作名稱稱為Voss)作為基礎的新概念。Voss由于其軟件體系結構中有多種革新而比其前驅(qū)產(chǎn)品更強大、更具響應性、視覺上更引人注目且更通用。本專利特別地是關于針對對象小塊化、細節(jié)水平混和和呈現(xiàn)排隊的Voss方法。
多分辨率可視對象通常是以不同的分辨率或細節(jié)水平(圖像金字塔)從一組離散的經(jīng)采樣圖像來呈現(xiàn)的。在諸如3D游戲等使用了連續(xù)縮放的某些技術上下文中,將期望的細節(jié)水平夾在中間的兩個相鄰細節(jié)水平被混合在一起以呈現(xiàn)每一幀,因為情況通常并不是期望的細節(jié)水平正是由該離散組所表示的那些細節(jié)水平之一。這些技術有時被稱為三線性過濾或MIP映射。在大多數(shù)情況下,經(jīng)MIP映射的圖像金字塔是預先形成的,并在縮放操作期間被連續(xù)地保持在短期存儲器(即,RAM)中;由此,任何所需的細節(jié)水平總是可用的。在某些高級3D呈現(xiàn)情形中,圖像金字塔本身必須在動畫循環(huán)中呈現(xiàn);然而,在這些情況下,必須仔細地控制該第一遍呈現(xiàn)的復雜度,使得總體幀速率不會受損害。
在本文中,理想的是能夠通過在不限量的任意視覺復雜度的內(nèi)容上縮放和掃視來連續(xù)地導航。該內(nèi)容可能不會快速呈現(xiàn),且此外它可能不是立即可用的,而是
———————
2例如,Steven Spielberg的MinorityReport,20thCentury Fox and Dreamworks Pictures(2002)。
3早先出現(xiàn)在W.C.Donelson的SpatialManagement ofInformation,SIGGRAPH的Computer Graphics會議論文集(1978),ACM出版社第203-9頁中。近來的一個示例是2002年夏天推出的Zanvas.com。
4Perlin在http://mrI.nyu.edu/projects/zui/上描述了后繼開發(fā)。需要通過低帶寬連接從遠程位置下載。由此,以與期望的顯示幀速率(第二遍)可比的幀速率呈現(xiàn)細節(jié)水平(第一遍)并非總是可行的。此外,一般對所有內(nèi)容將預先形成的圖像金字塔保持在存儲器中也是不可行的;圖像金字塔必須按需呈現(xiàn)或重新呈現(xiàn),并且該呈現(xiàn)與期望幀速率相比可能是較慢的。
本發(fā)明涉及用于區(qū)分與當前顯示有關的圖像金字塔的各部分的(可能較慢的)呈現(xiàn)的優(yōu)先級的策略,以及用于基于部分信息,即僅圖像金字塔的當前可用子集來向用戶給出所呈現(xiàn)內(nèi)容的平滑的、連續(xù)的感覺的策略。這些策略組合起來接近最優(yōu)地利用了可用的計算能力或帶寬,同時對因不完整圖像金字塔而引起的任何圖像劣化作可能最大程度的掩蓋。充分利用了空間和時間混和來避免圖像銳度的不連續(xù)或突然變化。
本發(fā)明的一個目的是允許在縮放用戶界面中呈現(xiàn)經(jīng)采樣的(即,“像素化的”)可視內(nèi)容,而不會相對于常規(guī)的三線性內(nèi)插降低最終圖像質(zhì)量。
本發(fā)明的另一目的是允許在縮放用戶界面中查看任意大或復雜的可視內(nèi)容。
本發(fā)明的又一目的是即使在任意復雜的可視內(nèi)容最終是使用非常大量的數(shù)據(jù)來表示的情況下,以及即使這些數(shù)據(jù)儲存在遠程位置且通過低帶寬網(wǎng)絡來共享的情況下,允許接近即時地查看該內(nèi)容。
本發(fā)明的再一目的是允許用戶對可視內(nèi)容進行任意程度的放大的同時維持交互式幀速率。
本發(fā)明的還有一個目的是允許用戶在保存內(nèi)容的總體外觀且維持交互式幀速率的過程中進行任意程度的縮小以獲得復雜可視內(nèi)容的概觀。
本發(fā)明的另有一個目的是最小化交互期間用戶對于細節(jié)水平或呈現(xiàn)質(zhì)量之間的轉(zhuǎn)變的感知。
本發(fā)明的再有一個目的是允許在詳細可視內(nèi)容由于呈現(xiàn)它所需的信息不可用或由于呈現(xiàn)仍在進行中而尚不可用時通過連續(xù)地模糊來適度降低圖像質(zhì)量。
本發(fā)明的一個進一步目的是在可視內(nèi)容的某些部分的呈現(xiàn)首先變得可用時通過適度銳化來適度提高圖像質(zhì)量。
本發(fā)明的這些和其它目的在本領域的技術人員閱讀了以下說明書之后將變得顯而易見。
現(xiàn)有技術多分辨率成像和縮放用戶界面
從技術觀點來看,縮放用戶界面是作為視覺計算的根本的普通概念的推廣,從而允許克服經(jīng)典用戶/計算機/文檔交互模型中固有的多種限制。一個這樣的限制是對于可從計算機應用程序“打開”的文檔的大小的限制,因為傳統(tǒng)上整個這樣的文檔必須在查看或編輯能夠開始之前被“加載”。即使對特定計算機可用的短期存儲器(通常是ROM)的量較大,但是仍會感受到這一限制,因為所有文檔信息在打開期間必須從某一存儲庫(例如,從硬盤或通過網(wǎng)絡)傳送到短期存儲器;由此,有限帶寬可使得發(fā)出“打開”命令以及能夠開始查看或編輯之間的延遲變得不可接受地長。
靜態(tài)數(shù)字圖像既提供了這一問題的一個極佳示例,又是對計算機科學團體如何在克服該問題時已超越用于可視計算的標準模型的說明。以下表1示出了對于典型壓縮大小的各種不同圖像類型,從最小的有用圖像(縮略圖,有時用作圖標)到當今常用的最大圖像的在不同帶寬下的下載時間。打陰影的框表示對其難以或不可能按特定的連接速度進行交互式瀏覽的圖像大小。
表1
*注意,這些數(shù)字表示中等質(zhì)量的實際經(jīng)壓縮大小而非原始圖像數(shù)據(jù)。具體地,對高達40MB的大小假定1位/像素,而對更大的圖像假定0.25位/像素,這一般更可壓縮。
**本地無線網(wǎng)絡可以快得多;該數(shù)字指的是常用于無線PDA的類型的無線廣域網(wǎng)。
目前Web上的幾乎每一圖像都在100K(0.1MB)以下,因為大多數(shù)用戶以DSL或更低的帶寬連接到Web,且較大的圖像會花費太長時間來下載。即使是在本地設置中,在典型的用戶硬盤驅(qū)動器上,一般也不會遇到大于500K(0.5MB)的圖像。更大(即,更詳細)的圖像通常有用是用以下事實來證明的普通家庭中帶插圖的書本、地圖冊、地圖、報紙和藝術作品包括大量圖像,這些圖像如果以全分辨率數(shù)字化則大小很容易達到幾十兆字節(jié)。
若干年前,缺少大圖像很大程度是由于存儲庫中存儲空間的短缺,但是硬盤驅(qū)動器技術的進步、刻錄CDROM的方便以及大型聯(lián)網(wǎng)服務器的日益普及已使得存儲庫空間不再是限制性因素?,F(xiàn)在的主要瓶頸是帶寬,然后是短期存儲器(即,RAM)空間。該問題實際上比上表所暗示的惡劣得多,因為在大多數(shù)情況下,用戶不僅僅對查看單個圖像感興趣,而且對查看整個圖像集合感興趣;如果圖像大于某一適度大小,則等待一個接一個地下載圖像變得不切實際。
設計了諸如JPEG20005等現(xiàn)代圖像壓縮標準恰好來解決該問題。并非以線性方式(即,通常從上到下且從左到右在像素上經(jīng)過一遍)儲存圖像內(nèi)容,而是使圖像基于多分辨率分解。圖像首先被調(diào)整大小成一分辨率比例層次,這通常以2為因數(shù)來進行;例如,512×512像素的圖像被調(diào)整大小成256×256像素、128×128、64×64、32×32、16×16、8×8、4×4、2×2以及1×1。很明顯,精細的細節(jié)只能以更高分辨率來捕捉,而寬的筆劃則使用少得多的信息以低分辨率來捕捉。這就是不同大小的圖像通常被稱為細節(jié)水平或簡稱LOD的原因。乍看可能會看到對于該系列不同大小圖像的存儲要求好像可能比對于單獨的高分辨率圖像的要求更高,但是實際上情況并非如此;低分辨率圖像用作下一更高分辨率的“預測器”。這允許非常高效地對整個圖像層次編碼一實際上比單獨使用高分辨率圖像的非分層表示可行的更高效。
如果想像按照逐漸增大的大小的順序在存儲庫中儲存圖像的多分辨率版本的序列,則自然的結果是當經(jīng)由數(shù)據(jù)鏈路將圖像傳送到高速緩存時,用戶可非常迅速地獲得整個圖像的低分辨率概觀;當傳送進展時越來越精細的細節(jié)然后將“填入”。這被稱為“遞增”或“漸進”傳送。當被正確實現(xiàn)時,它具有根本上所有圖像一無論有多大一都可幾乎立即在空間上整體查看(盡管并不是以其全細節(jié)來查看),即使與存儲庫的連接的帶寬十分普通。盡管以全細節(jié)下載圖像所需的最終時間量保持相同,但是發(fā)送該信息的順序已改變,使得圖像的大比例特征被首先發(fā)送;這比以
——————————
5 http://www.jpeg.org/JPEG2000.html
全細節(jié)且按“讀取順序”從上到下和從左到右地發(fā)送像素信息對用戶更有幫助。
這樣提前隱藏是對“打開”不適合前一節(jié)中所描述的經(jīng)典應用程序模型的圖像而言的新概念。現(xiàn)在正在想像用戶能夠如同下載時那樣查看圖像,這是因在下載開始之后不久且可能在下載完成之前很久圖像的寬筆劃即可用的這一事實而有用的概念。因此,應用程序強迫用戶等待下載完成已經(jīng)毫無意義;應用程序應當改為立即顯示文檔中它能顯示的部分,并且在它繼續(xù)“在后臺”下載細節(jié)時不導致延遲或不必要地中斷其與用戶的交互。這要求應用程序一次性地完成一項以上任務,這被稱為多線程化。注意,大多數(shù)現(xiàn)代web瀏覽器在略微不同的容量中使用多線程化以便在顯示網(wǎng)頁的文本布局并保持對用戶響應的同時下載網(wǎng)頁上的圖像。在這一情況下,可以將嵌入的圖像本身視為是額外的細節(jié)水平,這增強了由網(wǎng)頁的基本要素文本布局所構成的基本細節(jié)水平。這一類推在以后將會證明是重要的。
很清楚,圖像文檔的分層圖像表示和漸進傳送是優(yōu)于線性表示和傳送的進步。然而,當圖像在其最高細節(jié)水平具有比用戶的顯示器能一次性示出的更多信息(即,更多像素)時,進一步的進展是重要的。采用當前的顯示技術,這始終是對于表1中最底下四種圖像的情況,但是較小的顯示器(諸如PDA屏幕)可能無法示出甚至最底下八種圖像。這使得縮放特征對于大圖像是強制性的如果無法放大以發(fā)現(xiàn)額外的細節(jié),則查看比顯示器更大的圖像是無用的。
當大圖像開始下載時,假定用戶正在完整地查看該圖像。第一細節(jié)水平通常相當粗略,使得所顯示的圖像會取決于在大顯示區(qū)域上擴展少量可用信息所使用的“內(nèi)插”的種類顯現(xiàn)為塊狀或模糊。然后圖像會逐漸細化,但是在某一點處它會使顯示對信息“飽和”,從而使得所下載的任何額外的細節(jié)都沒有任何可視效果。因此在這一點之后繼續(xù)下載完全沒有任何意義。然而,假定用戶決定放大以更詳細地查看一特定區(qū)域,從而使得圖像的有效投影大小實質(zhì)上比物理屏幕更大。然后,在前一節(jié)描述的下載模型中,將需要以遞增的順序下載更高的細節(jié)水平。難點是每一細節(jié)水平都包含前一細節(jié)水平約4倍的信息;當用戶放大時,下載過程將不可避免地滯后。更糟的是,下載的大多數(shù)信息都被浪費,因為它是由查看區(qū)域之外的高分辨率細節(jié)構成的。很清楚,所需要的是僅下載某一細節(jié)水平的所選部分的能力一即僅可視的細節(jié)應被下載。有了這一改變,可制造不僅能夠查看任意大小的圖像,而且還能以任何細節(jié)水平有效地導航(即,縮放和掃視)這些圖像的圖像瀏覽系統(tǒng)。
先前的文檔訪問模型本質(zhì)上是串行的,這意味著信息對象的整體是以線性順序傳送的。相反,本模型是隨機訪問的,這意味著僅請求信息對象的所選部分,并且這些請求可按任何順序且在延長的時間段上,即在查看會話的過程中作出。計算機和存儲庫現(xiàn)在參與擴展的對話,從而使得用戶的“對話”與在顯示器上查看的文檔并行化。
為產(chǎn)生隨機訪問效果,方便(盡管并不是絕對必需)的是將每一細節(jié)水平細分成網(wǎng)格,使得網(wǎng)格正方形,即小塊(tile)成為基本傳送單元。每一小塊以像素為單位的大小可被保持為恒定大小或以下,使得每一遞增的細節(jié)水平包含大約前一細節(jié)水平的4倍的小塊。較小的小塊會出現(xiàn)在圖像的邊緣處,因為其尺寸可能并非正好是額定小塊大小的倍數(shù);同樣,在最低細節(jié)水平,整個圖像將小于單個額定小塊。所得的小塊化圖像金字塔在圖2中示出。注意,金字塔的“尖端”,即比例縮小的圖像小于單個小塊之處,看似圖1的未小塊化金字塔。JPEG2000圖像格式包括剛描述的用于表示小塊化的、多分辨率和隨機訪問圖像的所有特征。
迄今為止僅考慮了靜態(tài)圖像的情況,但是帶有應用程序?qū)S酶牡南嗤夹g可以應用于幾乎任何類型的可視文檔。這包括(但不限于)大文本、地圖或其它向量圖形、電子表格、視頻、以及諸如網(wǎng)頁等混合文檔。本文的討論迄今為止已經(jīng)隱含地考慮了僅供查看的應用程序,即其中只需定義對應于打開和繪圖的動作或方法。顯然其它方法也可能是合乎需要的,諸如由用于靜態(tài)圖像的畫圖程序?qū)崿F(xiàn)的編輯命令、由用于文本的文字處理程序?qū)崿F(xiàn)的編輯命令等。然而考慮編輯文本的問題諸如插入類型化輸入等普通的動作僅僅在與底層文檔有關的一定范圍的空間比例上相關。如果縮小程度太大以致于文本不再清晰,則交互式編輯也不再可行。也可能會爭論,如果放大成單個字母填滿了整個屏幕,交互式編輯也不再可行。因此,縮放用戶界面也可能將某些方法的動作限于其相關的細節(jié)水平。
當可視文檔沒有被內(nèi)部表示為圖像,而是被表示為更抽象的數(shù)據(jù)一諸如文本、電子表格條目或向量圖形時一有必要推廣在前一節(jié)中引入的小塊化概念。對于靜止圖像,一旦獲得即呈現(xiàn)小塊的過程是平凡的,因為信息(一旦經(jīng)解壓)恰好是小塊的逐個像素內(nèi)容。此外,速度瓶頸通常是壓縮數(shù)據(jù)向計算機的傳輸(例如,下載)。然而,在某些情況下,速度瓶頸在于小塊的呈現(xiàn);用于進行呈現(xiàn)的信息可能已經(jīng)在高速緩存中,或者可能非常緊湊,使得下載不再會導致延遲。因此,將響應于“小塊繪圖請求”的已完成的、完全繪出的小塊的產(chǎn)生稱為小塊呈現(xiàn),并且要理解這可能是較慢的過程。它是因為所需的數(shù)據(jù)非常大量且必須通過慢連接來下載而緩慢、還是因為呈現(xiàn)過程本身是計算密集型而緩慢是無關緊要的。
完整的縮放用戶界面以使得用戶能夠查看其子文檔通常在空間上不重疊的大型且可能動態(tài)的合成文檔的方式組合了這些概念。這些子文檔進而可包含(通常不重疊的)子-子文檔,依此類推。因此,文檔形成了樹,這是其中每一文檔具有指向子文檔,即孩子的集合的指針的結構,而每一子文檔都包含在父文檔的空間邊界內(nèi)。將每一這樣的子文檔稱為節(jié)點,這借用了用于樹的編程術語。盡管對所有節(jié)點以所有細節(jié)水平定義了繪圖方法,但是可以僅對某些節(jié)點定義對應于應用程序?qū)S霉δ艿钠渌椒?,且其動作可僅限于某些細節(jié)水平。因此,某些節(jié)點可以是可使用類似畫圖的命令來編輯的靜態(tài)圖像,而其它節(jié)點可以是可編輯文本,另一些節(jié)點可以是為查看和點擊所設計的網(wǎng)頁。所有這些都可在一公共的大空間環(huán)境一“超節(jié)點”一中共存,該超節(jié)點可通過縮放和掃視來導航。
對于實現(xiàn)良好的縮放用戶界面,有多個直接結果,包括
一它能夠瀏覽非常大的文檔而無需從存儲庫中整體地下載它們;由此即使文檔大于可用的短期存儲器,或文檔大小以其它方式受到限制,文檔也可無限制地查看。
一內(nèi)容僅在導航期間才按需下載,這導致對可用帶寬的最優(yōu)有效使用。
一縮放和掃視是空間上直觀的操作,從而允許以容易理解的方式組織大量信息。
一由于“屏幕空間”本質(zhì)上是不受限的,因此無需最小化窗口、使用多個桌面、或?qū)⒋翱陔[藏在彼此之后以一次在多個文檔或視圖上工作。相反。文檔可按需地排列,且用戶可縮小以查看所有文檔的概觀,或可在特定文檔上放大。這不排除重新排列這些文檔的位置(或甚至是比例)以允許其任何組合同時在屏幕上以有用的比例可見的可能性。也不必排除以更傳統(tǒng)的方法來組合縮放。
一由于縮放是導航的一個內(nèi)在方面,因此能以適當?shù)目臻g比例來查看任何種類的內(nèi)容。
一高分辨率顯示器不再意味著將文本和圖像收縮至小的(有時候是難以辨認的)大?。蝗Q于縮放水平,它們要么允許一次性查看更多內(nèi)容,要么允許以正常大小和更高的保真度來查看內(nèi)容。
一弱視的人只需更進一步地放大就可像視力正常的人一樣容易地導航相同的內(nèi)容。
這些益處緊隨著對于連接到Web的普通計算機可用的信息量的爆炸之后變得特別有價值。十幾年前,ZUI允許人們查看的非常大的文檔的種類是非常少的,此外這些文檔會占據(jù)非常多的空間,使得很少有文檔適合對大多數(shù)計算機可用的存儲庫(例如,40MB硬盤)。然而,當今面臨的是非常不同的局勢服務器可容易地儲存大量文檔和文檔分層結構,并且使得該信息對連接到Web的任何客戶機可用。然而這些潛在大量的存儲庫和普通用戶之間的連接的帶寬遠低于到本地硬盤的連接的帶寬。這恰好是ZUI對于常規(guī)的圖形用戶界面具有最大優(yōu)勢的情形。
發(fā)明詳述
對于節(jié)點在某一期望分辨率下的特定視圖,存在某一組特定LOD的小塊,該組小塊需要被繪出以使呈現(xiàn)對每一屏幕像素包括至少一個樣本。注意,視圖正常地不會精確地落在節(jié)點的LOD之一的分辨率上,而是在兩個LOD之間的中間分辨率上。因此,理想的是在縮放環(huán)境中,客戶機生成這些LOD上—恰好在實際分辨率之下和恰好在實際分辨率之上一的可視小塊組,并使用某種內(nèi)插來基于該信息在顯示器上呈現(xiàn)像素。最常見的情形是空間上和細節(jié)水平之間的線性內(nèi)插;在圖形學文獻中,這通常被稱為三線性內(nèi)插。通常在3D圖形體系結構中使用密切相關的技術來用于紋理化6。
不幸的是,下載(或用程序呈現(xiàn))小塊通常是很慢的,尤其是在快速導航期間,并非所有必需的小塊在所有時刻都可用。本專利中的革新因而集中于用于在小塊下載或創(chuàng)建慢速且異步地進行的環(huán)境中向查看者呈現(xiàn)逼近理想圖像的空間和時間連續(xù)且相干的圖像的策略的組合。
在下文中,使用兩個變量名f和g來指小塊相對于顯示器的采樣密度,這在#1中定義。將寫作變量g的小塊粒度被定義為某一LOD的線性小塊化網(wǎng)格大小與下一更低LOD的線性小塊化網(wǎng)格大小之比。這一般被假定為對于給定節(jié)點在不同細節(jié)水平上恒定,盡管此處所提出的革新中沒有一個是依賴于該常量g的。在前一節(jié)中考慮的JPEG2000示例中,g=2;概念上,每一小塊在下一更高LOD上“分裂”成2×2=4個小塊。粒度2目前為止是類似應用程序中最常見的,但是在本文中,g可以取其它值。
1.細節(jié)水平小塊請求排隊。首先介紹一種用于將允許客戶機根據(jù)光學儀器類
—————————————
6S.L.Tanimoto和T.Pavlidis,Ahierarchical data structure for ptcture processtng, Computer Graphics andImage Processing第4卷,第104-119頁(1975);Lance Williams,Pyramidal Parametrics,ACM SIGGRAPH會議論文集(1982)。
推來使合成圖像逐漸“聚焦”的小塊請求排隊的系統(tǒng)和方法。
面對到包含分層小塊化節(jié)點的信息存儲庫的錯誤的、可能低帶寬的連接的問題,縮放用戶界面必須解決如何在導航期間請求小塊的問題。在許多情形中,假定所有這些請求都以及時的方式來滿足,或甚至它們將在信息相關的時間段期間(即,在用戶在別處進行縮放或掃視之前)將全部得到滿足是不切實際的。因此,理想的是智能地區(qū)分小塊請求的優(yōu)先級。
小塊請求排隊的“最外層”規(guī)則是相對于顯示器遞增的細節(jié)水平。該“相對細節(jié)水平”是取決于縮放的,它由數(shù)字f=(以小塊像素為單位的線性小塊大小)/(以屏幕像素為單位測量的屏幕上投影的小塊長度)給出。如果f=1,則小塊像素與屏幕像素為1∶1;如果f=10,則小塊中的信息要比顯示器能夠示出的詳細得多(10*10=100個小塊像素擬合在單個屏幕像素內(nèi));而如果f=0.1,則小塊相對于顯示器較粗略(每一小塊像素必須被“拉伸”或內(nèi)插以覆蓋10*10=100個顯示器像素)。該規(guī)則確保如果顯示器的一個區(qū)域相對于顯示器的剩余部分是采樣不足的(即,僅被粗略地定義),則客戶機的第一優(yōu)先級將是填滿該“分辨率洞”。如果洞中缺少一個以上細節(jié)水平,則對f<1的所有細節(jié)水平的請求加上對下一較高細節(jié)水平(以允許LOD混和一參見#5)的請求以遞增的順序排隊。乍看之下,可能會假定這引入了不必要的額外開銷,因為嚴格地只需這些細節(jié)水平中最精細的一個來呈現(xiàn)當前視圖;較粗略的細節(jié)水平是冗余的,因為它們定義了顯示器上的較低分辨率圖像。然而,這些較粗略的細節(jié)覆蓋了較大的區(qū)域一一般是比顯示器要大得多的區(qū)域。對任何節(jié)點的最粗略的細節(jié)水平實際上僅包括構造的單個小塊,因此呈現(xiàn)節(jié)點的任何視圖的客戶機將總是首先將“最外面的”小塊排隊。
這是查看健壯性的重要一點。健壯性意味著客戶機永遠不會對于響應于用戶的掃視和縮放要顯示什么而“感到困惑”,即使在有大量積壓的小塊請求等待滿足的情況下??蛻魴C僅僅顯示對顯示器上的每一區(qū)域可用的最佳(即,最高分辨率)圖像。在最壞情況下,這將是最外面的小塊,即關于節(jié)點所請求的第一個小塊。因此,節(jié)點的每一空間部分可以總是單獨基于第一個小塊請求來呈現(xiàn);隨后后續(xù)的小塊請求可被視為是遞增細化。
退回到較低分辨率小塊造成了模糊圖像的印象;因此總體效果是顯示器在可調(diào)整大小的掃視或縮放之后會顯現(xiàn)為模糊的。然后,當小塊請求得到滿足時,圖像銳化。
一個簡單的計算示出通過請求“冗余的”較低分辨率小塊而造成的額外開銷實際上是微小的一特別地,它是為使節(jié)點圖像從頭開始在每一處都良好定義的健壯性而付出的較小代價。
2.凹入小塊請求排隊。在相對細節(jié)水平內(nèi),小塊請求通過遞增到屏幕中心的距離來排隊,如圖3所示。該技術受到了人類眼睛的啟發(fā),人類眼睛具有專門用于高分辨率的中心區(qū)一視網(wǎng)膜中央凹(fovea)。由于縮放通常與對顯示器中心區(qū)的興趣相關聯(lián),因此凹入小塊請求排隊通常反映了用戶在放大期間對于可視信息的隱含優(yōu)先級區(qū)分。此外,由于與邊緣相比用戶的眼睛一般花費更多的時間來看靠近顯示器中心的區(qū)域,因此顯示器邊緣處的殘留模糊比靠近中心處的模糊更不引人注意。
通過使用凹入小塊請求順序進行放大而產(chǎn)生的靠近顯示器中心處的銳度的瞬時相對遞增也反映了縮小的自然結果一見圖4。該圖示出了兩個交替的“導航路徑”在頂行中,用戶在查看占據(jù)大約2/3的顯示器的單個文檔(或節(jié)點)時保持靜止,假定該文檔能以非常高的分辨率來顯示。最初,節(jié)點內(nèi)容由單個低分辨率小塊來表示;然后下一LOD的小塊變得可用,從而使得節(jié)點內(nèi)容以具有4個(=2x2)小塊的兩倍分辨率可見;之后是4×4=16以及8×8=64個小塊的版本的分辨率。在第二行中,可跟蹤如果用戶在顯示于頂行中的圖像被完全細化之前要對打陰影的正方形進行放大時發(fā)生的情形。較高細節(jié)水平的小塊再一次被排隊,但是在這一情況下,僅那些部分或完全可見的小塊才被排隊。細化進展到與頂行的細化可比(按照顯示器上可見小塊的數(shù)目)的點。第三行示出如果用戶隨后再次縮小則有什么變得可用以及如何填充丟失的細節(jié)。盡管示出了所有的細節(jié)水平,但要注意,實際上非常精細的水平很可能在底行中被省略不進行顯示,因為它們表示比顯示器能夠傳達的更精細的細節(jié)。
注意,放大一般使顯示器中心以比外圍更詳細的小塊來填充。因此,這一小塊請求排序在所有導航期間一致地對顯示器中心區(qū)域的銳度區(qū)分優(yōu)先級。
3.時間LOD混和。如果沒有進一步的細化,則當下載或構造當前顯示所需的小塊且首次繪出該小塊時,它將立即遮擋假定表示同一內(nèi)容的底層的較粗略小塊的一部分;用戶體驗到這一轉(zhuǎn)變是顯示器某一區(qū)域中模糊度的突然變化。這一突然轉(zhuǎn)變是不悅目的,且不必要地將用戶的注意力吸引到軟件實現(xiàn)的細節(jié)上。本發(fā)明對ZUI設計的一般方法是為用戶創(chuàng)建無縫的視覺體驗,該體驗不會將注意力吸引到應當保持“在遮蓋之下”的小塊或軟件的其它方面的存在。因此,當小塊首先變得可用時,它們不是被立即顯示,而是在多個幀上混和一通常在大致1秒的幀上摻和。該混和函數(shù)可以是線性的(即,新小塊的不透明度是自從小塊變得可用以來的時間的線性函數(shù),使得在固定的混和間隔一半處新小塊是50%透明的)、指數(shù)的、或遵循任何其它內(nèi)插函數(shù)。在指數(shù)混和中,每一小的恒定時間間隔對應于不透明度中的恒定百分比變化;例如,新小塊可以在每一幀處變得20%更不透明,這導致連續(xù)幀上的不透明度序列20%、36%、49%、59%、67%、74%、79%、83%、87%、89%、91%、93%等。在數(shù)學上,指數(shù)從不達到100%,但是實際上,不透明度在很短的間隔之后變得無法與100%區(qū)分。指數(shù)混和具有不透明度的最大增加出現(xiàn)在靠近混和的開始處的優(yōu)點,這使得新信息迅速對用戶可見,同時仍保持了可接受的時間連續(xù)性。在參考實現(xiàn)中,所造成的假象是當必要信息變得可用時顯示器的區(qū)域平滑地聚焦。
4.連續(xù)LOD。在小塊下載或創(chuàng)建滯后于用戶導航的情形中,顯示器的相鄰區(qū)域可具有不同的細節(jié)水平。盡管先前的革新(#3)解決了細節(jié)水平的時間不連續(xù)性問題,但是需要單獨的革新來解決細節(jié)水平的空間不連續(xù)性問題。如果不加以糾正,則這些空間不連續(xù)性如圖像中的縫一樣對用戶是可見的,且可視內(nèi)容更尖銳地繪制到縫的一側(cè)。通過允許每一小塊的不透明度在小塊區(qū)域上可變來解決這一問題;具體地,如果小塊邊緣毗鄰顯示器上具有較低的相對細節(jié)水平的區(qū)域,則使該不透明度在該邊緣上變?yōu)?。在某些情況下同樣重要的是如果小塊的各個角接觸到較低的相對細節(jié)水平的區(qū)域,則使得該各個角上的不透明度變?yōu)?。
圖5示出了對于如何可將每一小塊分解成矩形和三角形,稱為小塊碎片,使得不透明度在每一小塊碎片上連續(xù)變化的最簡單的參考實現(xiàn)。由正方形aceg定界的小塊X在左、右、上和下方分別具有相鄰小塊L、R、T和B,每一小塊共享一邊緣。它也具有共享單個角的鄰居TL、TR、BL和BR。假定小塊X存在。則其“內(nèi)部正方形”iii是完全不透明的。
(注意,重復的小寫字母表示相同的頂點不透明度值。)然而,環(huán)繞的矩形框的不透明度是由相鄰小塊是否存在(且完全不透明)來確定的。因此,如果小塊TL不存在,則點g將是完全透明的;如果L不存在,則點h將是完全透明的,等等。將小塊的邊界區(qū)(在iiii外部的X)稱為混和邊蓋(blending flap)。
圖6示出了用于在碎片上內(nèi)插不透明度的參考方法。部分(a)示出了恒定的不透明度矩形。部分(b)是其中兩條相對邊緣的不透明度不同的矩形;因此內(nèi)部的不透明度簡單地是基于每一內(nèi)部點到兩邊緣的最短距離的線性內(nèi)插。部分(c)示出用于在所有三個角abc的不透明度不相同時在三角形上內(nèi)插不透明度的雙線性方法。在概念上,每一內(nèi)部點p如圖所示將三角形細分成三個子三角形,它們分別具有面積A、B和C。p處的不透明度因此簡單地是角上的不透明度的加權和,其中權重是三個子三角形的分數(shù)面積(即,A、B和C除以總?cè)切蚊娣eA+B+C)。可以容易地驗證該公式在p移至頂點時同樣給出了頂點處的不透明度,且如果p在三角形邊上,則其不透明度是兩個相連頂點之間的線性內(nèi)插。
由于碎片內(nèi)的不透明度完全由其頂點處的不透明度來決定,且相鄰的碎片總是共享頂點(即,沒有T聯(lián)結),因此該方法確保不透明度在整個小塊化表面上平滑地變化。與#3的時間LOD混和相組合,該策略使得對用戶可見的相對細節(jié)水平在顯示面積和時間上都是連續(xù)函數(shù)。因此避免了空間縫和時間不連續(xù)性,從而向用戶呈現(xiàn)了令人想起將場景連續(xù)聚焦的光學儀器的視覺體驗。對于導航大文檔,場景逐漸聚焦的速度是到存儲庫的聯(lián)結的帶寬、或小塊呈現(xiàn)的速度(取兩者中較慢的那一個)的函數(shù)。最后,與革新#2的凹入優(yōu)先化相組合,連續(xù)的細節(jié)水平以使得顯示器的中心區(qū)首先聚焦的方式偏斜。
5.推廣的線性MIP映射-線性LOD混和。已經(jīng)討論了用于確保節(jié)點上顯現(xiàn)的LOD中的空間和時間平滑度的策略和參考實現(xiàn)。然而,尚未集中于在連續(xù)縮放操作期間混和細節(jié)水平的方式。所使用的方法是三線性內(nèi)插的推廣,其中相鄰的細節(jié)水平在中間范圍的比例上線性地混和。在每一細節(jié)水平上,每一小塊碎片都具有如所繪出的不透明度,該不透明度在同一細節(jié)水平上與相鄰的小塊碎片在空間上平均以獲得空間平滑度,并在時間上平均以獲得隨時間的平滑度。如果細節(jié)水平對顯示器欠采樣,即f<1(見#1),則目標不透明度是100%。然而,如果細節(jié)水平對顯示器過采樣,則目標不透明度線性地(或使用任何其它單調(diào)函數(shù))遞減,從而如果過采樣是g倍折疊(g-fold)的,則它變?yōu)?。與三線性內(nèi)插一樣,這導致在縮放操作上的連續(xù)混和,從而確保所感知到的細節(jié)水平從不突然改變。然而,與始終涉及兩個細節(jié)水平的混和的常規(guī)三線性內(nèi)插不同,本方案中混和的細節(jié)水平的數(shù)目可以是1、2或更多。大于2的數(shù)目是瞬時的,并且是由于一種以上細節(jié)水平的小塊尚未在時間上完全混和而導致的。單個細節(jié)通常也是瞬時的,因為它一般在低于理想的LOD正在以100%的不透明度“代替”尚未被下載或構造并混和的較高LOD時發(fā)生。
用于呈現(xiàn)節(jié)點的該組小塊碎片的最簡單的參考實現(xiàn)是使用所謂的“畫家算法”所有小塊碎片以從后到前的順序呈現(xiàn),即從最粗略(最低LOD)到最精細(對顯示器進行了小于g倍折疊的過采樣的最高LOD)。除最高LOD之外的所有LOD的目標不透明度是100%,盡管如果其時間混和未完成則它們能以較低的不透明度瞬時呈現(xiàn)。取決于最高LOD對顯示器進行了多少過采樣,如以上所討論的,它可具有可變的不透明度。很清楚,該參考實現(xiàn)并不是最優(yōu)的,因為它可能會呈現(xiàn)隨后將會被后來呈現(xiàn)的碎片完全遮蓋的碎片。通過使用類似于對3D圖形學中的隱藏表面去除所使用的那些數(shù)據(jù)結構和算法,更優(yōu)的實現(xiàn)是可能的。
6.運動預期。在快速縮放或掃視期間,對小塊請求尤其困難的是跟上需求。然而在這些快速導航模式中,縮放或掃視運動往往由線性外推來本地地良好預測(即,難以在方向上作出突然倒轉(zhuǎn)或變化)。由此,可以充分利用這一時間運動相干性以略微提前生成小塊請求,由此改進視覺質(zhì)量。這是通過在掃視或縮放時利用在運動方向上拉長、擴大或收縮的虛擬視見區(qū)來生成小塊請求,由此預先清空了額外小塊的請求來實現(xiàn)的。當導航停止時,虛擬視見區(qū)在簡短的時間間隔上松弛回到實際視見區(qū)。
注意,以上革新中沒有一種限于矩形小塊化;它們以明顯的方式推廣到可在網(wǎng)格上定義的任何小塊化圖案,諸如三角形或六邊形小塊化、或由這些形狀的混合構成的異構小塊化、或完全任意的小塊化。需要作出以適應這一替換小塊化的唯一明確變化是定義類似于圖5的小塊碎片的三角測量,使得邊緣和內(nèi)部的不透明度都可以被獨立地控制。
標題用于多分辨率可視數(shù)據(jù)的高效、動態(tài)且連續(xù)顯示的系統(tǒng)和方法
發(fā)明人BLAISE HILARY AGUERA Y ARCAS
發(fā)明領域
本發(fā)明一般涉及多分辨率成像。更具體而言,本發(fā)明是一種用于實時將不同分辨率或細節(jié)水平的內(nèi)容的可視表示高效地混合在一起的系統(tǒng)和方法。該方法確保即使在其中可視化的數(shù)據(jù)可能改變的高度動態(tài)環(huán)境中也有可感知的連續(xù)性,并且在任何給定時刻僅有部分數(shù)據(jù)可用。本發(fā)明在包括(但不限于)用于計算機的縮放用戶界面(ZUI)在內(nèi)的多個領域都有應用。
背景技術:
在涉及復雜可視數(shù)據(jù)的顯示的許多情形中,這些數(shù)據(jù)是作為不同細節(jié)水平(LOD)的表示的集合來分層地儲存或計算的。對不同種類的數(shù)據(jù)已設計了許多多分辨率方法和表示,包括(例如,但不限于)用于數(shù)字圖像的小波、以及用于3D模型的漸進網(wǎng)孔。在能夠更“粗略”或更“精細”地執(zhí)行可能冗長的計算的情況下,多分辨率方法也用于數(shù)學和物理模擬;本發(fā)明也適用于這些模擬以及其中多分辨率可視數(shù)據(jù)可交互地生成的其它情況。此外,本發(fā)明適用于其中可視數(shù)據(jù)能以不同的細節(jié)水平“在進行中”(例如從具有機器可控掃視和縮放的照相機)獲得的情況。本發(fā)明是對于這一多分辨率可視數(shù)據(jù)在一個或多個2D顯示器(諸如CRT或LCD屏幕)上的動態(tài)顯示的一般方法。
在解釋本發(fā)明時,將使用大數(shù)字圖像(例如,如在JPEG2000圖像格式中使用的)小波分解作為主要示例。該分解取原始像素數(shù)據(jù),一般是常規(guī)矩形網(wǎng)格上的樣本陣列作為其起始點。每一樣本通常表示在對應于其網(wǎng)格坐標的空間點處測量的色彩或亮度。在某些應用程序中網(wǎng)格可能非常大,例如在一側(cè)有幾萬個樣本(像素)或更多。這一大尺寸對交互式顯示會造成相當多的困難,尤其是在這類圖像要在其中服務器(儲存圖像之處)通過低帶寬連接連接到客戶機(要查看圖像之處)的環(huán)境中遠程瀏覽的時候。如果圖像數(shù)據(jù)以簡單的光柵順序從服務器發(fā)送到客戶機,則所有的數(shù)據(jù)都必須在客戶機能夠生成整個圖像的概觀之前發(fā)送。這會耗費很長的時間。生成這一概觀也可能是計算上昂貴的,它可能例如要求將20,000×20,000個像素圖像向下采樣到500×500個像素。不僅僅是這些操作太慢以致于不允許交互,而且它們還要求客戶機具有足夠的存儲器來儲存完整的圖像數(shù)據(jù),這在剛才所述的情況中對于8位RGB彩色圖像(=3*20,000^2)是1.2千兆字節(jié)(GB)。
目前Web上的幾乎每一圖像都在100K(0.1MB)以下,因為大多數(shù)用戶以DSL或更低的帶寬連接到Web,且較大的圖像會花費太長時間來下載。即使是在本地設置中,在典型的用戶硬盤驅(qū)動器上,一般也不會遇到大于500K(0.5MB)的圖像。更大(即,更詳細)的圖像通常有用是用以下事實來證明的普通家庭中帶插圖的書本、地圖冊、地圖、報紙和藝術作品包括大量圖像,這些圖像如果以全分辨率數(shù)字化則大小很容易達到幾十兆字節(jié)。
若干年前,缺少大圖像很大程度是由于非易失性存儲空間(存儲庫空間)的短缺,但是硬盤驅(qū)動器技術的進步、刻錄CDROM的方便以及大型聯(lián)網(wǎng)服務器的日益普及已使得存儲庫空間不再是限制性因素?,F(xiàn)在的主要瓶頸是帶寬,然后是短期存儲器(即,RAM)空間。
設計了諸如JPEG20001等現(xiàn)代圖像壓縮標準恰好來解決該問題。并非以線性方式(即,通常從上到下且從左到右在像素上經(jīng)過一遍)儲存圖像內(nèi)容,而是使圖像基于多分辨率分解。圖像首先被調(diào)整大小成一分辨率比例層次,這通常以2為因數(shù)來進行;例如,512×512像素的圖像被調(diào)整大小成256×256像素、128×128、64×64、32×32、16×16、8×8、4×4、2×2以及1×1。將每一分辨率在大小上與下一更高的一此處為2一分辨率差別的因素稱為粒度,用變量g來表示。粒度可在不同的比例上變化,但是此處,作為示例而非限制,假定g在“圖像金字塔”上是恒定的。很明顯,精細的細節(jié)只能以高分辨率來捕捉,而寬的筆劃使用少得多的信息以低分辨率來捕捉。這就是不同大小的圖像或比例通常被稱為細節(jié)水平或簡稱LOD的原因。乍看可能會看到對于該系列不同大小圖像的存儲要求好像可能比對于單獨的高分辨率圖像的要求更高,但是實際上情況并非如此;低分辨率圖像用作下一更高分辨率的“預測器”。這允許非常高效地對整個圖像層次編碼一實際上比單獨使用高分辨率圖像的非分層表示可行的更高效。
如果想像按照逐漸增大的大小的順序在服務器的存儲庫中儲存圖像的多分辨率版本的序列,則自然的結果是如果圖像從服務器傳送到客戶機時,客戶機可非常迅速地獲得整個圖像的低分辨率概觀;當傳送進展時越來越精細的細節(jié)然后將“填入”。這被稱為遞增或漸進傳送,并且是多分辨率表示的主要優(yōu)點之一。當漸進傳
——————
1http://www.jpeg.org/JPEG2000.html
送被正確實現(xiàn)時,根本上任何圖像一無論有多大一都可幾乎立即由客戶機在空間上整體查看(盡管并不是以其全細節(jié)來查看),即使到服務器的連接帶寬十分普通。盡管以全細節(jié)下載圖像所需的最終時間量保持相同,但是發(fā)送該信息的順序改變,使得圖像的大比例特征被首先發(fā)送;這比以全細節(jié)且以“讀取順序”從上到下且從左到右發(fā)送像素信息對用戶更有幫助。
為使隨機訪問在動態(tài)和交互式環(huán)境中有效,方便(盡管并不是絕對必需)的是將每一細節(jié)水平細分成網(wǎng)格,使得網(wǎng)格正方形,即小塊(tile)是基本傳送單元。每一小塊以像素為單位的大小可被保持在恒定大小或以下,使得每一遞增的細節(jié)水平包含大約前一細節(jié)水平的4倍的小塊。較小的小塊會出現(xiàn)在圖像的邊緣處,因為其尺寸可能不會正好是額定小塊大小的倍數(shù);同樣,在最低細節(jié)水平,整個圖像將小于單個額定小塊。因此,如果假定64×64個像素小塊,則先前所考慮的512×512像素圖像在其最高細節(jié)水平具有8×8個小塊,在256x256的水平具有4×4個小塊,在128x128的水平具有2×2個小塊,而在其余的細節(jié)水平只有單個小塊。JPEG2000圖像格式包括剛描述的用于表示小塊化的、多分辨率和隨機訪問圖像的所有特征。
如果大型的小塊化JPEG2000圖像的細節(jié)要由客戶機在有限大小和分辨率的2D顯示器上交互地查看,則需要某一細節(jié)水平的某一組特定的相鄰小塊來產(chǎn)生準確的呈現(xiàn)。然而,在動態(tài)環(huán)境中,這些可能并非都是可用的。然而,較粗略細節(jié)水平的小塊通常是可用的,尤其是如果用戶以圖像的廣泛概觀開始。由于較粗略細節(jié)水平的小塊在空間上跨越了寬得多的區(qū)域,因此整個感興趣的區(qū)域可能被可用小塊的某一組合覆蓋。這意味著可用的圖像分辨率將不再在顯示區(qū)域上恒定。
在先前提交的臨時專利申請中,提出了用于在小塊毗鄰同一細節(jié)水平的空白區(qū)的情況下使小塊邊緣“漸隱”的方法;這避免在精細細節(jié)水平的“覆蓋范圍”不完整時會導致的銳度的突然視覺不連續(xù)性。為混和保留的小塊的邊緣區(qū)被稱為混和邊蓋。用于顯示已完成的合成圖像的簡單參考實現(xiàn)是“畫家算法”最粗略細節(jié)水平的所有相關小塊(即,重疊顯示區(qū)的小塊)被首先繪出,然后是逐漸精細的細節(jié)水平的所有相關小塊。在每一細節(jié)水平處,如所描述地在不完整區(qū)域的邊緣處應用混和。如所需的結果是較粗略的細節(jié)水平僅在它們不被較精細的細節(jié)水平遮擋的地方“隱約顯出”。
盡管該簡單算法起了作用,但是它具有若干缺點首先,它浪費了處理器時間,因為即使在小塊最終被部分或甚至完全遮擋的情況下也要繪出小塊。具體地,一個簡單的計算示出每一顯示器像素通常被(重新)繪出log2(f)次,其中f是顯示器相對于最低細節(jié)水平的放大因數(shù)。其次,該技術依賴于幀緩沖區(qū)中的合成一這意味著在繪圖操作期間的中間點處,所繪出的區(qū)域不具備其最終外觀;這使得必須使用雙緩沖或相關方法并在屏幕外執(zhí)行合成來避免閃爍分辨率的出現(xiàn)。第三,除非應用了額外的合成操作,否則該技術只能用于不透明呈現(xiàn)一例如,它不可能確保在每一處都最終呈現(xiàn)具有50%的不透明度,從而允許其它內(nèi)容“隱約顯出”。這是因為畫家算法完全依賴于一個“繪圖層”(即,細節(jié)水平)完全遮擋其下一層的效果;事先并不知道細節(jié)水平在哪里會被遮擋,以及在哪里不會被遮擋。
本發(fā)明
本發(fā)明解決這些問題,同時保留了畫家算法的所有優(yōu)點。這些優(yōu)點之一是處理任何種類的LOD小塊的能力,包括非矩形或不規(guī)則小塊,以及無理(irrational)網(wǎng)格小塊,對于后者已經(jīng)提交了單獨的臨時專利申請。小塊一般由包含成為多邊形的可視內(nèi)容的區(qū)域的細分或棋盤形格局組成。為使小塊在多分辨率環(huán)境中有用,一般期望較低細節(jié)水平的小塊的面積大于較高細節(jié)水平的小塊的面積;其大小差別的乘法因數(shù)是粒度g,假定(但不限于)g是常量。在下文中,將使用無理但矩形的小塊網(wǎng)格來描述該改進算法。對其它小塊方案的推廣對本領域的技術人員而言應是顯而易見的。
該改進算法由四個階段組成。在第一階段,從要繪出的所有細節(jié)水平中的所有小塊網(wǎng)格的可見部分的疊加中在圖像的參考幀中構建合成網(wǎng)格。當使用無理小塊的革新(在單獨的臨時專利申請中有詳細描述)時,這導致在圖1中示意性地示出的不規(guī)則合成網(wǎng)格。該網(wǎng)格由對應于x和y值的網(wǎng)格線進一步放大,該x和y值是在每一細節(jié)水平繪出小塊“混和邊蓋”(圖1中未示出,因為所得的網(wǎng)格太密集且在視覺上有混淆)所需的。該合成網(wǎng)格可由用于網(wǎng)格線的x和y值的有序列表來定義,它具有繪出所有可見小塊(包括其混和邊蓋)的所有矩形和三角形的頂點都落在x和y網(wǎng)格線的交點處的特性。設有平行于x軸的n條網(wǎng)格線以及平行于y軸的m條網(wǎng)格線。然后構造帶有對應于網(wǎng)格的正方形的條目的二維n*m表。每一網(wǎng)格條目具有兩個字段被初始化為0的不透明度,以及最初為空的對特定小塊的引用的列表。
第二個階段是走查按照遞減的細節(jié)水平(與單純實現(xiàn)相反)排序的小塊。每一小塊覆蓋整數(shù)個合成網(wǎng)格正方形。對于這些正方形中的每一個,檢查其表條目是否具有小于100%的不透明度,并且如果是,則將當前小塊添加到其列表并相應地遞增不透明度。這一步驟中使用的每一小塊的不透明度被儲存在小塊數(shù)據(jù)結構中。當該第二階段完成時,合成網(wǎng)格將包含對應于要在每一網(wǎng)格正方形中繪出的正確個數(shù)的小塊、以及用于繪出這些“小塊碎片”的不透明度的條目。這些不透明度一般總計為1。完全被遮擋的低分辨率小塊在該表中不在任何地方引用,而部分遮擋的小塊僅在它們部分可見的小塊碎片中引用。
該算法的第三個階段是遍歷合成網(wǎng)格,其中合成網(wǎng)格頂點處的小塊碎片不透明度通過與同一細節(jié)水平的相鄰頂點平均來調(diào)整,然后重新調(diào)整頂點不透明度以保持每一頂點處的總計不透明度(通常是100%)。這實現(xiàn)了在單獨臨時專利申請中所描述的比例空間平滑的細化版本。該細化起因于合成網(wǎng)格一般比革新#4中定義的每一小塊3×3個網(wǎng)格更致密這一事實,尤其對于低分辨率小塊。
(在最高LOD下,通過構建合成網(wǎng)格至少如所需那樣的精細。)這允許平均技術實際上通過創(chuàng)建由更大量的小塊碎片構成的更平滑混和邊蓋而在明顯的細節(jié)水平中實現(xiàn)更大的平滑度。
最后,在第四階段中,再次遍歷合成網(wǎng)格,并且實際繪出小塊碎片。盡管該算法涉及在數(shù)據(jù)上通過多遍以及一定量的簿記,但它可導致比單純算法好得多的性能,因為最終必須進行的繪制要少得多;所呈現(xiàn)的每一小塊碎片對用戶是可見的,盡管有時候是以低不透明度可見的。某些小塊可能完全不被繪出。這與單純算法相反,單純算法將與所顯示的區(qū)域相交的每一小塊完整地繪出。
該算法的另一優(yōu)點是它簡單地通過將總不透明度目標從100%改為某一較低的值來允許繪出部分透明的節(jié)點。這對于單純算法是不可行的,因為除最詳細的細節(jié)水平之外的每一細節(jié)水平必須以完全不透明度繪出以完全“繪圖覆蓋”任何底下的、仍為較低分辨率的小塊。
當視圖在x-y平面內(nèi)相對于節(jié)點旋轉(zhuǎn)時,需要進行某些細微的變化以提高效率。合成網(wǎng)格可用普通方式來構建,它可比對于未旋轉(zhuǎn)情況下的網(wǎng)格大,因為較大的坐標范圍沿著對角線是可見的。然而,當走查小塊時,只需考慮可見的小塊(通過簡單的相交多邊形準則)。同樣,在查看區(qū)之外的合成網(wǎng)格正方形無需在第二或第三階段的遍歷期間更新,也無需在第四階段中繪出。注意,可修改多種其它實現(xiàn)細節(jié)以優(yōu)化性能;該算法此處以使其操作和本質(zhì)特征最易于理解的形式來提出。本領域的熟練圖形程序員能夠容易地添加優(yōu)化實現(xiàn)細節(jié)。例如,不必保持每一小塊碎片的小塊列表;相反,可在完成之后以正確的不透明度立即繪出每一細節(jié)水平,由此在任一時刻對每一碎片只需存儲單個小塊身份。另一示例性優(yōu)化是可跟蹤按照(面積)x(剩余不透明度)來表達的剩余的要完成的總不透明度呈現(xiàn),使得該算法在已經(jīng)繪出所有東西之后可提早退出;因而如果不需要低細節(jié)水平,則可以完全無需“訪問”這些低細節(jié)水平。
該算法可通過使用受約束的Delaunay三角測量代替網(wǎng)格來儲存頂點不透明度和小塊碎片標識符而被推廣到任意的多邊形小塊圖案。該數(shù)據(jù)結構有效地創(chuàng)建了其邊緣包含所有原始LOD網(wǎng)格中的每一邊緣的三角測量;訪問特定的三角形或頂點是一項高效的操作,它可在n*log(n)數(shù)量級的時間上發(fā)生(其中n是所添加的頂點或三角形的個數(shù))。此外,所得的三角形是用于在大多數(shù)圖形平臺上進行圖形呈現(xiàn)的基本圖元。
標題用于縮放用戶界面中無限精度坐標的系統(tǒng)和方法
發(fā)明人BLAISE HILARY AGUERA Y ARCAS
發(fā)明領域
本發(fā)明一般涉及用于計算機的縮放用戶界面(ZUI)。更具體而言,本發(fā)明是一種用于使用允許內(nèi)容具有實際上無限精度的空間定位和大小的分層數(shù)據(jù)結構來有效地表示和導航可縮放內(nèi)容的系統(tǒng)和方法。這允許無限比例或深度的可縮放環(huán)境。
背景技術:
大多數(shù)當前的圖形計算機用戶界面(GUI)是使用固定空間比例的可視組件來設計的。然而,從計算機圖形領域的誕生可以認識到,可視組件可以用使得它們在顯示器上不具有固定空間比例,而是可被放大和縮小的方式來表示和處理。對可縮放組件的期望在許多應用領域中都是明顯的;此處僅舉幾個例子查看地圖、瀏覽諸如報紙等大型的不同種類文本布局、查看數(shù)碼照片的相冊、以及用大數(shù)據(jù)集的可視化來工作。即使在查看諸如電子表格和報表等普通文檔時,能夠粗看一下文檔概述,然后在感興趣的區(qū)域上放大通常也是有用的。許多現(xiàn)代的計算機應用程序包括可縮放組件,諸如Microsoft _Word _和其它Office _產(chǎn)品(View(視圖)菜單下的Zoom(縮放))、Adobe _Photoshop _、Adobe _Acrobat _、QuarkXPress _等等。在大多數(shù)情況下,這些應用程序允許對文檔進行放大和縮小,但是無需對應用程序本身的可視組件進行放大和縮小。此外,縮放一般是用戶與軟件的交互的一個外圍方面,且縮放設置僅偶爾被更改。盡管對文檔的連續(xù)掃視是標準(即,使用滾動條或光標來將所查看的文檔向左、右、上或下平移),但連續(xù)縮放的能力幾乎總是不存在。在一種更一般化的縮放框架中,可縮放任何種類的可視內(nèi)容,且縮放幾乎與掃視一樣是用戶體驗的一部分。遵循這些思路的概念使得甚至在早至1960年代1的電影中已經(jīng)出現(xiàn)了未來派的計算機用戶界面;而近期的電影延續(xù)了這一趨勢2。從
————————————
1例如Stanley Kubrick在2001年的ASpace Odyssey,Turner Entertainment公司,Time Warner公司的子公司(1968)。
2例如,Steven Spielberg的Minority Report,20thCentury Fox and Dreamworks Pictures(2002)。
1970年代開始到現(xiàn)在3,已構思和/或開發(fā)了多種連續(xù)縮放界面。在1991年,這些概念中的某一些在紐約大學的Kenneth Perlin和Jacob Schwarts的美國專利5,341,466(“Fractal Computer User Centerface with Zooming Capability”)中定形。由Perlin和同事Pad開發(fā)的原型縮放用戶界面Pad及其后繼產(chǎn)品Pad++自那以來經(jīng)歷了一些開發(fā)4。然而,就發(fā)明人所知,部分地由于多種技術不足,在大量市場上尚未出現(xiàn)基于全ZUI(縮放用戶界面)的主要應用程序,這些技術不足中的一個在本發(fā)明中得以解決。
發(fā)明概述
本發(fā)明具體化了新開發(fā)的縮放用戶界面框架(下文按其運作名稱稱為Voss)作為基礎的新概念。Voss由于其軟件體系結構中有多種革新而比其前驅(qū)產(chǎn)品更強大、更具響應性、視覺上更引人注目且更通用。本專利特別地是關于對于坐標系統(tǒng)和導航的Voss方法。
大多數(shù)圖形體系結構取2D坐標系統(tǒng)作為其出發(fā)點,該坐標系統(tǒng)將二維(2D)空間中的一個點定義為一對數(shù)字,通常稱為x和y坐標(x,y),它們表示從原點(0,0)的水平和垂直位移。2D點偶爾也使用非笛卡爾坐標系統(tǒng),諸如極坐標來表示;以下討論的實質(zhì)性方面同樣適用于任何這樣的坐標系統(tǒng)。在三維(3D)圖形學領域中,由三元組數(shù)字(x,y,z)定義的3D坐標系統(tǒng)通常用于表示空間中的點;再一次,這些可以是或不是笛卡爾坐標。由于顯示器通常是二維的,因此需要視圖相關數(shù)學變換來將三維世界坐標縮減為二維屏幕坐標。在任一情況下,所處理的坐標通常使用計算機固有的整型或浮點型數(shù)值數(shù)據(jù)類型來表示。這些數(shù)據(jù)類型通常使用16和64位(二進制數(shù)位)之間的存儲器。由于其有限的表示大小,這些數(shù)字具有有限的精度一即,其小數(shù)展開僅被定義到某一有限數(shù)目的有效位。在64位浮點數(shù)的情況下,這是大約15個小數(shù)位。
當坐標系統(tǒng)被“鎖定”到顯示器,即每一2D坐標對(x,y)對應于顯示器表面上的一個固定點時,該精度是過高的。然而,在縮放用戶界面的環(huán)境中,用戶能夠
——————————
3早先出現(xiàn)在W.C.Donelson的Spatial Management ofInformation,SIGGRAPH的Computer Graphics會議論文集(1978),ACM出版社第203-9頁中。近來的一個示例是2002年夏天推出的Zanvas.com。
4Perlin在http://mrl.nyu.edu/projects/zui/上描述了后繼開發(fā)。
容易地進行放大,從而導致先前覆蓋單個像素的區(qū)域填滿了整個顯示器;或者進行縮小,從而導致整個顯示的內(nèi)容收縮到單個像素的大小。每一這樣的縮放實際上將(x,y)坐標乘以或除以約1,000的因子。因此,若干次這樣的放大或縮小會用盡任何標準內(nèi)部浮點表示的精度。
(例如,五次這樣的縮放操作將完全用盡64位浮點數(shù)的精度。在該環(huán)境中,由離散化或“舍入誤差”引起的視覺偽像在三次這樣的縮放之后將開始引人注意。)然而,在縮放用戶界面中,可能期望更大程度地放大或縮小。這意味著全局或世界坐標不能在不嚴重限制用于縮放的范圍的情況下以標準機器格式來儲存。
本發(fā)明通過完全省去世界坐標來解決這一問題。相反,所有的縮放和掃視操作在共同定義可縮放內(nèi)容“全域”的局部坐標系統(tǒng)的樹(或更一般地,有向圖)中進行。內(nèi)容包括節(jié)點集合,節(jié)點本身是使用機器精度坐標的本地2D坐標系統(tǒng)來定義的。如果使用標準的64位浮點數(shù),則單個節(jié)點由此被限于具有每一坐標約15個精度小數(shù)位,或者按照像素來說,在一側(cè)最多約有10^14個像素。然而,節(jié)點可以是多個子節(jié)點的父節(jié)點,每一子節(jié)點在幾何上包含在父節(jié)點的邊界內(nèi)。子節(jié)點相對于父節(jié)點的大小和位置可在父節(jié)點的局部坐標系統(tǒng)中指定,且由此適合機器精度數(shù)字;然而,子節(jié)點可具有它自己的局部坐標系統(tǒng),這允許它進而具有(例如)一側(cè)達10^14個像素的分辨率。通過如此將子節(jié)點嵌入在子節(jié)點內(nèi),得到允許可視內(nèi)容的無限深度嵌套,同時仍僅使用機器精度數(shù)字來儲存、處理和執(zhí)行幾何計算的構造。本專利的主要部分進一步闡明了這一方案,列出了使用剛才所描述的數(shù)據(jù)結構的掃視和縮放操作的示例性實現(xiàn)。
本發(fā)明的一個目的是允許可掃視和可縮放的,但復雜度或分辨率任意高的有限“物理大小”的2D空間被嵌入到更大的可掃視和可縮放2D空間的明確定義區(qū)域中。
本發(fā)明的另一目的是允許通過上述嵌入過程來構造可視對象的幾何樹或有向圖,從而允許這些樹和圖變得任意大和復雜,同時保留了在所得的空間中掃視和縮放的能力。
因此,本發(fā)明的一個目的是允許在當今的普通計算機體系結構上在可能無限的視覺復雜度和細節(jié)的虛擬2D全域中進行流暢的縮放和掃視。
本發(fā)明的另一目的是在可掃視和可縮放2D空間的坐標上模擬無限精度算術的行為,同時仍保留在本機機器精度數(shù)字上執(zhí)行的坐標計算的計算速度。軟件包MathematicaTM(_ Wolfram Research)提供了用于無限精度算術的數(shù)據(jù)結構和算法的示例性實現(xiàn)(然而仍不滿足這些同樣的準則)。
本發(fā)明的又一目的是在可掃視和可縮放2D空間的坐標上模擬無限精度算術的行為,同時避免對無限精度數(shù)字的大存儲器消耗。
本發(fā)明的再一目的是允許將可重復使用的可視內(nèi)容通過引用嵌入到可縮放和可掃視2D空間中,即無需更新要嵌入內(nèi)容中的任何坐標或其它數(shù)據(jù)結構。由于這允許2D空間被嵌入另一空間中而無需遍歷新子坐標系統(tǒng)樹,因此這一能力允許不管復雜度如何而嵌入任何2D空間。
本發(fā)明的還有一個目的是允許由于循環(huán)引用而引起的可縮放和可掃視內(nèi)容中的無限嵌套具有內(nèi)容B的節(jié)點可以是具有內(nèi)容A的節(jié)點的子節(jié)點(即,幾何上B出現(xiàn)在A的內(nèi)部),且節(jié)點B進而可包含具有內(nèi)容A的節(jié)點作為子節(jié)點。在其中可視內(nèi)容可通過引用來重復使用和包括的復雜可縮放環(huán)境中,這一類型的重復出現(xiàn)可以非常容易地發(fā)生。這將具有相關聯(lián)坐標系統(tǒng)的節(jié)點樹的概念推廣到具有相關聯(lián)坐標系統(tǒng)的節(jié)點的有向圖的概念。
本發(fā)明的另外一個目的是允許在深度放大之后進行縮小以類似于web瀏覽器的“后退”按鈕工作,從而讓用戶折回他或她通過視覺導航的步驟。
本發(fā)明的再有一個目的是允許在縮小之后立即進行放大以類似于web瀏覽器的“前進”按鈕工作,從而讓用戶精確地撤消任意長的縮小的效果。
本發(fā)明的進一步一個目的是允許節(jié)點具有非常大量的子節(jié)點(例如,多達10^28) 。
本發(fā)明的此外一個目的是允許節(jié)點在進行中程序性地生成它自己的子節(jié)點,從而允許在導航期間動態(tài)地定義、創(chuàng)建或修改內(nèi)容。
本發(fā)明的更進一步目的是即使在內(nèi)容最終使用非常大量的數(shù)據(jù)來表示,且即使這些數(shù)據(jù)被儲存在遠程位置并通過低帶寬網(wǎng)絡共享的情況下也允許接近即時地查看任意復雜的可視內(nèi)容。
本發(fā)明的再進一步目的是允許用戶對可視內(nèi)容進行任意程度的放大,同時保持交互式幀速率。
本發(fā)明的更深一層目的是允許用戶在保留內(nèi)容的總體外觀和保持交互式幀速率的過程中任意程度地縮小以獲得復雜可視內(nèi)容的概觀。
本發(fā)明的這些和其它目的在本領域的技術人員閱讀了以下說明書之后將變得顯而易見。
約定
在下文中,將使用若干偽代碼約定。數(shù)據(jù)結構(有時候稱為抽象數(shù)據(jù)類型,即ADT)將使用單詞Structure及其后的波形括號中的內(nèi)容{...}來介紹。在波形括號內(nèi)將以以下格式列出構成該結構的字段或數(shù)據(jù)元
數(shù)據(jù)類型變量名
其中數(shù)據(jù)類型是先前定義的結構或原語類型,而變量名是字段名。注意,數(shù)據(jù)類型和函數(shù)總是以大寫字母開頭,而變量名或字段名總是以小寫字母開頭。所使用的原語類型是Boolean(可取值true或false)、Double(對應于C語言的double類型的64位浮點數(shù))、Integer(64位帶符號整型數(shù)據(jù)類型)、以及String(字符串)。結構和變量的名稱以及所使用的數(shù)據(jù)類型和格式的細節(jié)是示例性的;本發(fā)明的替換實現(xiàn)可更改這些細節(jié)中的任一個、包括任何數(shù)目的附加字段、或使用不同的結構或內(nèi)部表示。
為方便起見,立即定義以下結構,用于(分別)儲存2D笛卡爾平面上點的位置以及該平面上與軸對齊的矩形
Structure Point2D{
Double x;
Double y;
}
Structure Rectangle{
Point2D lo;
Point2D hi;
}
假定(而非限制)一數(shù)學坐標系統(tǒng),其中x軸為水平且向右遞增,而y軸為垂直且向上遞增。Rectangle中的點lo和hi表示矩形區(qū)域的左下和右上角。為引用結構的字段,將如以下偽代碼中那樣使用句點(“.”)
Boolean Function IsPointlnBox(Point2D p,Rectangler){
ifp.x>r.lo.x&p.x<r.hi.x&p.y>r.lo.y&p.y<r.hi.y{
return true;
}else{
returnfalse
}
}
該函數(shù)確定一個點是否在矩形內(nèi)。諸如return等語句等效于其在C語言中的對應語句。所使用的句法對本領域的任何技術人員應當都是可理解的。在偽代碼中將使用斜體來表示最容易用英語來描述的抽象或復雜動作。
最后,定義兩個容器數(shù)據(jù)類型Collection<T>,它儲存類型為T的對象的無序集,以及Stack<T>,它在后進先出(LIFO)的基礎上儲存類型為T的對象。為在集合上迭代,將使用句法
for collection中的所有x{對x做某些動作...}
其中collection為類型Collection<T>,而x對容器中每一類型T的對象代入;對每一這樣的對象,執(zhí)行波形括號中的代碼。假定處理對象的順序是無關緊要的。對于棧,定義以下函數(shù)
Function Push(Stack<T>stack,Tt)
Function T Pop(Stack<T>stack)
Function Integer Count(Stack<T>stack)
Function T Element(Stack<T>stack,Integern)Push函數(shù)將對象t追加到棧,而Pop函數(shù)移除壓入的最后一個元素并返回它。Count返回棧中對象的個數(shù)(大于或等于零的整數(shù)),而Element按照索引查找棧中的元素并返回該元素,但保持棧不變。遵循C約定,有效索引對第一個元素以零開始,并增長到Count(stack)-1。
發(fā)明詳述
假定其中顯示器是攝像機的用戶界面比喻,通過該用戶界面用戶能夠查看二維表面,即2D全域的一部分。為方便起見,盡管不必如此,但仍認為物理維度屬于該全域,使得它可以例如是一米的正方形。
該全域進而包含2D對象,即節(jié)點,它們具有可視表示,并且也可以是動態(tài)或交互式的(即,視頻剪輯、應用程序、可編輯文本文檔、CAD繪圖或靜止圖像)。為使節(jié)點可見,它必須與能夠在顯示器的某一區(qū)域上完全或部分地繪出它的呈現(xiàn)方法相關聯(lián)。每一節(jié)點被賦予一有限精度的局部坐標系統(tǒng)。為說明起見,假定節(jié)點是矩形并使用如上定義的Point2D和Rectangle數(shù)據(jù)結構來表示其局部坐標。由此,Rectangle將定義局部坐標系統(tǒng)的邊界。更一般地,節(jié)點可以是非矩形的和/或使用一不同的坐標系統(tǒng)。由此,定義
Structure Node{
Rectangle coordSystem;
...
}
其中省略號(...)表示Node也將具有其它字段,這將在稍后指定。由此,用于節(jié)點(將給予數(shù)據(jù)類型Node)的最小呈現(xiàn)方法可能需要以下自變量
Function RenderNode(Node node,Rectangle onDisplay,Rectangle onNode)
該示例性函數(shù)將由onNode矩形(節(jié)點坐標系統(tǒng)中)定義的節(jié)點的一部分呈現(xiàn)為由onDisplay(顯示器或“屏幕”坐標中)定義的顯示器上的矩形。矩形onNode一般應在node.coordSystem中。為使呈現(xiàn)可見,矩形onDisplay應在以顯示器坐標定義顯示器邊界的矩形內(nèi)。
每一節(jié)點可具有零個或多個子節(jié)點,它通過引用來對子節(jié)點尋址。這意味著節(jié)點無需且一般不包含每一子節(jié)點的所有信息,而是僅包含提供獲得該子節(jié)點所必需的信息的地址。URL(http://...)是這一地址的一個示例,但是地址可采用其它形式,例如存儲器中的指針、全局唯一標識符、硬件端口等。定義抽象數(shù)據(jù)類型Address來一般地表示地址,并定義函數(shù)
Function Node Dereference(Address address)該函數(shù)給定其地址返回對節(jié)點的引用。
除子節(jié)點的地址之外,對子節(jié)點的引用必須指定子節(jié)點的大小和其在父節(jié)點的局部坐標系統(tǒng)中的位置。由此,有Structure ChildReference{
Address address;
Rectangle placement;}
其中placement同樣也應在父節(jié)點內(nèi),即在父節(jié)點的coordSystem內(nèi)。由此,擴展對節(jié)點的定義
Structure Node{
Rectangle coordSystem;
Collection<ChildReference>children;
}
不同的節(jié)點可共享某些或全部其子節(jié)點,但是可能在不同的空間排列中,從而允許同一信息的不同視圖的可能性。
現(xiàn)在能夠在某種更詳細的程度上定義節(jié)點呈現(xiàn)方法的一般行為
Function RenderNode(Node node,Rectangle onDisplay,Rectangle onNode){
...繪出節(jié)點...
for children中的所有childRef {
Rectangle childOnDisplay=
CalcRectangle(onDisplay,childRef.placement);
if Area(childOnDisplay)>=minimumArea{
Child child=Dereference(childRef);
RenderNode(child,childOnDisplay,child.coordSystem);
}
}
}
該函數(shù)現(xiàn)在將呈現(xiàn)一節(jié)點并遞歸地呈現(xiàn)其子節(jié)點。CalcRectangle函數(shù)在給定父節(jié)點的顯示矩形和子節(jié)點在父節(jié)點內(nèi)的位置時計算子節(jié)點所占據(jù)的顯示矩形。假定例如父節(jié)點是可見的,且其所有子節(jié)點也是可見的,則該呈現(xiàn)方法是相當簡單的。它滿足重要設計準則,然而
1.未使用全局坐標。
2.假定子節(jié)點小于其父節(jié)點,則函數(shù)在有限時間內(nèi)終止,因為子節(jié)點最終都
小于minimumArea。這即使在樹中有無限個節(jié)點時也是如此。
3.如果使minimumArea足夠小,則截斷呈現(xiàn)的可視效果將變得可忽略,因
為未繪出的任何節(jié)點太小以致于不會影響顯示的總體外觀。
4.允許重復出現(xiàn)節(jié)點可以是它自己的后代。由此,由“是……的子節(jié)點”
關系定義的節(jié)點的有向圖可以具有循環(huán)(使得它在圖論意義上不再是樹)。
如果子節(jié)點占據(jù)其父節(jié)點面積的大部分,且圖循環(huán)較小(即,A→B→A
或A→B→C→A),則這得到鏡廳的效果。
用戶與節(jié)點的交互,諸如將文本鍵入到其中,通常要求節(jié)點是可見的??墒褂枚喾N不同的模型來選擇要與其發(fā)生交互的節(jié)點;例如,tab鍵可循環(huán)通過節(jié)點,或者在鼠標指針下的節(jié)點可以是目標。在任何情況下,作為用戶交互的候選的節(jié)點數(shù)與所呈現(xiàn)的節(jié)點在同一數(shù)量級上,因而是有限的。可使用類似于上述呈現(xiàn)函數(shù)的方法來將用戶交互消息傳遞到節(jié)點,節(jié)點可影響其將來的行為或外觀。這一體系結構因而足以允許節(jié)點是完整的軟件應用程序而不僅僅是靜態(tài)可視對象。
除了查看節(jié)點以及與節(jié)點交互之外,用戶可使用連續(xù)的縮放和掃視操作來導航。放大意味著逐漸擴大顯示器上可見的內(nèi)容的一部分以使其占據(jù)顯示器上的更多區(qū)域;較小的物理區(qū)域然后是可見的,但是更詳細??s小是相反的操作。由于假定全域的物理維度是有界的,因此縮小是有界操作一旦整個全域可見,進一步的縮小不能將任何新內(nèi)容帶入視圖,而是僅僅將全域收縮到小于整個顯示器的區(qū)域。因此自然的是將根節(jié)點定義為包含整個全域;它具有當完全被縮小時可見的子節(jié)點,這些子節(jié)點具有它們自己的子節(jié)點,依此類推。由于在幾何上子節(jié)點必須在父節(jié)點的邊界內(nèi),因此子節(jié)點一般小于父節(jié)點。然而,每一節(jié)點具有其自己的局部坐標系統(tǒng),因此這一構造允許甚至更精細的坐標系統(tǒng)的層疊,且由此允許可能無限的空間分辨率的全域。這意味著放大不是有界操作如果節(jié)點圖具有循環(huán),則可在“內(nèi)容循環(huán)”中永遠放大;或更有趣的是,節(jié)點圖可具有非常大的或甚至無限個節(jié)點,從而允許在始終查看新內(nèi)容的同時無限地放大。
為使該體系結構真正地允許無限分辨率,必須能夠有效地掃視、縮放和呈現(xiàn)顯示,而無需在任何時刻遍歷(可能無限的)節(jié)點圖。已看到如果最初在該節(jié)點上調(diào)用RenderNode函數(shù),則由顯示器上可見的節(jié)點占據(jù)的區(qū)域的呈現(xiàn)可在有限時間內(nèi)發(fā)生?,F(xiàn)在必須解決一般如何能夠在動態(tài)縮放和掃視期間找到可見節(jié)點的問題。
這可用向節(jié)點結構添加字段并添加額外的地址棧數(shù)據(jù)結構來實現(xiàn)。擴展的Node定義為
Structure Node{
Rectangle coordSystem;
Collection<ChildReference>children;
Rectangle view;
}
該新的view字段在節(jié)點坐標中表示節(jié)點的可見區(qū)域一即節(jié)點坐標中顯示矩形的圖像。該矩形可以僅部分地重疊由coordSystem定義的節(jié)點區(qū)域,如節(jié)點部分地在屏幕外的時候那樣。很清楚,view字段不能總是保持對每一節(jié)點都更新,因為不必在有限時間內(nèi)遍歷整個節(jié)點有向圖。
棧結構定義如下
Stack<Address>viewStack;其中該棧是客戶機(連接到顯示器的計算機)的全局變量。為示例性的目的,假定導航以由根節(jié)點定義的內(nèi)容全域的概觀開始;然后該根節(jié)點被壓入viewStack,且根節(jié)點的view字段可被初始化為根節(jié)點的整個區(qū)域,即
rootNode.view=rootNode.coordSystem;
Push(viewStack,rootNode);
示意性地,viewStack將指定由點“刺穿”的節(jié)點序列相對于顯示器的地址,該地址將在本示例性實現(xiàn)中用作顯示器的中心。該序列必須以根節(jié)點開始,但是可以是無限的。因此必須截斷該序列,并且使用RenderNode中使用的同一準則來完成序列在“刺穿”的節(jié)點變得小于某一最小大小,如上定義為minimumArea時停止。然后,當前視圖由viewStack中所有節(jié)點的view字段來表示,其每一個按照節(jié)點的局部坐標系統(tǒng)指定了當前視圖。如果用戶對全域進行了非常深的放大,則顯示的詳細位置將由棧中最后一個節(jié)點的view字段最精確地給出。然而,最后一個元素的view字段沒有指定用戶相對于整個全域的視點,而是僅指定了相對于其局部坐標的視點。另一方面,根節(jié)點的view字段指定了用戶正在查看全域中的何處,盡管由于舍入和離散化誤差根節(jié)點的view.lo和view.hi可能已折疊到一點,且該點將僅是對真實視圖位置的有限精度逼近。由此,較靠近viewStack的“精細端”的節(jié)點以遞增的精度但相對于全域中逐漸變小的區(qū)域指定了視圖位置。
在本文中要注意,先前所定義的RenderNode函數(shù)的單純實現(xiàn)是有缺陷的,因為CalcRectangle函數(shù)漸進地使用遞歸地向下傳遞的所遍歷的每一節(jié)點的placement字段和onDisplay自變量來計算顯示與從根節(jié)點開始的每一節(jié)點的重疊。在深度縮放中,精度的逐漸丟失會使得該計算無法給出正確的結果。在一種經(jīng)糾正的版本中,CalcRectangle函數(shù)簡單地用節(jié)點的view字段來替換。然后該問題縮減為以下所有可見節(jié)點的視圖(即,view字段)必須保持與用戶導航全域、掃視和縮放同步。無法使它們保持同步會導致節(jié)點的外觀在顯示器上獨立于彼此地移動,而非作為結合在一起且物理上一致的2D表面來表現(xiàn)。
在任何導航操作起見改變視圖如下進行。由于viewStack中的最后一個節(jié)點具有該視圖的最精確表示,因此第一步是改變該最后一個節(jié)點的view字段;該改變的視圖被認為是正確的新視圖,且任何其它可見節(jié)點必須遵從。第二步是將新視圖向根節(jié)點“向上”傳播,這需要對棧中較早節(jié)點的view字段進行逐漸越來越小的改變。如果用戶進行深度縮放,則在向上傳播中的某一點,對視圖的更改可以很小,使得它停止從而可被準確表示;向上傳播在這一節(jié)點處停止。在向上傳播的每一階段,改變也使用未經(jīng)修改的RenderNode偽代碼的方法向下傳播到其它可見節(jié)點。因此,首先修改最后一個節(jié)點的父節(jié)點的視圖;然后在向下傳播中,修改最后一個節(jié)點的“兄弟節(jié)點”。下一向上傳播修改祖父節(jié)點的視圖,且第二個向下傳播修改第一個叔父節(jié)點,然后修改第一個表兄弟節(jié)點。向下傳播如前一樣在“表兄弟節(jié)點”的面積變得小于minimumArea時、或在節(jié)點完全落在屏幕之外時暫停。
掃視操作可將最后一個節(jié)點移得足夠遠使得它不再屬于viewStack?;蛘?,放大可將最后一個節(jié)點的子節(jié)點放大到超過minimumArea,從而需要延長viewStack,或者縮小可能使最后一個節(jié)點的面積變得小于minimimArea,從而需要截斷viewStack。在所有這些情況中,最后一個節(jié)點的身份改變。這些情況在向下傳播期間被檢測到,這可相應地改變viewStack,從而可能使其更長或更短。
這一概念的擴展是避免響應于長時間縮小立即截斷viewStack。截斷viewStack僅在用戶然后掃視時才必要。盡管長時間縮小將導致深度縮放的節(jié)點的view字段變得非常大(因此在數(shù)值上不準確),但可將字段
Point2D viewCenter;添加到Node結構中,從而表示view矩形的中心點;因此,沒有掃視的縮放不會更改任何節(jié)點的viewCenter字段。這一構造允許在放大回來之后立即進行程度大的放大。由于viewStack保持不變,因此用戶然后可返回到先前的起始視圖。這一行為類似于web瀏覽器的“后退”和“前進”按鈕 “后退”類似于縮小, “前進”類似于放大回來。在web瀏覽器中,如果用戶使用“后退”來返回到前一網(wǎng)頁,但是然后點擊另一鏈接,則在這一點處“前進”不再起作用。之后點擊另一鏈接因此類似于在縮小之后掃視。
Zeno高速緩存
一種用于增加對于可變可壓縮數(shù)據(jù)對象的最近最常使用(MRU)高速緩存的
有效性的系統(tǒng)
介紹
級數(shù)y(n)=n^-p的無窮和對p>1是有窮的,其中n從1到無窮大。類似地,y=1/b^n的和對b>l是有窮的。
(例如,在后一情況下,如果b=2,則該和恰好為2。)像這樣的收斂級數(shù)的概念可用于實現(xiàn)稱為Zeno高速緩存(以著名的Zeno悖論來命名)的高度有效形式的數(shù)據(jù)高速緩存。Zeno是非??煲灾掠谝徊?為辯論起見,可認為他每秒跨一步)就跨越了到任何跑道的終點的距離的一半的奔跑者;當然,悖論是盡管每一步都向前進,但他永遠不能跑完該路程。該悖論容易地相關于以上b=2且從n=2到無窮大求和的1/b^n級數(shù)。
現(xiàn)有技術
“MRU高速緩存”是一種用于在客戶機-服務器系統(tǒng)中實現(xiàn)客戶機方存儲器的公知概念,其中MRU代表“最近最常使用”。假定服務器能夠訪問客戶機并能夠向其提供大量數(shù)據(jù)對象,這些數(shù)據(jù)對象總計占據(jù)了大量存儲器。然而,客戶機和服務器之間的可用帶寬是有限的,因此對從服務器發(fā)送數(shù)據(jù)對象的客戶機請求要花費時間。如果對數(shù)據(jù)對象的訪問是合理地“相干的”,這意味著客戶機當前需要的對象可能在不久的將來會再次需要,則MRU高速緩存是一種極大地提高客戶機-服務器系統(tǒng)的效率的方式1。其理念是客戶機留出某些有限量的存儲器(一般比儲存服務器上的所有對象所需的要少得多),并在該存儲器中儲存與適合的一樣多的最近最常請求的對象。當新對象從服務器發(fā)送到客戶機、且客戶機的高速緩存空間已被用盡時,從高速緩存中擦除最近最少使用(LRU)對象以留出空間。將參考高速緩存的LRU和MRU端;對象總是在MRU端添加,并從LRU端擦除。
(注意,
———————
1本領域的技術人員可以理解如上所述的相干性的概念的推廣。高速緩存可在其中對一個對象的客戶機請求影響不久的將來請求其它對象的可能性的概率分布的任何情況下提供性能優(yōu)勢。直接MRU高速緩存對其中該變更僅僅被建模為再次請求同一對象的增加的可能性的情況進行優(yōu)化,但是存在推廣且本發(fā)明可延及這些推廣。
存儲器中對象的物理布局無需對應于LRU-MRU布局;該體系結構僅要求使客戶機可能以此處所描述的方式找到、插入和擦除對象。線性LRU-MRU排列僅僅是一種概念上的方便。)當客戶機需要數(shù)據(jù)對象時,則客戶機首先檢查該對象是否被高速緩存。如果是,則使用高速緩存的表示,從而消除了對昂貴的服務器請求的需要;通常,利用高速緩存的表示也將該對象“提升”到高速緩存的MRU端。該方案的性能優(yōu)勢是顯而易見的。
Zeno高速緩存概念
在某些情形中,所提供的數(shù)據(jù)對象是可壓縮的,對于本文的目的而言這意味著要受到有損數(shù)據(jù)壓縮技術的作用。有損數(shù)據(jù)壓縮的特征在于用比完全表示少的字節(jié)來表示數(shù)據(jù)對象的能力;較高的壓縮比(意味著更多壓縮)對應于較高的失真或較低的質(zhì)量。對于Zeno高速緩存,數(shù)據(jù)和相關聯(lián)的壓縮算0法的本質(zhì)應具有以下特征
必需一數(shù)據(jù)的經(jīng)壓縮形式應當適用作未壓縮數(shù)據(jù)的替換。在特定失真水平下,壓縮表示可以是完全適當?shù)?,而在特定失真水平之上,它們作為當客戶機等待未壓縮的、無損的或更高質(zhì)量形式的數(shù)據(jù)時的權宜之計可以是適當?shù)摹?br>
在一個增強的實施例中,較低質(zhì)量的表示是較高質(zhì)量表示的子集,這意味著在客戶機方使用服務器方可用的附加信息來改善表示質(zhì)量只需發(fā)送丟失的數(shù)據(jù)或差異,而不重發(fā)整個新版本數(shù)據(jù)。這避免了冗余并因此大大提高了效率。
以上增強實施例通常還意味著降低對象的表示質(zhì)量僅僅涉及丟棄某些數(shù)據(jù)而無需重新壓縮。該特性對于效率也是重要的。
在一個增強實施例中,壓縮技術從有損換算到無損(即,完美的或零失真的表示)。與上述增強實施例組合,這允許從高度有損到無損以相對于最初跨無損形式發(fā)送的極少或無額外總成本地逐步地構建數(shù)據(jù)對象的完美表示。
滿足以上所有要求的數(shù)據(jù)類型和壓縮技術的一個示例是以JPEG2000標準為代表的圖像的小波壓縮。
給定這些特性,如果存儲器是“連續(xù)的”(即,沒有離散化成字節(jié)),則理論上有可能僅通過實施對象的經(jīng)壓縮大小遵循如在本討論的開頭給出的收斂級數(shù)的約束、而在有限量的存儲器中高速緩存無限個數(shù)據(jù)對象。最近最常使用對象以低失真來表示,而最近最少使用對象逐步被壓縮得更多。所有對象的大小之和仍可以是任何有窮數(shù),如以下所示出的。
在實踐中,該方案出于以下兩個原因必須被修改
存儲器是離散的,使得例如在實踐中將對象壓縮到小于1位的表示通常是無意義的。
強迫由以上收斂公式之一描述的壓縮比的連續(xù)曲線將要求訪問高速緩存中的每一對象并在每次需要釋放某一空間時減小其表示大?。贿@在理論上是無限次的操作(在實踐中,可以是大量操作)。
實際版本
高速緩存中對象的個數(shù)實際上是有限的,但是通過使用Zeno高速緩存概念,這一數(shù)目可以比對常規(guī)的MRU高速緩存可行的要大得多。此外,高速緩存的對象具有以下特性如果最近被使用則將在高速緩存中以高質(zhì)量表示,且如果對象最近未被訪問,則該質(zhì)量將逐漸降低。在這一意義上,Zeno高速緩存可能更像人類記憶那樣來工作。
由于存儲器是離散的且存在最小壓縮大小,在該最小壓縮大小之下壓縮表示對用戶沒有任何價值,因此高速緩存的表示將服從最小壓縮比。由此,假定對象大小都相等(當然,它們無需相等),則可被儲存在高速緩存中的對象的絕對最大個數(shù)是高速緩存大小除以該最小壓縮大小。
有許多方式來設計由早先給出的理論公式之一(或任何其它收斂和)定界在上方并且因此也具有有窮和的級數(shù)。也可引入一附加的約束任何給定值順序地重復的可能性按使用相當少量的離散值y的方式以更高的n增加。這一級數(shù)的一個示例是
1,1/4,1/4,1/16,1/16,1/16,1/16,1/64,1/64,1/64,1/64,1/64,1/64,1/64,1/64,1/256,...
很清楚,1、2個1/4、4個1/16、8個1/64等的和為2,正如y=1/2^n一樣,但是如果將該級數(shù)取到n=16000,則僅使用大約log2(16000)即14個y值。在n=100萬時,僅使用約20個值。這意味著當必須釋放高速緩存中的空間時,只需進行少量的操作來保持高速緩存的當前內(nèi)容“符合”其限額一大部分已經(jīng)被壓縮到正確的大小。
許多其它序列也滿足必要的準則。另外,有可能使用理論上不收斂(即,其和是無窮的)的級數(shù),因為在實踐中在任何情況下都對有窮個數(shù)的項求和。
推廣
隨機推廣。可使用隨機算法來以多種方式改進該基本算法。以上2*1/4、8*1/16等級數(shù)的主要缺點來自于其強度一其少量的假定值。也可使用隨機選擇來以加權方式“擠壓”高速緩存元素的一隨機子集,直到釋放了某一目標量的空間。這能起作用是因為高速緩存中的確切位置對于大n變得越來越不重要。擠壓量(在某種程度上)也可以是隨機的。使用像這樣的隨機方法可消除對象質(zhì)量中明顯的不連續(xù)性或閾值。
除了僅僅MRU/LRU之外,高速緩存還可涉及關于接著可能需要哪些對象的智能猜測;由此較不可能需要的對象可在具有將來需要的較高可能性的對象之前“擠壓”。這可與隨機算法相結合。
權利要求書
基本如所描述的一種MRU/LRU高速緩存系統(tǒng)。
用于對大文本、元數(shù)據(jù)和其它相干訪問非圖像數(shù)據(jù)進行空間編碼的方法
近來,已引入了諸如JPEG2000/JPIP1等圖像壓縮標準來滿足所需的工程目標使得非常大的圖像(例如,大小為千兆像素)能夠通過低帶寬通信信道從服務器遞增地或選擇性地遞送到客戶機。當以全分辨率查看這些圖像時,在任何給定時刻僅有限的區(qū)域可適合客戶機的圖形顯示器;新標準朝向選擇性地訪問這些區(qū)域并通過通信信道僅發(fā)送與該區(qū)域相關的數(shù)據(jù)來調(diào)整。如果該“感興趣的區(qū)域”,即ROI連續(xù)地改變,則客戶機和服務器之間通過低帶寬信道的連續(xù)對話可繼續(xù)將該區(qū)域的客戶機表示保持在ROI準確度之內(nèi)。
本發(fā)明涉及這些可選擇性解壓的圖像壓縮和傳送技術對于文本或其它非圖像數(shù)據(jù)的擴展。在最簡單的例示中,想像例如James Joyce的書Ulysses等大文本??赏ㄟ^將每一章節(jié)放入其自己的列來格式化該文本,其中對順序章節(jié)的列從左到右排列。列被假定為具有以字符為單位的最大寬度,例如100。圖2示出了以此方式編碼為圖像的整個Ulysses文本,其中每一文本字符對應于單個像素。圖1中的像素強度值簡單地是對應字符的ASCII碼。由于灰度級像素和ASCII字符都適合8位(值0-255),因此像素值與字符之間的對應性是相當自然的。Ulysses以普通ASCII表示(即,作為.txt文件)的全部文本是1.5MB,這可能太大以致于無法通過窄帶寬通信信道整體傳送。被編碼為無損JPEG2000的圖1的ASCII文本圖像是2.2MB。如果書的字符在長度上更多地是相等的,則該大小在某種程度上可被減小,導致文本圖像中較少的空余空間(編碼為0)。然而,比總體文件大小重要得多的是普通的JPIP服務器向客戶機選擇性地且遞增地提供該文件的能力。以足以閱讀字符的縮放水平(這要求客戶機方顯示器上多于1像素/字符)查看該文本的任何客戶機可使用JPIP來僅請求文本的相關部分。該操作是高效的,且在使得無法下載整個文本的條件下,甚至對于到服務器的非常低的帶寬連接,對該文本的讀者也可實現(xiàn)足夠的性能。
注意,可使用特別為對大文本的選擇性訪問而設計的客戶機/服務器技術來實現(xiàn)類似的效果,但是文本圖像方法(如此稱呼它)具有優(yōu)于常規(guī)實現(xiàn)的多個優(yōu)點
———————————
1例如參見David Taubman的Kakadu實現(xiàn),www.kakadusoftware.com。Taubman是JPEG2000 ISO標準委員會成員。
它使用為非常大的數(shù)據(jù)量設計的現(xiàn)有技術和協(xié)議
它容易地按比例放大到大小為許多千兆字節(jié)或更多的文本,而沒有任何性能降低
由于訪問固有地為二維的,因此在許多情況下(例如,當文本如在Ulysses情況中那樣要按列查看時)該方法比將文本作為一維串來處理的方法要高效得多
由于在JPEG2000中使用了小波,因此文本服從多分辨率表示;盡管文本不能以除最終(最詳細)分辨率之外的分辨率來閱讀,但是對較低分辨率小波的較寬的空間支持自然地為靠近感興趣區(qū)域的文本提供了智能的客戶機方高速緩存;在滾動期間移動ROI因而是高度有效的。
擴展該方法來處理格式化文本、Unicode或其它元數(shù)據(jù)是直截了當?shù)模驗樗羞@些數(shù)據(jù)都可使用可能帶有嵌入的轉(zhuǎn)義序列的ASCII文本串來表示。
在許多應用中,JPEG2000用作一種有損壓縮格式,這意味著解碼的圖像字節(jié)不必與原始字節(jié)相同。很清楚,如果圖像字節(jié)表示文本,則有損壓縮是不可接受的。然而,JPEG2000的設計目標之一是有效地支持無損壓縮,因為這在成像領域的某些分區(qū)(例如,醫(yī)學和科學)中是重要的。與通常能按24∶1來容易地壓縮的視覺上可接受的有損圖像相比,用于照片圖像的無損壓縮比通常僅在2∶1左右。
有損和無損圖像壓縮可在具有良好空間連續(xù)性的圖像上最佳地操作,這意味著相鄰像素的強度值之間的差異被最小化。原始的ASCII編碼從這一觀點來看很明顯不是最優(yōu)的。改進該編碼的一種非常簡單的方式是在文本中按照頻率對字符重新排序,或者簡單地在英語語言中,從最高頻率到最低頻率重新排序代碼0保留空白間隔,代碼1變?yōu)殚g隔字符,代碼2及之后的代碼為e、t、a、o、i、n、s、r、h、1等。圖2和3將文本圖像與ASCII編碼以及這種字符頻率編碼進行了比較。很清楚,像素值往往在O附近聚集;至少重要的是,一個字母和下一字母之間的差異往往被顯著減小。當該頻率編碼的文本圖像被無損壓縮為JPEG2000時,文件大小是1.6MB,僅僅大于原始的ASCII文本文件(1.5MB)且比ASCII編碼的文本圖像小37%。采用對字母編碼的進一步優(yōu)化,經(jīng)壓縮文件大小可較好地下降到ASCII文本文件大小之下。進一步優(yōu)化可包括但不限于
使用字母轉(zhuǎn)換概率(Markov-1)而非僅頻率(Markov-0)來形成編碼
將一個字符和下一字符之間的增量或差異而非字符本身編碼為像素。
采用這些增加的優(yōu)化,對先前列出的優(yōu)點增加的是在服務器方,準備好以此方式提供的文本實際上相對于原始ASCII進行了壓縮。
本發(fā)明此處是在JPEG2000/JPIP上下文中作為選擇性的圖像解壓技術來討論的,但是沒有關于本發(fā)明的任何內(nèi)容將其限于特定的格式或協(xié)議。例如,LizardTech的MrSID格式和協(xié)議具有類似的特性,且也能起作用。
圖1完整的Ulysses文本圖像,原始ASCII編碼(白=O,黑=255)
圖2 Ulysses的前5個字符(截斷)的文本圖像。原始ASCII編碼白=O,黑=255
圖3按照頻率編碼的U1ysses的前5個字符(截斷)的文本圖像(最簡單的重映射)
權利要求書
一種對大文本等進行空間編碼的方法,包括將多個字符中的每一個的ascii值編碼成一強度水平。
用于虛擬書、向?qū)Щ蚧脽羝姆蔷€性高速緩存
本發(fā)明涉及用于由計算機訪問通常為圖像的虛擬數(shù)據(jù)的新穎方法。它適用于其中可視內(nèi)容由以某種確立的次序一次查看一個或幾個的一系列對象構成的任何情形。
級數(shù)y(n)=n^-p對p>l的無窮和是有窮的,其中n從1到無窮大。類似地,y=1/b^n的和對b>l是有窮的。
(例如,在后一情況下,如果b=2,則該和恰好為2)。像這樣的收斂級數(shù)的概念可用于實現(xiàn)一種高效形式的數(shù)據(jù)高速緩存,如先前提交的臨時申請,即附加的展示A中所描述的。它尤其適用于虛擬書(或“電子書”)、“向?qū)А?在圖形用戶界面的意義上,表示用于執(zhí)行多步驟過程的交互式窗口的線性進展的術語)、虛擬幻燈片或其它類似的基于虛擬內(nèi)容的時間進展的顯示。
現(xiàn)有技術
例如ACD Systems的ACDSeeTM等某些流行的圖像瀏覽應用程序?qū)崿F(xiàn)“向前讀(read-ahead)”和“向后讀(read-behind)”策略來避免虛擬圖像幻燈片演示期間響應性的閃爍或缺乏。這涉及除當前圖片之外還加載并解壓演示中的下一和前一圖像文件。當用戶按下一個鍵時,定時器到期或者某一其它事件發(fā)信號通知圖像改變,所顯示的圖像立即用“在后方等待”的下一圖像來替換,且讀取并解碼后面的圖像以準備好下一次轉(zhuǎn)換。舊的前一圖像一現(xiàn)在有兩個圖像在后面一通常從存儲器中擦除,從而保持存儲器中的圖像數(shù)為3。“向后讀”相反允許即刻用前一圖像替換屏幕上的圖像。實際上,該策略使得計算機總是“準備好”顯示下一或前一圖像(除非用戶的幀前進速率超過了計算機的圖像解碼速率)。如果沒有向前讀,則當用戶請求下一圖像時,計算機一般必須延遲響應直到下一圖像已被讀取和解碼,或者在解碼下一圖像時增量地更新顯示,這通常導致閃光、閃爍或以其它方式分散注意的轉(zhuǎn)換。這些損害對用戶而言都是令人討厭的。
向前讀/向后讀的不利方面如下
- 用戶不能在不消除好處、重新引入延遲、缺少響應性或閃爍的情況下向前或向后跳過一個以上圖像;
- 如果用戶比圖像可被完全解壓的速率更快地在圖像中向前或向后移動,則該好處再一次被消除;
- 存儲器使用是保持當前圖像所需的三倍(假定所有圖像大小相同)。
發(fā)明細節(jié)
本發(fā)明結合多分辨率成像擴展了向前讀/向后讀的概念。多分辨率成像能以分辨率階梯來解壓,例如全大小、半大小(在每一邊上)、四分之一大小、八分之一大小等等。一般而言,以1/8大小解壓圖像所需的時間應當是以全分辨率解壓該圖像所需時間的1/8;并且當然,需要1/8的存儲器來保持1/8大小的圖像。
在其最簡單的例示中,本發(fā)明涉及在存儲器中保持當前圖像的完整表示、下一和前一圖像的半大小表示、前一圖像之前和下一圖像之后的圖像的四分之一表示,依此類推。可以容易地驗證,圖像大小的雙邊無窮和是...+1/16+1/8+1/4+1/2+1+1/2+1/4+1/8+1/16+...=3。因此,存儲要求與普通的向前讀/先后讀的要求相同。然而,在理論上,任何演示中的所有圖像(或者從數(shù)學上來說無窮數(shù)目的圖像)是以某一分辨率來表示的,雖然該分辨率可能非常低。在實踐中,有限的圖像大小和離散的存儲器意味著僅有有限數(shù)目的圖像適合,但是該數(shù)目可能相當大。在某些應用中,可能期望僅高速緩存接下來的圖像,或者僅高速緩存先前的圖像;這些情況求和為2而非3。分辨率級數(shù)可被定義為函數(shù)r(i),其中整數(shù)i=...,-3,-2,-1,0,1,2,3,...表示相對于當前圖像i=O在圖像隊列中的位置。
(因此,i=1是下一圖像,而i=-1是前一圖像)。具有r(0)=1,如果i不等于0則r(i)<=1,且r(i)不隨絕對值|i|的增加而增加的一般特性的其它分辨率級數(shù)也可以是適當?shù)?。甚至r(i)的和不收斂到有窮數(shù)的級數(shù)也可能是合適的,因為在實踐中通常不會有無窮數(shù)目的圖像。
這一圖像的多比例表示必須與多分辨率呈現(xiàn)方案相耦合來允許客戶機或查看者即時響應于用戶請求切換圖像。這一呈現(xiàn)方案簡單地對圖像的較低分辨率表示進行內(nèi)插或“向上采樣”以在高分辨率屏幕上顯示。當另外的更高分辨率圖像數(shù)據(jù)變得可用時,顯示器然后必須動態(tài)地細化以反映該新的較高質(zhì)量的數(shù)據(jù)。該細化可以是瞬時的,或者它可使用逐漸混和技術或掩蓋從低到高視覺質(zhì)量的轉(zhuǎn)換的其它技術來實現(xiàn)。一般而言,從非常低分辨率的圖像數(shù)據(jù)內(nèi)插得到模糊的外觀。如果高分辨率成像替代了低分辨率的內(nèi)插成像、隨時間的推移而混和,則感知效果是使圖像看似“逐漸聚焦”。
在轉(zhuǎn)換到一不同的圖像之后,查看者或客戶機必須向服務器請求附加數(shù)據(jù)或從文件加載附加數(shù)據(jù),以改善新的當前圖像以及周圍圖像(如果是前進圖像,則通常是新的下一圖像,或者如果后退,則是新的前一圖像)的質(zhì)量。當當前圖像改變時也可丟棄不需要的高分辨率數(shù)據(jù)以保存總的存儲器占用區(qū)(footprint)。
該方案具有優(yōu)于傳統(tǒng)的向前看/向后看方案的許多優(yōu)點,包括
- 用戶可一次向前或向后跳過任意數(shù)目的圖像一較大的跳過僅僅導致新圖像的較模糊的初始外觀;
- 存儲器占用區(qū)可以不比傳統(tǒng)方法大,且甚至可通過使得函數(shù)r(i)更急劇地下降,例如1/64,1/16,1/4,1,1/4,1/16,1/64,...而更小。
- 用戶能夠“翻閱”圖像的速率是不受限制的;迅速翻閱僅僅導致翻閱期間的模糊外觀。由于對移動視覺刺激中細節(jié)的感知的心理學限制,翻閱期間該模糊性的部分或全部甚至可保持對用戶不可見。
擴展
盡管以上討論專門涉及改變圖像分辨率,但是注意存在可使用更多或更少數(shù)據(jù)來表示圖像的其它漸進式分解方案,且當附加數(shù)據(jù)變得可用時圖像質(zhì)量有動態(tài)改善。例如,在基于變換的編碼中,附加的變換系數(shù)可逐漸改善質(zhì)量。以上所述的方法自然地延及這些其它漸進式(盡管不必是多分辨率的)方案。
以上所述的本發(fā)明適用于線性圖像序列,但是它可延及圖像的“圖”,即其中一個圖像之前或之后可以(可能通過用戶選擇)有一個以上可能的下一或前一圖像的圖像集合。在這一情況下,原始函數(shù)r(i)可經(jīng)由一次轉(zhuǎn)換、兩次轉(zhuǎn)換等應用于可能在當前圖像之后的所有圖像;或者可以有優(yōu)先級地對通過圖像集的特定“路徑”加權;或者可根據(jù)某一分配算法使用約束在所有可能的前導或后繼圖像中分配某一固定量的存儲器。
最后,盡管以上討論假定圖像是靜態(tài)的且先前已被壓縮,但所描述的所有技術同樣適用于其中圖像內(nèi)容被動態(tài)生成的情況,這表示計算或程序或小程序的可視界面的輸出。在這一情況下,計算、程序或小程序必須能夠?qū)⑵渥陨沓尸F(xiàn)到大或小“可視顯示”上,即以不同的分辨率來呈現(xiàn)(或使用某一非像素表示以變化的程度粗略或精細地呈現(xiàn)其自身)。如同圖像一樣,情況必須是程序以四分之一大小呈現(xiàn)其自身所花費的時間大約是它以全大小呈現(xiàn)所花費的時間的四分之一。
權利要求書
一種方法,包括高速緩存圖像,所述高速緩存的步驟是非線性的。
用于與具有大量潛在大圖像的動態(tài)、遠程相冊有效交互的方法
諸如JPEG2000/JPIP1等近來開發(fā)的圖像壓縮和傳送標準允許通過窄帶寬通信信道來對大圖像(即,大小為千兆字節(jié))進行交互式顯示。然而,這些新興標準和技術未提供用于實現(xiàn)更熱望目標的任何顯而易見的手段允許同時與非常大量的圖像進行靈活的可視交互,其中每一圖像也可能非常大。本發(fā)明允許這樣的交互。以下情形既使得該系統(tǒng)的技術能力變得具體,又描述了通過該技術允許的某些應用。
情形#1a。用戶將其整個數(shù)字照片(每張有5兆像素)集合保存在其筆記本計算機的硬盤上。她是一個殷切的攝影者,且在若干年之后,該集合總共有25,000個圖像。她使用本發(fā)明來組織該整個集合,并且能夠動態(tài)地重新排列照片以將它們按照日期、大小、顏色或其它特性來分類,并提取子集。當查看該整個集合時,她可平滑且連續(xù)地縮小直到所有照片都看得見2、放大以查看單張照片的細節(jié)、或縮放到任何中間視圖。
情形#lb。情形1#a的用戶可將其家庭計算機配置為服務器,并且然后如在情形#1a中那樣從遠程客戶機計算機導航整個照片集合。
情形#2a。一個藝術博物館投資于對所有其油畫的高分辨率掃描(100兆像素及以上),并將以幾十個或幾百個這樣的油畫為特色的在線展示在空間上用描述性標題組織而放在一起。使用本發(fā)明,該展示不僅可從圖書館內(nèi)本地訪問,而且甚至通過低帶寬通信來瀏覽該集合的遠程用戶也可如在情形#1a和#1b中那樣掃視和放大或縮小以導航這些素材。
情形#2b。藝術博物館創(chuàng)建了表示博物館建筑物的虛擬三維空間,該3D模型內(nèi)所有藝術品的高分辨率掃描都在其“地理上正確的”位置上?;蛘撸S虛擬博物館空間可不用物理對應物來創(chuàng)建。這些3D模型可按類似于情形#2a的2D形式的方式本地或遠程導航。對放大的二維操作的模擬是移至靠近圖像表面,并且縮小類似于從圖像表面移開。
————————————
1例如參見David Taubman的Kakadu實現(xiàn),www.kakadusoftware.com。Taubman是JPEG2000 ISO標準委員會成員。
2假定顯示器是高分辨率的(1920x1200=2.3兆像素),則同時查看25,000個圖像的整個集合給出每一圖像大約為92個正方形像素,因此每一“縮略圖”約為一邊有sqrt(92)=9.6像素。令人驚訝的是,甚至這些非常小的縮略圖也通常能夠暗示圖像上的字符,且至少來自具有相似色域或成分的細節(jié)的圖像將可被清楚地識別。
情形#2c。博物館還以非常高的分辨率掃描了其14世紀的祈禱書,從而得到>100兆像素的數(shù)百個圖像。這些圖像被組裝成一“虛擬書”,它是在線可用的對原始圖像的高質(zhì)量代用物。該書可用三維中可翻動的頁面來本地或遠程導航。
JPEG2000/JPIP中與允許本發(fā)明有關的關鍵特征是
多比例圖像表示,使得能夠以低于全分辨率的分辨率階梯解壓圖像文件。在大多數(shù)情況下,這些分辨率按照2的冪從原始圖像向下采樣,例如,如果原始圖像是512×512像素,則256×256、128×128、64×64、32×32、16×16、8×8、4×4、2×2和1×1表示也是可用的。1×1形式僅僅是對應于整個圖像的平均色的單個像素值;逐漸變高的分辨率逐漸增加更多細節(jié)。對于某些圖像,最低分辨率(例如,4×4、2×2和1×1)可能不是可用的。
選擇性地僅以給定分辨率解壓圖像的一部分(稱為“感興趣的區(qū)域”,即ROI),例如來自512×512圖像的256×256分辨率的32×32像素部分的能力。
在服務器上有效地執(zhí)行該多比例選擇性解壓(即,不解析整個圖像文件),以及僅向遠程客戶機提供重建感興趣的區(qū)域和分辨率所必需的限量信息的能力。所發(fā)送的信息量應當大致與ROI的大小成正比。
滿足這些要求的任何其它圖像壓縮格式/協(xié)議都是同等適用的。在理解它如JPEG2000那樣可以是基于小波的,或基于某一其它技術的基礎上,將圖像格式簡稱為“多比例”。
本發(fā)明定義了可在各種配置中用于實現(xiàn)以上列出的情形的預先計算的步驟和交互式呈現(xiàn)算法。所有這些情形涉及用戶與圖像“全域”的交互;因此用于預計算的起始點是引用個別圖像的文件名、URL或其它字符串的列表。當用戶縮小得足夠遠來一次性查看所有這些圖像時,客戶機或服務器遍歷所有圖像文件是不切實際的,因為可能有非常大量的圖像。例如,在個別圖像占據(jù)屏幕上2×2=4個像素的狀況中,視圖中可以有幾萬或幾十萬個圖像;即使這些圖像支持有效的低分辨率訪問,僅僅打開和關閉100,000個文件也涉及大的額外開銷且不能在交互式時間尺度上實現(xiàn)。因此,有必要使用這些圖像的低分辨率版本的高速緩存的表示,稱為“綜合畫”。綜合畫是以低分辨率呈現(xiàn)且被有效地填塞到一矩形區(qū)域中的所有圖像的鑲嵌或拼貼,如圖1所示。可被嵌入綜合畫圖像文件或單獨儲存的輔助元數(shù)據(jù)用特定圖像文件標識了綜合畫圖像上的矩形區(qū)域。
圖1被填塞到綜合畫中的多于1000個圖像(各種大小的數(shù)字化地圖的集合)
在本發(fā)明的最簡單實現(xiàn)中,綜合畫圖像本身可使用縮放和掃視界面來導航。當用戶放大得足以用盡綜合畫圖像中可用的分辨率時,元數(shù)據(jù)將客戶機指引到個別圖像文件,且客戶機使用來自這些文件的成像來以更高分辨率呈現(xiàn)。選擇以像素為單位的總綜合畫大小以使得其分辨率在其中僅有幾個圖像同時可見的階段中僅在放大期間被用盡;因此從不需要一次訪問多于幾個圖像。在隨后的縮放和掃視期間,圖像流按需打開和關閉以限制任何給定時刻打開的數(shù)目。
該導航許多高分辨率圖像的最簡單方法遭受一個主要缺點綜合畫布局是為填塞效率而設計的,但是用戶可能希望屏幕上有不同的視覺排列。此外,用戶可能希望能夠在屏幕上動態(tài)地重新排列圖像布局。為了允許這一情況,可利用稱為“紋理映射”的圖形呈現(xiàn)技術,該技術可用軟件來實現(xiàn),但是一般在現(xiàn)代的個人計算機上被硬件加速。紋理映射允許“紋理”或源圖像的一部分被繪制在顯示器上、可任選地重新按比例縮放該圖像、旋轉(zhuǎn)該圖像、并執(zhí)行三維透視變換。其它硬件加速變換常常也得到支持,包括色彩校正或改變、全透明或部分透明、采光、遮蓋、以及坐標重映射。綜合畫的低分辨率版本可用作“紋理”,使得當用戶放大時,綜合畫中的個別圖像可用任何方式動態(tài)地重新映射,如圖2所示??墒褂靡粋€以上紋理映射,在這一情況下,每一紋理映射可以是包含圖像的一個子集的綜合畫。
在另一增強實施例中,紋理映射技術(一般僅適用于一個或多個綜合畫圖像的低分辨率呈現(xiàn))可僅在動態(tài)重新排列期間使用;當圖像排列為靜態(tài)時,可使用軟件合成組裝屏幕上更高清晰度重新排列的綜合畫的全部或部分。該軟件合成方法與美國專利申請No.10/790,253中描述的惰性多分辨率呈現(xiàn)技術相組合尤其有價值,該專利申請的副本此處作為展示A來提供。該方法實際上通過重新排列原始的綜合畫的成像創(chuàng)建了新的“顯示綜合畫”。
有可能使用這種綜合畫重新排列來支持對圖像的重新組織而無需求助于紋理映射。在這一情況下,排列之間的轉(zhuǎn)換可以是或可以不是動畫的。
進一步擴展
紋理映射、軟件呈現(xiàn)或兩者的任何組合可用于在三維而非平面上呈現(xiàn)成像。三維中的動態(tài)重新排列也是可行的。三維應用包括虛擬圖庫或其它走查環(huán)境以及虛擬書,尤其是當結合由申請人與此同時提交并作為展示B附于此的共同待決的臨時申請中所描述的發(fā)明使用的時候。虛擬書應用在圖3中示出。該示例也示出了該方法的擴展,其中用于局部透明度(粗糙邊緣)的阿爾法通道作為除紅、綠和藍色色彩分量之外的圖像信息來儲存。硬件加速的紋理映射的大多數(shù)實現(xiàn)都支持阿爾法通道。在2D或3D中適用的另一擴展是圖像的動態(tài)變形,例如當翻書時使該書的頁面彎曲。
圖3 3D書
本發(fā)明也可被擴展成支持除靜態(tài)圖像之外的可視對象,諸如可視計算或應用程序或小程序的輸出。
權利要求書
一種方法,包括在動態(tài)重新排列期間執(zhí)行紋理映射以及當這一動態(tài)重新排列停止時停止這樣的執(zhí)行。
用于將地理空間或其它向量數(shù)據(jù)作為圖像來編碼和提供的方法
近來,已引入了諸如JPEG2000/JPIP1等圖像壓縮標準來滿足所需的工程目標使得非常大的圖像(例如,大小為千兆像素)能夠通過低帶寬通信信道從服務器遞增地或選擇性地遞送到客戶機。當以全分辨率查看這些圖像時,在任何給定時刻僅有限的區(qū)域可適合客戶機的圖形顯示器;新標準朝向選擇性地訪問這些區(qū)域并通過通信信道僅發(fā)送與該區(qū)域相關的數(shù)據(jù)來調(diào)整。如果該“感興趣的區(qū)域”,即ROI連續(xù)地改變,則客戶機和服務器之間通過低帶寬信道的連續(xù)對話可繼續(xù)將該區(qū)域的客戶機表示保持在ROI準確度之內(nèi)。
本發(fā)明涉及這些可選擇性壓縮的圖像壓縮和傳送技術對于地理空間(geospatial)或圖解數(shù)據(jù)的擴展。它組合并擴展了在先前的申請(1)作為展示A附加的Method for spatially encoding large texts,metadata,and other coherentlyaccessed non-image data(用于對大文本、元數(shù)據(jù)和其它相干訪問非圖像數(shù)據(jù)進行空間編碼的方法)以及(2)作為展示B附加的METHODS AND APPARATUS FORNAVIGATING AN IMAGE(用于導航圖像的方法和裝置)中介紹的方法。在(2)中,介紹了連續(xù)的多比例道路地圖呈現(xiàn)的概念。對于發(fā)明(2)的基礎是以不同分辨率預先呈現(xiàn)的道路地圖或其它基于向量的圖的圖像的“?!保渲锌梢曉氐念悇e(例如,道路類別,包括國家高速公路、州高速公路和地方道路)用不同的視覺權重以不同的分辨率來呈現(xiàn)。在客戶機/服務器交互期間,下載一個以上這種圖像的對應區(qū)域,并且客戶機的顯示器示出這些區(qū)域的混和組合;混和系數(shù)和要混和的圖像分辨率的選擇取決于縮放比例。最終結果是客戶機方的用戶可導航大地圖(例如,美國所有的道路)、連續(xù)地縮放和掃視,而不經(jīng)歷任何視覺不連續(xù)性,諸如當縮放比例改變時道路類別出現(xiàn)或消失。相反,在每一比例下,強調(diào)最相關的類別;例如,當縮小以查看整個國家時,最大的高速公路被強烈地加權,從而使得它們清晰地突出,而在州級別時,次要的高速公路也被強烈地加權到足夠清晰的程度。當用戶放大到使用最詳細的預呈現(xiàn)圖像的點時,所有道路都清晰可見,且在用于地理空間數(shù)據(jù)的該較佳實施例中,所有元素以接近其物理上正確的比例示出。用于這些
—————————
1例如參見David Taubman的Kakadu實現(xiàn),www.kakadusoftware.com。Taubman是JPEG2000 ISO標準委員會成員。
最詳細預呈現(xiàn)圖像的最大合理分辨率是約15米/像素;然而,從用戶觀點來看,期望能夠更大程度地放大。以更高的細節(jié)預呈現(xiàn)出于以下若干原因是不合需要的首先,因為服務器方的文件大小變得過大(15米/像素的單個普通橫向Mercator區(qū)圖像可能已經(jīng)是千兆像素的范圍);其次,因為預呈現(xiàn)圖像是對于通常與高分辨率地圖呈現(xiàn)相關聯(lián)的非常粗略的那類黑白數(shù)據(jù)的低效表示;第三,因為客戶機可能需要“真實的”向量數(shù)據(jù)來執(zhí)行除靜態(tài)可視演示之外的計算任務。例如,路線指南系統(tǒng)可能突出道路或改變其顏色;與單獨的預呈現(xiàn)圖像相反,這僅當客戶機能夠訪問向量數(shù)據(jù)時才能在客戶機方完成。向量數(shù)據(jù)也可包括街道名、地址以及客戶機必須能夠靈活地布局并選擇性地呈現(xiàn)的其它信息。將街道名標簽預呈現(xiàn)到地像棧中很明顯是不合需要的,因為這些標簽必須取決于精確的位置和客戶機視圖的比例在不同的地方且以不同的大小繪出;不同的標簽呈現(xiàn)不應在用戶縮放時被彼此混和。預呈現(xiàn)這些數(shù)據(jù)也將消除對于字體的任何靈活性。
總而言之,向量數(shù)據(jù)(一般使用這一術語來指幾何學信息和諸如地名等其它信息)在所需的呈現(xiàn)分辨率較高時因其本身的權利對客戶機是重要的,同時是比預呈現(xiàn)成像更有效的信息表示。然而,注意,如果要以低分辨率呈現(xiàn)大區(qū)域,則向量數(shù)據(jù)可能變得過大且過于復雜,從而使得預呈現(xiàn)圖像成為更高效的表示。然而,即使是在低分辨率下,向量數(shù)據(jù)的某些子集也是必需的,諸如主要高速公路的名稱。
本發(fā)明擴展了(1)中所介紹的方法以允許空間向量數(shù)據(jù)被編碼并可能連同(2)的預呈現(xiàn)成像一起被選擇性地且遞增地發(fā)送到客戶機。使用現(xiàn)有技術,這可使用地理空間數(shù)據(jù)庫來實現(xiàn)。數(shù)據(jù)庫需要包括在空間上索引的所有相關的向量數(shù)據(jù)。這些數(shù)據(jù)庫提出了許多實現(xiàn)上的挑戰(zhàn)。此處,代替使用常規(guī)的數(shù)據(jù)庫,使用諸如JPEG2000/JPIP所支持的空間可尋址圖像來編碼和供應向量數(shù)據(jù)。
在本示例性實施例中,使用三個圖像或通道來表示地圖數(shù)據(jù),其每一個的深度為8位
根據(jù)(2),預呈現(xiàn)層是道路地圖的預計算文字呈現(xiàn);
指針層由位于或非常接近它們所引用的道路地圖特征(通常是交點)的2*2個像素塊構成;
數(shù)據(jù)層由在引用它們的2*2個指針上居中或靠近該指針定位的n*m個像素塊構成。
由于這三個通道大小相同且彼此對準,因此它們可用不同的顏色(在計算機顯示器上為紅、綠、藍,或者對于打印介質(zhì)為青、品紅、黃)來覆蓋以產(chǎn)生單色圖像。這些圖像在圖2-3中再現(xiàn)。圖1示出了單獨的預呈現(xiàn)層用于比較和定向。所示的地區(qū)是華盛頓州的King County,它包括西雅圖和許多其市郊。圖3a和3b分別是該地圖的市郊和市中心區(qū)域的特寫。
圖1預呈現(xiàn)的WA,King County的道路地圖
圖2示出預呈現(xiàn)的道路(黃色)、指針(品紅色)和數(shù)據(jù)(青色)的彩色版本
圖3a King County的市郊區(qū)的特寫
圖3b King County的市中心區(qū)的特寫
如果用戶導航到圖3a所示地圖的視圖,則客戶機將向服務器請求如所示出的所有三個圖像層的相關部分。預呈現(xiàn)層(以黃色示出)是顯示在屏幕上的三層中唯一照原樣的一層。另外兩層指定了向量數(shù)據(jù)。指針圖像由在2x2的像素網(wǎng)格上對齊的2x2個像素塊構成,每一像素網(wǎng)格指定了從其自己的位置到數(shù)據(jù)層中對應數(shù)據(jù)塊的開始(左上角)的(x,y)向量偏移(x和y是向量的各自包括16位整數(shù)的分量,因此各自為2像素)。該對應的數(shù)據(jù)塊進而以指定數(shù)據(jù)塊寬度和高度的2個16位值(4像素)開始。寬度首先被指定,然后被約束為最少是2,因此避免了讀取寬度和高度時的不明確。剩余的數(shù)據(jù)塊可作為可包含向量、文本或其它信息的任何組合的二進制數(shù)據(jù)來對待。在圖2-3的示例中,數(shù)據(jù)塊包含包括街道名、地址范圍和向量表示的街道地圖信息。
指針和數(shù)據(jù)層像預呈現(xiàn)層一樣是預計算的。指針和數(shù)據(jù)層的預計算包括將所有相關向量數(shù)據(jù)編碼成數(shù)據(jù)塊,以及盡可能高效地將指針和數(shù)據(jù)塊填塞到其相應圖像中。在鄉(xiāng)村或稀疏的市郊區(qū)域(見圖3a)中,特征往往是間隔良好的,導致在指針和數(shù)據(jù)圖像中有大的空白區(qū)。在指針出現(xiàn)的地方,它們精確地落在它們所引用的特征上,且其對應的數(shù)據(jù)塊進而通常精確地位于指針的中心。然而在密集的市中心區(qū)(見圖3b),特征通常太靠近指針和數(shù)據(jù)塊以致于無法全部適合。因此,有必要使用一種矩形填塞算法來嘗試將指針和數(shù)據(jù)塊放置得盡可能靠近其期望的位置而沒有任何重疊。結果在圖3b中很明顯靠近西雅圖的湖和海岸用對應于陸地上的特征的數(shù)據(jù)塊來填充。由于所有的市中心區(qū)都是由較稀疏的區(qū)域(市郊、山或大量水)圍繞的,因此總是有可能將市中心數(shù)據(jù)塊放置在地圖上的某處;一般而言,即使在密集的城市內(nèi),也有使得該“外流(spillover)”不會過度嚴重的足夠的空白區(qū)。外流速率越高,地圖向量數(shù)據(jù)就變得定位越差。外流在數(shù)據(jù)層圖像的分辨率增加時顯著降低,且總是有可能找到效率和非局部性被適當平衡的分辨率。在北美,15m/像素看似為一種好的選擇。它在市郊區(qū)域是“過多的”,但是在接近城市之處,它如圖2和3b所示地限制的外流。
有效的矩形填塞在計算上是一個難題;然而,在計算幾何文獻中有眾多逼近算法用于解該難題,且本發(fā)明并不規(guī)定這些算法中的任何特定的一個。實際使用的算法涉及分層“矩形樹”,它使得以下操作變快
測試給定矩形是否與樹中已有的任何其它矩形相交;
插入一非重疊矩形;
找出圍繞目標點p的半徑r0<=r<r1的環(huán)中完整的“空角” (即,毗鄰已經(jīng)插入的接壤空白區(qū)的矩形的角)集。
用于盡可能地靠近目標點來插入新矩形的“貪婪算法”然后如下繼續(xù)
嘗試插入中心在目標點上的矩形。如果這成功,則該算法結束。
否則,定義半徑r0為該矩形的長度或?qū)挾戎械淖钚≈档囊话?,以及r1=r0*2。
找出r0和r1之間的所有“空角”,并按照遞增半徑來排序。
嘗試將該矩形按順序放置在這些角中的每一個上,并且在成功時,該算法結束。
如果所嘗試的插入沒有一個成功,則將r0設為r1,將r1設為2*r0,并去往步驟3。
該算法最終總能成功地放置矩形,只要圖像中的某處存在至少為正確尺寸的空白區(qū)。在它一次放置單個矩形的意義上它是“貪婪的”;它并不嘗試解出盡可能高效地填塞n個矩形的整個問題。(整體算法需要定義填塞效率的明確度量,從而指定最小化浪費的空間和最小化矩形與其“目標點”之間的距離之間的期望折衷。該貪婪算法并不要求明確地指定這一折衷,如可從上述算法中清楚的。)
圖4示出了用于三種情況的基本填塞算法的輸出。在每一種情況下,該算法順序地將多個矩形盡可能靠近公共點來放置。對矩形填塞問題的這一解法僅作為示例來提供。
圖4貪婪矩形填塞算法的測試輸出。左邊主要是較小的皮狀矩形;中間是較大的正方形矩形;而右邊是混合。
為使該貪婪填塞算法不對地圖的任何特定區(qū)域給予位置偏好,理想的是隨機化矩形插入的次序。在一個較佳實施例中,由此以隨機次序插入指針/數(shù)據(jù)塊對。其它排序在某些情況下可以進一步提高填塞效率;例如,將大塊插入到小塊之前可最小化浪費的空間。
指針總是2×2的(表示法是行x列);然而,對于數(shù)據(jù)塊,可自由地選擇寬高比;以正方形像素為單位的所需塊面積是由必須適合該塊的數(shù)據(jù)量來確定的,但是該面積可以適合許多不同形狀的矩形。例如,24字節(jié)的數(shù)據(jù)塊(包括4字節(jié)的寬度和高度信息,以及20字節(jié)的任意數(shù)據(jù))可恰好被表示為1×24、2×12、3×8、4×6、6×4、8×3或12×2。
(24x1是不合格的,因為如上所述,為使2字節(jié)的寬度在塊尺寸在客戶機方已知之前解碼,塊的寬度必須至少為2。)該塊也可剩余一個字節(jié)地被表示為5×5。將以上列出的除近似因數(shù)分解5×5之外的所有因數(shù)分解的集合稱為“天棚因數(shù)分解(ceiling factorization)”。對有效的天棚因數(shù)分解的要求是其面積至少是所需的面積,且沒有行或列被完全浪費;例如,7×4或3×9是無效的天棚因數(shù)分解,因為它們分別可被縮減為6×4和3×8。在最簡單的實現(xiàn)中,塊尺寸可僅基于數(shù)據(jù)長度的天棚因數(shù)分解來選擇;一般而言, “較正方形的”塊(諸如4×6)比斜塊(諸如2×12)能更好地填塞。最簡單的數(shù)據(jù)塊大小調(diào)整算法取決于它如何在“正方形”和浪費的字節(jié)之間折衷而選擇4×6或者5×5。更復雜的塊大小選擇算法可自適應地選取塊尺寸,作為搜索目標點附近的空白區(qū)的一部分。在一個實現(xiàn)中,以上算法的步驟1和4然后被修改如下
按照期望程度對所需數(shù)據(jù)長度的天棚因數(shù)分解排序,其中偏好較正方形的因數(shù)分解并且可能以浪費的字節(jié)為代價。進而嘗試在目標點p處放置尺寸由每一天棚因數(shù)分解給出的矩形。如果這些插入中的任一次成功,則該算法結束。
進而對于每一“空角”c,試圖在c處放置尺寸由每一天棚因數(shù)分解給出的矩形。一旦成功,該算法結束。
對該算法的進一步細化涉及指定用于交點的評分函數(shù),它與整體優(yōu)化函數(shù)一樣在浪費的空間、非正方形的寬高比和與目標點的距離之間進行折衷。
這三個地圖層一預呈現(xiàn)道路、指針和數(shù)據(jù)一中的每一個被儲存為JPEG2000或類似的空間可訪問表示。然而,對這三層的存儲要求是不同的。預呈現(xiàn)道路層無需是無損的;它只需在顯示時具有合理的感知準確度。在15m/像素下,可以發(fā)現(xiàn)0.5位/像素的無損小波壓縮是完全足夠的。然而,指針和數(shù)據(jù)層必須被無損地表示,因為它們包含客戶機必須能夠精確地重構的數(shù)據(jù)。無損壓縮一般不是非常高效的;例如,典型的數(shù)字圖像一般不能按照最多為2的因子來無損壓縮。
對于大多數(shù)形式的有損或無損壓縮,性能可通過使得圖像函數(shù)的量值變小,由此占據(jù)較少的有效位來優(yōu)化。因此,在增強實施例中,使用特殊的編碼技術來“平坦化”原始數(shù)據(jù)。這些技術的結果從圖5中可顯而易見,圖5示出了在“平坦化”之前和之后數(shù)據(jù)圖像的同樣密集填充的區(qū)域。注意,在平坦化之前,數(shù)據(jù)圖像具有完整的8位動態(tài)范圍,并展示出使得它非常差地壓縮的高頻和結構化圖案(實際上,該圖像的無損JPEG2000不會小于原始的未處理大小)。在“平坦化”之后,大多數(shù)結構不見了,并且絕大部分像素具有<8的值,因此適合3位。對應的JPEG2000具有比3∶1更好的壓縮?!捌教够笨梢园ǘ鄠€簡單的數(shù)據(jù)變換,包括以下(這是在圖5的示例中應用的變換的完整列表)
諸如數(shù)據(jù)塊的寬度或高度等16位無符號值通常使用一高位字節(jié)和一低位字節(jié)來編碼。可能需要16位是因為值偶爾會超過255(8位限制)某一指定的量,然而在大多數(shù)情況下這些值都是很小的。對于適合8位的值,高位字節(jié)將為0。頻繁的0高位字節(jié)后跟有效的低位字節(jié)解決了圖5a部分中清楚的大多數(shù)2像素周期性??扇缦轮赜成?6位
左邊的8列表示該對的第一個像素,它先前在高位字節(jié);右邊的8列表示第二像素,它先前在低位字節(jié)。通過以此方式重新分配位,可訪問值的范圍(0-65535)保持不變,但是兩個字節(jié)變得更對稱。例如,對于所有的16位值0-255,兩個字節(jié)各自假定值<16。
類似的技術可應用于32位或更大的整型值。這些技術也可擴展到有符號量。對于其中符號頻繁改變的變量,如對于道路向量的差分編碼所發(fā)生的,可向位置0分配有符號位,并且如上所述地以交替的字節(jié)編碼絕對值。注意,為令人信服地繪制,道路向量數(shù)據(jù)必須通常以比像素精度更大的精度來表示??筛臑槭褂眯∮谙袼氐娜我鈫挝?,或者等效地,可結合以上技術使用定點來實現(xiàn)子像素精度。在本示例性實施例中,對于1/16像素精度使用了4子像素的位。
當如上所述地對數(shù)字編碼時,理想的是使得數(shù)字盡可能地小。有時候上下文建議了一種明顯的方式來這樣做;例如,由于任何數(shù)據(jù)塊的寬度必須至少為2,因此在編碼之前從數(shù)據(jù)寬度中減去2。更重要的是,數(shù)據(jù)塊中編碼的指針和任何位置向量都相對于指針位置以像素來指定,而非以絕對坐標來指定。這不僅極大減小了要編碼的數(shù)字的大小;它還允許數(shù)據(jù)圖像的一部分在局部坐標系統(tǒng)中向量性地解碼和呈現(xiàn),而不考慮該部分的絕對位置。
對于定義曲線(例如,道路)的點序列的向量呈現(xiàn),只需相對于原始指針位置指定第一點;隨后的點可被編碼為“增量”,或從前一點的步進向量。在第二個這樣的點之后,后續(xù)的點可被編碼為二階導數(shù),或者當前和前一增量之差。使用二階導數(shù)來編碼一般對于諸如道路等結構是高效的,因為它們往往是具有導數(shù)連續(xù)性的曲線的離散化一即,它們逐步地改變其方向。
用于文本數(shù)據(jù)的另一“平坦化”技術在[1]中有描述,文本數(shù)據(jù)通常被編碼為ASCII,且對每一字節(jié)編碼單個字符。在[1]中所描述的應用中,編碼了英語文本,且因此字母基于字母在英語的代表性樣本中出現(xiàn)的遞減頻率來重映射。同樣的技術可在本文環(huán)境中使用,盡管地圖中所編碼的大部分由街道名構成的文本具有與普通英語相當不同的統(tǒng)計量。例如,數(shù)字和大寫字母要重要得多。
注意,用于如上所述地編碼指針或數(shù)據(jù)的特定方法是示例性的;許多其它編碼也是可行的?!傲己玫摹本幋a一般得到平滑和/或具有低動態(tài)范圍的圖像。
圖5“平坦化”之前(上方,a)和之后(下方,b)的相同的二進制8位數(shù)據(jù)(從Virgin Islands的道路地圖數(shù)據(jù)圖像的密集區(qū)中取得)
使用以上技術,15m/像素下的King County道路地圖壓縮如下
令人驚訝的是,JPEG2000表示(包括有損預呈現(xiàn)道路地像、無損指針層和無損數(shù)據(jù)層)實際上要小于將原始數(shù)據(jù)表示為表格文本的壓縮ZIP文件。(該文件是美國人口普查局2002 TIGER/Line數(shù)據(jù)庫的一部分。)然而,與原始的ZIP不同,該新表示已準備好交互式地向客戶機供應,且有效地支持連續(xù)可掃視和可縮放空間訪問。中介紹的原始的預呈現(xiàn)多比例地圖發(fā)明不僅包括單個預呈現(xiàn)圖像,還包括以逐漸粗略的分辨率呈現(xiàn)的、并帶有重新按比例縮放的線寬(或其它可視特征)的這些圖像的棧。盡管這些預呈現(xiàn)的任一個中都沒有省略任何特征,但是某些特征被削弱得足以僅在總計意義上清晰可見,例如,城市的地區(qū)道路在州級變?yōu)榘档幕疑:c。本發(fā)明可被擴展成包括對應于較粗略地預呈現(xiàn)的道路地像的指針和數(shù)據(jù)圖像,其中僅表示了原始向量對象的一個子集。例如,在比圖1-3的分辨率低得多的分辨率下的州級指針和數(shù)據(jù)圖像可能僅包括用于州和國家高速公路的數(shù)據(jù),而不包括所有的地區(qū)道路。這些較粗略的數(shù)據(jù)也可以是“抽象”,例如僅指定道路名而不指定向量。不同分辨率下的圖像可能包括原始數(shù)據(jù)的變化的混合或子集,或經(jīng)抽象的版本。該技術既允許所有相關數(shù)據(jù)都適應較小的粗略圖像,又向客戶機提供了對該比例下導航相關的向量信息的子集。
盡管以上列出的實現(xiàn)提出了每一分辨率下的8位灰度級預呈現(xiàn)地像,但是預呈現(xiàn)圖像也可以是彩色的。此外,即使預呈現(xiàn)圖像是單通道圖像,它們也可由客戶機彩色地顯示,因為向量數(shù)據(jù)可用于以與預呈現(xiàn)素材不同的顏色繪出重要的道路。最后,預呈現(xiàn)圖像可以省略向量數(shù)據(jù)中存在的某些特征或道路,從而依賴于客戶機來適當?shù)睾铣蓤D像和向量素材。
權利要求書
一種使用矩形填裝和JPEG表示來編碼圖像的方法。
專利申請
用于在縮放用戶界面中精確呈現(xiàn)的系統(tǒng)和方法
BLAISE HILARY AGUERA Y ARCAS
Kaplan&Gilman,LLP
代理案卷號489/2
用于在縮放用戶界面中精確呈現(xiàn)的系統(tǒng)和方法
相關申請
本申請要求2003年3月5日提交的美國臨時申請第60/452,075號、2003年3月12日提交的美國臨時申請第60/453,897號、2003年6月5日提交的美國臨時申請第60/475,897號、以及2003年5月30日提交的美國臨時申請第60/474,313號的優(yōu)先權。
發(fā)明領域
本發(fā)明一般涉及用于計算機的圖形縮放用戶界面(ZUI)。更具體而言,本發(fā)明是一種用于以既在計算上高效又精確的方式漸進地呈現(xiàn)可縮放可視內(nèi)容的系統(tǒng)和方法,在計算上高效能得到良好的用戶響應性和交互式幀速率,而精確的意義在于向量繪圖、文本和其它非照相內(nèi)容最終可在不進行通常導致圖像質(zhì)量降低的重采樣且不進行同樣導致降低的其它圖像內(nèi)插的前提下繪出。
背景技術:
大多數(shù)當前的圖形計算機用戶界面(GUI)是使用固定空間比例的可視組件來設計的。然而,從計算機圖形領域的誕生可以認識到,可視組件可以用使得它們在顯示器上不具有固定空間比例,而是可被放大和縮小的方式來表示和處理。對可縮放組件的期望在許多應用領域中都是明顯的;此處僅舉幾個例子查看地圖、瀏覽諸如報紙等大型的不同種類文本布局、查看數(shù)碼照片的相冊、以及用大數(shù)據(jù)集的可視化來工作。即使在查看諸如電子表格和報表等普通文檔時,能夠粗看一下文檔概述,然后在感興趣的區(qū)域上放大通常也是有用的。許多現(xiàn)代的計算機應用程序包括可縮放組件,諸如Microsoft _Word _和其它Office _產(chǎn)品(View(視圖)菜單下的Zoom(縮放))、Adobe _Photoshop _、Adobe _Acrobat _、QuarkXPress _等等。在大多數(shù)情況下,這些應用程序允許對文檔進行放大和縮小,但是無需對應用程序本身的可視組件進行放大和縮小。此外,縮放一般是用戶與軟件的交互的一個外圍方面,且縮放設置僅偶爾被更改。盡管對文檔的連續(xù)掃視是標準(即,使用滾動條或光標來將所查看的文檔向左、右、上或下平移),但現(xiàn)有技術的系統(tǒng)中缺少以用戶友好方式連續(xù)縮放的能力。
首先,闡明若干個定義。顯示器是用于向用戶輸出所呈現(xiàn)圖像的一個或多個設備。幀緩沖區(qū)用于動態(tài)地表示顯示器的至少一部分的內(nèi)容。顯示器刷新率是物理顯示器或其一部分使用幀緩沖區(qū)的內(nèi)容來重新刷新的速率。幀緩沖區(qū)的幀速率是更新幀緩沖區(qū)的速率。
例如,在典型的個人計算機中,顯示器刷新率是60-90Hz。大多數(shù)數(shù)字視頻例如具有24-30Hz的幀速率。由此,數(shù)字視頻的每一幀實際上以至少刷新顯示器的兩倍的速率來顯示??稍诓煌膸俾世枚鄠€幀緩沖區(qū),且由此這些幀緩沖區(qū)基本同時地在同一顯示器上顯示。這例如在具有不同幀速率的兩個數(shù)字視頻在同一顯示器的不同窗口中播放時發(fā)生。
縮放用戶界面(ZUI)的一個問題是當用戶縮放時可視內(nèi)容必須以不同的分辨率來顯示。對這一問題的理想解決方案是在每一連貫的幀中基于底層的可視內(nèi)容顯示精確且新計算的圖像。這一方法的問題是如果底層的可視內(nèi)容是復雜的,則當用戶縮放時可視內(nèi)容的每一分辨率的實時精確重計算在計算上是不切實際的。
作為以上內(nèi)容的結果,許多現(xiàn)有技術的ZUI系統(tǒng)使用多個預計算的圖像,其每一個是同一可視內(nèi)容但在不同分辨率下的表示。將這些不同的預計算圖像的每一個稱為一細節(jié)水平(LOD)。在概念上組織為分辨率遞減的圖像棧的完整的LOD集合被稱為LOD金字塔一見圖1。在這些現(xiàn)有技術的系統(tǒng)中,當發(fā)生縮放時,系統(tǒng)在LOD之間進行內(nèi)插并以期望分辨率顯示所得的圖像。盡管該方法解決了計算問題,但是它顯示通常模糊且無真實感的最終受損圖像,且由于它表示不同LOD的內(nèi)插而通常涉及信息的丟失。這些內(nèi)插誤差在用戶停止縮放、且有機會以不精確地匹配任一LOD的分辨率的選定分辨率來查看靜止圖像時尤其引人注意。
在預計算的LOD之間內(nèi)插的另一問題是該方法通常以與照相或圖像數(shù)據(jù)相同的方式來處理向量數(shù)據(jù)。諸如藍圖或線條畫等向量數(shù)據(jù)是通過使用一呈現(xiàn)算法處理一組抽象指令來顯示的,該呈現(xiàn)算法能夠以任何期望的分辨率呈現(xiàn)直線、曲線和其它圖元形狀。使用可按比例縮放字體呈現(xiàn)的文本是向量數(shù)據(jù)的一個重要的特殊情況。圖像或照相數(shù)據(jù)(包括使用位圖化字體呈現(xiàn)的文本)并不是這樣生成的,而是必須通過在預計算的LOD之間內(nèi)插或通過對原始圖像重采樣來顯示。此處將后者稱為非向量數(shù)據(jù)。
在縮放序列期間對每一幀使用呈現(xiàn)算法來以新分辨率重新顯示向量數(shù)據(jù)的現(xiàn)有技術系統(tǒng)必須將其自身限于簡單的向量繪圖,僅僅是為了達到交互式幀速率。另一方面,如對非向量數(shù)據(jù)那樣對向量數(shù)據(jù)預計算LOD并在它們之間內(nèi)插的現(xiàn)有技術系統(tǒng)遭受顯著降低的視覺質(zhì)量,因為大多數(shù)向量數(shù)據(jù)呈現(xiàn)中固有的銳邊對內(nèi)插誤差特別敏感。這一降低通常對于作為向量數(shù)據(jù)的特殊情況的文本內(nèi)容是不可接受的。
本發(fā)明的一個目的是創(chuàng)建復制用戶在他或她實際查看物理對象并將其移向他或她自己時所看到的縮放效果的ZUI。
本發(fā)明的另一目的是創(chuàng)建以適當?shù)姆直媛曙@示圖像、但是避免或減少最終顯示圖像中的內(nèi)插誤差的ZUI。本發(fā)明的又一目的是允許用戶在對向量內(nèi)容進行任意程度的放大的同時維持內(nèi)容的明晰的、未混和視圖,并維持交互式幀速率。
本發(fā)明的再一目的是允許用戶進行任意程度的縮小以獲得復雜的向量內(nèi)容的概觀,同時既保留了內(nèi)容的總體外觀又維持了交互式幀速率。
本發(fā)明的還有一個目的是減小交互期間用戶對LOD或呈現(xiàn)質(zhì)量之間的轉(zhuǎn)變的感知。
本發(fā)明的另有一個目的是允許在呈現(xiàn)圖像的各部分通常所需的信息尚未完整時通過混和來適度降低圖像質(zhì)量。
本發(fā)明的進一步的一個目的是當呈現(xiàn)圖像的各部分所需的更完整信息變得可用時通過使其銳聚焦來逐漸提高圖像質(zhì)量。
本發(fā)明的此外一個目的是最優(yōu)地且獨立地呈現(xiàn)向量和非向量數(shù)據(jù)兩者。
本發(fā)明的這些和其它目的在本領域的技術人員仔細閱讀了以下說明書之后將變得顯而易見。
發(fā)明概述
現(xiàn)有技術的上述和其它問題根據(jù)本發(fā)明來克服,本發(fā)明涉及一種用于實現(xiàn)在用戶放大或縮小、旋轉(zhuǎn)、掃視或改變他或她的圖像視圖時允許圖像以動態(tài)變化的分辨率來顯示的ZUI的混合策略。視圖中任何這樣的改變被稱為導航。圖像縮放到不等于預定LOD中任一個的分辨率是通過以從“環(huán)繞”期望分辨率的預定LOD內(nèi)插的新分辨率來顯示圖像來實現(xiàn)的。
“環(huán)繞LOD”意味著大于期望分辨率的最低分辨率的LOD和小于期望分辨率的最高分辨率的LOD。如果期望分辨率大于具有最高可用分辨率的LOD的分辨率,或小于具有最低分辨率的LOD的分辨率,則將僅有單個“環(huán)繞LOD”?;谝唤M預計算的LOD在期望分辨率向?qū)D像的動態(tài)內(nèi)插在文獻中被稱為MIP映射或三線性內(nèi)插。后一術語還指示使用雙線性采樣來對環(huán)繞LOD進行重采樣,之后在這些重采樣的LOD之間進行線性內(nèi)插(因此是三線性的)。例如,參見Lance Williams的“Pyramidal Parametrics”,ComputerGraphics(SIGGRAPH′83會議論文集)17(3)1-11(1983)。以上文獻通過整體引用結合于此。對由Williams介紹的MIP映射技術的明顯修改或擴展使用了對環(huán)繞LOD的非線性重采樣和/或內(nèi)插。在本發(fā)明中,重采樣和內(nèi)插操作是否為零階的(最接近的鄰居)、線性的、更高階的或更一般地非線性的是不重要的。
根據(jù)此處所描述的本發(fā)明,當用戶定義永遠不會是預定義LOD之一的分辨率的精確期望分辨率時,最終圖像然后通過較佳地首先顯示中間最終圖像來顯示。中間最終圖像是在圖像如下文所述地細化之前以期望分辨率顯示的第一個圖像。中間最終圖像可對應于使用現(xiàn)有技術以期望分辨率顯示的圖像。
在一個較佳實施例中,從中間最終圖像到最終圖像的轉(zhuǎn)變可以是逐步的,如將在下文中更詳細解釋的。
在一個增強實施例中,本發(fā)明允許LOD以任何分辨率增量間隔,包括無理增量(即,不能被表達為兩個整數(shù)之比的連續(xù)LOD之間的放大倍數(shù)或縮小倍數(shù)),如將在下文更詳細地解釋的。
在另一增強實施例中,每一不同LOD下圖像的各部分被表示為小塊,且這些小塊以使對查看者感知到的任何缺陷最小化的順序來呈現(xiàn)。在其它實施例中,所顯示的可視內(nèi)容由多個LOD(可能是如上所述的環(huán)繞LOD的超集)組成,其每一個都以正確的比例和位置顯示以使得顯示器以隱藏缺陷的方式逐漸漸隱到最終圖像。
各小塊在多個LOD中的呈現(xiàn)是以優(yōu)化可視內(nèi)容的外觀同時保持在可接受的計算復雜度水平內(nèi)的順序來實現(xiàn)的,使得系統(tǒng)可在具有大多數(shù)膝上型和臺式個人計算機中可用的典型時鐘速度的標準計算機上運行。
本發(fā)明涉及一種混合策略,其中圖像在快速縮放和掃視期間使用預定義LOD來顯示,但是當視圖足夠穩(wěn)定時,呈現(xiàn)并顯示精確LOD。精確LOD是以用戶選擇的精確分辨率來呈現(xiàn)和顯示的,該分辨率一般與預定義LOD不同。由于人類視覺系統(tǒng)在可視內(nèi)容仍在運動中時對于可視內(nèi)容的精細細節(jié)是不敏感的,因此該混合策略可以用少得多的計算來產(chǎn)生連續(xù)的“完美呈現(xiàn)”的假象。
附圖簡述
圖1描述了一個LOD金字塔(在此情況下,表示最高分辨率表示的金字塔底部是512x512樣本圖像,且對該圖像的相繼縮小倍數(shù)按2的因子示出);
圖2描述了在本發(fā)明的一個示例性實施例中使用的流程圖3是示出系統(tǒng)如何在縮放之后顯示最終圖像的另一流程圖4是圖1的添加了網(wǎng)格線的LOD金字塔,它示出了將每一LOD細分成樣本大小相等的矩形小塊;
圖5是結合本發(fā)明使用的另一流程圖,它描繪了用于在顯示器上顯示所呈現(xiàn)的小塊的過程;
圖6示出了此處更詳細解釋的稱為無理小塊的概念;以及
圖7描述了如以下更全面解釋的合成小塊以及組成該合成小塊的小塊。
較佳實施例的詳細描述
圖2示出了用于實現(xiàn)本發(fā)明的基本技術的流程圖。圖2的流程圖表示本發(fā)明的一個示例性實施例,并且在以初始分辨率顯示圖像時開始執(zhí)行。注意,本發(fā)明可在客戶機/服務器模型中使用,但是客戶機和服務器可以在相同或不同的機器上。由此,例如,可以有遠程地儲存在主機計算機上的一組離散LOD,并且用戶可通過本地PC連接到所述主機。所利用的實際的硬件平臺和系統(tǒng)對于本發(fā)明并不是關鍵的。
該流程圖以特定分辨率下的圖像的初始視圖進入起始框201。在本示例中,圖像被取為靜態(tài)的。在框202處顯示該圖像。用戶可通過例如移動計算機鼠標來導航該圖像。在框202處顯示的初始視圖在用戶導航該圖像時將改變。注意,底層圖像本身可以是動態(tài)的,諸如在運動視頻的情況中那樣,然而,出于本示例的目的,該圖像被視為是靜態(tài)的。如上所述,要顯示的任何圖像也可具有文本或其它向量數(shù)據(jù)和/或諸如照片和其它圖像等非向量數(shù)據(jù)。本發(fā)明以及以下全部討論無論圖像是包括向量還是非向量數(shù)據(jù)還是包括兩者都是適用的。
無論在框202中顯示的可視內(nèi)容的類型是什么,該方法都將控制傳遞到判別點203,在該點處可檢測導航輸入。如果未檢測到這一輸入,則該方法循環(huán)回到框202,并繼續(xù)顯示靜止的可視內(nèi)容。如果檢測到導航輸入,則控制將如圖所示被傳遞到框204。
判別點203可通過查找檢測移動的特定信號的軟件中的連續(xù)循環(huán)、硬件中的中斷系統(tǒng)或任何其它期望的方法來實現(xiàn)。用于檢測和分析導航請求的特定技術對本發(fā)明不是關鍵的。無論所使用的方法是什么,該系統(tǒng)都可檢測到請求,由此指示導航圖像的期望。盡管此處大多數(shù)討論涉及縮放,但是要注意,這些技術適用于縮放、掃視或其它導航。實際上,此處所描述的技術適用于對圖像的任何類型的動態(tài)變換或感知變化。這些變換可包括例如三維平移和旋轉(zhuǎn)、圖像過濾器的應用、局部拉伸、應用于圖像選中區(qū)域的動態(tài)空間變形、或可能展示更多信息的任何其它種類的變形。另一示例是虛擬放大鏡,它可在圖像上移動并放大該虛擬放大鏡下的圖像部分。當判別點203檢測到用戶正在發(fā)起導航時,框204然后呈現(xiàn)并顯示圖像的新視圖,該新視圖可具有例如與先前顯示的視圖不同的分辨率。
顯示新視圖的一種直截了當?shù)默F(xiàn)有技術是基于用戶放大或縮小時內(nèi)插LOD。所選LOD可以是“環(huán)繞”期望分辨率,即新視圖的分辨率的那兩個LOD。在現(xiàn)有技術系統(tǒng)中,內(nèi)插總是在用戶縮放時發(fā)生,且由此通常直接用硬件實現(xiàn)來獲得速度。判別點205中對移動的檢測與框204處對適當內(nèi)插圖像的基本立即顯示的組合導致圖像看似在用戶導航時連續(xù)縮放。在放大或縮小期間,由于圖像正在移動,因此內(nèi)插圖像足以看上去逼真且清晰。任何內(nèi)插誤差僅最小程度地可由人類視覺系統(tǒng)來檢測,因為這些誤差通過不斷改變圖像的視圖而被掩飾。
在判別點205,系統(tǒng)測試移動是否已基本停止。這可使用各種技術,包括例如測量視圖的一個或個參數(shù)的改變速率來實現(xiàn)。即,該方法確定用戶是否已到達他完成縮放的點。在判別點205處這一穩(wěn)定之后,控制被傳遞到框206,其中呈現(xiàn)精確的圖像,之后控制返回到框203。由此,以任何期望的分辨率,系統(tǒng)將最終顯示精確LOD。
值得注意的是,顯示并不是簡單地通過兩個預定義LOD的內(nèi)插來呈現(xiàn)和顯示的,而是可通過在框202處顯示初始視圖時使用用于呈現(xiàn)文本或其它向量數(shù)據(jù)的原始算法重新呈現(xiàn)向量數(shù)據(jù)來呈現(xiàn)和顯示。非向量數(shù)據(jù)也可被重采樣以在精確的所需LOD下呈現(xiàn)和顯示。所需的重新呈現(xiàn)或重采樣不僅可在以期望分辨率顯示所需的精確分辨率下執(zhí)行,而且還可在精確對應于如基于期望視圖計算的顯示器像素相對于底層內(nèi)容的正確位置的采樣網(wǎng)格上執(zhí)行。作為一個示例,顯示器上的圖像在顯示平面內(nèi)平移1/2像素不會改變所需的分辨率,但是它的確改變了采樣網(wǎng)格,因此需要對精確LOD的重新呈現(xiàn)或重采樣。
上述圖2的系統(tǒng)表示在視圖改變(例如,發(fā)生導航)時利用基于預定義LOD的內(nèi)插,但是在視圖變得基本靜止時呈現(xiàn)和顯示精確視圖的混合方法。
為此處解釋的目的,術語呈現(xiàn)指的是計算機基于向量或非向量數(shù)據(jù)以特定LOD生成小塊。對于非向量數(shù)據(jù),這些可通過以更高或更低分辨率對原始圖像重采樣來以任意分辨率呈現(xiàn)。
現(xiàn)在轉(zhuǎn)向呈現(xiàn)和顯示如由圖2的框206表示地實現(xiàn)精確最終圖像所需的可視內(nèi)容的不同部分的方法。參考圖3,當確定導航已停止時,控制被傳遞到框303,并且立即顯示內(nèi)插的圖像,正如縮放期間的情況一樣。將可在導航停止之后臨時顯示的該內(nèi)插圖像稱為中間最終圖像,或簡稱為中間圖像。該圖像是從環(huán)繞LOD的內(nèi)插生成的。在某些情況下,如將在下文更詳細解釋的,中間圖像可從兩個以上離散LOD內(nèi)插,或從除環(huán)繞期望分辨率的LOD之外的兩個離散LOD內(nèi)插。
一旦顯示了中間圖像,則進入框304,使得圖像開始朝圖像的精確呈現(xiàn)一稱為最終圖像一漸變。最終圖像與中間圖像的不同之處在于,最終圖像可能不涉及任何預定義LOD的內(nèi)插。相反,最終圖像或其部分可包括新呈現(xiàn)的小塊。在照相數(shù)據(jù)的情況下,新呈現(xiàn)的小塊可從對原始數(shù)據(jù)的重新采樣得到,而在向量數(shù)據(jù)的情況下,新呈現(xiàn)的小塊可從期望分辨率下的光柵化得到。
還要注意,可直接從框303跳至305,從而立即用最終且精確的圖像替換內(nèi)插圖像。然而,在該較佳實施例中,執(zhí)行步驟304以使從中間最終圖像到最終圖像的轉(zhuǎn)變逐步且平滑地完成。該漸變有時候稱為混和,它使得圖像在導航停止時逐步聚焦,從而產(chǎn)生類似于照相機或其它光學儀器中自動聚焦的效果。由這一效果產(chǎn)生的物理性假象是本發(fā)明的一個重要方面。
以下是對發(fā)生該漸變或混和以最小化感知到的圖像中的不規(guī)則性、突然變化、縫隙和其它缺陷的方式的討論。然而,可以理解,特定的漸變技術對于本發(fā)明并不是關鍵的,且本領域的技術人員可以清楚許多變體。
不同LOD的不同之處在于底層可視內(nèi)容的每一物理面積中的樣本數(shù)。由此,第一個LOD可取可查看對象的1英寸×1英寸面積,并生成單個32×32樣本小塊。然而,該信息也可通過取同樣的1英寸×1英寸面積并將其表示為64×64樣本的小塊來呈現(xiàn),因此是以較高分辨率來呈現(xiàn)的。
定義稱為無理小塊的概念。將寫作變量g的小塊粒度被定義為較高分辨率LOD下線性小塊網(wǎng)格大小與下一較低分辨率LOD下線性小塊網(wǎng)格大小之比。在Williams的介紹三線性內(nèi)插的論文中,g=2。其它現(xiàn)有技術中已使用了該同樣的g值。盡管LOD可用任何方式細分成小塊,但是在一個示例性實施例中,每一LOD被細分成包含常數(shù)個樣本(除了如所需的在可視內(nèi)容的邊緣處)的正方形或矩形小塊的網(wǎng)格。在概念上,當g=2時,某一LOD下的每一小塊在下一較高分辨率LOD下“分裂”成2×2=4個小塊(再一次,除了可能在邊緣處以外),如圖4所示。
粒度為2的小塊存在基本的缺點。通常,如果用戶在小塊中的一個隨機點上放大,則縮放中的每一次g倍增大將需要呈現(xiàn)對應于靠近用戶正在向其縮放的點的下一較高分辨率LOD的單個附加小塊。然而,如果用戶正在小塊網(wǎng)格中的網(wǎng)格線上放大,則需要呈現(xiàn)兩個新小塊,在該線的每一側(cè)上有一個。最后,如果用戶在兩條網(wǎng)格線的交點上放大,則需要呈現(xiàn)四個新小塊。如果對每一次g倍縮放請求1、2或4個新小塊的事件被隨機地散布在擴展的縮放序列中,則總體性能將是一致的。然而,任何整數(shù)粒度小塊(即,其中g是整數(shù))中的網(wǎng)格線對每一較高分辨率LOD都保留一網(wǎng)格線。
例如,考慮在以粒度2小塊化的非常大的圖像的中心放大。將該點的(x,y)坐標寫成(1/2,1/2),采用可視內(nèi)容落在具有角(0,0)、(0,1)、(1,0)和(1,1)的正方形內(nèi)的約定。由于中心在兩條網(wǎng)格線的交點處,因此當用戶到達每一更高分辨率LOD時,每次都需要呈現(xiàn)四個新小塊;這導致較慢的性能以及在該特定點上縮放的低效率。另一方面,假定用戶在一無理點上縮放,無理點意味著x和y不能被表達為兩個整數(shù)之比的網(wǎng)格點(x,y)。這樣的數(shù)的示例是pi(=3.14159...)以及2的平方根(=1.414213...)。然后,可以容易地證明由對每一次g倍縮放需要呈現(xiàn)的小塊數(shù)給出的1、2和4的序列是準隨機的,即不遵循任何周期性模式。從性能觀點來看,很清楚,這種準隨機序列是更合乎需要的;因此從性能觀點來看沒有用于縮放的特異點。
無理小塊解決以下問題g本身被取作無理數(shù),通常是3、5或12的平方根。盡管這意味著在下一較低分辨率LOD下在單個小塊中包含給定LOD下的平均3、5或12個小塊(相應地),但注意在該方案中,連貫的LOD下的小塊網(wǎng)格不再在任何網(wǎng)格線上“一致”(除了可能在可視內(nèi)容的前沿處、x=0且y=0處、或在沿每一軸的某一其它預先選擇的單條網(wǎng)格線處之外)。如果選擇g使得它不是任何整數(shù)的n次根(pi是這樣一個數(shù)字),則沒有LOD會共享任何網(wǎng)格線(再一次,可能除了x=0且y=0處之外)。因此,可以示出每一小塊可在下一較低LOD處隨機地與1、2或4個小塊重疊,而在g=2時該數(shù)字總是為1。
采用無理小塊粒度,在任一點上放大因此將產(chǎn)生對1、2或4個小塊的請求的準隨機流,且性能將在每一處縮放時平均上是均一的。可能無理小塊的最大益處隨著在深縮放之后掃視而浮現(xiàn)。當用戶在深度放大之后掃視圖像時,在某一點處,網(wǎng)格線被移至顯示器上。情況通常是該網(wǎng)格線的另一側(cè)的區(qū)域?qū)诒蕊@示器的剩余部分更低的分辨率LOD;然而,理想的是使這些分辨率之間的差異盡可能小。然而,采用整數(shù)g,差異通常極大,因為網(wǎng)格線可在許多連貫的LOD上重疊。這造成了節(jié)點區(qū)域上分辨率中的“深裂”,如圖6(a)所示。
另一方面,由于無理小塊中的網(wǎng)格線從不與相鄰LOD的網(wǎng)格線重疊(再次可能除了每一方向上的一條網(wǎng)格線之外,該網(wǎng)格線可能在圖像的一個角上),因此一個以上LOD的分辨率中的不連續(xù)性不會出現(xiàn)。這一相對分辨率中增加的平滑度允許空間連續(xù)性的假象更令人信服。
圖6(b)示出了由無理小塊粒度獲得的優(yōu)點。圖6示出了穿過可視內(nèi)容的若干LOD的橫截面;每一條表示一矩形小塊的橫截面。因此,其中有兩條的從上而下的第二級可能是2×2=4小塊的LOD。從上到下繪出的曲線601表示在縮放操作期間相關LOD下可視內(nèi)容的可視區(qū)域的邊界當分辨率增加(放大以展示更多細節(jié))時,所檢查的區(qū)域減小。深色的條(例如,602)表示已在縮放期間呈現(xiàn)的小塊。較淺的條尚未被呈現(xiàn),因此不能顯示。注意,當小塊如圖6(a)所示是整數(shù)時,空間上分辨率的突然變化是常見的;如果用戶要在縮放之后立即掃視,則在由箭頭指示的空間邊界處,四個LOD將突然“結束”。所得的圖像看上去在該邊界的左側(cè)是尖銳的,且在右側(cè)是極其模糊的。使用無理小塊粒度表示的同一可視內(nèi)容沒有這樣的分辨率“裂痕”相鄰LOD不共享小塊邊界,除了如圖所示在左邊緣處之外。在數(shù)學上,這一共享的邊界最多在x軸上的一個位置以及y軸上的一個位置上出現(xiàn)。在所示的實施例中,這些共享邊界位于y=0且x=0處,但是如果存在,則它們也可位于任何其它位置。
無理小塊粒度的另一好處是它允許對g的更精細控制,因為無理數(shù)要比整數(shù)多得多,尤其是在g不是太大的可用范圍上。這一附加的自由度對于調(diào)整某些應用的縮放性能可能是有用的。如果g被設為整數(shù)的無理平方根(諸如sqrt(2)、sqrt(5)或sqrt(8)),則在以上所述的實施例中,交替LOD的網(wǎng)格線會精確對齊;如果g是無理的立方根,則每三個LOD會精確對齊;依此類推。這提供了對于限制如以下所定義的合成小塊的復雜度的附加益處。
本發(fā)明的一個重要方面是呈現(xiàn)小塊的順序。更具體而言,各個LOD的各種小塊被最優(yōu)地呈現(xiàn),使得所有可見小塊被首先呈現(xiàn)。不可見小塊可能完全不被呈現(xiàn)。在可見小塊集中,呈現(xiàn)以遞增分辨率的順序進行,使得低分辨率LOD內(nèi)的小塊被首先呈現(xiàn)。在任何特定LOD內(nèi),小塊以與顯示器中心的遞增距離的順序呈現(xiàn),這稱為凹入呈現(xiàn)。為了以所描述的順序?qū)@些小塊排序,可使用諸如堆排序、快速排序或其它排序等眾多排序算法。為實現(xiàn)這一排序,可使用語素關鍵字來對呈現(xiàn)小塊的“請求”排序,使得最外面的子關鍵字是可見的,中間的子關鍵字是以每物理單位樣本數(shù)為單位的分辨率,而最里面的子關鍵字是與顯示器中心的距離。也可使用用于對小塊呈現(xiàn)請求排序的其它方法。小塊的實際呈現(xiàn)最優(yōu)地作為帶有此處所描述的導航和顯示的并行過程發(fā)生。當呈現(xiàn)和導航/顯示作為并行過程來進行時,即使在小塊呈現(xiàn)較慢的情況下用戶響應性也可保持較高。
現(xiàn)在描述一個示例性實施例中呈現(xiàn)小塊的過程。如果小塊表示向量數(shù)據(jù),諸如基于筆劃字體中的字母印刷,則小塊的呈現(xiàn)涉及運行光柵化字母數(shù)據(jù)的算法以及可能將該數(shù)據(jù)從服務器發(fā)送到客戶機。或者,饋入光柵化算法的數(shù)據(jù)可被發(fā)送到客戶機,且客戶機可運行光柵化小塊的算法。在另一示例中,涉及數(shù)字地采樣的照相數(shù)據(jù)的小塊的呈現(xiàn)可涉及對該數(shù)據(jù)的重采樣以在適當LOD下生成小塊。對于預存的離散LOD,呈現(xiàn)可僅涉及將小塊發(fā)送到客戶機計算機以供隨后的顯示。對于落在離散LOD之間的小塊,諸如最終圖像中的小塊,可能需要如上所述的某些進一步的計算。
在任何給定時刻,當呈現(xiàn)小塊且圖像開始朝精確圖像漸變時,實際顯示可包括來自不同LOD的不同小塊的不同混合。由此,顯示的任一部分可包含例如來自LOD1的20%、來自LOD2的40%、以及來自LOD3的40%。無論所顯示的小塊是什么,該算法試圖以最適合提供所呈現(xiàn)的小塊以供如最需要它們那樣地顯示的優(yōu)先級順序來呈現(xiàn)來自各個LOD的小塊。所呈現(xiàn)小塊的實際顯示將在下文參考圖5更詳細地解釋。
在下文中,描述一種用于使用可保證圖像細節(jié)的空間和時間連續(xù)性的算法來繪出多個LOD的方法。該算法被設計成最佳地利用所有呈現(xiàn)的小塊,它優(yōu)先于覆蓋同一顯示區(qū)域的較低分辨率小塊地使用高分辨率小塊,但使用空間混和來避免LOD之間的尖銳邊界,以及在較高細節(jié)變得可用時(即,當已呈現(xiàn)了較高分辨率小塊時)使用臨時定級的混和權重以在高細節(jié)下混和。與現(xiàn)有技術不同,該算法及其變體可導致兩個以上LOD在顯示器上的給定點處被混和在一起;它還可得到在顯示區(qū)域上平滑變化的混和系數(shù);并且它可得到甚至在用戶停止導航之后隨時間進展的混和系數(shù)。盡管如此,如將清楚的,在該示例性實施例中,它在計算上仍是高效的,且可用于將圖像呈現(xiàn)為局部透明,或具有在圖像區(qū)域上改變的總體透明度。
此處定義了合成小塊區(qū)域或簡稱為合成小塊。為定義合成小塊,考慮堆疊在彼此之上的所有LOD。每一LOD具有其自己的小塊網(wǎng)格。合成網(wǎng)格然后通過將來自所有LOD的所有網(wǎng)格投影到單個平面上來形成。合成網(wǎng)格因此由大小不同的各種合成小塊構成,由來自所有不同LOD的小塊的邊界來定義。這在圖7中概念性地示出。圖7描述了來自三個不同LOD的小塊701到703,所有這些小塊都表示同一圖像??梢韵胂馤OD701到703堆疊在彼此之上。在這一情況下,如果將來自這些LOD的每一個的角750排齊并將它們堆疊在彼此之上,則由740表示的區(qū)域?qū)⒃谟?30表示的區(qū)域之內(nèi),并且由734和740表示的區(qū)域?qū)⒃谟?20表示的區(qū)域之內(nèi)。每一合成小塊在每一幀期間檢查,其中幀速率通常大于每秒10幀。注意,如上所解釋的,該幀速率并不一定是顯示器刷新率。
圖5描繪了用于在呈現(xiàn)小塊時更新幀緩沖區(qū)的算法的流程圖。圖5的安排旨在每次更新幀緩沖區(qū)時對所顯示圖像中的每一合成小塊操作。由此,例如,如果幀持續(xù)時間是1/20秒,則整個屏幕上的每一合成小塊較佳地在每一個1/20秒期間檢查和更新。當合成小塊由圖5的過程操作時,該合成小塊可能缺少一個或多個LOD中的相關小塊。圖5的過程試圖將每一合成小塊顯示為該合成小塊所處的所有可用疊加小塊的加權平均值。注意,合成小塊是以使得它們精確地落在任何給定LOD下的一個小塊內(nèi)的方式來定義的;因此該加權平均值可被表達為每一LOD的相對比例。該過程試圖對合成小塊內(nèi)的每一LOD確定適當?shù)臋嘀?,并隨著空間和時間上的變化逐步改變這些權重以使圖像逐步朝上述的最終圖像漸變。
合成網(wǎng)格包括被定義為合成網(wǎng)格中網(wǎng)格線的任何交點或角的多個頂點。這些被稱為合成網(wǎng)格頂點。在每一合成網(wǎng)格頂點處對每一LOD定義不透明度。不透明度可被表達為0.0和0.1之間的權重,且因此如果期望結果是使圖像完全不透明,則每一頂點處所有LOD權重之和是1.0。對每一頂點處的每一LOD,在任何特定時刻的當前權重被保存在存儲器中。
用于更新頂點權重的算法如下所述地進行。
取為0.0和1.0之間的數(shù)的以下變量對每一小塊被保持在存儲器中centerOpacity(中心不透明度)、每一角的cornerOpacity(角不透明度)(如果小塊是矩形網(wǎng)格則為4)、以及每一邊的edgeOpacity(邊不透明度)(如果小塊是矩形網(wǎng)格則為4)。當小塊被首先呈現(xiàn)時,所列出的所有其不透明度一般被設為1.0。
在一遍繪圖期間,該算法從最高分辨率LOD開始,對每一相關LOD走查合成小塊一次。除每一小塊的變量之外,該算法保留以下變量levelOpacityGrid(等級不透明度網(wǎng)格)和opacityGrid(不透明度網(wǎng)格)。這些變量同樣也是0.0和1.0之間的數(shù)字,并且對合成小塊中的每一頂點保留。
該算法進而以從最高分辨率到最低分辨率的順序走查每一LOD,從而執(zhí)行以下操作。首先將0.0分配給所有頂點處的levelOpacityGrid。然后,對該LOD處的每一呈現(xiàn)小塊(如果尚未呈現(xiàn)某些小塊,則可以是該LOD處的小塊集的一個子集),該算法基于小塊的centerOpacity、cornerOpacity和edgeOpacity值更新接觸該小塊的levelOpacityGrid的各部分
如果頂點完全在小塊的內(nèi)部,則它使用centerOpacity來更新。
如果頂點例如在小塊的左邊緣上,則它用左edgeOpacity來更新。
如果頂點例如在右上角,則它使用右上comerOpacity來更新。
“更新”意味著如果預先存在的levelOpacityGrid值大于0.0,則將新值設為當前值的最小值或它正用以更新的值。如果預先存在的值是0(即,該頂點尚未接觸),則僅將levelOpacityGrid值設為它正用以更新的值。最終結果是每一頂點位置處的levelOpacityGrid被設為正用于更新它的最小非零值。
該算法然后走查levelOpacityGrid,并將接觸尚未呈現(xiàn)的小塊,稱為洞的任何頂點設為0.0。這確?;旌偷目臻g連續(xù)性只要在合成小塊落在洞內(nèi)的任何地方,在當前LOD下,繪圖不透明度應當在鄰接該洞的所有頂點處漸變?yōu)?。
在一個增強實施例中,該算法然后放松所有l(wèi)evelOpacityGrid值以進一步改善LOD混和的空間連續(xù)性。迄今為止所描述的情況可如下可視化每一頂點類似于帳篷支柱,其中每一點處的levelOpacityGrid值是帳篷支柱的高度。該算法迄今確保了在與洞接壤的所有點處,帳篷支柱的高度為0;并且在已呈現(xiàn)的小塊的內(nèi)部,帳篷支柱被設為某一(可能)非零值。在極端情形中,可能已呈現(xiàn)小塊中的所有值都被設為1.0。為說明起見,假定已呈現(xiàn)小塊尚未有呈現(xiàn)鄰居,因此邊框值為0.0。尚未指定0.0邊框帳篷支柱和1.0內(nèi)部帳篷支柱之一之間的“余量”可以有多窄。如果該余量太小,則即使混和在技術上是連續(xù)的,當作為空間上的不透明度導數(shù)來測量時轉(zhuǎn)變也可能太尖銳。成松操作平滑了該帳篷,它總是保留0.0值,但是可能降低其它帳篷支柱以使得由帳篷表面定義的函數(shù)更平滑,即限制其最大空間導數(shù)。使用各種方法中的哪一種來實現(xiàn)該操作對本發(fā)明是無關緊要的;例如,一種方法是使用選擇性的低通濾波,從而用其鄰居的加權平均值來局部替換每一非零值、同時將零保持原樣。本領域的技術人員也可清楚其它方法。
該算法然后走查所有合成網(wǎng)格頂點,考慮每一頂點處的對應的levelOpacityGrid和opacityGrid值如果levelOpacityGrid大于1.0-opacityGrid,則將levelOpacityGrid設為1.0-opacityGrid。然后,再次對每一頂點,將對應的levelOpacityGrid值加到opacityGrid。由于前一步,這永遠不會使opacityGrid大于1.0。該算法中的這些步驟確保在較高分辨率LOD可用時由其貢獻盡可能多的不透明度,從而允許較低分辨率LOD僅在有洞時“隱約顯出”。
遍歷當前LOD的最后一步是使用levelOpacityGrid作為每一頂點的不透明度值在當前LOD下實際繪出合成網(wǎng)格。在一個增強實施例中,levelOpacityGrid可在繪制之前乘以范圍在0.0到1.0中的標量overallOpacity(總體不透明度)變量這允許整個圖像以由overallOpacity給出的局部透明度繪出。注意,以每一頂點處不同的不透明度繪制諸如矩形等含有圖像的多邊形是一種標準過程。例如,它可使用利用OpenGL或Direct3D圖形庫的行業(yè)標準紋理映射函數(shù)來實現(xiàn)。在實踐中,每一這樣的多邊形內(nèi)部所繪出的不透明度在空間上內(nèi)插,從而得到多邊形上透明度的平滑改變。
在上述算法的另一增強實施例中,小塊不僅保留其當前的centerOpacity、cornerOpacity和edgeOpacity值(稱為當前值),還保留稱為targetCenterOpacity(目標中心不透明度)、targetCornerOpacity(目標角不透明度)和targetEdgeOpacity(目標邊緣不透明度)的一組并行值(稱為目標值)。在該增強實施例中,在首先呈現(xiàn)小塊時當前值都被設為0.0,但是目標值都被設為1.0。然后,在每一幀后,當前值被調(diào)整為更接近目標值的新值。這可使用多個數(shù)學公式來實現(xiàn),但是作為一個示例,它可按以下方式來完成newValue=oldValue*(1-b)+targetValue*b,其中b是大于0.0且小于1.0的速率。接近0.0的b值導致朝目標值的非常慢的轉(zhuǎn)變,而接近1.0的b值導致朝目標值的非常迅速的轉(zhuǎn)變。該更新不透明度的方法導致朝向目標的指數(shù)收斂,并導致時間連續(xù)性的視覺上令人滿意的印象。其它公式可實現(xiàn)相同的結果。
以上描述了本發(fā)明的較佳實施例。本發(fā)明不限于這一較佳實施例,并且與所附權利要求書相一致的各種修改也都被包括在本發(fā)明內(nèi)。
權利要求書
1.一種顯示可視內(nèi)容的方法,所述方法包括
生成所述可視內(nèi)容的多個不同細節(jié)水平(LOD);
在導航所述可視內(nèi)容時將所述可視內(nèi)容顯示為所述LOD的內(nèi)插;以及
在所述導航基本停止時顯示包括不作為所述LOD的內(nèi)插的至少一部分的最終圖像。
2.如權利要求1所述的方法,其特征在于,所述導航包括以下的一個或多個二維或三維平移、旋轉(zhuǎn)、圖像過濾、局部拉伸、動態(tài)空間變形、放大或縮小。
3.如權利要求1所述的方法,其特征在于,在顯示所述最終圖像之前,通過從所述多個LOD的內(nèi)插生成中間最終圖像。
4.如權利要求3所述的方法,其特征在于,所述中間最終圖像逐步地改變成所述最終圖像。
5.如權利要求4所述的方法,其特征在于,所述最終圖像或所述中間圖像是在逐個小塊的基礎上呈現(xiàn)的。
6.如權利要求3、4或5所述的方法,其特征在于,每一LOD由小塊構成,且所述最終圖像或所述中間最終圖像通過使用被顯示為合成小塊的來自若干LOD的小塊來顯示。
7.如權利要求6所述的方法,其特征在于,每一LOD的小塊可用于以至少部分地取決于該小塊所處的LOD、或小塊當前是否可見、或這一小塊的凹入程度的順序進入幀緩沖區(qū)。
8.如權利要求7所述的方法,其特征在于,首先呈現(xiàn)可查看小塊,并且在所述可查看小塊內(nèi),以遞增分辨率的順序呈現(xiàn)小塊,且在相似分辨率的小塊內(nèi),以凹入順序呈現(xiàn)小塊。
9.如權利要求8所述的方法,其特征在于,還包括實現(xiàn)無理小塊。
10.如權利要求6所述的方法,其特征在于,所述可視內(nèi)容包括向量和非向量數(shù)據(jù)。
11.如權利要求10所述的方法,其特征在于,所述多個LOD是在遠程終端上生成的,且所述中間和最終圖像是在本地可查看終端上生成的。
12.一種顯示正被導航的可視內(nèi)容的方法,包括在所述導航期間將所述可視內(nèi)容顯示為多個LOD的內(nèi)插,以及當所述導航基本結束時將所述可視內(nèi)容至少部分地不顯示為多個LOD的內(nèi)插。
13.如權利要求12所述的方法,其特征在于,將所述可視內(nèi)容顯示為多個LOD的內(nèi)插逐步漸變成將所述可視內(nèi)容不顯示為多個LOD的內(nèi)插。
14.一種通過生成一組LOD來表示可視內(nèi)容的方法,每一LOD包括小塊,對所述組中的第一和第二LOD的至少一個子集,第一LOD中的小塊數(shù)和第二LOD中的小塊數(shù)不形成整數(shù)比。
15.如權利要求14所述的方法,其特征在于,包括將合成小塊呈現(xiàn)為來自各LOD的堆疊在彼此之上的部分小塊的組合。
16.如權利要求16所述的方法,其特征在于,還包括以首先按可查看性排序、在所述可查看小塊內(nèi)按LOD排序、且在每一LOD內(nèi)按凹入級別排序的順序來呈現(xiàn)來自多個LOD的每一個的小塊。
17.一種顯示可視內(nèi)容的方法,包括組合表示可視內(nèi)容的多個LOD,并逐步改變可歸于所述LOD的至少一個的貢獻以使所述顯示的可視內(nèi)容響應于呈現(xiàn)更好顯示圖像的信息變得可用而逐步朝所述更好顯示圖像變化。
18.如權利要求17所述的方法,其特征在于,所述貢獻是通過將至少一個權重分配給多個LOD中的多個小塊,然后改變所述權重來逐步改變的。
19.如權利要求17所述的方法,其特征在于,所述分配向至少一個LOD中的每一所述小塊分配多個權重。
20.如權利要求19所述的方法,其特征在于,所述多個權重包括所述小塊的多個角的每一個處的不透明度、所述小塊的多條邊的每一條處的不透明度、以及每一所述小塊內(nèi)的一點處的不透明度。
21.如權利要求18所述的方法,其特征在于,還包括對LOD中多個位置計算一組levelOpacityGrid變量,所述一組levelOpacityGrid變量是通過對所述LOD中與要對其計算所述levelOpacityGrid的頂點相切的所有小塊利用如權利要求20所述的權重中的至少某一些來計算的。
22.如權利要求21所述的方法,其特征在于,還包括對至少一個LOD空間濾波所述一組levelOpacityGrid變量。
23.如權利要求17所述的方法,其特征在于,形成所述組合使得當接近顯示器分辨率的較高分辨率LOD可用時來自這一較高分辨率LOD的組合相對于較低分辨率LOD而被強調(diào)。
24.一種表示可視內(nèi)容的方法,包括將第一LOD與第二LOD組合,每一所述LOD由多個小塊組成,所述小塊被排列成使得所述LOD中所述小塊的邊基本上在所有可視內(nèi)容中都不對齊。
25.如權利要求16所述的應用于三個或多個這樣的具有遞增分辨率的LOD的方法,其特征在于,當所述LOD以遞增分辨率的順序排列時,沒有兩個連續(xù)的LOD的分辨率相差一有理倍數(shù)。
26.一種組合多個LOD以顯示可視內(nèi)容的方法,所述方法包括用相關聯(lián)的貢獻加權每一所述LOD,以及隨時間和空間改變由每一LOD提供的貢獻。
27.如權利要求26所述的方法,其特征在于,所述加權是不透明度級別。
28.如權利要求27所述的方法,其特征在于,所述組合LOD的總不透明度小于100%。
29.如權利要求28所述的方法,其特征在于,所述隨時間改變導致朝目標值的漸近收斂。
30.如權利要求29所述的方法,其特征在于,對每一LOD,對多個頂點的每一個計算不透明度級別。
31.如權利要求30所述的方法,其特征在于,所述隨時間和空間的改變被設計成減少可查看不連續(xù)性。
32.如權利要求31所述的方法,其特征在于,表示所述加權的值被低通濾波。
33.一種方法,包括顯示中間最終圖像、然后顯示最終圖像,所述最終圖像和中間最終圖像由以凹入順序呈現(xiàn)的小塊構成,從中間最終圖像到所顯示的最終圖像的轉(zhuǎn)變在檢測到導航基本停止時進行。
34.如權利要求33所述的方法,其特征在于,較低分辨率小塊在較高分辨率小塊之前顯示。
35.如權利要求34所述的方法,其特征在于,所述轉(zhuǎn)變是逐步的。
36.一種用于在導航基本停止之后顯示最終圖像的設備,包括用于在發(fā)生導航時顯示內(nèi)插圖像的裝置、用于檢測導航何時基本停止以及使用顯示所述最終圖像的單獨算法來再呈現(xiàn)向量數(shù)據(jù)和非向量數(shù)據(jù)的裝置。
37.如權利要求36所述的設備,其特征在于,所述最終圖像具有同時包含向量和非向量數(shù)據(jù)兩者的小塊,且其中至少一個這樣的小塊使用實現(xiàn)呈現(xiàn)的兩種不同算法來呈現(xiàn)。
38.如權利要求37所述的設備,其特征在于,還包括實現(xiàn)從中間圖像漸變到最終圖像的軟件的處理器。
39.一種顯示可視內(nèi)容的方法,包括組合表示可視內(nèi)容的多個LOD,并逐步改變可歸于所述LOD中的至少三個的貢獻以使所述顯示的可視內(nèi)容逐步變化。
40.如權利要求17所述的方法,其特征在于,所述貢獻是通過將至少一個權重分配給多個LOD內(nèi)的多個小塊,然后改變所述權重來逐步改變的。
41.如權利要求40所述的方法,其特征在于,所述分配將多個權重分配給至少一個LOD中的每一所述小塊。
42.如權利要求41所述的方法,其特征在于,所述多個權重包括所述小塊的多個角的每一個處的不透明度、所述小塊的多條邊的每一條處的不透明度、以及每一所述小塊內(nèi)的一點處的不透明度。
43.如權利要求42所述的方法,其特征在于,還包括對LOD中的多個位置計算一組levelOpacityGrid變量,所述一組levelOpacityGrid變量是通過對所述LOD中與對其計算所述levelOpacityGrid的頂點相切的所有小塊利用如權利要求19所述的權重中的至少某一些來計算的。
44.如權利要求43所述的方法,其特征在于,還包括對至少一個LOD空間濾波所述一組levelOpacityGrid變量。
45.如權利要求17所述的方法,其特征在于,形成所述組合使得來自較高分辨率LOD的組合相對于來自較低分辨率LOD的組合而增加。
摘要
公開了通過在導航期間顯示內(nèi)插圖像并在導航停止時顯示更精確圖像來便于對可視內(nèi)容的逼真導航的方法和裝置。公開了用于以不同的細節(jié)水平呈現(xiàn)和顯示“小塊”,即可視內(nèi)容的各部分來最小化可感知不連續(xù)性的方法。
用于多節(jié)點顯示的系統(tǒng)和方法
相關申請
本申請要求臨時申請第60/474,313號的優(yōu)先權,該申請的公開內(nèi)容通過整體引用結合于此。
背景技術:
本發(fā)明涉及用于計算機的縮放用戶界面(ZUI)。
大多數(shù)當今的圖形計算機用戶界面是使用固定空間比例的可視組件來設計的??梢晝?nèi)容可通過放大或縮小或以其它方式導航來操縱。然而,可用于表示各種對象的坐標的精度極大地受到被指定來表示這些坐標的位數(shù)(通常在16和64之間)的限制。由于其有限的可表示大小,因此存在有限的精度。
在縮放用戶界面的環(huán)境中,用戶能夠容易地放大,使得先前僅被單個像素覆蓋的區(qū)域填滿整個顯示器。相反,用戶可縮小,使得整個顯示器的內(nèi)容收縮至單個像素的大小。由于每一次放大或縮小可將xy坐標乘以或除以多個數(shù)量級,因此僅有少數(shù)這樣的縮放能完全用盡在例如64位浮點數(shù)下可用的精度。之后,舍入導致引人注意的圖像質(zhì)量降低。
本發(fā)明的一個目的是提供一種其中大范圍縮放成為可能的ZUI。
本發(fā)明的另一目的是提供一種其中表示坐標的精度與特定縮放細節(jié)程度下需要的所需精度有關的ZUI。本發(fā)明的又一目的是允許有限物理大小、但任意高復雜度或分辨率的可掃視和可縮放二維空間被嵌入到較大的可掃視和可縮放二維空間的定義良好的區(qū)域中。
本發(fā)明的再一目的是允許在深放大之后縮小以類似于web瀏覽器的“后退”按鈕表現(xiàn),從而讓用戶折回他或她通過可視導航的步驟。
本發(fā)明的此外一個目的是允許在縮小之后立即放大以類似于web瀏覽器的“前進”按鈕表現(xiàn),從而讓用戶精確地撤消任意長的縮小的效果。
本發(fā)明的另有一個目的是允許一節(jié)點,即如下更精確地定義的可視對象具有非常大量的子節(jié)點(例如,多達10^28)。
本發(fā)明的再有一個目的是允許節(jié)點在進行中程序性地生成它自己的子節(jié)點,從而允許在導航期間動態(tài)地定義、創(chuàng)建或修改內(nèi)容。
本發(fā)明的還有一個目的是即使在任意復雜的可視內(nèi)容最終是使用非常大量的數(shù)據(jù)來表示,且即使數(shù)據(jù)被儲存在遠程位置且通過低帶寬網(wǎng)絡共享的情況下也允許接近立即地查看該內(nèi)容。
本發(fā)明的進一步的一個目的是允許用戶在可視內(nèi)容上進行任意程度的放大同時維持交互式幀速率。
本發(fā)明的更進一步的一個目的是允許用戶在保留內(nèi)容的總體外觀并維持交互式幀速率的過程中進行任意程度的縮小以獲得復雜可視內(nèi)容的概觀。
本發(fā)明的這些和其它更寬泛的目的在本領域技術人員仔細閱讀了以下說明書之后將變得顯而易見。
發(fā)明概述
本發(fā)明的以上和其它目的通過將可視內(nèi)容顯示為多個“節(jié)點”來實現(xiàn)。每一節(jié)點較佳地具有其自己的坐標系統(tǒng)和呈現(xiàn)方法,但是可被包含在一父節(jié)點內(nèi),且可以用該父節(jié)點的坐標系統(tǒng)和呈現(xiàn)方法來表示。當用戶例如通過放大或縮小來導航可視內(nèi)容時,節(jié)點僅在縮放導致適當?shù)募毠?jié)水平時才被“啟動”。節(jié)點的啟動使得節(jié)點以其自己的坐標系統(tǒng)和/或呈現(xiàn)方法、而非一不同節(jié)點的坐標系統(tǒng)和/或呈現(xiàn)方法來表示。
在啟動節(jié)點之前,節(jié)點要么以父節(jié)點的坐標系統(tǒng)來表示,要么完全不被表示。通過僅在需要時啟動節(jié)點,坐標系統(tǒng)的精度取決于正被顯示的內(nèi)容的縮放細節(jié)水平。這允許一可變的精度水平,它可高達且包括該系統(tǒng)在其中運行的計算機的存儲器所允許的最大值。
為說明起見,附圖中示出了當前較佳的形式,然而可以理解,本發(fā)明不限于所示的精確排列和手段。
圖1是顯示器上的可視內(nèi)容的描述;
圖2是不同細節(jié)水平下的圖1的可視內(nèi)容的圖像;
圖3是本發(fā)明的一個實施例的表示;
圖4是示出顯示器上的多個節(jié)點的本發(fā)明的一個示例性實施例;
圖5是對應于圖4中所示的示例性實施例的樹圖。
較佳實施例的詳細描述
假定其中顯示器是照相機的用戶界面比喻,通過該照相機用戶可查看二維表面或2D全域的一部分。為方便起見,盡管不必如此,但仍將物理維度歸于該全域,使得它例如可以是一米見方。本發(fā)明同樣適用于N維表示。
該示例性全域進而包含2D對象,即節(jié)點,它具有可視表示,且也可以是動態(tài)或交互式的(即,視頻剪輯、應用程序、可編輯文本文檔、CAD繪圖或靜止圖像)。為使節(jié)點可見,它必須與能夠?qū)⑵淙炕虿糠掷L制在顯示器的某一區(qū)域上的呈現(xiàn)方法相關聯(lián)。每一節(jié)點也被賦予有限精度的局部坐標系統(tǒng)。為說明起見,假定節(jié)點是矩形的,且由局部坐標系統(tǒng)來表示。
呈現(xiàn)方法和坐標系統(tǒng)這兩個參數(shù)指定了如何顯示節(jié)點以及節(jié)點中項的位置。每一節(jié)點可具有0個或多個子節(jié)點,它們通過引用來尋址。節(jié)點無需且一般不包含每一子節(jié)點的所有信息,而是僅包含提供獲得子節(jié)點所必需的信息的地址。當用戶導航時,例如放大和縮小時,節(jié)點例如如圖1所示地被顯示在屏幕上。
一般而言, “節(jié)點”是本發(fā)明中的基本功能單元。大多數(shù)節(jié)點在導航期間可視地顯現(xiàn)在用戶的顯示器上,且某些節(jié)點也可加動畫和/或響應用戶輸入。節(jié)點在節(jié)點可包含子節(jié)點的意義上是分層的。包含節(jié)點因此被稱為父節(jié)點。當父節(jié)點包含子節(jié)點時,子節(jié)點的視覺表現(xiàn)也被包含在父節(jié)點的視覺表現(xiàn)中。每一節(jié)點具有一邏輯坐標系統(tǒng),使得節(jié)點的整個范圍被包含在該邏輯坐標系統(tǒng)中定義的示例性矩形中;例如,節(jié)點可定義一邏輯坐標系統(tǒng),使得它被包含在矩形(0,0)-(100,100)中。
每一節(jié)點可具有定義其特性的以下數(shù)據(jù)
o節(jié)點的邏輯坐標系統(tǒng),包括其邏輯大小(在以上示例中為100x100);
o任何子節(jié)點的身份、位置和大小,以(父)節(jié)點的邏輯坐標指定;
o可任選的任何必要的用戶數(shù)據(jù)。
可執(zhí)行碼定義這些操作或“方法”
o基于“構造自變量”的節(jié)點數(shù)據(jù)的初始化
o呈現(xiàn)節(jié)點的全部或一部分可視外觀(該方法的輸出是呈現(xiàn)的小塊);
o可任選地響應于用戶輸入,諸如鍵盤或鼠標事件。
可執(zhí)行碼定義了“節(jié)點類”,并且可在許多“節(jié)點實例”之間共享。節(jié)點實例在其數(shù)據(jù)內(nèi)容上不同。因此,節(jié)點類可定義呈現(xiàn)JPEG圖像所需的邏輯。給予初始化代碼的“構造自變量”因此包括JPEG圖像到顯示器的URL。顯示特定圖像的節(jié)點是JPEG節(jié)點類的一個實例。節(jié)點的多個實例可在同一可視內(nèi)容中查看,這類似于軟件應用程序可同時被多次實例化的方式。
注意,在復雜的可視文檔或應用程序中,通??蓪⒈匾墓δ芤远喾N不同方式劃分成節(jié)點。例如,包含多個圖像、下拉菜單和按鈕的腳本化的類似網(wǎng)頁的文檔可被實現(xiàn)為具有復雜的呈現(xiàn)和用戶輸入方法的單個節(jié)點?;蛘?,它可被實現(xiàn)為僅定義頁面的總體布局,且每一構成圖像和按鈕是一子節(jié)點的父節(jié)點。這具有更有效地重復使用或“分解”功能的明顯優(yōu)點按鈕可以都具有相同的行為,并且因此都是同一節(jié)點類的實例;圖像可以都采用相同的格式,因此也可以是一公共節(jié)點類的實例,等等。這還簡化了對布局的重新排列一父節(jié)點可容易地移動子節(jié)點或調(diào)整其大小。
根據(jù)本發(fā)明,可視內(nèi)容可用取決于用戶輸入的導航狀態(tài)的方式來顯示。例如,圖1示出了可以是城市的一部分的圖像的節(jié)點105。節(jié)點105可包含子節(jié)點101-103。節(jié)點101可以是城市中的建筑物的圖像,節(jié)點102可以是游樂場的圖像,節(jié)點103可以是競技場。在所示的縮放水平下,節(jié)點101-103相對較小,因此它們可被表示為位于節(jié)點105的坐標系統(tǒng)的正確位置上、且沒有節(jié)點105中的任何細節(jié)的小深色區(qū)域。僅需節(jié)點105的坐標系統(tǒng)和呈現(xiàn)方法。
考慮用戶放大以得到諸如圖2所示的不同細節(jié)水平(LOD)的情況。在圖2的LOD中,由于可視內(nèi)容被顯示得大得多的這一事實,節(jié)點101和102不再在屏幕上可見。另外,注意,由于顯示競技場節(jié)點103的大小現(xiàn)在要大得多,因此諸如個別座位、場地等競技場的細節(jié)現(xiàn)在必須被顯示。
進一步以上內(nèi)容,競技場節(jié)點103現(xiàn)在不被顯示為節(jié)點105的坐標系統(tǒng)中沒有細節(jié)的深色區(qū)域,而是被“啟動”以使用其自己的坐標系統(tǒng)和呈現(xiàn)方法來顯示。當使用其自己的坐標系統(tǒng)和呈現(xiàn)方法來顯示時,諸如座位、比賽場地等細節(jié)將被個別地示出。上述與節(jié)點103相關聯(lián)的其它功能也在節(jié)點103被啟動的點處開始執(zhí)行。引起節(jié)點103或就此而言的任何節(jié)點的啟動的特定導航條件取決于設計選擇,且對本發(fā)明不是關鍵的。
將顯示節(jié)點103的精度是節(jié)點105利用的坐標系統(tǒng)以及節(jié)點103利用的坐標系統(tǒng)的組合精度。由此,例如,如果每一所述節(jié)點的坐標系統(tǒng)利用8位,則組合精度是16位,因為節(jié)點103的坐標系統(tǒng)僅用于指定節(jié)點103中項的位置,而節(jié)點103在節(jié)點105內(nèi)的總體位置在節(jié)點105的坐標系統(tǒng)中指定。注意,如果競技場103本身包含其中的附加節(jié)點,則該嵌套可重復地繼續(xù)。例如,一個這樣的節(jié)點201實際上可以是競技場內(nèi)的特定特許看臺。它不用節(jié)點103的坐標系統(tǒng)和呈現(xiàn)方法中的許多細節(jié)來表示。當用戶繼續(xù)在競技場103上放大時,在某一點處節(jié)點201將啟動。如果它是使用8位精度來顯示的,則這8位將指定要在節(jié)點201內(nèi)何處顯示坐標系統(tǒng)的特定項。然而,節(jié)點201在節(jié)點103內(nèi)的位置可被保持在節(jié)點103的坐標系統(tǒng)內(nèi)的8位精度,節(jié)點103的位置進而可使用8位保持在節(jié)點105的坐標系統(tǒng)內(nèi)。因此,節(jié)點201內(nèi)的項最終將使用24位精度來顯示。
通過在節(jié)點內(nèi)嵌套節(jié)點,最終可顯示可視內(nèi)容的精度僅受計算機的存儲器容量的限制。在節(jié)點被啟動之后顯示節(jié)點中可視內(nèi)容的最終精度實際上是所有父節(jié)點的精度與已啟動節(jié)點的精度的組合。此處,取決于嵌套級別,該精度可如所需地增加,且僅受計算機的存儲容量限制,而存儲容量幾乎總是比足夠的要大得多。另外,增加的精度僅在必要時才使用,因為如果圖像在不需要啟動的LOD下,則根據(jù)以上描述,如果節(jié)點已被啟動,則它僅用包含它的節(jié)點的精度來顯示。由此,對于嵌套在其它節(jié)點內(nèi)的節(jié)點,當從最外面的節(jié)點向內(nèi)移動時,可遍歷已啟動的節(jié)點直到最終到達尚未啟動的節(jié)點。任何這樣的未啟動節(jié)點以及其內(nèi)的進一步節(jié)點將僅用最后一個遍歷的已啟動節(jié)點的精度來顯示。
這導致“褶”型精度,其中顯示可視內(nèi)容的精度在需要時且如由用戶的導航輸入指示地擴展和收縮,從而通過僅在對較高精度需要時使用它們來最大化系統(tǒng)資源的效率。
還要注意,當節(jié)點啟動時,該節(jié)點的顯示從基于父節(jié)點的坐標和呈現(xiàn)方法改為基于子節(jié)點的坐標和呈現(xiàn)方法。這一改變通過使用例如在共同待決的美國專利申請第10/790,253號中描述的混和來最優(yōu)地逐步作出。然而,逐步從父節(jié)點的坐標系統(tǒng)和呈現(xiàn)方法中的信息顯示改為子節(jié)點的其它方法也是可能的。系統(tǒng)可被編程為例如在特定范圍上發(fā)生從父節(jié)點到子節(jié)點的混和。然后,當用戶在縮放期間遍歷該范圍時發(fā)生這一轉(zhuǎn)變,除非在該范圍期間停止導航,在這一情況下混和可繼續(xù)直到在適當?shù)淖鴺讼到y(tǒng)中完全顯示。
本發(fā)明所解決的另一問題涉及一種用于在顯示期間維持所有極點之間的空間相互關系的系統(tǒng)。更具體而言,在諸如縮放和掃視等動態(tài)導航期間,使用許多不同的坐標系統(tǒng)來顯示可能不同的節(jié)點。如上所述,某些節(jié)點僅作為圖像在其它節(jié)點的坐標系統(tǒng)中顯示,而某些節(jié)點在其自己的坐標系統(tǒng)中顯示。實際上,整個可視顯示可用在不同坐標系統(tǒng)中的不同位置處顯示的節(jié)點來填充,且用于各個節(jié)點的坐標系統(tǒng)和精度在節(jié)點被啟動時可在導航期間改變。因此,重要的是確保節(jié)點相對于彼此正確地定位,因為每一節(jié)點僅知道其自己的坐標系統(tǒng)。本發(fā)明提供了一種用于在所有節(jié)點之間傳播相對位置信息、以及用于在需要時更新該信息以使每一節(jié)點“知道”在總體視圖中它應當呈現(xiàn)它自己的正確位置的技術。
上述內(nèi)容可通過向節(jié)點數(shù)據(jù)結構添加字段并添加一額外的地址棧數(shù)據(jù)結構來實現(xiàn)。所擴展的節(jié)點定義包括稱為“view(視圖)”字段的字段,且它由節(jié)點用于相對于整個顯示器定位其自身。view字段在該節(jié)點的坐標中表示該節(jié)點的可視區(qū)域一即,該節(jié)點的坐標中顯示器矩形的圖像。該矩形僅部分地與節(jié)點的區(qū)域重疊,如當節(jié)點部分地在屏幕外的時候。很清楚,view字段不必總是保持對每一節(jié)點更新,因為不必在發(fā)生導航時實時地遍歷整個節(jié)點有向圖。
棧結構定義如下
Stack<Address>viewStack;
其中該棧是客戶機(連接到顯示器的計算機)的全局變量。為示例性的目的,假定導航以由根節(jié)點定義的內(nèi)容全域的概觀開始;然后該根節(jié)點被壓入viewStack,且根節(jié)點的view字段可被初始化為根節(jié)點的整個區(qū)域,即
rootNode.view=rootNode.coordSystem;
Push(viewStack,rootNode);
示意性地,viewStack將指定由點“刺穿”的節(jié)點序列相對于顯示器的地址,該地址將在本示例性實現(xiàn)中用作顯示器的中心。該序列必須以根節(jié)點開始,但是可以是無限的,因此必須被截斷。在一個示例性實施例中,該序列在“刺穿”的節(jié)點變得小于被定義為minimumArea的某一最小大小時停止。然后,當前視圖由viewStack中所有節(jié)點的view字段來表示,其每一個按照節(jié)點的局部坐標系統(tǒng)指定了當前視圖。如果用戶對全域進行了非常深的放大,則顯示的詳細位置將由棧中的最后一個節(jié)點的view字段最精確地給出。然而,最后一個元素的view字段沒有指定用戶相對于整個全域的視點,而是僅指定了相對于其局部坐標的視點。另一方面,根節(jié)點的view字段指定了用戶正在查看全域中的何處。由此,較靠近viewStack的“精細端”的節(jié)點以遞增的精度但相對于全域中逐漸變小的區(qū)域指定了視圖位置。這在圖3中概念性地示出,其中可以看到,在已啟動的三個節(jié)點中,節(jié)點303提供了對用戶正在查看何處的最準確的指示,因為其坐標系統(tǒng)是“最精細的”,但是節(jié)點301提供了關于可視內(nèi)容的大得多的區(qū)域的信息,盡管該信息并不是那樣精細。
然后該問題縮減為以下所有可見節(jié)點的視圖(即,view字段)必須保持與用戶導航全域、掃視和縮放同步。無法使它們保持同步會導致節(jié)點的外觀在顯示器上獨立于彼此地移動而非作為結合在一起且物理上一致的2D表面來表現(xiàn)。
在任何導航操作期間改變視圖如下進行。由于viewStack中的最后一個節(jié)點具有該視圖的最精確表示,因此第一步是改變該最后一個節(jié)點的view字段;該改變的視圖被認為是正確的新視圖,且任何其它可見節(jié)點必須遵從。第二步是將新視圖朝向根節(jié)點“向上”傳播,這需要對棧中較早的節(jié)點的view字段進行逐漸變小的改變。如果用戶進行深縮放,則在向上傳播中的某一點,對視圖的更改可以很小,使得它停止以可準確地表示;向上傳播在這一節(jié)點處停止。在向上傳播的每一階段,改變也向下傳播到其它可見節(jié)點。因此,首先修改最后一個節(jié)點的父節(jié)點的視圖;然后在向下傳播中,修改最后一個節(jié)點的“兄弟節(jié)點”。下一向上傳播修改祖父節(jié)點的視圖,且第二個向下傳播修改第一個叔父節(jié)點,然后修改第一個表兄弟節(jié)點。向下傳播如前一樣在“表兄弟節(jié)點”的面積變得小于minimumArea時或在節(jié)點完全落在屏幕之外時暫停。
上述技術涉及將各節(jié)點的布局轉(zhuǎn)換成樹,這在圖4和5中概念性地示出。如可從圖4和5中見到的,對特定的所顯示的一組節(jié)點有一對應的樹,且樹結構可用于如上所述地傳播視圖信息。
掃視操作可將最后一個節(jié)點移得足夠遠,使得它不再屬于viewStack?;蛘?,放大可將子節(jié)點擴大到需要延長viewStack的程度,或者縮小可能使最后一個節(jié)點的面積變得小于最小面積,從而需要截斷viewStack。在所有這些情況中,最后一個節(jié)點的身份改變。這些情況在向下傳播期間被檢測到,這可相應地改變viewStack,從而可能使其更長或更短。
上述的一個簡單情況是在縮放期間節(jié)點被啟動,使得現(xiàn)在它需要被放到視圖棧中。另一示例是通過縮小,先前可見的節(jié)點變得太小以使其必須從視圖棧中移除。
這一概念的擴展是避免響應于長縮小立即截斷viewStack。截斷viewStack僅在用戶然后掃視時才必要。盡管長縮小將導致深縮放的節(jié)點的view字段變得非常大(因此在數(shù)值上不準確),但可將字段
Point2D viewCenter;
添加到Node結構中,表示view矩形的中心點;因此,沒有掃視的縮放不會更改任何節(jié)點的viewCenter字段。這一構造允許在放大回來之后立即進行程度大的縮小。由于viewStack保持不變,因此用戶然后可精確地返回到起始視圖。這一行為類似于web瀏覽器的“后退”和“前進”按鈕“后退”類似于縮小,且“前進”類似于放大回來。在web瀏覽器中,如果用戶使用“后退”來返回到前一網(wǎng)頁,但是然后點擊另一鏈接,則在這一點處“前進”不再起作用。之后點擊另一鏈接因此類似于在縮小之后掃視。
以上提供了可視內(nèi)容可用各種方式以基本無限的精度來顯示和導航,且僅受應用程序在其中運行的計算機系統(tǒng)的容量的限制。在任何給定時刻顯示的可視內(nèi)容因而作為節(jié)點的組合來顯示,其中僅啟動對特定視圖所需的節(jié)點,并且所有其它節(jié)點在不啟動的情況下作為另一節(jié)點的一部分來顯示或完全不顯示??梢岳斫猓鞣N其它實施例對本領域的技術人員而言都是顯而易見的,且本發(fā)明不限于此處所描述的實施例。
權利要求書
1.一種顯示可視內(nèi)容的方法,所述可視內(nèi)容包括至少兩個節(jié)點,所述方法包括使用第一節(jié)點的呈現(xiàn)方法和坐標系統(tǒng)顯示與至少第一節(jié)點和至少第二節(jié)點相關聯(lián)的可視內(nèi)容直到檢測到預定的導航條件,然后使用所述第二節(jié)點的呈現(xiàn)方法和坐標系統(tǒng)來顯示所述第二節(jié)點。
2.如權利要求1所述的方法,其特征在于,所述呈現(xiàn)方法或所述坐標系統(tǒng)中的至少一個在所述第一和第二節(jié)點之間不同。
3.如權利要求2所述的方法,其特征在于,所述預定導航條件是顯示器大小。
4.一種顯示組織成節(jié)點的可視內(nèi)容的方法,所述方法包括在規(guī)定的縮放范圍期間使用其自己的坐標系統(tǒng)顯示與第一節(jié)點相關聯(lián)的可視內(nèi)容,并在所述規(guī)定的縮放范圍之外使用第二節(jié)點的坐標系統(tǒng)顯示與所述第一節(jié)點相關聯(lián)的可視內(nèi)容。
5.如權利要求4所述的方法,其特征在于,所述第一節(jié)點在所述第二節(jié)點內(nèi)。
6.如權利要求5所述的方法,其特征在于,所述第一節(jié)點在所述縮放范圍期間使用其自己的呈現(xiàn)方法來顯示,而在所述縮放范圍之外是使用所述第二節(jié)點的呈現(xiàn)方法來顯示的。
7.如權利要求4或6所述的方法,其特征在于,在所述縮放范圍的邊界處,所述可視內(nèi)容通過從第一呈現(xiàn)混和到第二呈現(xiàn)來顯示。
8.如權利要求7所述的方法,其特征在于,所述第二節(jié)點包含指向所述第一節(jié)點的指針。
9.如權利要求8所述的方法,其特征在于,所述第二節(jié)點還包含指示所述第一節(jié)點的大小和位置的信息。
10.如權利要求7所述的方法,其特征在于,所述第一呈現(xiàn)和第二呈現(xiàn)使用不同的坐標系統(tǒng)。
11.如權利要求7所述的方法,其特征在于,所述第一呈現(xiàn)和所述第二呈現(xiàn)使用不同的呈現(xiàn)方法。
12.如權利要求7所述的方法,其特征在于,所述第一和第二呈現(xiàn)使用不同的呈現(xiàn)方法和不同的坐標系統(tǒng)。
13.一種顯示可視內(nèi)容的方法,所述方法包括在第一縮放范圍期間使用第二節(jié)點的坐標系統(tǒng)和呈現(xiàn)方法顯示與第一節(jié)點相關聯(lián)的可視內(nèi)容、在第二縮放范圍期間使用其自己的坐標系統(tǒng)和呈現(xiàn)方法顯示與所述第一節(jié)點相關聯(lián)的所述可視內(nèi)容、以及在第三縮放范圍期間停止顯示與所述第一節(jié)點相關聯(lián)的所述可視內(nèi)容。
14.如權利要求13所述的方法,其特征在于,所述可視內(nèi)容在所述第一和第二縮放范圍以及所述第二和第三縮放范圍的邊界處逐步混和。
15.一種方法,包括生成由相對于所述顯示器的一點刺穿的、且大于預定大小的所有節(jié)點的視圖的視圖棧、選擇與所述節(jié)點之一相關聯(lián)的視圖、以及將所述視圖傳播到要顯示與其相關聯(lián)的可視內(nèi)容的其它節(jié)點。
16.如權利要求15所述的方法,其特征在于,與至少兩個節(jié)點相關聯(lián)的可視內(nèi)容被基本上同時地顯示。
17.如權利要求16所述的方法,其特征在于,所述相關聯(lián)的視圖由向其傳播該視圖的每一節(jié)點變換成該節(jié)點自己的坐標系統(tǒng)。
18.如權利要求17所述的方法,其特征在于,所述選擇的視圖被向上傳播、然后被向下傳播到與然后可查看的可視內(nèi)容相關聯(lián)的節(jié)點。
19.如權利要求18所述的方法,其特征在于,所述向上傳播和所述向下傳播在對其否則會發(fā)生傳播的節(jié)點滿足指定條件時停止。
20.如權利要求19所述的方法,其特征在于,所述指定條件的至少一個是大小。
21.如權利要求20所述的方法,其特征在于,所述視圖棧中的條目基于所述可視內(nèi)容的導航來刪除或添加。
22.如權利要求21所述的方法,其特征在于,在所述視圖棧中表示并被顯示的節(jié)點在縮小操作之后不再顯示,但是仍保留在所述視圖棧中,由此允許準確地重新放大。
23.一種基本上同時顯示與多個節(jié)點中的每一個相關聯(lián)的可視內(nèi)容的方法,每一節(jié)點具有自己的坐標系統(tǒng),所述方法包括每一節(jié)點導出指示其在顯示區(qū)域中自己的位置的信息、以及在所述顯示區(qū)域中基本上同時地顯示與所述節(jié)點的每一個相關聯(lián)的可視內(nèi)容。
24.如權利要求23所述的方法,其特征在于,所述對至少一個節(jié)點導出包括從另一節(jié)點接收位置信息,以及將所述位置信息從第一坐標系統(tǒng)轉(zhuǎn)換到第二坐標系統(tǒng)。
25.如權利要求24所述的方法,其特征在于,所述位置信息是與所述顯示區(qū)域內(nèi)的預定位置相關聯(lián)的位置。
26.如權利要求25所述的方法,其特征在于,與所述節(jié)點的每一個相關聯(lián)的可視內(nèi)容是使用與該特定節(jié)點相關聯(lián)的呈現(xiàn)方法來呈現(xiàn)的。
27.一種顯示可視內(nèi)容的方法,包括顯示具有第一坐標系統(tǒng)的第一節(jié)點、在所述坐標系統(tǒng)內(nèi)顯示第二節(jié)點、以及然后響應于用戶導航在其自己的坐標系統(tǒng)內(nèi)顯示所述第二節(jié)點。
28.如權利要求27所述的方法,其特征在于,所述第二坐標系統(tǒng)比所述第一坐標系統(tǒng)更精確。
29.如權利要求28所述的方法,其特征在于,與一坐標系統(tǒng)相關聯(lián)的精度是以位數(shù)測量的,且其中所述位數(shù)是可變的。
30.如權利要求29所述的方法,其特征在于,所述相關聯(lián)的精度可高達由所述方法在其上操作的計算機的存儲容量限制的最大值。
31.一種在顯示器上顯示可視內(nèi)容的方法,所述方法包括以多個大小顯示多個節(jié)點,每一節(jié)點被顯示在一指定的坐標系統(tǒng)中,每一坐標系統(tǒng)具有一精度,顯示坐標系統(tǒng)的精度取決于顯示所述節(jié)點的大小。
32.如權利要求31所述的方法,其特征在于,所述精度是可變的,且在其中顯示節(jié)點的坐標系統(tǒng)在導航期間改變時增加。
33.如權利要求32所述的方法,其特征在于,所述精度是可變的,且在其中顯示節(jié)點的坐標系統(tǒng)在導航期間改變時減小。
34.一種顯示節(jié)點的方法,包括在第一坐標系統(tǒng)中顯示所述節(jié)點、以及在預定導航范圍期間通過逐步從所述第一坐標系統(tǒng)混和到第二坐標系統(tǒng)而在所述第二坐標系統(tǒng)中顯示所述節(jié)點。
35.如權利要求34所述的方法,其特征在于,用于所述節(jié)點的呈現(xiàn)方法也逐步地從第一這樣的呈現(xiàn)方法改為第二呈現(xiàn)方法。
36.如權利要求35所述的方法,其特征在于,所述導航包括縮放或掃視。
37.如權利要求36所述的方法,其特征在于,關于視圖的信息在發(fā)生所述導航時在多個節(jié)點之間傳播。
38.如權利要求37所述的方法,其特征在于,所述傳播是使用數(shù)學樹來實現(xiàn)的。
摘要
公開了一種利用僅在必要時啟動的節(jié)點的可視內(nèi)容的顯示方法。節(jié)點可在適當時在另一節(jié)點,可能是父節(jié)點的坐標系統(tǒng)中呈現(xiàn)和/或顯示。實現(xiàn)了顯示對象的精度的增加。
用于在圖像中導航的方法和裝置
相關申請的交叉引用
本申請要求2003年3月12日提交的題為SYSTEM AND METHOD FORFOVEATED,SEAMLESS,PROGRESSIVE RENDERINGINA ZOOMING USERINTERFACE的美國臨時專利申請第60/453,897號的優(yōu)先權,該申請的全部公開內(nèi)容通過引用結合于此。
背景技術:
本發(fā)明涉及用于以提供平滑的、連續(xù)的導航移動的外觀的方式在對象的圖像上進行諸如縮放和掃視等導航的方法和裝置。
大多數(shù)常規(guī)圖形計算機用戶界面(GUI)是使用固定空間比例的可視組件來設計的,然而,長久以來認識到可視組件可以被表示和操縱成使得它們在顯示器上不具有固定的空間比例;實際上,可視組件可被掃視和/或放大或縮小。對于例如查看地圖、瀏覽諸如報紙等文本布局、查看數(shù)字照片、查看藍圖或圖表以及查看其它大數(shù)據(jù)集等,在圖像上放大和縮小的能力是合乎需要的。
許多現(xiàn)有的計算機應用程序,諸如Microsoft Word、Adobe Photo Shop、AdobeAcrobat等都包括可縮放組件。一般而言,由這些計算機應用程序提供的縮放能力是用戶與軟件的交互的外圍方面,且縮放特征僅偶爾被采用。這些計算機應用程序允許用戶在圖像上平滑且連續(xù)地掃視(例如,利用滾動條或光標來將查看的圖像向左、右、上或下平移)。然而,這些計算機應用程序的一個重大問題是它們不允許用戶平滑且連續(xù)地縮放。實際上,它們提供了離散步驟中的縮放,諸如10%、25%、50%、75%、100%、150%、200%、500%等。用戶使用光標選擇期望的縮放,且作為響應,圖像急劇地改變到所選擇的縮放級別。
不連續(xù)縮放的不合需要的質(zhì)量也存在于基于因特網(wǎng)的計算機應用程序中。作為www.mapquest.com網(wǎng)站的基礎的計算機應用程序表明了這一點。MapQuest網(wǎng)站允許用戶輸入一個或多個地址,并作為響應接收道路地圖的圖像。圖1-4是可響應于對美國紐約州的Long Island的地區(qū)地圖的查詢而從MapQuest網(wǎng)站獲得的圖像的示例。MapQuest網(wǎng)站允許用戶放大和縮小到離散的級別,諸如10級。圖1是縮放級別5下的呈現(xiàn),它大約是100米/像素。圖2是縮放級別6下的圖像,它大約是35米/像素。圖3是縮放級別7下的圖像,它大約是20米/像素。圖4是縮放級別9下的圖像,它大約是10米/像素。
如可通過比較圖1-4看到的,縮放級別之間的急劇轉(zhuǎn)變導致在縮小時突然且急劇的細節(jié)丟失,以及在放大時突然且急劇的細節(jié)增加。例如,非本地的、次要的或連接的道路可在圖1中見到(在縮放級別5下),而次要且連接的道路在作為緊接著的下一縮放級別的圖2中突然出現(xiàn)。這一急劇的不連續(xù)性在利用MapQuest網(wǎng)站時是非常令人不滿的。然而,要注意,即使MapQuest軟件應用程序被修改成允許例如縮放級別5(圖1)下的地方街道的視圖,但是結果仍是不令人滿意的。盡管地圖的視覺密度隨著縮放級別而改變,使得在某一縮放級別處,結果可能是令人滿意的(例如,圖3的級別7處),但是當放大時,道路不會變粗,從而使得地圖看上去過度稀疏。當放大時,道路最終彼此相撞,從而迅速形成其中個別道路不能區(qū)分的實心嵌套。
由于與道路類別相關聯(lián)的變化的粗略度級別,提供對道路地像的平滑、連續(xù)的縮放是有問題的。在美國,大約有五類道路(如在由美國人口普查局發(fā)布的Tiger/Line數(shù)據(jù)下分類的)A1,主要高速公路;A2,主要道路;A3;州級高速公路、次要道路和連接道路;A4,地區(qū)街道、城市街道和鄉(xiāng)村道路;以及A5,土路。這些道路可被視為是總體對象(即,道路地圖)的元素。道路元素的粗略度顯現(xiàn)是因為A4道路比A3道路多得多,A3道路比A2道路多得多,而A2道路比A1道路多得多。另外,道路的物理尺寸(例如,其寬度)顯著變化。A1道路可以約為16米寬,A2道路可以約為12米寬,A3道路可以約為8米寬,A4道路可以約為5米寬,而A5道路可以約為2.5米寬。
MapQuest計算機應用程序通過僅顯示在特定縮放級別下被認為適當?shù)牡缆奉悇e來處理這些變化的粗略度級別。例如,國家級視圖可能僅示出A1道路,而州級視圖可能示出A1和A2道路,且縣級視圖可能示出A1、A2和A3道路。即使MapQuest被修改成允許對道路地圖的連續(xù)縮放,該方法也會導致在縮放期間道路類別的突然出現(xiàn)和消失,這是混亂且在視覺上不是令人愉悅的。
鑒于以上原因,本領域中需要用于導航復雜對象的圖像的方法和裝置,它允許對圖像進行平滑且連續(xù)的縮放,同時也基于其大小或重要性保留了對象的元素之間的視覺區(qū)別。
發(fā)明概述
根據(jù)本發(fā)明的一個或多個方面,構想了執(zhí)行各種動作的方法和裝置,這些動作包括放大或縮小具有至少一個對象的圖像,其中至少一個對象的至少某些元素以在物理上與同縮放關聯(lián)的一個或多個縮放級別不成比例的方式按比例地放大和/或縮小。
物理上不成比例的縮放可通過以下公式來表達p=c·d·za,其中p是該縮放級別下對象的一個或多個元素的以像素為單位的線性大小,c是常量,d是該對象的一個或多個元素的按照物理單位的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是比例冪,其中a≠-1。
在非物理比例縮放下,比例冪a在縮放級別z0和z1的范圍內(nèi)不等于-1(通常-1<a<0),其中z0的物理線性大小/像素比z1低。較佳的是,z0和z1中的至少一個可對于對象的一個或多個元素變化。注意,a、c和d也可在各元素之間變化。
至少一個對象的至少某些元素也可以在物理上與同縮放相關聯(lián)的一個或多個縮放級別成比例的方式按比例放大和/或縮小。物理上成比例的縮放可由以下公式表達p=c·d/z,其中p是該縮放級別下對象的一個或多個元素的以像素為單位的線性大小,c是常量,d是按照物理單位的對象的一個或多個元素的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
注意,迄今和/或本文中以后所描述的方法和裝置可利用已知技術中的任一種來實現(xiàn),諸如標準數(shù)字電路、模擬電路、可用于執(zhí)行軟件和/或固件程序的已知處理器中的任一種、可編程數(shù)字器件或系統(tǒng)、可編程陣列邏輯器件或以上的任何組合。本發(fā)明也可用軟件程序來實施,以儲存在合適的存儲介質(zhì)中并由處理單元來執(zhí)行。
對象的元素可以有變化的粗略程度。例如,如上所述,道路地圖對象的元素的粗略度顯現(xiàn),因為A4道路比A3道路多得多,A3道路比A2道路多得多,而A2道路比A1道路多得多。道路類別中的粗略程度在諸如平均道路長度、相交頻率和最大曲率等特性中也是顯然的。其它圖像對象的元素的粗略度可用其它方式來顯現(xiàn),這些方式太多以致于無法全部列出。由此,對給定預定圖像內(nèi)的元素的縮放可基于以下的至少之一在物理上成比例或物理上不成比例(i)這些元素的粗略程度;以及(ii)給定預定圖像的縮放級別。例如,對象可以是道路地圖,而對象的元素可以是道路,且變化的粗略程度可以是道路層次。由此,給定預定圖像中給定道路的縮放可以基于以下而在物理上成比例或在物理上不成比例(i)給定道路的道路層次,以及(ii)給定預定圖像的縮放級別。
根據(jù)本發(fā)明的一個或多個其它方面,構想了執(zhí)行各種動作的方法和裝置,這些動作包括在客戶機終端處接收道路地圖的多個變化縮放級別的預呈現(xiàn)圖像;在客戶機終端處接收包括縮放信息的一個或多個用戶導航命令;以及混和兩個或多個預呈現(xiàn)圖像以獲得對應于導航命令的縮放信息的中間縮放級別的中間圖像,使得客戶機終端上中間圖像的顯示提供平滑導航的外觀。
根據(jù)本發(fā)明的一個或多個另外的方面,構想了執(zhí)行各種動作的方法和裝置,這些動作包括在客戶機終端處接收至少一個對象的多個變化縮放級別的預呈現(xiàn)圖像,該至少一個對象的至少某些元素被放大和/或縮小以產(chǎn)生多個預定圖像,且縮放是以下的至少一種(i)與縮放級別物理上成比例;以及(ii)與縮放級別物理上不成比例;在客戶機終端處接收包括縮放信息的一個或多個用戶導航命令;混和兩個或多個預呈現(xiàn)圖像以獲得對應于導航命令的縮放信息的中間縮放級別的中間圖像;以及在客戶機終端上顯示該中間圖像。
根據(jù)本發(fā)明的一個或多個另外的方面,構想了執(zhí)行各種動作的裝置和方法,這些動作包括通過通信信道向客戶機終端發(fā)送道路地圖的多個變化縮放級別的預呈現(xiàn)圖像;在客戶機終端處接收多個預呈現(xiàn)圖像;使用客戶機終端發(fā)出包括縮放信息的一個或多個導航命令;以及混和兩個或多個預呈現(xiàn)圖像以獲得對應于導航命令的縮放信息的中間縮放級別的中間圖像,使得客戶機終端上中間圖像的顯示提供平滑導航的外觀。
根據(jù)本發(fā)明的一個或多個另外的方面,構想了執(zhí)行各種動作的裝置和方法,包括通過通信信道向客戶機終端發(fā)送至少一個對象的多個變化縮放級別的預呈現(xiàn)圖像,該至少一個對象的至少某些元素被放大和/或縮小以產(chǎn)生多個預定圖像,且縮放可以是以下的至少一種 (i)與縮放級別物理上成比例;以及(ii)與縮放級別物理上不成比例;使用客戶機終端發(fā)出包括縮放信息的一個或多個用戶導航命令;混和兩個預呈現(xiàn)圖像以獲得對應于導航命令的縮放信息的中間縮放級別的中間圖像;以及在客戶機終端上顯示中間圖像。
本領域普通技術人員在結合附圖考慮此處的描述時可以清楚其它方面、特征和優(yōu)點。
附圖簡述
為圖示本發(fā)明的目的,在附圖中示出了各種形式,但是可以理解,本發(fā)明不限于所示的精確排列和手段。
圖1是從MapQuest網(wǎng)站取得的縮放級別5下的圖像;
圖2是從MapQuest網(wǎng)站取得的縮放級別6下的圖像;
圖3是從MapQuest網(wǎng)站取得的縮放級別7下的圖像;
圖4是從MapQuest網(wǎng)站取得的縮放級別9下的圖像;
圖5是根據(jù)本發(fā)明的一個或多個方面在約334米/像素的縮放級別下產(chǎn)生的Long Island的圖像;
圖6是根據(jù)本發(fā)明的一個或多個另外的方面在約191米/像素的縮放級別下產(chǎn)生的Long Island的圖像;
圖7是根據(jù)本發(fā)明的一個或多個另外的方面在約109.2米/像素的縮放級別下產(chǎn)生的Long Island的圖像;
圖8是根據(jù)本發(fā)明的一個或多個另外的方面在約62.4米/像素的縮放級別下產(chǎn)生的Long Island的圖像;
圖9是根據(jù)本發(fā)明的一個或多個另外的方面在約35.7米/像素的縮放級別下產(chǎn)生的Long Island的圖像;
圖10是根據(jù)本發(fā)明的一個或多個另外的方面在約20.4米/像素的縮放級別下產(chǎn)生的Long Island的圖像;
圖11是根據(jù)本發(fā)明的一個或多個另外的方面在約11.7米/像素的縮放級別下產(chǎn)生的Long Island的圖像;
圖12是示出根據(jù)本發(fā)明的一個或多個方面可執(zhí)行以提供圖像的平滑且連續(xù)的導航的處理步驟的流程圖13是示出根據(jù)本發(fā)明的各方面可執(zhí)行以平滑地導航圖像的其它處理步驟的流程圖14是示出根據(jù)本發(fā)明的一個或多個另外的方面的物理和非物理比例縮放的以像素為單位的線寬對以米/像素為單位的縮放級別的對數(shù)-對數(shù)曲線圖;以及
圖15是示出圖14的物理和非物理比例縮放中的變化的對數(shù)-對數(shù)曲線圖。
圖16A-D示出了其端點精確地位于像素坐標的中心的相應的抗混疊垂直線;
圖17A-C示出了其端點不被定位成落在精確的像素坐標上的斜坡上的相應的抗混疊線;以及
圖18是圖14的線寬對縮放級別的對數(shù)-對數(shù)曲線圖,包括指示增量線寬的水平線,以及被間隔成使得兩條相鄰垂直線之間的間隔上的線寬不會改變兩個以上像素的垂直線。
發(fā)明詳述
現(xiàn)在參考附圖,其中相同的標號表示相同的元素,圖5-11中示出了表示美國紐約州Long Island的道路系統(tǒng)的一系列圖像,其中每一圖像在不同的縮放級別(或分辨率)下。在深入研究如何實現(xiàn)本發(fā)明的技術細節(jié)之前,將結合使用本發(fā)明的期望結果特征,即至少是特別在縮放時平滑且連續(xù)導航的外觀、同時保持信息完整性來討論這些圖像。
注意,將在以下討論的本發(fā)明的各方面可在除道路地像的導航之外的環(huán)境中應用。實際上,對其可采用本發(fā)明的圖像和實現(xiàn)的范圍非常多以致于無法全部列出。例如,本發(fā)明的特征可用于導航人體解剖的圖像、復雜地形、諸如接線圖或藍圖等工程圖、基因本體等等。然而,可以發(fā)現(xiàn)本發(fā)明尤其適用于導航其中其元素具有變化的細節(jié)水平或粗略度的圖像。因此,出于簡明和清楚的目的,將結合一特定示例,即道路地圖的圖像來討論本發(fā)明的各方面。
盡管在專利文獻中展示平滑且連續(xù)的縮放的外觀是不可行的,但是該特征可通過在基于Pentium的計算機上執(zhí)行合適的軟件程序經(jīng)由實驗和原型開發(fā)來展示。圖5所示的道路地圖的圖像100A在可按照物理長度/像素(或物理線性像素/像素)為單位來表征的縮放級別。換言之,縮放級別z表示圖像100A的單個像素所表示的實際物理線性大小。在圖5中,縮放級別約是334米/像素。本領域技術人員可以理解,縮放級別可以用其它單位來表達而不脫離所要求保護的本發(fā)明的精神和范圍。圖6是與圖5相同的道路地圖的圖像100B,然而縮放級別z是約191米/像素。
根據(jù)本發(fā)明的一個或多個方面,實施本發(fā)明的一個或多個方面的軟件程序的用戶可在圖5和6所示的級別之間放大或縮小。重要的是注意,這樣的縮放具有從334米/像素(圖5)到/自191米/像素級別(圖6)以及其間的任何級別的平滑且連續(xù)的轉(zhuǎn)變的外觀。同樣,用戶可縮放到其它級別,諸如z=109.2米/像素(圖7)、z=62.4米/像素(圖8)、z=35.7米/像素(圖9)、z=20.4米/像素(圖10)以及z=11.7米/像素(圖11)。通過這些縮放級別以及其間的任何級別的轉(zhuǎn)變同樣也有利地具有平滑且連續(xù)的移動的外觀。
圖5-11中示出的本發(fā)明的另一重要特征是在從一個級別縮放到另一級別時只有極少細節(jié)或沒有細節(jié)突然出現(xiàn)或消失。圖8所示的細節(jié)(在z=62.4米/像素的縮放級別下)也可在圖5中找到(在z=334米/像素的縮放級別下)。即使圖像對象(該情況中為道路地圖)包括粗略度程度變化的元素(即,道路)時也是如此。實際上,圖8的道路地圖100D至少包括諸如102等A1高速公路、諸如104等A3二級公路以及諸如106等A4地方道路。然而,這些細節(jié),即使是A4地方道路也仍可在圖5的圖像100A中見到,它與圖8的圖像100D相比被充分縮小。
此外,盡管A4地方道路106可在z=334米/像素的縮放級別(圖5)下看到,但A1、A2、A3和A4道路可彼此區(qū)分。甚至A1主要高速公路102和A2主要道路108之間的差別也可關于給予所呈現(xiàn)圖像100A中的這些道路的相對深淺度來彼此區(qū)分。
在道路層次中進行區(qū)分的能力在用戶繼續(xù)例如放大到如圖10的圖像100F所示的z=20.4米/像素的縮放級別時也被有利地保留。盡管A1主要高速公路102的深淺度與圖8中z=62.4米/像素的縮放級別相比顯著增加,但是它沒有增加到消除諸如A4地方道路106或甚至是A5土路等其它細節(jié)的程度。盡管如此,較低層次級別下的道路,諸如A4地方道路106的深淺度與圖8中z=62.4米/像素的縮放級別處其對應物相比仍顯著增加。
由此,即使圖5所示的縮放級別和圖11所示的縮放級別之間的動態(tài)范圍是充足的,且細節(jié)基本保持一致(即,在平滑縮放時沒有道路突然出現(xiàn)或消失),用戶試圖在給定縮放級別下獲得的信息也不會被不合需要的偽像遮擋。例如,在z=334米/像素的縮放級別(圖5)下,用戶可能希望獲得存在什么主要高速公路以及它們在什么方向上延伸的一般感覺。該信息即使在還描繪了A4地方道路106的情況下也可容易地獲得。在z=62.4米/像素的縮放級別下(圖8),用戶可能希望確定特定的A1主要高速公路102或A2主要道路108是否服務特定的城市或街區(qū)。用戶同樣可在沒有來自諸如A4地方道路106或甚至A5土路的存在和范圍等其它詳細得多的信息的干擾的情況下獲得該信息。最后,在z=11.7米/像素的縮放級別下,用戶可能對找到諸如112等特定的A4地方道路感興趣,并且可在沒有受到諸如A1主要高速公路102等大得多的道路的干擾的情況下完成該事項。
為了實現(xiàn)以上討論的本發(fā)明的各方面的一個或多個,可以構想一個或多個計算設備執(zhí)行使得該計算設備進行適當動作的一個或多個軟件程序。在這一點上,現(xiàn)在對圖12-13作出參考,圖12-13是示出較佳地由一個或多個計算設備和/或相關設備執(zhí)行的處理步驟的流程圖。
盡管較佳的是由市場上可購買的計算設備(諸如基于Pentium的計算機)來執(zhí)行該處理流程,但是可采用許多其它技術中的任一種來執(zhí)行這些處理步驟而不脫離所要求保護的本發(fā)明的精神和范圍。實際上,所采用的硬件可利用任何其它已知的或此后開發(fā)的技術來實現(xiàn),諸如標準數(shù)字電路、模擬電路、可用于執(zhí)行軟件和/或固件程序的已知處理器中的任一種、一個或多個可編程數(shù)字器件或系統(tǒng),諸如可編程只讀存儲器(PROM)、可編程陣列邏輯器件(PAL)、以上的任何組合、等等。此外,本發(fā)明的方法可用可被儲存在已知或此后開發(fā)的介質(zhì)的任一個上的軟件程序來實施。
圖12示出了本發(fā)明的一個實施例,其中準備多個圖像(其每一個在不同的縮放級別或分辨率下)(動作200),并將兩個或多個圖像混和在一起以實現(xiàn)諸如縮放等平滑導航的外觀(動作206)。盡管不是實施本發(fā)明所必需的,但是可以構想圖12中所示的方法可結合服務供應商-客戶機關系來使用。例如,服務供應商可花費資源來準備多個預呈現(xiàn)圖像(動作200)并通過諸如因特網(wǎng)等通信信道使得這些圖像對用戶的客戶機終端可用(動作202)?;蛘?,預呈現(xiàn)圖像可以是用戶在他或她的計算機上加載并執(zhí)行應用程序的整體或相關部分。
通過實驗可以發(fā)現(xiàn),當使用混和方法時,在圖像對象是道路地圖時以下縮放級別下的一組圖像表現(xiàn)良好30米/像素、50米/像素、75米/像素、100米/像素、200米/像素、300米/像素、500米/像素、1000米/像素以及3000米/像素。然而,注意,在任何數(shù)量的分辨率下可以采用任何數(shù)量的圖像而不脫離本發(fā)明的范圍。實際上,其它環(huán)境中的其它圖像對象可由較大或較小數(shù)目的圖像來最佳地提供,其中特定縮放級別不同于以上示例。
不管圖像是如何由客戶機終端獲得的,響應于用戶發(fā)起的諸如縮放命令等導航命令(動作204),客戶機終端較佳地可用來混和兩個或多個圖像以產(chǎn)生與導航命令相一致的中間分辨率圖像(動作206)。該混和可通過多種方法來實現(xiàn),諸如由Lance Williams在Pyramidal Parametrics,SIGGRAPH′83的Computer Graphics會議論文集17(3)1-11(1983)中描述的公知的三線性內(nèi)插技術,該文獻的全部公開內(nèi)容通過引用結合于此。圖像內(nèi)插的其它方法也可結合本發(fā)明來使用,諸如雙三次線性內(nèi)插,且還有其它一些方法將在未來開發(fā)。注意,本發(fā)明并不要求或依賴于這些混和方法中的任何特定的一個。例如,如圖8所示,用戶可能希望導航到62.4米/像素的縮放級別。因為這一縮放級別可以在兩個預呈現(xiàn)圖像之間(例如,在本示例中在縮放級別50米/像素和縮放級別75米/像素之間),因此所需的62.4米/像素的縮放級別可使用三線性內(nèi)插技術來實現(xiàn)。此外,50米/像素和75米/像素之間的任何縮放級別可利用如上所述的混和方法來獲得,該方法如果被執(zhí)行得足夠快將提供平滑且連續(xù)的導航的外觀?;旌图夹g可對其它縮放級別,諸如圖9所示的35.7米/像素級別執(zhí)行。在這一情況下,該混和技術可被執(zhí)行為在迄今為止所討論的示例的30米/像素和50米/像素的預呈現(xiàn)圖像之間。
以上混和方法可在其上實現(xiàn)本發(fā)明的處理單元的計算能力不夠高以(i)執(zhí)行第一實例中的呈現(xiàn)操作,和/或(ii)“即時”或“在進行中”(例如,實時)執(zhí)行圖像呈現(xiàn)時使用,以實現(xiàn)對于平滑導航的高圖像幀速率。然而,如以下將討論的,本發(fā)明的其它實施例構想了對已知的或此后開發(fā)的能夠在客戶機終端處呈現(xiàn)混和和/或高幀速率應用程序的高能力處理單元的使用。
圖13的處理流程示出了被較佳地進行以準備根據(jù)本發(fā)明的一個或多個圖像的詳細步驟和/或動作。在動作220處,使用已知的或此后開發(fā)的技術中的任一種來獲得關于一個或多個圖像對象的信息。通常,這些圖像對象是使用適當?shù)膱D元,諸如多邊形、線、點等來建模的。例如,當圖像對象是地圖時,可容易地獲得任何通用橫向Mercator(UTM)區(qū)中的道路的模型。該模型通常采用構成區(qū)中的道路的線段(以任何坐標系統(tǒng))的列表的形式。該列表可使用已知的或此后開發(fā)的呈現(xiàn)過程中的任一種轉(zhuǎn)換成空間域中的圖像(像素圖像),只要該過程結合了用于確定像素(空間)域中給定圖元的深淺度(例如,外觀或真實厚度)的特定技術即可。與以上道路地圖示例相一致,呈現(xiàn)過程應當結合用于確定空間域中對道路地圖的道路建模的線的深淺度的特定技術。這些技術將在以下討論。
在動作222處(圖13),將對象的元素分類。在道路地圖對象的情況下,分類可采取識別已經(jīng)存在的類別,即A1、A2、A3、A4和A5的形式。實際上,這些道路元素具有變化的粗略程度,并且如以下所討論的,可以基于該分類被不同地呈現(xiàn)。在動作224處,基于縮放級別向不同的道路元素應用數(shù)學比例縮放。如將在以下更詳細討論的,數(shù)學比例縮放也可基于元素分類來變化。
作為背景,有兩種用于呈現(xiàn)諸如地圖道路等圖像元素的常規(guī)技術實際物理比例縮放以及預設像素寬度。實際物理比例縮放技術規(guī)定道路地圖如同以不同的比例查看道路的實際物理圖像那樣來呈現(xiàn)。例如,A1高速公路可能是16米寬,A2道路可能是12米寬,A3道路可能是8米寬,A4道路可能是5米寬,而A5道路可能是2.5米寬。盡管這在地圖的小區(qū)域上放大時對查看者可能是可接受的,但是當縮小時,所有主要和次要道路都變得太細以致于無法辨認出。在某一縮放級別下,如在州級別(例如,約200米/像素)下,根本沒有道路能被看見。
預設像素寬度方法規(guī)定每一道路是某一特定像素寬度,諸如顯示器上寬為1像素。諸如高速公路等主要道路可通過使它們變?yōu)?像素寬等來強調(diào)。不幸的是,該方法使得地圖的視覺密度在放大和縮小時改變。在某一縮放級別下,結果可能是令人滿意的,例如在小尺寸的鄉(xiāng)村級別下。然而,當縮小時,道路不被加粗,從而使得地圖看上去過于稀疏。此外,當縮小時,道路將彼此相撞,從而迅速地形成其中個別道路不可分辨的實心嵌套。
根據(jù)本發(fā)明的一個或多個方面,在動作224處,以使得至少某些圖像元素取決于將在以下更詳細討論的參數(shù)(i)物理上與縮放級別成比例地;或(ii)物理上不與縮放級別成比例地放大和/或縮小的方式來產(chǎn)生圖像。
注意,縮放“在物理上與縮放級別成比例”意味著表示道路寬度的像素數(shù)隨著縮放級別而增加或減少,因為元素的大小將看似隨其離人類眼睛的距離而改變。給定物理大小為d的對象的外觀長度y,透視公式為
y=c·d/x
其中c是確定成角透視的常量,x是對象與查看者的距離。
在本發(fā)明中,物理線性大小為d′的對象以顯示器像素p為單位的線性大小由下式給出
p=d′·za,
其中z是以物理線性大小/像素(例如,米/像素)為單位的縮放級別,a是冪律。當a=-1且d′=d(對象的真實物理線性大小)時,該等式在維度上正確并變得等價于p=y(tǒng)且z=x/c的透視公式。這表示物理縮放和透視變換之間的等價性放大等價于將對象移向查看者,而放大等價于將對象移開。
為實現(xiàn)非物理比例縮放,可將a設為除-1之外的冪律,并可將d′設為除實際物理線性大小d之外的物理線性大小。在道路地圖的環(huán)境中,其中p可表示以像素為單位的道路的顯示寬度,而d′可表示采用物理單位的估算寬度,“物理上與縮放級別不成比例”意味著以顯示器像素為單位的道路寬度以除物理上與縮放級別成比例之外的方式,即a≠-1隨縮放級別增加或減少。比例縮放以實現(xiàn)某些期望結果的方式來變形。
注意,“線性大小”意味著一維大小。例如,如果考慮任何二維對象并將其“線性大小”加倍,則將面積乘以4=22。在二維情況下,對象的元素的線性大小可涉及長度、寬度、半徑、直徑和/或可用尺在歐幾里得平面上讀出的任何其它度量。線的粗細度、線的長度、圓或盤的直徑、多邊形一側(cè)的長度以及兩點之間的距離都是線性大小的示例。在這一意義上,二維中的“線性大小”是在2D歐幾里得平面上對象的兩個標識點之間的距離。例如,線性大小可通過取(dx2+dy2)的平方根來計算,其中dx=x1-x0,dy=y(tǒng)1-y0,且兩個標識點由笛卡爾坐標(x0,y0)和(x1,y1)給出。
“線性大小”的概念自然地延及多于二維;例如,如果考慮體積對象,則將其線性大小加倍涉及將體積增大到8=23倍。也可對非歐幾里得空間,諸如球體表面定義類似的線性大小度量。
a<0的任何冪律都將導致元素的呈現(xiàn)大小在縮小時減小并在放大時增大。當a<-1時,元素的呈現(xiàn)大小在縮小時將比對于成比例物理縮放時更快地減小。相反,當-1<a<0時,呈現(xiàn)元素的大小在縮小時將比成比例物理縮放時更慢地減小。
根據(jù)本發(fā)明的至少一個方面,對給定對象的給定長度,允許p(z)基本連續(xù)以使得在導航其間用戶不經(jīng)歷圖像元素大小的突然跳躍或不連續(xù)(這與允許最極端的不連續(xù)性一導航其間元素的突然出現(xiàn)或消失的常規(guī)技術相反)。此外,較佳的是p(z)在縮小時單調(diào)遞減,使得縮小導致對象元素變小(例如,道路變細),并使得放大導致對象元素變大。這給予用戶關于圖像對象的物理性意義。
以上討論的比例縮放特征可以參考圖14來更完全地理解,圖14是對A1高速公路以像素為單位的呈現(xiàn)線寬對以米/像素為單位的縮放級別的對數(shù)-對數(shù)曲線圖。(在x軸上繪出log(z)并在y軸上繪出log(p)是方便的,因為由于關系log(xa)=a·log(x),曲線變?yōu)橹本€)。線(道路)寬度對縮放級別曲線圖的基本特性是
(i)道路寬度的比例縮放在放大時(例如,最高達約0.5米/像素)可以與縮放級別在物理上成比例;
(ii)道路寬度的比例縮放在縮小時(例如,約0.5米/像素之上)可以與縮放級別在物理上不成比例;
(iii)道路寬度的比例縮放在進一步縮小(例如,約50米/像素之上或更高,取決于將在下文更詳細討論的參數(shù))時可以與縮放級別在物理上成比例。
對于其中道路寬度的比例縮放與縮放級別在物理上成比例的區(qū)域,采用比例縮放公式p=d′·za,其中a=-1。在該示例中,對于實際的A1高速公路的物理寬度的合理值是約d′=16米。由此,代表A1高速公路的線的呈現(xiàn)寬度在至少縮小到某一縮放級別z0,如z0=0.5米/像素時隨物理比例縮放而單調(diào)遞減。
對于z0=0.5的縮放級別被選為內(nèi)部比例,在該比例之下應用物理比例縮放。這避免了在道路地圖與具有真實物理尺寸的其它精細比例GIS內(nèi)容組合時的非物理外觀。在該示例中,z0=0.5米/像素或2像素/米,它在被表達為15英寸顯示器(具有1600x1200的像素分辨率)上的地圖比例時對應于約1∶2600的比例。在作為對于A1道路的合理真實物理寬度的d=16米處,所呈現(xiàn)的道路在放大(0.5米/像素或更小)時看似為其實際大小。在0.1米/像素的縮放級別下,所呈現(xiàn)的線約是160像素寬。在0.5米/像素的縮放級別下,所呈現(xiàn)的線是32像素寬。
對于其中道路寬度的比例縮放與縮放級別物理上不成比例的區(qū)域,采用比例縮放公式p=d'·za,其中-1<a<0(在縮放級別z0和z1的范圍內(nèi))。在該示例中,在約z0=0.5米/像素和在z1=3300米/像素之間進行非物理比例縮放。再一次,當-1<a<0時,所呈現(xiàn)道路的寬度在縮小時比在成比例物理縮放時更慢地減小。有利的是,這允許A1道路在縮小時保持可見(且可與其它較小的道路區(qū)分)。例如,如圖5所示,A1道路102在縮放級別z=334米/像素下保持可見且可與其它道路區(qū)分。假定A1道路的物理寬度是d′=d=16米,則使用物理比例縮放呈現(xiàn)的線的寬度在約3300米/像素的縮放級別下將是約0.005像素,使得它基本上不可見。然而,使用其中-1<a<0(本示例中a約為-0.473)的非物理比例縮放,所呈現(xiàn)線的寬度在3300米/像素的縮放級別下約為0.8像素,使得它清晰可見。
注意,z1的值被選為給定道路仍具有“大于物理的”重要性的最大縮小比例。作為示例,如果整個美國被呈現(xiàn)在1600×1200像素的顯示器上,則分辨率將是約3300米/像素或3.3千米/像素。如果查看整個世界,則沒有理由使美國高速公路呈現(xiàn)出相對于單獨的國家視圖有增強的重要性。
由此,在超過z1的縮放級別,在以上示例中是約3300米/像素,道路寬度的比例縮放再一次與縮放級別在物理上成比例,但是為p(z)的連續(xù)性起見較佳地具有較大的d′(比真實寬度d要大得多)。在這一區(qū)中,采用p=d′·za的比例縮放公式,其中a=-1。為了使所呈現(xiàn)道路的寬度在z1=3300米/像素下連續(xù),選擇新估算的A1高速公路的物理寬度,例如d′=1.65千米。較佳地以這樣一種方式來選擇z1和新的d′值使得在外部比例z1下,所呈現(xiàn)的線寬將是合理個數(shù)的像素。在這一情況下,在其中整個國家可在顯示器上看見的縮放級別下(約3300米/像素),所有道路可以是約1/2像素寬,這雖然較細但仍清晰可見;這對應于估算的物理道路寬度1650米,即1.65千米。
以上建議了用于所呈現(xiàn)線寬作為縮放級別的函數(shù)的一組特定公式
p(z)=d0·z-1,如果z≤z0
p(z)=d1·za,如果z0<z<z1
p(z)=d2·z-1,如果z≥z1
以上形式的p(z)具有六個參數(shù)z0、z1、d0、d1、d2和a。z0和z1標記了p(z)的行為改變的比例。在放大區(qū)(z≤z0)中,縮放是物理寬度為d0的物理縮放(即,z的指數(shù)是-1),這較佳地對應于真實物理寬度d。在縮小區(qū)(z≥z1)中,縮放同樣是物理的,但物理寬度為d1,這一般不對應于d。在z0和z1之間,所呈現(xiàn)的線寬隨著冪律a比例縮放,a可以是除-1之外的值。給定p(z)連續(xù)的優(yōu)先選擇,則指定z0、z1、d0和d2足以唯一地確定d1和a,這在圖14中清楚地示出。
以上相對于A1道路討論的方法可以應用于道路地圖對象的其它道路元素。將這些比例縮放技術應用于A1、A2、A3、A4和A5道路的示例在圖15的對數(shù)-對數(shù)曲線圖中示出。在本示例中,對于所有的道路z0=0.5米/像素,盡管它可以取決于環(huán)境而在各元素之間不同。因為A2道路一般比A1道路略小,因此d0=12米。此外,A2道路例如在美國州級上是“重要的”,因此z1=312米/像素,這大致是單個州的呈現(xiàn)分辨率(線性比例下約為國家的1/10)。在這一比例下,可以發(fā)現(xiàn)一個像素的線寬是合乎需要的,因此d2=312米是合理的設置。
使用以上對A1和A2道路列出的一般方法,可建立地圖對象的剩余元素的參數(shù)。A3道路d0=8米,z0=0.5米/像素,z1=50米/像素且d2=100米。A4街道d0=5米,z0=0.5米/像素,z1=20米/像素且d2=20米。而A5土路d0=2.5米,z0=0.5米/像素,z1=20米/像素且d2=20米。注意,使用這些參數(shù)設置,A5土路在放大縮放級別下看上去越來越像街道,而其物理比例在被放大時為一半寬。
圖15的對數(shù)-對數(shù)曲線圖概括了道路類型的比例縮放行為。注意,在每一比例下,外觀寬度為A1>A2>A3>A4>=A5。還要注意,除了土路之外,冪律都在a=-0.41附近出現(xiàn)。虛線都具有-1的斜率,且表示不同物理寬度下的物理比例縮放。從上到下,這些虛線的對應物理寬度為1.65千米、312米、100米、20米、16米、12米、8米、5米和2.5米。
當使用多個預呈現(xiàn)圖像之間的內(nèi)插時,在許多情況下有可能確保所得的內(nèi)插與所有線或其它圖元幾何元素在其如由物理和非物理比例縮放公式確定的正確像素寬度下的理想呈現(xiàn)是人類不可分辨或幾乎不可分辨的。為理解本發(fā)明的這一替換實施例,以下將呈現(xiàn)關于抗混疊線繪制的某些背景。
對抗混疊線繪制的討論將根據(jù)以上詳細討論的道路地圖示例來呈現(xiàn),其中所有的圖元是線,且線寬服從先前所述的比例縮放公式。參考圖16A,1像素寬的垂直線用黑色繪制在白色背景上,使得該線的水平位置與像素網(wǎng)格精確對齊,該線僅由白色背景上1像素寬的黑色像素列構成。根據(jù)本發(fā)明的各方面,期望考慮并適應其中線寬是非整個像素的情況。參考圖16B,如果線的端點保持固定,但是線的粗細度被增加到1.5像素寬,則在抗混疊圖形顯示器上,中心列的左側(cè)和右側(cè)的像素列用25%的灰度繪出。參考圖16C,在2像素寬下,這些側(cè)面列用50%灰度繪出。參考圖16D,在3像素寬下,側(cè)面列用100%黑色繪出,且結果是所期望的三個實心黑色列。
在像素化顯示器上繪出非整數(shù)寬度的線的這一方法導致線寬改變時視覺連續(xù)性的感覺(或假象),從而允許不同寬度的線即使在它們的寬度僅相差一個像素的一小部分時也可清楚地區(qū)分。一般而言,稱為抗混疊線繪制的這一方法被設計成確保強度函數(shù)(或者對于白色背景上的黑色線,為“1-強度”函數(shù))在對于所繪出的線的垂線上的線積分等于線寬。該方法可容易地推廣到其端點不精確地位于像素中心的線、處于除垂直以外的其它方向的線、以及曲線。
注意,圖16A-D的抗混疊垂直線的繪制也可通過對兩個圖像進行α混和來實現(xiàn),其中一個圖像(圖像A)的線是1像素寬,而另一圖像(圖像B)的線是3像素寬。α混和向顯示器上的每一像素分配(1-α)*(圖像A中的對應像素)+α*(圖像B中的對應像素)。當α在0和1之間變化時,所呈現(xiàn)的線的有效寬度在1和3個像素之間平滑變化。該α混和方法僅在圖像A和B中兩個所呈現(xiàn)線寬之差是1個像素或更小的大多數(shù)一般情況下才產(chǎn)生良好視覺結果;否則,線在中間寬度處可顯現(xiàn)為暈圈。同一方法可應用于以不同的線性大小呈現(xiàn)點、多邊形、以及許多其它不同的圖元圖形元素。
再次轉(zhuǎn)向圖16A-D,1.5像素寬的線(圖16B)和2像素寬的線(圖16C)可通過1像素寬的線(圖16A)和3像素寬的線(圖16D)之間的α混和來構造。參考圖17A-C,1像素寬的線(圖17A)、2像素寬的線(圖17B)和3像素寬的線(圖17C)被示出在任意的方向上。關于其中線與像素網(wǎng)格精確對齊的情況的同一原理應用于圖17A-C中的任意方向,盡管在它們之間進行α混和的線寬的間距為了得到良好結果可能需要比兩個像素更精細。
在本地圖示例的上下文中,參考圖14-15的對數(shù)-對數(shù)曲線圖可選擇不同分辨率的一組圖像用于進行預呈現(xiàn)。例如,現(xiàn)在參考圖18,它基本上類似于圖14,除了圖18包括一組水平線和垂直線之外。水平線指示1和10像素之間的線寬,以1個像素為增量。垂直線被間隔成使得兩條相鄰垂直線之間間隔上的線寬不改變多于兩個像素。由此,垂直線表示適于預呈現(xiàn)的一組縮放值,其中兩個相鄰的這樣的預呈現(xiàn)圖像之間的α混和將產(chǎn)生幾乎等效于以連續(xù)可變寬度呈現(xiàn)表示道路的線的特性。
由圖18所示的垂直線表示的六個分辨率之間的內(nèi)插足以使用以約9米/像素及以上示出的比例縮放曲線來準確地呈現(xiàn)A1高速公路。以下關于9米/像素的呈現(xiàn)不需要預呈現(xiàn),因為這些視圖已放大了很多且因此示出了非常少的道路,從而使得垂直地呈現(xiàn)它們比在預呈現(xiàn)圖像之間內(nèi)插在計算上更有效(且對于數(shù)據(jù)存儲要求更有效)。在大于約1000米/像素的分辨率下(這些視圖包含地球表面的很大部分),可單獨使用最終的預呈現(xiàn)圖像,因為它是使用1像素寬的線的呈現(xiàn)。比單個像素細的線更微弱地呈現(xiàn)同一像素。因此,為了產(chǎn)生其中A1線是0.5像素寬的圖像,可將1像素寬的線圖像乘以值為0.5的α。
在實踐中,預呈現(xiàn)略大的一組分辨率,使得在分辨率之間的每一間隔上,圖15的比例縮放曲線中沒有一個會變化1個像素以上。將允許的變化減小到1像素可得到改進的呈現(xiàn)質(zhì)量。值得注意的是,在以下共同待決的申請中構想并討論的小塊技術可結合本發(fā)明來考慮2004年3月1日提交的題為SYSTEM AND METHODFOR EXACT RENDERINGINA ZOOMING USER INTERFACE的美國專利申請第10/790,253號,代理案卷號489/2,其全部公開內(nèi)容通過引用結合于此。該小塊技術可用于以特定縮放級別解析圖像,即使該級別并不與預呈現(xiàn)圖像一致。如果一組略大分辨率中的每一圖像以適當?shù)姆直媛暑A呈現(xiàn)并被小塊化,則結果是用于對任意復雜度的道路地圖進行縮放和掃視導航的完整系統(tǒng),使得所有的線都看似根據(jù)此處所公開的比例縮放公式在寬度上連續(xù)變化。
關于可結合實現(xiàn)本發(fā)明采用的用于混和圖像的其它技術的另外的細節(jié)可在2003年6月5日提交的題為SYSTEM AND METHOD FOR THE EFFICIENT,DYNAMIC AND CONTINUOUS DISPLAY OF MULTI RESOLUTIONAL VISUALDATA的美國臨時專利申請第60/475,897號中找到,該申請的全部公開內(nèi)容通過引用結合于此。關于可結合實現(xiàn)本發(fā)明采用的混和技術的進一步細節(jié)可在美國臨時專利申請第60/453,897號中找到。
有利的是,采用以上討論的本發(fā)明的各方面,用戶享受通過各縮放級別的平滑且連續(xù)的導航的外觀。此外,當從一個級別縮放到另一個時,極少細節(jié)或沒有細節(jié)會突然出現(xiàn)或消失。這表示優(yōu)于現(xiàn)有技術的重大進步。
構想本發(fā)明的各方面可應用于眾多產(chǎn)品,諸如因特網(wǎng)上的交互式軟件應用程序、基于車輛的軟件應用程序等等。例如,本發(fā)明可由響應于用戶請求向客戶機終端提供地圖和駕駛方向的因特網(wǎng)網(wǎng)站使用?;蛘?,本發(fā)明的各方面可用于汽車中的GPS導航系統(tǒng)。本發(fā)明也可被結合到醫(yī)學成像設備中,其中關于例如患者的循環(huán)系統(tǒng)、神經(jīng)系統(tǒng)等的詳細信息可如上所述地呈現(xiàn)和導航。本發(fā)明的應用很多以致于無法全部列出,但是本領域技術人員可以認識到,它們都在此處被構想并落入所要求保護的本發(fā)明的范圍之內(nèi)。
本發(fā)明也可結合其中所呈現(xiàn)圖像提供用于做廣告和其它超前商務的手段的其它應用來使用。關于本發(fā)明的這些方面和用途的其它細節(jié)可以在與其同日提交的題為METHODS AND APPARATUS FOR EMPLOYING MAPPING TECHNIQUESTO ADVANCE COMMERCE的美國臨時專利申請第60/_______號,代理案卷號489/7中找到,該申請的全部公開內(nèi)容通過引用結合于此。
盡管在本文中本發(fā)明是參考特定實施例來描述的,但是可以理解,這些實施例僅示出了本發(fā)明的原理和應用。因此可以理解,可以對所示的實施例作出眾多修改并可設計其它安排而不脫離如所附權利要求書定義的本發(fā)明的精神和范圍。
權利要求書
1.一種方法,包括放大或縮小具有至少一個對象的圖像,其中所述至少一個對象的至少某些元素以與同所述縮放相關聯(lián)的一個或多個縮放級別在物理上不成比例的方式放大和/或縮小。
2.如權利要求1所述的方法,其特征在于,所述物理上不成比例的縮放可通過以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
3.如權利要求2所述的方法,其特征在于,所述d′和a中的至少一個可對所述對象的一個或多個元素變化。
4.如權利要求2所述的方法,其特征在于,所述冪律在縮放級別z0和z1的范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
5.如權利要求4所述的方法,其特征在于,z0、z1、d′和a中的至少一個可對所述對象的一個或多個元素變化。
6.如權利要求1所述的方法,其特征在于,所述至少一個對象的至少某些元素也以與同所述縮放相關聯(lián)的一個或多個縮放級別物理上成比例的方式來放大和/或縮小。
7.如權利要求6所述的方法,其特征在于,所述物理上成比例的縮放可用以下公式來表達,p=c·d/z,其中p是所述對象的一個或多個元素的以像素為單位的線性大小,c是常量,d是所述對象的一個或多個元素的按照物理單位的真實或估算的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
8.如權利要求6所述的方法,其特征在于
所述對象的元素具有變化的粗略程度;以及
給定縮放級別下所述元素的縮放基于以下的至少一個在物理上成比例或物理上不成比例(i)這些元素的粗略程度;以及(ii)所述縮放級別。
9.如權利要求8所述的方法,其特征在于
所述對象是道路地圖,所述對象的元素是道路,且所述變化的粗略程度是道路層次;以及
給定縮放級別下給定道路的縮放基于(i)所述給定道路的道路層次;以及(ii)所述縮放級別而在物理上成比例或物理上不成比例。
10.一種包含一個或多個軟件程序的存儲介質(zhì),所述軟件程序可用于使處理單元執(zhí)行動作,所述動作包括放大或縮小具有至少一個對象的圖像,其中所述至少一個對象的至少某些元素以與同所述縮放相關聯(lián)的一個或多個縮放級別物理上不成比例的方式來放大和/或縮小。
11.如權利要求10所述的存儲介質(zhì),其特征在于,所述物理上不成比例的縮放可通過以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
12.如權利要求11所述的方法,其特征在于,d′和a中的至少一個可對所述對象的一個或多個元素變化。
13.如權利要求11所述的方法,其特征在于,所述比例冪在z0和z1之間的縮放級別范圍內(nèi)是-1<a<0,,其中z0是低于z1的物理線性大小/像素。
14.如權利要求13所述的存儲介質(zhì),其特征在于,z0和z1中的至少一個可對所述對象的一個或多個元素變化。
15.如權利要求9所述的存儲介質(zhì),其特征在于,所述至少一個對象的至少某些元素也以與同所述縮放相關聯(lián)的一個或多個縮放級別物理上成比例的方式來放大和/或縮小。
16.如權利要求15所述的存儲介質(zhì),其特征在于,所述物理上成比例的縮放可通過以下公式來表達p=c·d/z,其中p是所述對象的一個或多個元素的以像素為單位的線性大小,c是常量,d是所述對象的一個或多個元素的按照物理單位的真實或估算的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
17.如權利要求15所述的存儲介質(zhì),其特征在于
所述對象的元素具有變化的粗略程度;以及
所述元素在給定縮放級別下的縮放基于以下的至少一個在物理上成比例或物理上不成比例(i)這些元素的粗略程度;以及(ii)所述縮放級別。
18.如權利要求17所述的存儲介質(zhì),其特征在于
所述對象是道路地圖,所述對象的元素是道路,并且所述變化的粗略程度是道路層次;以及
給定道路在給定縮放級別下的縮放基于(i)所述給定道路的道路層次;以及(ii)所述縮放級別而在物理上成比例或物理上不成比例。
19.一種包括處理單元的裝置,所述處理單元在一個或多個軟件程序的控制下操作,所述軟件程序可用于使所述處理單元執(zhí)行動作,所述動作包括放大或縮小具有至少一個對象的圖像,其中所述至少一個對象的至少某些元素以與同所述縮放相關聯(lián)的一個或多個縮放級別物理上不成比例的方式放大和/或縮小。
20.如權利要求19所述的裝置,其特征在于,所述物理上不成比例地縮放可用以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
21.如權利要求20所述的方法,其特征在于,所述d′和a中的至少一個可對所述對象的一個或多個元素變化。
22.如權利要求20所述的裝置,其特征在于,所述冪律在縮放級別z0和z1的范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
23.如權利要求22所述的裝置,其特征在于,z0和z1中的至少一個可對所述對象的一個或多個元素變化。
24.如權利要求19所述的裝置,其特征在于,所述至少一個對象的至少某些元素也以與同所述縮放相關聯(lián)的一個或多個縮放級別物理上成比例的方式來放大和/或縮小。
25.如權利要求24所述的裝置,其特征在于,所述物理上成比例的縮放可用以下公式來表達p=c·d/z,其中p是所述對象的一個或多個元素的以像素為單位的線性大小,c是常量,d是所述對象的一個或多個元素的按照物理單位的真實或估算的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
26.如權利要求24所述的裝置,其特征在于
所述對象的元素具有變化的粗略程度;以及
給定縮放級別下的所述元素的縮放基于以下的至少一個在物理上成比例或物理上不成比例(i)這些元素的粗略程度;以及(ii)所述縮放級別。
27.如權利要求26所述的裝置,其特征在于
所述對象是道路地圖,所述對象的元素是道路,且所述變化的粗略程度是道路層次;以及
給定縮放級別下給定道路的縮放基于(i)所述給定道路的道路層次;以及(ii)所述縮放級別而在物理上成比例或物理上不成比例。
28.一種方法,包括
準備至少一個對象的不同縮放級別的多個圖像,其中所述至少一個對象的至少某些元素以與一個或多個縮放級別物理上不成比例的方式來放大和/或縮小。
29.如權利要求28所述的方法,其特征在于,所述圖像在源終端處預呈現(xiàn)以遞送到客戶機終端。
30.如權利要求28所述的方法,其特征在于,所述物理上不成比例的縮放可用以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
31.如權利要求30所述的方法,其特征在于,所述d′和a中的至少一個可對所述對象的一個或多個元素變化。
32.如權利要求30所述的方法,其特征在于,所述冪律在z0和z1之間的縮放級別范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
33.如權利要求32所述的方法,其特征在于,z0和z1中的至少一個可對所述對象的一個或多個元素變化。
34.如權利要求28所述的方法,其特征在于,所述至少一個對象的至少某些元素也以與同所述縮放相關聯(lián)的一個或多個縮放級別物理上成比例的方式來放大和/或縮小。
35.如權利要求34所述的方法,其特征在于,所述物理上成比例的縮放可用以下公式來表達p=c·d/z,其中p是所述對象的一個或多個元素的以像素為單位的線性大小,c是常量,d是所述對象的一個或多個元素的按照物理單位的真實或估算的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
36.如權利要求34所述的方法,其特征在于
所述對象的元素具有變化的粗略程度;以及
給定縮放級別下的所述元素的縮放基于以下的至少一個在物理上成比例或物理上不成比例 (i)這些元素的粗略程度;以及(ii)所述縮放級別。
37.如權利要求36所述的方法,其特征在于
所述對象是道路地圖,所述對象的元素是道路,且所述變化的粗略程度是道路層次;以及
給定縮放級別下給定道路的縮放基于(i)所述給定道路的道路層次;以及(ii)所述縮放級別而在物理上成比例或在物理上不成比例。
38.如權利要求37所述的方法,其特征在于,所述冪律在z0和z1之間的縮放級別范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
39.如權利要求38所述的方法,其特征在于,z0和z1中的至少一個可對所述道路地圖的一個或多個道路變化。
40.一種方法,包括
在客戶機終端處接收道路地圖的變化縮放級別的多個預呈現(xiàn)圖像;
在所述客戶機終端處接收包括縮放信息的一個或多個用戶導航命令;以及
混和兩個或多個所述預呈現(xiàn)圖像以獲得對應于所述導航命令的縮放信息的中間縮放級別下的中間圖像,使得所述中間圖像在所述客戶機終端上的顯示提供平滑導航的外觀。
41.如權利要求40所述的方法,其特征在于,所述道路地圖的至少某些道路被放大和/或縮小以產(chǎn)生所述多個預定圖像,且所述縮放是以下的至少一個 (i)物理上與所述縮放級別成比例;以及(ii)物理上與所述縮放級別不成比例。
42.如權利要求41所述的方法,其特征在于,所述物理上成比例的縮放可用以下公式來表達p=c·d/z,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,c是常量,d是所述對象的一個或多個元素的按照物理單位的真實或估算的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
43.如權利要求41所述的方法,其特征在于,所述物理上不成比例的縮放可用以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
44.如權利要求43所述的方法,其特征在于,所述d′和a中的至少一個可對所述對象的一個或多個元素變化。
45.如權利要求43所述的方法,其特征在于,所述冪律在z0和z1之間的縮放級別范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
46.如權利要求45所述的方法,其特征在于,z0和z1中的至少一個可對所述道路地圖的一個或多個道路變化。
47.如權利要求40所述的方法,其特征在于
所述道路地圖的道路具有變化的粗略程度;以及
給定預呈現(xiàn)圖像中所述道路的縮放基于以下的至少一個在物理上成比例或物理上不成比例(i)這些道路的粗略程度;以及(ii)所述給定預呈現(xiàn)圖像的縮放級別。
48.一種方法,包括
在客戶機終端處接收至少一個對象的變化縮放級別的多個預呈現(xiàn)圖像,所述至少一個對象的至少某些元素被放大和/或縮小以產(chǎn)生所述多個預定圖像,且所述縮放是以下的至少一種(i)與所述縮放級別物理上成比例;以及(ii)與所述縮放級別物理上不成比例;
在所述客戶機終端處接收包括縮放信息的一個或多個用戶導航命令;
混和兩個或多個所述預呈現(xiàn)圖像以獲得對應于所述導航命令的縮放信息的中間縮放級別下的中間圖像;以及
在所述客戶機終端上顯示所述中間圖像。
49.如權利要求48所述的方法,其特征在于,所述混和步驟包括執(zhí)行α混和、三線性內(nèi)插和雙三次線性內(nèi)插中的至少一種。
50.如權利要求48所述的方法,其特征在于,所述預呈現(xiàn)圖像的個數(shù)使得其間的混和提供平滑導航的外觀。
51.如權利要求48所述的方法,其特征在于,所述縮放級別和所述預呈現(xiàn)圖像的縮放被選為使得所述對象的元素中給定的一個或多個的以像素數(shù)p為單位的相應線性大小在一個預呈現(xiàn)圖像和更高分辨率的另一預呈現(xiàn)圖像之間不會變化多于預定個數(shù)的像素。
52.如權利要求51所述的方法,其特征在于,所述預定的像素數(shù)約為2。
53.如權利要求50所述的方法,其特征在于,還包括對所述預呈現(xiàn)圖像中最低分辨率的一個進行向下采樣,以便于導航到超過所述預呈現(xiàn)圖像中最低分辨率的一個縮放級別的縮放級別。
54.如權利要求48所述的方法,其特征在于,所述物理上成比例的縮放可用以下公式來表達p=c·d/z,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,c是常量,d是所述對象的一個或多個元素的按照物理單位的真實或估算的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
55.如權利要求48所述的方法,其特征在于,所述物理上不成比例的縮放可用以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
56.如權利要求55所述的方法,其特征在于,所述d′和a中的至少一個可對所述對象的一個或多個元素變化。
57.如權利要求55所述的方法,其特征在于,所述冪律在z0和z1之間的縮放級別范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
58.如權利要求57所述的方法,其特征在于,z0和z1中的至少一個可對所述對象的一個或多個元素變化。
59.如權利要求48所述的方法,其特征在于,所述多個預呈現(xiàn)圖像是由所述客戶機終端通過分組化網(wǎng)絡來接收的。
60.如權利要求59所述的方法,其特征在于,所述分組化網(wǎng)絡是因特網(wǎng)。
61.如權利要求48所述的方法,其特征在于
所述對象的元素具有變化的粗略程度;以及
給定預呈現(xiàn)圖像中所述元素的縮放基于以下的至少一個在物理上成比例或物理上不成比例(i)這些元素的粗略程度;以及(ii)所述給定預呈現(xiàn)圖像的縮放級別。
62.如權利要求61所述的方法,其特征在于
所述對象是道路地圖,所述對象的元素是道路,且所述變化的粗略程度是道路層次;以及
給定縮放級別下給定道路的縮放基于(i)所述給定道路的道路層次;以及(ii)所述給定預呈現(xiàn)圖像的縮放級別而在物理上成比例或物理上不成比例。
63.如權利要求62所述的方法,其特征在于,所述物理上不成比例的縮放可用以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
64.如權利要求63所述的方法,其特征在于,所述d′和a中的至少一個可對所述對象的一個或多個元素變化。
65.如權利要求63所述的方法,其特征在于,所述冪律在z0和z1之間的縮放級別范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
66.如權利要求65所述的方法,其特征在于,z0和z1中的至少一個可對所述道路地圖的一個或多個道路變化。
67.一種方法,包括
通過通信信道向終端發(fā)送至少一個對象的變化縮放級別的多個圖像,所述至少一個對象的至少某些元素被放大和/或縮小以產(chǎn)生所述多個圖像,且所述縮放是以下的至少一種 (i)與所述縮放級別物理上成比例;以及(ii)與所述縮放級別物理上不成比例;
在所述終端處接收所述多個圖像;
使用所述終端發(fā)出包括縮放信息的一個或多個用戶導航命令;
混和至少兩個所述圖像以獲得對應于所述導航命令的縮放信息的中間縮放級別的中間圖像;以及
在所述終端上顯示所述中間圖像。
68.如權利要求67所述的方法,其特征在于,所述混和步驟包括執(zhí)行α混和、三線性內(nèi)插和雙三次線性內(nèi)插中的至少一個。
69.如權利要求67所述的方法,其特征在于,所述圖像數(shù)使得其間的混和提供平滑導航的外觀。
70.如權利要求67所述的方法,其特征在于,所述縮放級別和所述預呈現(xiàn)圖像的縮放被選為使得所述對象的元素中給定的一個或多個的以像素數(shù)p為單位的相應線性大小在一個預呈現(xiàn)圖像和更高分辨率的另一預呈現(xiàn)圖像之間不會變化多于預定個數(shù)的像素。
71.如權利要求70所述的方法,其特征在于,所述預定的像素數(shù)是約為2。
72.如權利要求69所述的方法,其特征在于,還包括對所述預呈現(xiàn)圖像中最低分辨率的一個進行向下采樣,以便于導航到超過所述圖像中最低分辨率的一個縮放級別的縮放級別。
73.如權利要求69所述的方法,其特征在于,所述物理上成比例的縮放可用以下公式來表達p=c·d/z,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,c是常量,d是所述對象的一個或多個元素的按照物理單位的真實或估算的線性大小,而z是按照物理線性大小/像素的單位的縮放級別。
74.如權利要求69所述的方法,其特征在于,所述物理上不成比例的縮放可用以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
75.如權利要求74所述的方法,其特征在于,所述d′和a中的至少一個可對所述對象的一個或多個元素變化。
76.如權利要求74所述的方法,其特征在于,所述冪律在z0和z1之間的縮放級別范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
77.如權利要求76所述的方法,其特征在于,z0和z1中的至少一個可對所述對象的一個或多個元素變化。
78.如權利要求69所述的方法,其特征在于,所述多個預呈現(xiàn)圖像是由所述終端通過分組化網(wǎng)絡來接收的。
79.如權利要求78所述的方法,其特征在于,所述分組化網(wǎng)絡是因特網(wǎng)。
80.如權利要求69所述的方法,其特征在于
所述對象的元素具有變化的粗略程度;以及
給定圖像中所述元素的縮放基于以下的至少一個在物理上成比例或物理上不成比例(i)這些元素的粗略程度;以及(ii)所述給定預呈現(xiàn)圖像的縮放級別。
81.如權利要求80所述的方法,其特征在于
所述對象是道路地圖,所述對象的元素是道路,且所述變化的粗略程度是道路層次;以及
給定縮放級別下給定道路的縮放基于(i)所述給定道路的道路層次;以及(ii)所述給定預呈現(xiàn)圖像的縮放級別而在物理上成比例或物理上不成比例。
82.如權利要求81所述的方法,其特征在于,所述物理上不成比例的縮放可用以下公式來表達p=d′·za,其中p是所述對象的一個或多個元素在所述縮放級別下的以像素為單位的線性大小,d′是按照物理單位的所述對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
83.如權利要求82所述的方法,其特征在于,所述d′和a中的至少一個可對所述對象的一個或多個元素變化。
84.如權利要求82所述的方法,其特征在于,所述縮放冪在z0和z1之間的縮放級別范圍內(nèi)是-1<a<0,其中z0是低于z1的物理線性大小/像素。
85,如權利要求84所述的方法,其特征在于,z0和z1中的至少一個可對所述道路地圖的一個或多個道路變化。
發(fā)明摘要
構想了執(zhí)行各種動作的方法和裝置,這些動作包括放大或縮小具有至少一個對象的圖像,其中該至少一個對象的至少某些元素以與同縮放相關聯(lián)的一個或多個縮放級別物理上不成比例的方式來放大和/或縮小,且其中,例如物理上不成比例的縮放可用以下公式來表達p=d′·za,其中p是該對象的一個或多個元素在該縮放級別下的以像素為單位的線性大小,d′是按照物理單位的該對象的一個或多個元素的估算的線性大小,z是按照物理線性大小/像素的單位的縮放級別,而a是冪律,其中a≠-1。
高效數(shù)據(jù)高速緩存
相關申請的交叉引用
本申請要求2004年6月1日提交的題為“The Zeno cachea system forincreasing the effectiveness of most-recently-used(MRU)caching for variablycompressable data objects”的美國臨時專利申請第60/575,987號的優(yōu)先權,該申請的全部公開內(nèi)容通過引用結合于此。
背景技術:
“MRU”高速緩存是一種用于在客戶機-服務器系統(tǒng)中實現(xiàn)客戶機方存儲器的公知概念,其中MRU代表“最近最常使用”。假定服務器能夠訪問客戶機并能夠向其提供大量數(shù)據(jù)對象,這些數(shù)據(jù)對象總計占據(jù)了大量存儲器。然而,客戶機和服務器之間的可用帶寬是有限的,因此對從服務器發(fā)送數(shù)據(jù)對象的客戶機請求要花費時間。如果對數(shù)據(jù)對象的訪問是合理地“相干的”,這意味著客戶機當前需要的對象可能在不久的將來再次需要,則MRU高速緩存可提高客戶機-服務器系統(tǒng)的效率。采用這一方法,客戶機留出某些有限量的存儲器(一般比儲存服務器上的所有對象所需的要少得多),并在該存儲器(高速緩存)中儲存與適合的一樣多的最近最常請求的對象。當新對象從服務器發(fā)送到客戶機且客戶機的高速緩存空間已被用盡時,從高速緩存中擦除最近最少使用(LRU)對象以創(chuàng)建其中可儲存新對象的數(shù)據(jù)存儲空間。
一般而言,當客戶機需要數(shù)據(jù)對象時,客戶機首先檢查該對象是否被高速緩存。如果是,則使用高速緩存的表示,從而消除了對緩慢或計算上昂貴的服務器請求的需要。通常,利用高速緩存的表示也將該對象“提升”到高速緩存的MRU端。該方法一般提供了優(yōu)于對訪問的每一數(shù)據(jù)對象必須向服務器請求數(shù)據(jù)的實質(zhì)性能優(yōu)勢。
當計算系統(tǒng)訪問新對象并將其儲存在高速緩存中時,從高速緩存中擦除最近最少使用對象可導致高速緩存使用率的低效。即使被擦除,高速緩存中的最近最少使用對象也可能再次被服務器請求。當發(fā)生這一情況時,服務器可能承擔相當慢或計算上昂貴的從更遙遠的數(shù)據(jù)存儲源,諸如主存儲器或大容量存儲設備中檢索這一對象的任務。給定高速緩沖存儲器的有限大小,對象擦除可能以某一頻率進行,由此使得服務器或其它計算系統(tǒng)花費大量的資源來訪問更遙遠的存儲器以獲得曾經(jīng)被方便地儲存在高速緩沖存儲器中的數(shù)據(jù)。因此,本領域中需要一種高速緩沖存儲器管理的更高效且靈活的方法。
發(fā)明概述
根據(jù)一方面,本發(fā)明可提供一種方法,包括提供計算系統(tǒng)中具有一組初始高速緩存對象的高速緩存,每一高速緩存對象具有初始壓縮比并包括所儲存的數(shù)據(jù);減少由除高速緩存對象中給定的一個之外的至少一個高速緩存對象所占據(jù)的數(shù)據(jù)存儲空間的量;以及增加由該給定高速緩存對象占據(jù)的數(shù)據(jù)存儲空間的量。較佳地,減少包括將數(shù)據(jù)存儲空間的量減少一給定量。較佳地,增加包括將由給定高速緩存對象所占據(jù)的數(shù)據(jù)存儲空間的量增加一給定量。較佳地,減少包括增大至少一個高速緩存對象的初始壓縮比。較佳地,增加包括減小給定高速緩存對象的初始壓縮比。較佳地,給定高速緩存對象是高速緩存對象中最近最常使用的高速緩存對象。較佳地,經(jīng)受減少步驟的至少一個高速緩存對象包括高速緩存對象中最近最少使用的高速緩存對象。
較佳地,減少包括對至少一個高速緩存對象移除所儲存數(shù)據(jù)的一部分。較佳地,增加包括對給定高速緩存對象補充所儲存的數(shù)據(jù)。較佳地,對每一高速緩存對象可用的數(shù)據(jù)存儲空間的量可等于有限個數(shù)的離散值中的一個。較佳地,減少包括對高速緩存對象中除給定高速緩存對象之外的至少一個隨機選擇的高速緩存對象減少數(shù)據(jù)存儲空間的量。較佳地,減少包括將用于至少一個隨機選擇的高速緩存對象的數(shù)據(jù)存儲空間的量減少到隨機確定的程度。較佳地,隨機選擇的高速緩存對象是使用隨機方法和偽隨機方法之一來選擇的。較佳地,隨機選擇的高速緩存對象的選擇是通過試探來引導的。
較佳地,該方法還包括在增加之后以無損壓縮的形式儲存給定高速緩存對象。較佳地,該方法還包括在增加之后以未壓縮形式儲存給定高速緩存對象。較佳地,減少包括移除除給定高速緩存對象之外的至少一個高速緩存對象。
根據(jù)另一方面,本發(fā)明可提供一種裝置,包括具有能夠在操作上與主存儲器通信的至少一個處理器的計算系統(tǒng);并且該計算系統(tǒng)中的高速緩存具有一組初始高速緩存對象,每一高速緩存對象具有一組初始壓縮比并包括所儲存的數(shù)據(jù);其中該計算系統(tǒng)可用于減少由除高速緩存對象中給定的一個之外的至少一個高速緩存對象所占據(jù)的數(shù)據(jù)存儲空間的量;以及增加由該給定高速緩存對象所占據(jù)的數(shù)據(jù)存儲空間的量。較佳地,減少包括將數(shù)據(jù)存儲空間的量減少一給定量。較佳地,增加包括將由給定高速緩存對象占據(jù)的數(shù)據(jù)存儲空間的量增加一給定量。較佳地,減少包括增大至少一個高速緩存對象的初始壓縮比。較佳地,增加包括減小給定高速緩存對象的初始壓縮比。
較佳地,給定高速緩存對象是高速緩存對象中最近最常使用的高速緩存對象。較佳地,減少包括對至少一個高速緩存對象移除所儲存數(shù)據(jù)的一部分。較佳地,增加包括對給定高速緩存對象補充所存儲的數(shù)據(jù)。較佳地,對每一高速緩存對象可用的數(shù)據(jù)存儲空間的量等于有限個數(shù)的離散值之一。較佳地,減少包括減少用于高速緩存對象中除給定高速緩存對象之外的至少一個隨機選擇的高速緩存對象的數(shù)據(jù)存儲空間的量。較佳地,減少包括將用于至少一個隨機選擇的高速緩存對象的數(shù)據(jù)存儲空間的量減少到隨機確定的程度。
根據(jù)另一方面,本發(fā)明提供一種方法,包括提供計算系統(tǒng)中的高速緩存,該高速緩存具有一初始條件;如果在該初始條件下在該高速緩存中沒有足夠的數(shù)據(jù)存儲空間以在該高速緩存中儲存至少一個新對象,則壓縮該高速緩存中的至少一個對象以為了該至少一個新對象清除數(shù)據(jù)存儲空間;以及在該高速緩存中儲存至少一個新對象。較佳地,初始條件對應于高速緩存為空。較佳地,該方法還包括在不壓縮儲存在高速緩存中的對象的情況下繼續(xù)在高速緩存中儲存新對象,直到高速緩存中沒有剩余足夠的數(shù)據(jù)存儲空間來儲存任何另外的新對象。較佳地,該方法還包括如果在初始條件下在高速緩存中有足夠的空間來儲存至少一個新對象,則在不壓縮的情況下在高速緩存中儲存至少一個新對象。
當結合附圖考慮本發(fā)明的較佳實施例的描述時,本領域技術人員可以清楚其它方面、特征和優(yōu)點等。
附圖簡述
圖1是根據(jù)本發(fā)明的一個或多個實施例的高速緩存中個別高速緩存對象取決于該高速緩存對象在該高速緩存內(nèi)的使用新近性的數(shù)據(jù)存儲大小的曲線圖2是根據(jù)本發(fā)明的一個或多個實施例的由高速緩存中的高速緩存對象所占據(jù)的數(shù)據(jù)存儲空間的累計和相對于所累加的高速緩存對象的個數(shù)“N”所繪制的曲線圖3是根據(jù)本發(fā)明的一個或多個實施例的包括多個高速緩存對象的數(shù)據(jù)高速緩存的框圖4是根據(jù)本發(fā)明的一個或多個實施例的其中高速緩存對象已被調(diào)整大小的圖3的數(shù)據(jù)高速緩存的框圖5是根據(jù)本發(fā)明的一個或多個實施例的其中所訪問的高速緩存對象已被調(diào)整大小并被恢復到高速緩存的圖4的數(shù)據(jù)高速緩存的框圖6是根據(jù)本發(fā)明的一個或多個實施例的用于訪問數(shù)據(jù)高速緩存中的高速緩存對象和更新數(shù)據(jù)高速緩存的方法的流程圖;以及
圖7是適用于本發(fā)明的一個或多個實施例的計算系統(tǒng)的框圖。
為圖示本發(fā)明的各方面起見,附圖中示出了當前較佳的形式,但是可以理解,本發(fā)明不限于所示的精確排列和手段。
較佳實施例的詳細描述
本發(fā)明公開參考了高速緩存的LRU和MRU端。對象一般在MRU端處添加,并且一般從LRU端擦除。然而,本發(fā)明不限于這一方案。注意,高速緩存中高速緩存對象的物理布局不需要對應于LRU-MUR布局。高速緩存的布局僅較佳地使得計算系統(tǒng)能夠以此處所描述的方式來找到、插入和/或擦除對象。線性LRU-MRU排列是一種用于描述高速緩存的操作的方便機制,但是僅代表了高速緩沖存儲器的許多可能實現(xiàn)。此處,術語“高速緩存”和“高速緩沖存儲器”被互換地使用。
注意,盡管此處公開的MRU高速緩存及其擴展是在客戶機/服務器體系結構的上下文中討論的,但是類似的原理也適用于許多其它情形,諸如單個計算機上的高效硬盤訪問(其中對硬盤的訪問比對RAM的訪問慢,且因此RAM被用來高速緩存硬盤上最近最常使用的內(nèi)容)。在一個或多個其它實施例中,數(shù)據(jù)是從環(huán)境中收集或在計算上生成的,而不是從盤加載或通過網(wǎng)絡發(fā)送的。在每一情況下,客戶機能夠訪問較小但快速的臨時高速緩沖存儲器,以及從中重復地請求信息的較大但較慢的數(shù)據(jù)源。該較慢的數(shù)據(jù)源在此處一般稱為“服務器”。
以下對收斂級數(shù)的討論作為對此處所公開的高速緩沖存儲器裝置和方法的引言。
級數(shù)y(n)=n^-p的無窮和對p>1是有窮的,其中n從1到無窮大。類似地,y=1/b^n的和對b>1是有窮的。例如,在后一情況下,如果b=2,則該和恰好為2。這樣的收斂級數(shù)底層的原理可用于實現(xiàn)如此處所描述的高效數(shù)據(jù)高速緩存方法和裝置的一個或多個實施例。
此處所描述的方法和裝置的一個或多個實施例可采用涉及以下描述的“Zeno悖論”的概念。盡管該討論提供了適用于此處所描述的一個或多個實施例的概念上的支持,但是本發(fā)明不受到以下討論的概念性方面的限制。
Zeno高速緩存概念
Zeno是非常快以致于一步(為辯論起見,可認為他每秒跨一步)就覆蓋了從其當前位置到任何跑道的終點的距離的一半的奔跑者。悖論是即使每一步都向前進,但他永遠不能完成該路線。該悖論容易地相關于以上b=2且從n=2到無窮大求和的1/b^n級數(shù)。這一概念可通過允許高速緩存對象隨著使用或訪問的新近性的減少被壓縮到逐漸變大的程度,來擴展到高速緩存對象的存儲(其中高速緩存本身類似于“跑道”)。由此,在前述的從高速緩存的MRU端到其LRU端中,理論上無窮個大小不斷減小的另外的高速緩存對象可被放置在適當?shù)奈恢枚臻g永遠不會被用盡。該原理此處被稱為Zeno高速緩存概念。
較佳地,此處所考慮的高速緩存對象是可壓縮的,這在本發(fā)明的公開中對應于受到有損數(shù)據(jù)壓縮技術的作用。有損數(shù)據(jù)壓縮的特征在于用比數(shù)據(jù)對象的完全表示少的字節(jié)來表示數(shù)據(jù)對象的能力。較高的壓縮比一般導致數(shù)據(jù)對象的較高失真以及使用壓縮數(shù)據(jù)所呈現(xiàn)的圖像的較低質(zhì)量(其中對象包括一個或多個圖像文件)。沒有局限地,有損壓縮技術也可適用于聲音、視頻和許多其它數(shù)據(jù)類型。
在一個或多個實施例中,數(shù)據(jù)的壓縮形式可適用作對未壓縮數(shù)據(jù)的代替。在給定失真水平之下,數(shù)據(jù)的壓縮表示可以完全是適當?shù)?,而在給定的失真水平之上,壓縮表示作為在客戶機等待較高質(zhì)量形式的數(shù)據(jù)時的權宜之計可以是適當?shù)?。較高質(zhì)量形式可僅僅比權益使用形式少壓縮,或者可被無損壓縮或不壓縮。
在一個或多個實施例中,較低質(zhì)量表示可以是較高質(zhì)量表示的子集,這意味著改進客戶機方的表示質(zhì)量可涉及僅發(fā)送補充較低質(zhì)量表示的數(shù)據(jù),由此提供了較高質(zhì)量表示。較佳地,采用這一方法,無需導致發(fā)送與較高質(zhì)量表示相關聯(lián)的一組全新數(shù)據(jù)的負擔。該方法較佳地避免了冗余性且因此較佳地實質(zhì)上提高了效率。
依照上述方法,降低對象的表示質(zhì)量的相反過程可涉及僅移除用于圖像的高質(zhì)量表示的數(shù)據(jù)的一部分,而不要求對用于高質(zhì)量表示的數(shù)據(jù)進行壓縮或重新壓縮。這一特性較佳地也提高了此處所公開的高速緩存裝置和方法的效率。
在一個或多個實施例中,壓縮技術可提供具有范圍從有損到無損的壓縮級別的對象。該特征可允許以相對于最初通過無損形式發(fā)送的極少額外總成本或沒有額外總成本來從高度有損到無損地逐步構建數(shù)據(jù)對象的無損表示。允許以上特征的數(shù)據(jù)類型和壓縮技術的一個示例是如由JPEG2000標準例示的圖像的小波壓縮。然而,本發(fā)明不限于使用JPEG2000標準。
給定以上特性,如果存儲器是“連續(xù)的”(即,不被離散化成字節(jié)),則理論上可能僅通過實施對象的壓縮大小符合如此處先前所討論的收斂級數(shù)的規(guī)則的約束而在有限量的存儲器中儲存無窮個數(shù)據(jù)對象。以下結合圖1和2描述能夠根據(jù)以上所討論的理論來工作的高速緩存的操作。
在圖1的曲線圖中,變量“N”較佳地對應于每一高速緩存對象的號碼,且每一高速緩存對象的號碼的值表示對每一這樣的高速緩存對象的使用的新近性,其中遞增的N值對應于對與該號碼相關聯(lián)的高速緩存對象的使用的遞減的新近性。變量“Y”較佳地對應于每一高速緩存對象的大小。對于“Y”變量,值“1”可對應于高速緩存對象在其最高質(zhì)量條件下,即當它完全不被壓縮時的大小。最近最常使用對象可以用低失真來表示,而最近較少使用對象可以服從與其最后一次使用的新近性相一致的壓縮程度。在圖1中可以看到,壓縮的高速緩存對象大小Y的值隨著相關高速緩存對象的使用的新近性降低而下降。注意, “Y”變量可對應于高速緩存中每一對象(無論是否被壓縮)的絕對大小(以任意單位來表示)?;蛘撸谝粋€或多個其它實施例中,“Y”可對應于一壓縮比,對該壓縮比例如值“1”對應于全大小對象,而值“0.5”對應于占據(jù)了其未壓縮大小的一半的對象。
參考圖2,對每一N值,標號從1到N的對象的大小Y的累計和仍是有窮數(shù),如圖2所示。變量“Y”的單位可以用對應于一個完全展開(未壓縮)的高速緩存對象的大小的數(shù)據(jù)存儲空間(或其所需的數(shù)據(jù)存儲空間)為單位。由于圖1和2有助于理解本發(fā)明的一個或多個實施例的理論,因此此處不提供以數(shù)據(jù)的位和/或字節(jié)為單位來描述高速緩存對象的大小的信息。
在一個或多個實施例中,以上所描述的理論實現(xiàn)較佳地出于兩個原因而被修改。首先,在實踐中,存儲器存儲較佳地由離散的存儲單元組成。由此,例如,在實踐中,壓縮一高速緩存對象以占據(jù)小于1位的存儲空間量通常是毫無意義的。其次,對高速緩存執(zhí)行的操作的總數(shù)較佳地是有限的。相反,強迫由以上的收斂公式之一描述的壓縮比的連續(xù)曲線可涉及每次當需要額外的高速緩存存儲空間時減小高速緩存中每一高速緩存對象的大小。這會需要不切實際地大量的操作。
在一個或多個實施例中,高速緩存中對象的個數(shù)實際上將是有限的。然而,在采用Zeno高速緩存概念的情況下,該數(shù)字可以比對于常規(guī)的MRU高速緩存所可能的要大得多。此外,高速緩存的對象可具有如果最近被使用則能以高質(zhì)量水平(從較低失真水平或壓縮有損性到無損壓縮、到未壓縮數(shù)據(jù)中的任何一點)儲存的特性。高速緩存對象的質(zhì)量水平隨著其中未訪問這些高速緩存對象的每一次接連的高速緩沖存儲器訪問而逐漸變差(即,遭受逐漸變高的失真水平或壓縮有損性)。
由于計算機存儲器是離散的,且可以有高速緩存對象的最小壓縮大小,在該最小壓縮大小之下高速緩存對象對用戶毫無價值,因此高速緩存的表示可以服從產(chǎn)生該最小壓縮大小的最大壓縮比。由此,在一個或多個實施例中,如果對象都是相同大小,則可被儲存在高速緩存中的高速緩存對象的最大個數(shù)可以等于高速緩存中的總數(shù)據(jù)存儲空間除以由具有上述最小壓縮大小的高速緩存對象所占據(jù)的數(shù)據(jù)存儲空間的量。然而,高速緩存對象無需都是相同大小。
可以有許多方法來設計由以上討論的公式之一(或任何其它收斂和)界定且因此具有有窮和的級數(shù)??梢砸胍桓郊拥募s束,即特別地,任何給定值在一級數(shù)的連續(xù)值中重復的可能性在較高的N值處增加,使得所采用的不同Y值的個數(shù)可限于一合理數(shù)。
這一級數(shù)的一個示例是1,1/4,1/4,1/16,1/16,1/16,1/16,1/64,1/64,1/64,1/64,1/64,1/64,1/64,1/64,1/256,等等。
很清楚,級數(shù)1、兩個1/4、四個1/16、八個1/64等的和為2,正如先前所討論的y=1/2^n一樣。但是,如果將該級數(shù)取到n=16000,則可僅使用約log2(16000),即約14個y值(對象數(shù)據(jù)存儲空間大小)。
在一個或多個實施例中,上述對數(shù)函數(shù)提供了使得可用Y值的個數(shù)(高速緩存對象的可能大小)比N的值更緩慢地增加。然而,本發(fā)明不限于對這一對數(shù)函數(shù)的使用,并且結合本發(fā)明可使用使得Y值的個數(shù)比N值更緩慢地增加的其它數(shù)學運算。
在一個或多個實施例中,當N=1百萬時,只需使用少至20個Y值(如使用以上引用的基于對數(shù)的公式所確定的)。這意味著當必須釋放高速緩存中的空間時,僅需少數(shù)操作來建立在高速緩存對象之中的數(shù)據(jù)存儲空間的適當分配,因為大部分高速緩存對象將占據(jù)較佳地不需改變的數(shù)據(jù)存儲空間的量。
其它數(shù)學級數(shù)也可滿足在高速緩存存儲器管理系統(tǒng)和方法中使用的期望準則。另外,可使用理論上不收斂的級數(shù)(即,其和為無窮大),因為在實踐中,在任何情況下對有限個項求和。
在一個或多個實施例中,可使用隨機算法來以多種方式改進該基本算法。在一個或多個實施例中,上述2*1/4、4*1/16等級數(shù)可僅包括少量可用高速緩存對象大小,這可能導致高速緩存內(nèi)不同對象之間壓縮比的顯著差異。可使用隨機選擇來以加權方式“擠壓”(減小所使用的數(shù)據(jù)存儲空間)高速緩存對象的一隨機選擇的子集,直到使某一目標空間量對新高速緩存對象可用。該方法可提供有益的結果,因為高速緩存對象在高速緩存中的確切位置的重要性可隨著高速緩存中對象的個數(shù)增加而減小。每一對象被“擠壓”的量也可至少部分地被隨機化。使用類似此處所討論的這些隨機化算法可減少可在使用高速緩存中所儲存的高速緩存對象呈現(xiàn)的圖像中感知到的高速緩存對象質(zhì)量的明顯不連續(xù)性或閾值。
在下文中,提出根據(jù)本發(fā)明的一個或多個方面的管理數(shù)據(jù)高速緩存中的高速緩存對象的一個說明性示例。
圖3是根據(jù)本發(fā)明的一個或多個實施例的包括多個高速緩存對象302-310的數(shù)據(jù)高速緩存300的框圖。圖4是根據(jù)本發(fā)明的一個或多個實施例的其中高速緩存對象302、304、308和310已被調(diào)整大小的圖3的數(shù)據(jù)高速緩存300的框圖。圖5是根據(jù)本發(fā)明的一個或多個實施例的其中訪問的高速緩存對象306已被調(diào)整大小并被恢復到高速緩存300的圖4的數(shù)據(jù)高速緩存的框圖。
在一個或多個實施例中,包括圖3所示的實施例,高速緩存300可包括五個高速緩存對象(在圖3-6中為簡明起見縮寫為“CO”)CO1302、CO2304、CO3306、CO4308以及CO5310。圖3所示的高速緩存對象的個數(shù)(5)是為了方便示出此處所描述的各種概念而選擇的。然而,高速緩存300內(nèi)可以包括比五個更多或更少的高速緩存對象。原則上對可被包括在高速緩存300內(nèi)的高速緩存對象的個數(shù)沒有下限。原則上,可被包括在高速緩存300內(nèi)的高速緩存對象的上限可對應于高速緩存的總大小除以最小可接受的可能高速緩存對象大小,這將在本文的別處討論。
在圖3-5中,為描述此處所公開的各種概念起見,每一示出的高速緩存對象的寬度旨在與該高速緩存對象使用的數(shù)據(jù)存儲空間成正比。并且,在圖3-5中,從最左邊的高速緩存對象前進到最右邊的高速緩存對象對應于對所顯示的高速緩存對象的訪問的遞增的新近性,其中最近最少使用的高速緩存對象在最左邊示出,而最近最常使用的高速緩存對象在最右邊示出。
圖4示出了在CO3306被諸如計算系統(tǒng)700等采用高速緩存300的計算系統(tǒng)訪問了之后的高速緩存300。在該示例中,CO3306不在高速緩存300內(nèi)其原始位置上示出,因為該位置在圖4所示的高速緩存300的情況下已被蓋寫。此外,創(chuàng)建了自由空間402以為可以比圖3中CO3的原始形式占據(jù)更多數(shù)據(jù)存儲空間的CO3 306的展開形式留出空間。在圖5中,CO306的展開形式被寫入高速緩存300中由圖4所示的高速緩存300情況中的自由空間402所占據(jù)的一部分中。
圖6是根據(jù)本發(fā)明的一個或多個實施例的用于訪問數(shù)據(jù)高速緩存300中的高速緩存對象和更新數(shù)據(jù)高速緩存300的方法600的流程圖。以下參考圖3-6。
在步驟602處,向能夠訪問高速緩存300的程序提供高速緩存對象302、304、306、308和310。最初存在于高速緩存300中的該組高速緩存對象在圖3中示出。高速緩存300的該初始條件可從一個或多個程序的默認設置或從先前在一個或多個程序中執(zhí)行的程序步驟中得到。在任何情況下,在以下討論中感興趣的是在建立了圖3所示的初始條件之后對高速緩存300作出的改變。盡管在各種計算系統(tǒng)的任一個上運行的許多程序中的任一個可以與高速緩存300通信,但是為方便起見,能夠訪問高速緩存300的軟件在下文中被簡稱為“程序”。
在步驟604處,可提供關于程序接著將使用哪一高速緩存對象的指示。在步驟606處,程序可訪問所指示的高速緩存對象,在本示例中是CO3306。
在步驟608處,可確定所訪問的高速緩存對象是否可被展開。此處,高速緩存對象在它可通過服從較低的壓縮比來占據(jù)更多數(shù)據(jù)存儲空間時是可展開的。這一展開可通過補充已經(jīng)存在于高速緩存對象中的數(shù)據(jù)而非通過提供對應于新壓縮比(或?qū)谌鄙賶嚎s)的一組全新的數(shù)據(jù)來實現(xiàn)。
如果所訪問的高速緩存對象是不可展開的,則在步驟610中較佳地將其恢復到高速緩存300中。較佳地,在步驟610中,恢復的高速緩存對象在訪問之后占據(jù)與在這些訪問之前所占據(jù)的相同的數(shù)據(jù)存儲空間量。依照LRU-MRU高速緩存原理,在被恢復到高速緩存300之后,所訪問的高速緩存對象可被寫入高速緩存300的最右側(cè),即MRU端。然而,作為替換,所訪問的高速緩存對象可被寫入高速緩存300的任一部分。繼續(xù)方法600的這一分支,方法600較佳地在步驟612處結束。
參考步驟608,如果所訪問的高速緩存對象,諸如高速緩存對象306是可擴展的,則根據(jù)本發(fā)明的一個或多個實施例,較佳地展開該對象(步驟614)。如本文先前所討論的,如上所述地展開高速緩存對象較佳地幫助提供了一種其中最近最常和/或最頻繁訪問的高速緩存對象以最高質(zhì)量水平被儲存在高速緩存300中的安排。
在其中高速緩存中有“N”個高速緩存對象的一個或多個實施例中,這些高速緩存對象的可能大小(如在數(shù)據(jù)存儲空間中測得的)的個數(shù)可限于等于log2(N)的量。如上所述建立有限的、有窮個可能的高速緩存對象大小較佳地限制了為諸如CO306等要在步驟614中展開的高速緩存對象確定新的、展開的大小的計算開銷。
在一個或多個實施例中,CO306的展開(或換言之,較少壓縮的)形式所需的數(shù)據(jù)存儲空間的量可由能夠訪問高速緩存300的計算系統(tǒng)(未示出)來計算。在高速緩存300尚未準備好接收CO306的展開形式的情況下,CO306的展開形式可被寫入另一存儲器存儲位置(未示出)以便臨時儲存在那里。
在步驟616處,較佳地使得儲存CO306的展開形式所需的數(shù)據(jù)存儲空間402在高速緩存300內(nèi)可用。如果在高速緩存300內(nèi)存在足夠的空間來儲存CO306的展開形式而不更改高速緩存300內(nèi)的任何高速緩存對象,則可省略高速緩存300中一個或多個高速緩存對象大小的減小。然而,在高速緩存300中的所有或基本上所有存儲空間在CO306被訪問之前已被占據(jù)的情況下,除CO306之外的一個或多個高速緩存對象可經(jīng)受大小的減小以釋放高速緩存300的空間,來儲存高速緩存對象306的展開形式。
在一個或多個實施例中,高速緩存對象大小減小操作的數(shù)目可在存在有限個可能高速緩存大小的情況下減少。限制高速緩存對象大小減小操作的數(shù)目較佳地用于減少訪問高速緩存300的計算系統(tǒng)上的計算負擔,并較佳地提供了總體計算系統(tǒng)效率。
在一個或多個實施例中,可以有各種方法來實現(xiàn)期望的數(shù)據(jù)存儲空間量的清除。此處,術語“清除”可對應于通過減少分配給高速緩存300內(nèi)的一個或多個高速緩存對象的數(shù)據(jù)存儲空間來使數(shù)據(jù)存儲空間在高速緩存300中可用。
在一個或多個其它實施例中,要清除的數(shù)據(jù)存儲空間的量可對應于除展開的高速緩存對象在其被計算系統(tǒng)最近一次訪問之前所占據(jù)的空間之外所需的附加存儲的量。然而,在其它實施例中,要清除的空間的量可以小于或大于最近最常訪問的高速緩存對象大小上增大的空間的量。
在一個或多個實施例中,為最近最常使用的展開的高速緩存對象清除的空間可以在高速緩存300的一端,如圖5所示。然而,在其它實施例中,所清除的空間可被置于高速緩存300內(nèi)的其它位置。
在一個或多個實施例中,要變得可用的數(shù)據(jù)存儲空間能以圖3中除CO3306(最近最常使用的高速緩存對象)之外的一個或多個高速緩存對象為代價來提供。具體地,可通過減小僅一個剩余高速緩存對象的大小或通過減小除了最近最常使用的高速緩存對象之外的所有高速緩存對象的大小來提供所需的附加空間。此外,可使得在這兩個極端之間的任何個數(shù)的高速緩存對象放出(shed)存儲空間以支持該展開的最近最常使用的高速緩存對象。在下文中,除最近最常訪問的高速緩存對象之外的所有高速緩存對象被認為是“有資格減小大小”。
在一個或多個實施例中,有資格減小大小的一個或多個高速緩存對象的大小減小的程度可根據(jù)一個或多個考慮事項來選擇。在一個實施例中,有資格減小大小的高速緩存對象可放出相等或基本相等的存儲空間的量。在另一實施例中,合格的高速緩存對象可放出其預減小大小的相等或基本相等的比例以便為展開的最近最常使用的高速緩存對象清除空間。
在一個或多個其它實施例中,每一高速緩存對象的大小減小的程度可以基于該高速緩存對象最后一次被訪問的新近性。具體地,有資格減小大小的高速緩存對象可隨著其最后一次訪問的新近性的減小而放出越來越多的存儲空間。由此,在這一方法中,有資格減小大小的最近最常使用的高速緩存對象可放出相對少量的存儲空間,而最近最少使用的高速緩存對象可放出相對大量的數(shù)據(jù)存儲空間,且在這兩個極端之間的高速緩存對象放出中間量的存儲空間。
盡管此處對存儲空間減少的討論主要涉及僅減小不是最近最常訪問的高速緩存對象的大小,但在一個或多個實施例中,可從高速緩存300中移除一個或多個高速緩存對象來清除數(shù)據(jù)存儲空間。此外,這一高速緩存對象移除可單獨地實施,或與將保留在高速緩存300內(nèi)的高速緩存對象的高速緩存對象數(shù)據(jù)存儲空間減少組合實施。
在圖5的實施例中,保留在高速緩存300中的所有四個高速緩存對象302、304、308和310的大小都被減小,以清除數(shù)據(jù)存儲空間來將CO306寫入高速緩存300的最右側(cè)端處所示的位置。然而,在替換實施例中,有資格減小大小的四個高速緩存對象302、304、308和310中的三個或更少可經(jīng)受大小減小。較佳地,該方法在步驟620處結束。
在一個或多個實施例中,并非僅采用每一高速緩存對象的使用新近性作為確定高速緩存對象大小時的變量來管理高速緩存中的對象,而是高速緩存對象管理也可涉及關于接下來可能需要哪些對象的智能猜測。由此,較不可能需要的對象可在具有將來需要的較高可能性的對象之前被“擠壓”。在一個或多個實施例中,這一猜測方法可以與可隨機地選擇高速緩存中的對象來擠壓并可為選擇的對象另外生成隨機變化的擠壓量的算法相組合。
圖7是適用于本發(fā)明的一個或多個實施例的計算系統(tǒng)700的框圖。在一個或多個實施例中,中央處理單元(CPU)702可耦合到總線704。另外,總線704可以耦合到本發(fā)明的高速緩存300、隨機存取存儲器(RAM)706、只讀存儲器(ROM)708、輸入/輸出(I/O)適配器710、通信適配器722、用戶接口適配器706以及顯示適配器718。
在一個或多個實施例中,RAM706和/或ROM708可以保存用戶數(shù)據(jù)、系統(tǒng)數(shù)據(jù)和/或程序。I/O適配器710可將諸如硬盤驅(qū)動器712、CD-ROM(未示出)或其它大容量存儲設備等存儲設備連接到計算系統(tǒng)700。通信適配器722可以將計算系統(tǒng)700耦合到局域網(wǎng)、廣域網(wǎng)或因特網(wǎng)724。用戶接口適配器716可將諸如鍵盤726和/或定點設備714等用戶輸入設備耦合到計算系統(tǒng)700。此外,顯示適配器718可以由CPU702驅(qū)動以控制顯示設備720上的顯示。CPU702可以是任何通用CPU。
注意,本文中迄今為止所描述和/或稍后描述的方法和裝置可利用已知技術中的任一種來實現(xiàn),諸如標準數(shù)字電路、模擬電路、可用于執(zhí)行軟件和/或固件程序的公知處理器中的任一種、可編程數(shù)字裝置或系統(tǒng)、可編程陣列邏輯器件或以上的任何組合。本發(fā)明的一個或多個實施例也可被包含在軟件程序中以便儲存在適當?shù)拇鎯橘|(zhì)中并由處理單元來執(zhí)行。
盡管本發(fā)明此處是參考特定實施例來描述的,但是可以理解,這些實施例僅示出了本發(fā)明的原理和應用。因此,可以理解,可對說明性實施例作出眾多修改并可設計出其它安排而不脫離如所附權利要求書定義的本發(fā)明的精神和范圍。
權利要求書
1.一種方法,包括
提供計算系統(tǒng)中具有一組初始高速緩存對象的高速緩存,每一所述高速緩存對象具有一初始壓縮比且包括所儲存的數(shù)據(jù);
減少由除所述高速緩存對象中給定的一個之外的至少一個所述高速緩存對象占據(jù)的數(shù)據(jù)存儲空間的量;以及
增加由所述給定高速緩存對象占據(jù)的數(shù)據(jù)存儲空間的量。
2.如權利要求1所述的方法,其特征在于,所述減少包括將所述數(shù)據(jù)存儲空間的量減少一給定量。
3.如權利要求2所述的方法,其特征在于,所述增加包括將由所述給定高速緩存對象占據(jù)的所述數(shù)據(jù)存儲空間的量增加所述給定量。
4.如權利要求1所述的方法,其特征在于,所述減少包括增大所述至少一個高速緩存對象的所述初始壓縮比。
5.如權利要求1所述的方法,其特征在于,所述增加包括減小所述給定高速緩存對象的所述初始壓縮比。
6.如權利要求1所述的方法,其特征在于,所述給定高速緩存對象是所述高速緩存對象中最近最常使用的高速緩存對象。
7.如權利要求1所述的方法,其特征在于,經(jīng)受所述減少步驟的所述至少一個高速緩存對象包括所述高速緩存對象中最近最少使用的高速緩存對象。
8.如權利要求1所述的方法,其特征在于,所述減少包括
對所述至少一個高速緩存對象移除所儲存的數(shù)據(jù)的一部分。
9.如權利要求1所述的方法,其特征在于,所述增加包括對所述給定高速緩存對象補充所述儲存的數(shù)據(jù)。
10.如權利要求1所述的方法,其特征在于,對每一所述高速緩存對象可用的數(shù)據(jù)存儲空間的量可等于有限個離散值之一。
11.如權利要求1所述的方法,其特征在于,所述減少包括減少用于所述高速緩存對象中除所述給定高速緩存對象之外的至少一個隨機選擇的高速緩存對象的所述數(shù)據(jù)存儲空間的量。
12.如權利要求11所述的方法,其特征在于,所述減少包括將用于所述至少一個隨機選擇的高速緩存對象的所述數(shù)據(jù)存儲空間的量減少到一隨機確定的程度。
13.如權利要求11所述的方法,其特征在于,所述隨機選擇的高速緩存對象是使用隨機方法和偽隨機方法之一來選擇的。
14.如權利要求11所述的方法,其特征在于,所述隨機選擇的高速緩存對象的所述選擇是通過試探來引導的。
15.如權利要求1所述的方法,其特征在于,還包括
在所述增加之后以無損壓縮的形式儲存所述給定高速緩存對象。
16.如權利要求1所述的方法,其特征在于,還包括
在所述增加之后以未壓縮的形式儲存所述給定高速緩存對象。
17.如權利要求1所述的方法,其特征在于,所述減少包括移除除所述給定高速緩存對象之外的至少一個所述高速緩存對象。
18.一種裝置,包括
具有能夠在操作上與主存儲器通信的至少一個處理器的計算系統(tǒng);以及
所述計算系統(tǒng)中具有一組初始高速緩存對象的高速緩存,每一所述高速緩存對象具有一初始壓縮比且包括所儲存的數(shù)據(jù);
其中,所述計算系統(tǒng)可用于
減少由除所述高速緩存對象中給定的一個之外的至少一個所述高速緩存
對象占據(jù)的數(shù)據(jù)存儲空間的量;以及
增加由所述給定高速緩存對象占據(jù)的數(shù)據(jù)存儲空間的量。
19.如權利要求18所述的裝置,其特征在于,所述減少包括將所述數(shù)據(jù)存儲空間的量減少一給定量。
20.如權利要求19所述的裝置,其特征在于,所述增加包括將由所述給定高速緩存對象占據(jù)的所述數(shù)據(jù)存儲空間的量增加所述給定量。
21.如權利要求18所述的裝置,其特征在于,所述減少包括增大所述至少一個高速緩存對象的所述初始壓縮比。
22.如權利要求18所述的裝置,其特征在于,所述增加包括減小所述給定高速緩存對象的所述初始壓縮比。
23.如權利要求1 8所述的裝置,其特征在于,所述給定高速緩存對象是所述高速對象中最近最常使用的高速緩存對象。
24.如權利要求18所述的裝置,其特征在于,所述減少包括對所述至少一個高速緩存對象移除所儲存的數(shù)據(jù)的一部分。
25.如權利要求1 8所述的裝置,其特征在于,所述增加包括對所述給定高速緩存對象補充所述儲存的數(shù)據(jù)。
26.如權利要求1 8所述的裝置,其特征在于,對每一所述高速緩存對象可用的數(shù)據(jù)存儲空間的量可等于有窮個離散值之一。
27.如權利要求18所述的裝置,其特征在于,所述減少包括減少用于所述高速緩存對象中除所述給定高速緩存對象之外的至少一個隨機選擇的高速緩存對象的所述數(shù)據(jù)存儲空間的量。
28.如權利要求27所述的裝置,其特征在于,所述減少包括將用于所述至少一個隨機選擇的高速緩存對象的所述數(shù)據(jù)存儲空間的量減少到一隨機確定的程度。
29.一種方法,包括
提供計算系統(tǒng)中的高速緩存,所述高速緩存具有一初始條件;
如果在所述初始條件下所述高速緩存中沒有足夠的數(shù)據(jù)存儲空間以在所述高速緩存中儲存至少一個新對象,則壓縮所述高速緩存中的至少一個對象以便為所述至少一個新對象清除數(shù)據(jù)存儲空間;以及
在所述高速緩存中儲存所述至少一個新對象。
30.如權利要求29所述的方法,其特征在于,所述初始條件對應于所述高速緩存為空。
31.如權利要求30所述的方法,其特征在于,還包括在不壓縮所述高速緩存中儲存的所述對象的情況下繼續(xù)在所述高速緩存中儲存新對象,直到所述高速緩存中沒有留下足夠的數(shù)據(jù)存儲空間來儲存任何另外的新對象。
32.如權利要求29所述的方法,其特征在于,還包括如果在所述初始條件下在所述高速緩存中有足夠的空間來儲存所述至少一個新對象,則在沒有所述壓縮的情況下在所述高速緩存中儲存所述至少一個新對象。
摘要
公開了一種方法,該方法可包括提供計算系統(tǒng)中具有一組初始高速緩存對象的高速緩存,該高速緩存對象具有一初始壓縮比并包括儲存的數(shù)據(jù);減少該高速緩存中由除該高速緩存對象中給定的一個之外的至少一個高速緩存對象占據(jù)的數(shù)據(jù)存儲空間的量;以及增加該高速緩存中由該給定高速緩存對象占據(jù)的數(shù)據(jù)存儲空間的量。
用于將地理空間或其它向量數(shù)據(jù)作為圖像來編碼和供應的方法
相關申請的交叉引用
本申請要求2004年10月28日提交的題為“METHOD FOR ENCODING ANDSERVING GEOSPATIAL OR OTHER VECTOR DATA AS IMAGES”的美國臨時專利申請第60/622,867號的優(yōu)先權,該申請的全部公開內(nèi)容通過引用結合于此;本申請還要求2004年10月8日提交的題為“Method for Spatially Encoding Large Texts,Metadata,and Other Coherently Accessed Non-Image Data”的美國臨時專利申請第60/617,485號的優(yōu)先權,該申請的全部公開內(nèi)容通過引用結合于此;本申請是2004年3月1日提交的題為“System and Method for Exact Rendering In a Zooming UserInterface”的美國專利申請第10/790,253號的部分延續(xù)申請,該申請的全部公開內(nèi)容通過引用結合于此,且該申請要求以下美國臨時專利申請的優(yōu)先權2003年3月5日提交的題為“System and Method for Exact Rendering in a Zooming UserInterface”的臨時申請第60/452,075號、2003年3月12日提交的題為“System andMethod for Foveated,Seamless,Progressive Rendering in a Zooming User Interface”的臨時申請第60/453,897號、2003年6月5日提交的題為“System and Method for theEfficient,Dynamic,and Continuous Display of Multiresolution Visual Data”的臨時申請第60/475,897號、以及2003年3月30日提交的題為“System and Method forInfinite Precision Coordinates in a Zooming User Interface”的臨時申請第60/474,313號,這些臨時專利申請的全部公開內(nèi)容都通過引用結合于此;本申請還是2004年3月26日提交的題為“A System And Method For Multiple Node Display”的美國專利申請第10/854,117號的部分延續(xù),該申請的全部公開內(nèi)容通過引用結合于此;本申請還是2004年3月17日提交的題為“Methods and Apparatus For Navigating anImage”的美國專利申請第10,803,010號的部分延續(xù),該申請的全部公開內(nèi)容通過引用結合于此。
背景技術:
近來,已引入了諸如JPEG2000/JPIP1等圖像壓縮標準來滿足所需的工程目標
1例如參見David Taubman的Kakadu實現(xiàn),www.kakadusoftware.com。Taubman是JPEG2000 ISO標準委使得非常大的圖像(例如,大小為千兆像素)能夠通過低帶寬通信信道從服務器遞增地或選擇性地遞送到客戶機。當以全分辨率查看這些圖像時,在任何給定時刻僅有限的區(qū)域可適合客戶機的圖形顯示器;新標準朝向選擇性地訪問這些區(qū)域并通過通信信道僅發(fā)送與該區(qū)域相關的數(shù)據(jù)來調(diào)整。如果該“感興趣的區(qū)域”,即ROI連續(xù)地改變,則客戶機和服務器之間通過低帶寬信道的連續(xù)對話可繼續(xù)將該區(qū)域的客戶機表示保持在ROI準確度之內(nèi)?,F(xiàn)有技術通常限于離散采樣的圖像的增量或選擇性傳送。本發(fā)明擴展了這一表示和傳送模型以包括向量數(shù)據(jù)、超鏈接和其它空間定位的特征。
發(fā)明概述
本發(fā)明的一個或多個實施例涉及這些可選擇性解壓的圖像壓縮和傳送技術對地理空間或圖解數(shù)據(jù)的擴展。一個或多個實施例組合并擴展了在結合到本申請中的以下文檔中描述的方法(1)“Method for Spatially Encoding Large Texts,Metadata,and Other Coherently Accessed Non-Image Data”(2)“Methods And Apparatus ForNavigating An Image”;(3)“System and Method For The Efficient,Dynamic AndContinuous Display Of MultiResolution Visual Data”(4)“System and Method ForFoveated,Seamless,Progressive Rendering In A Zooming User Interface”;以及(5)“System and Method for Multiple Node Display”。
注意,本文中迄今為止所描述的和/或稍后描述的方法和裝置可利用已知技術中的任一種來實現(xiàn),諸如標準數(shù)字電路、模擬電路、可用于執(zhí)行軟件和/或固件程序的已知處理器中的任一種、可編程數(shù)字裝置或系統(tǒng)、可編程陣列邏輯器件、或以上的任何組合。本發(fā)明的一個或多個實施例也可被包含在軟件程序中以儲存在適當?shù)拇鎯橘|(zhì)中并由處理單元來執(zhí)行。
根據(jù)一方面,本發(fā)明提供了一種發(fā)送指示圖像的信息的方法,包括將一個或多個信息節(jié)點作為第一圖像來發(fā)送、發(fā)送包括指示定義要用于在第一圖像的預定位置上顯示的特性的向量的信息的第二圖像、以及發(fā)送包括第一和第二圖像之間的映射使得第一和第二圖像的接收者可使第一和第二圖像相關來利用預定位置上的向量的第三圖像。較佳地,第一圖像是地圖,而第二圖像是定義僅在預定細節(jié)水平下
————————————
員會成員。
顯示的可視數(shù)據(jù)的一組向量。較佳地,第一圖像是地圖。較佳地,第二圖像包括超鏈接。較佳地,第一圖像是地圖,而第二圖像包括一組向量,且其中這些向量中的多個位于對應于第一圖像上要應用這些向量的位置的位置上,且這些向量中的多個位于第二圖像上不與第一圖像上要應用這些向量的位置相對應的位置上。較佳地,該方法還包括利用高效填塞算法來構造第二圖像以減少第二圖像上一個或多個向量出現(xiàn)的位置與第一圖像上要應用一個或多個向量的位置之間的空間量。較佳地,向量包括啟動節(jié)點或子節(jié)點的信息。
根據(jù)另一方面,本發(fā)明提供一種呈現(xiàn)圖像的方法,包括從遠程計算機接收第一、第二和第三數(shù)據(jù)集,第一數(shù)據(jù)集代表圖像,第二數(shù)據(jù)集代表定義圖像的規(guī)定位置處的特性的向量,而第三數(shù)據(jù)集用于規(guī)定這些位置。較佳地,規(guī)定位置是地圖上的街道位置。較佳地,向量表示子節(jié)點并包括指示子節(jié)點應當在什么條件下啟動的信息。較佳地,向量包括到由以下各項構成的組中的至少一個的超鏈接諸如廣告素材等外部內(nèi)容和/或嵌入的可視內(nèi)容。較佳地,向量包括到廣告素材的超鏈接。較佳地,向量包括指定對在圖像中的預定位置上的圖像部分的呈現(xiàn)方法的信息。
根據(jù)另一方面,本發(fā)明提供一種方法,包括提供圖像的第一層,該第一層包括具有在該第一層內(nèi)的位置的圖像的特征;以及提供圖像的第二層,該第二層包括對應于這些特征中相應的一個的數(shù)據(jù)塊;每一數(shù)據(jù)塊在第二層中基本上與第一層中對應于每一數(shù)據(jù)塊的特征的位置相對應的位置上,其中第二層的大小和形狀基本上對應于第一層的大小和形狀。較佳地,每一數(shù)據(jù)塊描述對應于每一數(shù)據(jù)塊的特征的至少一個特性。較佳地,該方法還包括提供圖像的第三層,該第三層包括指針,每一指針對應于這些特征中相應的一個以及這些數(shù)據(jù)塊中相應的一個。較佳地,每一指針指示每一指針的相應數(shù)據(jù)塊相對于每一指針的位置的位置。較佳地,描述包括為至少一個特征提供文本數(shù)據(jù)。較佳地,描述包括提供至少一個特征的圖示。較佳地,描述包括提供指示至少一個特征的幾何數(shù)據(jù)。較佳地,描述包括為至少一個特征提供二維或三維形狀或輪廓信息。較佳地,描述包括為至少一個特征提供色彩信息。較佳地,描述包括提供與至少一個特征有關的廣告或超鏈接信息。較佳地,描述包括提供與至少一個特征有關的到外部網(wǎng)站的至少一個鏈接。較佳地,描述包括提供與至少一個特征有關的嵌入的可視內(nèi)容。較佳地,描述包括提供與至少一個特征有關的廣告信息。較佳地,描述包括提供路段的圖解細節(jié)。較佳地,描述包括為由以下各項構成的組中的至少一個提供圖解細節(jié)至少一條道路、至少一個公園、區(qū)域的地形、水體的水文地理、至少一個建筑物、至少一個公共廁所、至少一個無線保真站、至少一條電力線、以及至少一個體育館。
根據(jù)又一方面,本發(fā)明提供一種裝置,包括在一個或多個軟件程序的控制下操作的處理單元,該軟件程序可用于使得該處理單元執(zhí)行動作,這些動作包括提供圖像的第一層,該第一層包括具有第一層內(nèi)的位置的圖像的特征;以及提供圖像的第二層,該第二層包括對應于這些特征中相應的一個的數(shù)據(jù)塊;每一數(shù)據(jù)塊在第二層中基本上與第一層中對應于每一數(shù)據(jù)塊的特征的位置相對應的位置上,其中第二層的大小和形狀基本上對應于第一層的大小和形狀。
根據(jù)再一方面,本發(fā)明提供一種包含一個或多個軟件程序的存儲介質(zhì),該軟件程序可用于使得處理單元執(zhí)行動作,這些動作包括提供圖像的第一層,該第一層包括具有第一層內(nèi)的位置的圖像的特征;以及提供圖像的第二層,該第二層包括對應于這些特征中相應的一個的數(shù)據(jù)塊;每一數(shù)據(jù)塊在第二層中基本上與第一層中對應于每一數(shù)據(jù)塊的特征的位置相對應的位置上,其中第二層的大小和形狀基本上對應于第一層的大小和形狀。根據(jù)另一方面,本發(fā)明提供一種方法,包括提供圖像的第一層,該第一層包括具有第一層內(nèi)的位置的圖像的特征;提供圖像的第二層,該第二層包括對應于并描述這些特征中相應的一個的數(shù)據(jù)塊,每一數(shù)據(jù)塊在第二層中至少基本上與第一層中對應于每一數(shù)據(jù)塊的特征的位置相對應的位置上;以及提供圖像的第三層,該第三層包括具有第三層中的位置的指針,每一指針對應于這些特征中相應的一個以及這些數(shù)據(jù)塊中相應的一個,每一指針在第三層中的位置至少基本上對應于第一層中與每一指針相對應的特征的位置。較佳地,該第二層和第三層各自具有對應于第一層的大小和形狀的大小和形狀。較佳地,該方法還包括從第一層、第二層和第三層的組合形成地像。
較佳地,該方法還包括平坦化地像中的數(shù)據(jù)。較佳地,每一指針指示每一指針的對應數(shù)據(jù)塊相對于每一指針的位置的位置。較佳地,指示包括標識二維的偏移。較佳地,該偏移的每一維以對應于整數(shù)的像素數(shù),例如2或4的單位來表達。較佳地,指示包括將偏移標識為沿Hilbert曲線的一維距離。較佳地,沿一維曲線的偏移以像素為單位來表達。較佳地,沿一維曲線的偏移以對應于整數(shù)的像素數(shù)的單位來表達。較佳地,放置每一數(shù)據(jù)塊包括采用填塞算法定位每一數(shù)據(jù)塊以實現(xiàn)每一數(shù)據(jù)塊與每一數(shù)據(jù)塊在第二層中的目標位置的最大接近度,第二層中的目標位置對應于第一層中與每一數(shù)據(jù)塊相對應的特征的位置。較佳地,填塞算法確保第二層中沒有兩個數(shù)據(jù)塊彼此重疊。
較佳地,最大接近度是基于每一數(shù)據(jù)塊的位置與每一數(shù)據(jù)塊的目標位置之間的最短直線距離來確定的。較佳地,最大接近度是基于每一數(shù)據(jù)塊的位置與每一數(shù)據(jù)塊的目標位置之間的二維中的每一維的偏移的絕對值之和來確定的。較佳地,最大接近度是基于每一數(shù)據(jù)塊的位置與每一數(shù)據(jù)塊的目標位置之間的最小Hilbert曲線長度來確定的。
根據(jù)另一方面,本發(fā)明提供一種包含一個或多個軟件程序的存儲介質(zhì),該軟件程序可用于使得處理單元執(zhí)行動作,這些動作包括提供圖像的第一層,該第一層包括具有第一層內(nèi)的位置的圖像的特征;提供圖像的第二層,該第二層包括對應于并描述這些特征中相應的一個的數(shù)據(jù)塊,每一數(shù)據(jù)塊在第二層中至少基本與第一層中對應于每一數(shù)據(jù)塊的特征的位置相對應的位置上;以及提供圖像的第三層,該第三層包括具有第三層中的位置的指針,每一指針對應于這些特征中相應的一個以及這些數(shù)據(jù)塊中相應的一個,每一指針在第三層中的位置至少基本對應于第一層中與每一指針相對應的特征的位置。
根據(jù)另一方面,本發(fā)明提供一種裝置,包括在一個或多個軟件程序的控制下操作的處理單元,該軟件程序可用于使得處理單元執(zhí)行動作,這些動作包括提供圖像的第一層,該第一層包括具有第一層內(nèi)的位置的圖像的特征;提供圖像的第二層,該第二層包括對應于并描述這些特征中相應的一個的數(shù)據(jù)塊,每一數(shù)據(jù)塊在第二層中至少基本與第一層中對應于每一數(shù)據(jù)塊的特征的位置相對應的位置上;以及提供圖像的第三層,該第三層包括具有第三層中的位置的指針,每一指針對應于這些特征中相應的一個以及這些數(shù)據(jù)塊中相應的一個,每一指針在第三層中的位置至少基本對應于第一層中與每一指針相對應的特征的位置。
當結合附圖考慮本發(fā)明的較佳實施例的描述時,本領域的技術人員可以清楚其它方面、特征、優(yōu)點等。
附圖簡述
為圖示本發(fā)明的各方面起見,附圖中示出了目前較佳的形式,然而可以理解,本發(fā)明不限于所示的精確安排和手段。
圖1示出了根據(jù)本發(fā)明的一個或多個實施例的包括適用于以數(shù)據(jù)塊來描述的多個特征的道路地像的預呈現(xiàn)層;
圖2示出了圖1的道路地圖以及根據(jù)本發(fā)明的一個或多個實施例的對應于具有低濃度路段的區(qū)域中的相應路段的指針和數(shù)據(jù)塊;
圖3示出了根據(jù)本發(fā)明的一個或多個實施例的屬于具有主要道路的多條道路的一組集中路段、以及對應于具有高濃度交叉點的區(qū)域中的路段的指針和數(shù)據(jù)塊;
圖4示出了根據(jù)本發(fā)明的一個或多個實施例的用于三種情況的貪婪矩形填塞算法的測試輸出;
圖5A是根據(jù)本發(fā)明的一個或多個實施例的在平坦化道路地圖數(shù)據(jù)之前從Virgin Islands的道路地圖數(shù)據(jù)圖像的密集區(qū)域中取出的二進制8位數(shù)據(jù)的圖像;
圖5B是根據(jù)本發(fā)明的一個或多個實施例的在平坦化道路地圖數(shù)據(jù)之后從Virgin Islands的道路地圖數(shù)據(jù)圖像的密集區(qū)域取出的二進制8位數(shù)據(jù)的圖像;
圖6示出了根據(jù)本發(fā)明的一個或多個實施例的用于將二維指針向量映射到沿Hilbert曲線的一維距離d的一階Hilbert曲線;
圖7示出了根據(jù)本發(fā)明的一個或多個實施例的用于將二維指針向量映射到沿Hilbert曲線的一維距離d的二階Hilbert曲線;
圖8示出了根據(jù)本發(fā)明的一個或多個實施例的用于將二維指針向量映射到沿Hilbert曲線的一維距離d的三階Hilbert曲線;
圖9示出了根據(jù)本發(fā)明的一個或多個實施例的用于將二維指針向量映射到沿Hilbert曲線的一維距離d的四階Hilbert曲線;
圖10示出了根據(jù)本發(fā)明的一個或多個實施例的用于將二維指針向量映射到沿Hilbert曲線的一維距離d的五階Hilbert曲線;
圖11描繪了根據(jù)本發(fā)明的一個或多個實施例使用的結合了4像素×4像素大小的數(shù)據(jù)塊的美國Virgin Islands之一的圖像;
圖12描繪了根據(jù)本發(fā)明的一個或多個實施例使用的結合了6像素×6像素大小的數(shù)據(jù)塊的美國Virgin Islands之一的圖像;
圖13描繪了根據(jù)本發(fā)明的一個或多個實施例使用的結合了8像素×8像素大小的數(shù)據(jù)塊的美國Virgin Islands之一的圖像。
較佳實施例的詳細描述
注意,以下將討論的本發(fā)明的各方面可適用于除編碼和/或供應地圖數(shù)據(jù)之外的其它環(huán)境。實際上,可采用本發(fā)明的圖像和實現(xiàn)的范圍很多以致于無法全部列出。例如,本發(fā)明的特征可用于編碼和/或傳送人體解剖、復雜地形、諸如布線圖或藍圖等工程圖、基因本體等的圖像。然而,發(fā)現(xiàn)本發(fā)明尤其適用于編碼和/或供應其中其元素具有變化的細節(jié)水平或粗略度的圖像。因此,為簡明和清楚起見,本發(fā)明的各方面將結合具體示例,即地像的編碼和/或供應來討論。
在(2)中,介紹了連續(xù)多比例道路地圖呈現(xiàn)的概念。
(2)的發(fā)明的一個或多個實施例的基礎是道路地圖的圖像或其它基于向量的圖在不同分辨率下的預呈現(xiàn)“?!?,其中可視元素的類別(例如,道路類別,包括國家高速公路、州級高速公路和地方道路)以不同的視覺粗細度在不同的分辨率下呈現(xiàn)。
在客戶機/服務器交互期間,可下載這些圖像中一個以上的對應區(qū)域,且客戶機的顯示器可示出這些區(qū)域的混和組合?;旌拖禂?shù)和圖像分辨率的選擇可取決于縮放比例來混和。最終結果是客戶機方的用戶可導航大地圖(例如,美國的所有道路),連續(xù)地縮放和掃視,而不經(jīng)歷任何視覺不連續(xù)性,諸如當縮放比例改變時道路類別的出現(xiàn)或消失。
相反,在每一比例下,可強調(diào)最相關的類別。例如,當縮小以查看整個國家時,最大的高速公路被強烈地加強,從而使得它們清晰地突出,而在州級別時,次要的高速公路也被強烈地加強到足夠清晰可見的程度。當用戶放大到使用最詳細的預呈現(xiàn)圖像的點時,所有道路都清晰可見,且在用于地理空間數(shù)據(jù)的該較佳實施例中,所有元素以接近其物理上正確的比例示出。用于這些最詳細預呈現(xiàn)圖像的最大合理分辨率是約15米/像素;然而,從用戶觀點來看,期望能夠更進一步地放大。
然而,以更高的細節(jié)水平預呈現(xiàn)出于以下若干原因是不合需要的首先,因為服務器方的文件大小變得過大(15米/像素的單個世界橫向Mercator區(qū)圖像可能已經(jīng)是千兆像素的范圍);其次,因為預呈現(xiàn)圖像是對于通常與高分辨率地圖呈現(xiàn)相關聯(lián)的非常粗略的黑白數(shù)據(jù)的種類的低效表示;第三,因為客戶機可能需要“真實的”向量數(shù)據(jù)來執(zhí)行除靜態(tài)可視演示之外的計算任務。
例如,路線指南系統(tǒng)在監(jiān)視器或打印介質(zhì)中向用戶顯示時可高亮道路或改變其顏色。與單獨的預呈現(xiàn)圖像相反,這僅當客戶機能夠訪問向量數(shù)據(jù)時才能在客戶機方完成。向量數(shù)據(jù)也可包括街道名、地址以及客戶機較佳地能夠靈活地布局并選擇性地呈現(xiàn)的其它信息。將街道名標簽預呈現(xiàn)到地像棧中很明顯是不合需要的,因為這些標簽取決于精確的位置和客戶機視圖的比例較佳地在不同的地方繪出且較佳地以不同的大小提供。不同的標簽呈現(xiàn)不應在用戶縮放時被彼此混和。預呈現(xiàn)這些數(shù)據(jù)也消除對于字體的任何靈活性。
總而言之,向量數(shù)據(jù)(一般使用這一術語來指幾何學信息和諸如地點名等其它信息)在所需的呈現(xiàn)分辨率較高時因其本身的名義對客戶機是重要的,同時是比預呈現(xiàn)圖像更有效的信息表示。然而,如果要以低分辨率呈現(xiàn)大區(qū)域,則完整向量數(shù)據(jù)可能變得過大且過于復雜,從而使得預呈現(xiàn)圖像成為更高效的表示。然而,即使是在低分辨率下,向量數(shù)據(jù)的某些子集也是有益的,諸如主要高速公路的名稱。向量數(shù)據(jù)的這一子集可被包括在與低分辨率預呈現(xiàn)層相關聯(lián)的低分辨率數(shù)據(jù)層中,且在與較高分辨率預呈現(xiàn)層相關聯(lián)的數(shù)據(jù)層中有更詳細的向量數(shù)據(jù)可用。
本發(fā)明的一個或多個實施例擴展了(1)中所介紹的方法以允許空間向量數(shù)據(jù)被編碼并可能連同(2)的預呈現(xiàn)圖像一起被選擇性地且遞增地發(fā)送到客戶機。在現(xiàn)有技術中,這可使用地理空間數(shù)據(jù)庫來實現(xiàn)。數(shù)據(jù)庫需要包括在空間上索引的所有相關的向量數(shù)據(jù)。這些數(shù)據(jù)庫提出了許多實現(xiàn)上的挑戰(zhàn)。在本發(fā)明的一個或多個實施例中,代替使用常規(guī)的數(shù)據(jù)庫,使用諸如JPEG2000/JPIP所支持的空間可尋址圖像來編碼和供應向量數(shù)據(jù)。
多圖像地圖數(shù)據(jù)表示
在一個或多個實施例中,使用三個圖像或通道來表示地圖數(shù)據(jù),其每一個的深度為8位。根據(jù)(2),預呈現(xiàn)層較佳地是道路地圖的預計算文字呈現(xiàn)。指針層較佳地包括較佳地位于指針層中接近地、有時候等同地與預呈現(xiàn)層中該指針所對應的相應特征的位置相對應的位置上的2*2個像素塊。且數(shù)據(jù)層較佳地由在引用它們的2*2個指針上居中或靠近該指針定位的n*m個像素塊構成。預呈現(xiàn)層也可以是24位色,或是任何其它色空間或位深度。
注意,預呈現(xiàn)層、指針層和數(shù)據(jù)層本質(zhì)上是用于儲存各種二進制數(shù)據(jù)量的二維存儲器空間。這三層較佳地對應于作為對客戶機的道路地圖或其它二維圖像表示的主體的公共二維圖像區(qū)域。如此處所使用的,術語一層的“大小”和“形狀”一般分別對應于該層中的數(shù)據(jù)所涉及的二維圖像的大小和形狀。
較佳地,形成特定地像的預呈現(xiàn)層、指針層和數(shù)據(jù)層例如具有在二維圖像(從這三層形成)中至少非常接近或可能等同于彼此的“大小”和“形狀”。這較佳地無論用于這三層的所儲存數(shù)據(jù)在數(shù)據(jù)處理系統(tǒng)的物理存儲器中是如何分布的都是如此。
在一個實施例中,預呈現(xiàn)層中的相干“特征”可以是路段。在具有10個路段的地圖中,指針層中的指針1對應于預呈現(xiàn)層中的路段1和數(shù)據(jù)層中的數(shù)據(jù)塊1。指針2對應于路段2和數(shù)據(jù)塊2,依此類推,其中對于n=1到n=10,在每一情況下指針“n”對應于路段“n”和數(shù)據(jù)塊“n”。此外,指針1較佳地在指針層中接近地、且可能等同地與預呈現(xiàn)層中的路段1(或更一般地,“特征1”)的位置相對應的位置上。
從這三層的任一層中的項目(特征、指針或數(shù)據(jù)塊)與任一其它層中的對應項目(特征、指針或數(shù)據(jù)塊)的關聯(lián)的容易性觀點來看,各個地圖層(預呈現(xiàn)、指針和數(shù)據(jù))可被認為是疊加在彼此之上。由此,三個地圖層的大小和形狀較佳地彼此接近地對應以使得相應地圖層中項目的期望關聯(lián)在需要時在被配置成訪問這些層中的任一層以及這些項目中的任一項的數(shù)據(jù)處理系統(tǒng)中盡可能地無縫。可以理解,盡管此處的討論主要針對從三層數(shù)據(jù)形成的地圖,但是本發(fā)明可在使用多于或少于三層數(shù)據(jù)的同時實施,且所有這些變換都旨在落入本發(fā)明的范圍之內(nèi)。
由于三個地圖層較佳地大小相等且彼此對準,因此它們可用不同的顏色(在計算機顯示器上為紅、綠、藍,或者對于打印介質(zhì)為藍綠、品紅、黃)來覆蓋以產(chǎn)生單色圖像。圖1-3可以用彩色來顯示(在電子顯示器上或打印介質(zhì)上),并且可作為單色的JPEG2000被儲存在服務器方。然而,為簡明起見,圖1-3在本申請中以黑白來呈現(xiàn)。較佳地,僅預呈現(xiàn)層實際上可以在客戶機的顯示器上以此形式可見。
圖1示出了包括標號為102到124的多個特征的道路地圖的預呈現(xiàn)層。為簡明起見,在圖1中,所示的特征都是路段。然而,特征可包括許多其它項目,諸如體育競技場、公園、大建筑物等。圖1所示的區(qū)域是為了說明起見而被包括在內(nèi)的,且不對應于任何真實世界的城市或街道布局。
圖2示出了圖1的道路地圖以及根據(jù)本發(fā)明的一個或多個實施例的對應于具有低濃度路段的區(qū)域中的相應路段的指針和數(shù)據(jù)塊。路段102在圖2中示出,且來自圖1的其它路段在圖2中再現(xiàn)。然而,由于空間限制,其它七個路段(104-124)的參考標號未在圖2中示出。貫穿圖2和3,指針被示為深灰色塊,而數(shù)據(jù)塊被示為較大的淺灰色塊。
由于圖2示出了每一單位面積具有相對低濃度的路段的區(qū)域,因此可以毫無困難地將指針(202、204、206、208、210、212、214、216、218、220、222和224)定位在地圖200的第二層(指針層)中接近地、且可能等同地與地圖200的第一層(預呈現(xiàn)層)中該指針所對應的相應特征的位置相對應的位置上。類似地,數(shù)據(jù)塊(242、244、246、248、250、252、254、256、258、260、262和264)可被放置在地圖200的第三層(數(shù)據(jù)層)中相當接近地與地圖200的預呈現(xiàn)層中該數(shù)據(jù)塊所對應的相應特征的位置相對應的位置上。
圖3示出了根據(jù)本發(fā)明的一個實施例的多個次要道路320和較少數(shù)的主要道路310的一組集中路段,以及對應于具有高濃度路段的區(qū)域中其相應路段的指針和數(shù)據(jù)塊。參考標號330指所有的指針,而參考標號340指所有的數(shù)據(jù)塊。
在圖3的示例性區(qū)域中,特征濃度過高以致于無法使所有的指針或所有的數(shù)據(jù)塊都位于其相應層內(nèi)精確地與層內(nèi)它們所對應的特征的位置相對應的位置上。指針位置的偏移程度取決于擁擠程度可以是微小或重大的。然而,圖3中的路段濃度阻止將數(shù)據(jù)塊放置在第三層中接近地與層中該數(shù)據(jù)塊所對應的相應特征的位置相對應的位置上。
因此,數(shù)據(jù)塊340盡可能地靠近其對應的指針來分布,從而利用了有利地無特征的幾乎空白區(qū)域350,由此允許數(shù)據(jù)塊340溢出到空白區(qū)域350中??瞻讌^(qū)域350可以是沒有高濃度的具有相關聯(lián)指針和數(shù)據(jù)塊的特征(諸如,例如水體或農(nóng)場)的任何類型的區(qū)域??刹捎锰钊惴▉碛行У貙?shù)據(jù)塊340放置在地圖300內(nèi)。這一類型的算法在本申請的稍后討論,且其討論因此不在本節(jié)中重復。
如果用戶導航到圖1所示的地圖100的視圖,則客戶機可向服務器請求如圖所示所有三個圖像層的相關部分。預呈現(xiàn)層一般是三個圖像層中顯示表示地理區(qū)域的物理布局的圖像組件的唯一層。另兩個圖像層較佳地指定了對應于預呈現(xiàn)層中的特征的指針和數(shù)據(jù)塊。
在一個實施例中,指針圖像由在2x2的像素網(wǎng)格上對齊的2x2像素塊構成,每一網(wǎng)格指定了從其自己的位置到數(shù)據(jù)層中對應的數(shù)據(jù)塊的開始(左上角)的(x,y)向量偏移(其中向量的x和y分量各自包括16位整數(shù),因此各自是2個像素)。
在該實施例中,對應的數(shù)據(jù)塊進而能以指定數(shù)據(jù)塊寬度和高度的2個16位值(4個像素)開頭。較佳地,首先指定寬度,并將其約束為具有至少2個像素的大小,因此避免了讀取寬度和高度時的不明確。數(shù)據(jù)塊的剩余部分可視為可包含向量、文本或其它信息的任何組合的二進制數(shù)據(jù)。在圖2-3的示例中,數(shù)據(jù)塊可包含包括街道名、地址范圍和向量表示的街道地圖信息。
壓縮
在本節(jié)中,提出以上討論的指針層和數(shù)據(jù)層的組合的一個或多個實施例相對于現(xiàn)有方法的優(yōu)點。一種現(xiàn)有的解決方案涉及向空間數(shù)據(jù)庫發(fā)送對感興趣窗口內(nèi)的所有相關文本/向量信息的請求。服務器然后用一定量的文本來回復。現(xiàn)有的空間數(shù)據(jù)庫系統(tǒng)將信息基本上作為純文本發(fā)回。
然而,在本發(fā)明的一個或多個實施例中,可應用小波壓縮,由此允許服務器在滿足數(shù)據(jù)請求的同時發(fā)送比現(xiàn)有系統(tǒng)所發(fā)送的少得多的量的數(shù)據(jù)。位于數(shù)據(jù)和指針層上的數(shù)據(jù)存儲區(qū)域之間的沒有數(shù)據(jù)存儲的區(qū)域與圖像按光柵順序以未壓縮形式發(fā)送時一樣造成極少的浪費,因為這些區(qū)域具有零復雜度且可被壓縮成小波表示中非常少量的位。
空間相干性的充分利用
典型的瀏覽模式涉及逐步縮放和掃視。多分辨率流圖像瀏覽技術被設計成在這一環(huán)境中運作良好??蓪Ω信d趣的窗口發(fā)送完整的信息,并且可對直接圍繞該感興趣窗口的區(qū)域發(fā)送部分信息。在掃視或其它移動之后,較佳地僅發(fā)送相關的新信息(“增量”)。所有這些都可以用非常高效的方式來完成。例如,特別大的數(shù)據(jù)塊可在感興趣的窗口與數(shù)據(jù)塊的定位點相交之前被很好地部分發(fā)送。
性能
在本發(fā)明的一個或多個實施例中,指針層示出數(shù)據(jù)塊離它所對應的指針有多遠??梢曰叵朐谵r(nóng)村地區(qū),數(shù)據(jù)塊可以直接位于指針位置的中心。在這一情況下,所有數(shù)據(jù)較佳地都是局部的。然而,在城市地區(qū),數(shù)據(jù)開始“擁擠”,且數(shù)據(jù)塊的位置可以偏離該數(shù)據(jù)塊所對應的相應指針(在指針圖像中)和相應特征(在預呈現(xiàn)圖像中)。
在本發(fā)明的一個或多個實施例中,當生成地圖時,可對數(shù)據(jù)塊離預呈現(xiàn)圖像中它所對應的特征的最大距離施加上限。這進而限制了數(shù)據(jù)層中與預呈現(xiàn)圖像中給定大小的感興趣窗口相關的一部分的最大面積,因此限制了最大復雜度。例如,如果最大距離是32個像素,則數(shù)據(jù)圖像中的窗口在每一側(cè)上只需比預呈現(xiàn)圖像中的感興趣窗口大32像素。
如果數(shù)據(jù)密度增加到超過可能填塞的點,則可總是將分辨率例如從15米/像素增大到12米/像素。這給予數(shù)據(jù)更多的“呼吸空間”。注意,不同種類的數(shù)據(jù)也可在不同的細節(jié)水平中分布。由此,例如,數(shù)據(jù)在40米/像素的分辨率下的過度擁擠意味著該數(shù)據(jù)的某一類可能更好地以30米/像素的水平來儲存。
擁擠可以在數(shù)據(jù)層和指針層中可見。用于不同數(shù)據(jù)類的適當分辨率可隨著空間改變,使得例如小街道向量數(shù)據(jù)在農(nóng)村地區(qū)中可能以30米/像素來編碼,而在城市地區(qū)中僅以12米/像素來編碼。簡言之,指針和數(shù)據(jù)圖像使得數(shù)據(jù)擁擠易于在視覺上或使用數(shù)據(jù)處理算法檢測和糾正。所得的數(shù)據(jù)圖像的層次即使在低帶寬設置中也能幫助確保高性能的向量瀏覽,因為對任何給定視圖所需的數(shù)據(jù)的量可被控制成使其不會超過上限。這種上限在現(xiàn)有的地理空間數(shù)據(jù)庫中極其難以實施或甚至定義。
實現(xiàn)便利性
本發(fā)明的一個或多個方面涉及將地理空間數(shù)據(jù)庫問題映射到遠程圖像瀏覽問題。已進行了使得遠程圖像瀏覽更高效地工作的大量工程設計。除了基本的壓縮技術之外,這包括高速緩存的優(yōu)化、帶寬管理、客戶機和服務器的存儲器使用以及服務器方的文件表示。與常規(guī)的地理空間數(shù)據(jù)庫技術形成對比,該技術是成熟的且可用于多個實現(xiàn)。
因此,本發(fā)明的一個或多個實施例構想了在適當安排的地理空間數(shù)據(jù)庫和與該地理空間數(shù)據(jù)庫交互的遠程圖像瀏覽技術之間形成有效的協(xié)作。此外,在本發(fā)明的一個或多個實施例中,對圖像和數(shù)據(jù)瀏覽兩者只需使用單個系統(tǒng),且對客戶機方的數(shù)據(jù)只需簡單的適配器。以上內(nèi)容較佳地具有兩個準獨立復雜系統(tǒng),一個用于圖像瀏覽,而另一個用于數(shù)據(jù)瀏覽。
用于表示指針的替換方法
在本發(fā)明的一個或多個替換實施例中,考慮Hilbert曲線,有時也稱為Hilbert-Peano曲線。Hilbert曲線屬于稱為空間填充曲線的一簇遞歸定義曲線(見http://mathworld.wolfram.com/HilbertCurve.html,或者對于原始參考文獻,參見Hilbert,D.的“über die stetige Abbildung einer Linie auf ein Flachenüstck”,Math.Ann.38,459-460,1891,該參考文獻通過引用結合于此)。1、2、3、4和5階Hilbert曲線分別在圖6、7、8、9和10中示出。
如在高階限制中清楚的,一維曲線填充整個單位正方形(形式上在該單位正方形中變得密集)。n階曲線訪問單位正方形上的4^n個點。對于一階情況(對于4^1),這些點是正方形的角。對于涉及本發(fā)明的目的,較佳的是使n階曲線訪問正方形(0,0)-(2^n-1,2^n-1)中的所有整數(shù)坐標。使用位處理,已知有用于在n階Hilbert曲線上的路徑長度與(x,y)坐標之間互換的快速算法(參見Warren、Henry S.Jr.、Hacker的Delight,Addison-Wesley2003第14章),該參考文獻通過引用結合于此。例如,對于二階曲線,該互換將在下表中從左列映射到右列或相反地映射
表1
Hilbert曲線與編碼指針圖像的問題有關,因為它提供了將二維向量(具有分量x和y)編碼為單個數(shù)字d,同時相當良好地保持“鄰域關系”的一種便利方法。鄰域關系指的是當向量位置緩慢改變時,d趨向于也緩慢改變,因為一般其“d”值接近的指針在二維空間中也接近。然而,該關系并不總是成立。例如,在二階情況下,當從(1,0)移至(2,0)時,路徑距離“d”從1變?yōu)?4。不可能用1D曲線填充2D空間且總是保持鄰域關系。
表示n階Hilbert曲線的路徑距離d需要2*n(2乘以n)位。當采用二維表示時,x和y坐標各自需要n位來表示位于路徑距離d上的點。因此,對一個向量進行“Hilbert編碼”將數(shù)對(x,y)重新打包成單個數(shù)字d,但是輸入(x,y)和輸出d都使用相同的位數(shù)2n。小的(x,y)向量編碼成小的d值。實際上,可以觀察到,n階Hilbert曲線只不過是(n+1)階曲線的左下四分之一。
因此,8位圖像中每一像素的值可被認為是4階Hilbert曲線上的路徑距離,由此對范圍(0,0)-(15,15)中,即16*16網(wǎng)格上任何地方的向量進行了編碼。作為在低位的四位字節(jié)中填塞4位x并在高位的四位字節(jié)中填塞4位y的替代,經(jīng)Hilbert編碼的像素在x和y都小于4時具有小于16的值,而在x和y都小于2時具有小于4的值。由于數(shù)據(jù)填塞算法較佳地將數(shù)據(jù)塊填塞得盡可能靠近定位點(將插入指針之處),因此具有小值的向量是常見的。此外,如果這些向量被Hilbert編碼,則它們被轉(zhuǎn)換成指針圖像中的小像素值,因此具有較好的圖像壓縮性能。
在一個實施例中,利用16位圖像或24位圖像,它們可分別對256*256或4096*4096網(wǎng)格上的(x,y)向量編碼。值256等于2^8,而值4096等于2^12。
在一個實施例中,修改Hilbert編碼算法以適應有符號向量,其中x和y值在正和負數(shù)的范圍上。修改涉及連同路徑距離d一起指定兩個額外的位,從而標識了向量象限。這兩個位是用于x和y的符號位。x和y的絕對值然后如常被Hilbert編碼。(為避免雙重覆蓋,x=0和y=0屬于正象限,且負x或y的絕對值被計算為-1-x或-1-y)。在該實施例中,符號位被分配給輸出值的兩個最低位的位置,使得每一象限中經(jīng)編碼的向量的數(shù)值范圍大致相等。因此,對于16位圖像的示例,x和y值在-128和+127之間(包括這兩個值)的向量可對每一象限使用7階Hilbert曲線來編碼。x和y值在-64和+63之間的向量被分配可用14位來表示的像素值,其中2^14=16384。如果x和y在-8和7之間,則值可以小于2^8=256。
填塞算法
在一個或多個實施例中,指針和數(shù)據(jù)層正如預呈現(xiàn)層一樣被預計算。指針和數(shù)據(jù)層的預計算包括將所有相關向量數(shù)據(jù)編碼成數(shù)據(jù)塊,以及盡可能高效地將指針和數(shù)據(jù)塊填塞到其相應的層中。在農(nóng)村或稀疏郊區(qū)地區(qū)(見圖2),特征往往是間隔良好的,導致指針和數(shù)據(jù)圖像中的大空白區(qū)。在出現(xiàn)指針之處,它們較佳地精確地落在它們所引用的特征上,且其對應的數(shù)據(jù)塊進而通常精確地位于指針中心。然而,在密集的城市地區(qū)(見圖3),特征通常太接近以致于指針和數(shù)據(jù)塊無法擬合在接近地與預呈現(xiàn)層中其對應特征特征的位置相對應的位置上。因此,使用矩形填塞算法來試圖將指針和數(shù)據(jù)塊盡可能放置得靠近其期望位置而沒有任何重疊將是有幫助的。
圖3中的結果是顯而易見的??瞻讌^(qū)350用對應于沿道路310在與多個道路320的交點處存在的特征的數(shù)據(jù)塊來填充。由于城市地區(qū)通常被稀疏區(qū)域(郊區(qū)、山、或水體)圍繞,因此有可能將城市數(shù)據(jù)塊放置在地圖上合理地接近其特征與它們對應的城市區(qū)的某處。
一般而言,即使在密集排列的城市中,也有這一“外流”不會過度嚴重的足夠的空白區(qū)。一般而言,外流的速率越高,地圖向量數(shù)據(jù)也變得定位越不良好。外流一般在數(shù)據(jù)層圖像的分辨率增加時顯著降低。有益的是找出效率和非局部性被適當平衡的分辨率。在北美,15米/像素一般是一個良好的選擇。15米/像素的分辨率在農(nóng)村地區(qū)中是“過多的”,但是在靠近城市之處,這一分辨率選擇往往限制了外流。
高效矩形填塞在計算上是一個難題。然而,在計算幾何學文獻中有眾多近似算法來解決這一難題,且本發(fā)明不限于這些算法中任何特定的一種。換言之,可結合本發(fā)明的一個或多個實施例采用計算幾何學文獻中描述的且對本領域技術人員已知的矩形填塞算法中的一種或多種來將數(shù)據(jù)塊放置在數(shù)據(jù)層內(nèi)。
已結合本發(fā)明的一個或多個實施例使用的一種較佳算法涉及分層“矩形樹”,它允許迅速地進行以下操作測試給定矩形是否與樹中已有的任何其它矩形相交插入不重疊矩形;以及在目標點p周圍的半徑為r0<=r<r1的環(huán)內(nèi)找出一組完整的“空角”(即,毗鄰邊界在空白區(qū)上的已插入矩形的角)。
使用了“貪婪算法”來將新矩形插入得盡可能靠近目標點然后如下進行
1)嘗試插入中心在目標點上的矩形。如果這成功,則該算法結束。
2)否則,定義半徑r0為該矩形的長度或?qū)挾戎械淖钚≈档囊话?,以?br>
r1=r0*2。
3)找出r0和r1之間的所有“空角”,并按照遞增半徑來排序。
4)嘗試將該矩形按順序放置在這些角中的每一個上,并且在成功時,該算法結束。
如果所嘗試的插入沒有一個成功,則將r0設為r1,將r1設為2*r0,并去往步驟3。
在一個較佳實施例中,該算法最終總能成功地放置矩形,只要圖像中的某處存在滿足或超過要放置矩形的尺寸的空白區(qū)。該算法在它一次放置單個矩形的意義上是“貪婪的”。該貪婪算法并不嘗試解出盡可能高效地填塞n個矩形的整個問題。整體算法包括定義填塞效率的明確度量,從而指定最小化浪費的空間和最小化矩形與其“目標點”之間的距離之間的期望折衷。該貪婪算法不是最優(yōu)的,但是不要求明確地指定這一折衷,如可從上述算法中清楚的。
圖4示出了用于三種情況的基本填塞算法的輸出。在每一種情況下,該算法順序地將多個矩形盡可能靠近公共點來放置。對矩形填塞問題的這一解法僅作為示例來提供。在最左邊的情況中,大多數(shù)矩形較小且較窄。使用了三個較大且至少基本為正方形的矩形的中間示例。而在最右邊的示例中,采用了小和大矩形的混和。
為使該貪婪填塞算法不對地圖的任何特定區(qū)域給予位置偏好,理想的是隨機化矩形插入的次序。在一個較佳實施例中,由此以隨機次序插入指針/數(shù)據(jù)塊對。其它排序在某些情況下可以進一步提高填塞效率;例如,將大塊插入到小塊之前可以最小化浪費的空間。
在一個較佳實施例中,指針數(shù)據(jù)被組織成2像素×2像素(意味著沿一行的兩個像素和沿一列的兩個像素)的單元。由此,采用像素為單位,每一指針較佳地是2×2(表示法是行x列)。然而,在替換實施例中,指針的行大小和列大小可以不同。在替換實施例中,指針可使用12階Hilbert編碼由單個24位彩色像素來表示。
對于數(shù)據(jù)塊,可以自由地選擇數(shù)據(jù)塊的寬高比;以正方形像素為單位的塊面積是由適合該塊的數(shù)據(jù)量來確定的,但是該面積可以適合許多不同形狀的矩形。例如,24字節(jié)的數(shù)據(jù)塊(包括4字節(jié)的寬度和高度信息,以及20字節(jié)的任意數(shù)據(jù))可恰好被表示為1×24、2×12、3×8、4×6、6×4、8×3或12×2。(24×1是不合格的,因為如上所述,在本實施例中,塊的寬度必須至少為2,以使2字節(jié)的寬度在塊尺寸在客戶機方已知之前解碼。)
該塊也可剩余一個字節(jié)地在5像素×5像素(或5x5)的塊中表示。將以上列出的除近似因數(shù)分解5x5之外的所有因數(shù)分解的集合稱為“天棚因數(shù)分解(ceilingfactorization)”。對有效的天棚因數(shù)分解的要求是其面積滿足或超過所討論的數(shù)據(jù)塊的尺寸,且沒有行或列被完全浪費。例如,7×4或3×9不是較佳的天棚因數(shù)分解,因為它們分別可被縮減為6x4和3x8。在最簡單的實現(xiàn)中,塊尺寸可僅基于數(shù)據(jù)長度的天棚因數(shù)分解來選擇;一般而言,“較正方形的”塊(諸如4×6)比斜塊(諸如2×12)能更好地填塞。
最簡單的數(shù)據(jù)塊大小調(diào)整算法取決于它如何在“正方形”和浪費的字節(jié)之間折衷而選擇4×6或者5×5。更復雜的塊大小選擇算法可自適應地選取塊尺寸,作為搜索目標點附近的空白區(qū)的一部分。在一個實施例中,以上算法的步驟1和4然后被修改如下1)按照期望程度對具有所需數(shù)據(jù)長度的天棚因數(shù)分解排序,其中偏好較正方形的因數(shù)分解并且可能以浪費的字節(jié)為代價。2)進而嘗試在目標點p處放置尺寸由每一天棚因數(shù)分解給出的矩形。3)如果這些插入中的任一次成功,則該算法結束。4)進而對于每一“空角”c,依次試圖在c處放置尺寸由每一天棚因數(shù)分解給出的矩形。一旦成功,該算法結束。
對該算法的進一步細化涉及指定用于交點的評分函數(shù),它與整體優(yōu)化函數(shù)一樣在浪費的空間、非正方形的寬高比和與目標點的距離之間進行折衷。
這三個地圖層一預呈現(xiàn)層、指針層和數(shù)據(jù)層一中的每一個較佳地被儲存為JPEG2000或類似的空間可訪問表示。然而,對三層中不同的層數(shù)據(jù)壓縮的可允許條件是不同的。
預呈現(xiàn)道路層的壓縮無需是無損的,但是它在顯示時具有合理的感知準確度是有益的。在15m/像素下,發(fā)現(xiàn)0.5位/像素的無損小波壓縮是完全足夠的。然而,在一個較佳實施例中,指針和數(shù)據(jù)層被無損地壓縮,因為它們包含客戶機需要精確重構的數(shù)據(jù)。無損壓縮一般不是非常高效的。例如,典型的數(shù)字圖像一般不能按照最多約為2的因子來無損壓縮。已開發(fā)了各種技術(如在以下“平坦化”一節(jié)中描述的)來對數(shù)據(jù)和指針層實現(xiàn)高得多的無損壓縮率,同時仍采用標準的基于小波的JPEG2000壓縮。
替換填塞方法
本節(jié)中提出了用于將數(shù)據(jù)塊填塞到數(shù)據(jù)層中的替換實施例。在該較佳實施例中,定義一“分配”函數(shù)來分配給定數(shù)目的字節(jié)(對應于像素)。該分配函數(shù)較佳地與類似的常規(guī)存儲器分配函數(shù)(在C中,為“malloc”)在三個方面不同。
1)盡管常規(guī)存儲器分配函數(shù)返回對應于一維地址空間中連續(xù)分配間隔的開始的地址的標量指針,但是由此處的分配函數(shù)返回的指針是二維向量,它指定了數(shù)據(jù)圖像中的起始位置。
2)由此處所公開的分配函數(shù)所分配的像素可能不全是連續(xù)的,而由函數(shù)“malloc”返回的地址處開始的已分配字節(jié)卻是連續(xù)的。
3)此處所公開的分配函數(shù)不僅僅傳入要分配的期望數(shù)目的像素,而且還傳入了數(shù)據(jù)圖像上的目標位置。期望數(shù)目的像素被分配得盡可能地接近目標位置,同時避開任何先前分配的像素。
“填塞算法”一節(jié)中所描述的“分配函數(shù)”以及以下描述的替換“分配”函數(shù)共享這些特性。然而,前一“分配”函數(shù)總是分配單個像素矩形,而以下描述的函數(shù)可更靈活地分配空間。
對于數(shù)據(jù)圖像的期望特性
1)低數(shù)據(jù)額外開銷迄今為止所探究的數(shù)據(jù)圖像的一個或多個實施例需要編碼某些任意輔助數(shù)據(jù)。在初步形式中,該數(shù)據(jù)包括塊尺寸,它被儲存為對于寬度和高度的16位值。由此,開銷是對每一分配的數(shù)據(jù)組塊4個像素。
2)最小浪費空間迄今為止所探究的數(shù)據(jù)圖像的一個或多個實施例可能會浪費某些像素。例如,在一個實施例中,請求26個像素可能導致分配8×4的像素塊。對于8×4=32個所得的像素,4個是額外開銷,且另外2個是浪費的。
3)良好的空間局部化在同一目標位置附近的可定大小的數(shù)據(jù)組塊的重復分配將導致“擁擠”。期望數(shù)據(jù)像素盡可能地接近目標。
4)相干性期望保持單個組塊的像素盡可能連續(xù),這既是出于性能原因也是減少在給定數(shù)據(jù)圖像中的固定大小的窗口的情況下不完整數(shù)據(jù)組塊的數(shù)目。
一般必須作出這些特性之間的折衷。例如,盡管相干性和空間局部化看似為相似的特性,但是它們通常是沖突的。如果在擁擠的地區(qū)附近分配了長數(shù)據(jù)組塊,則最接近的連續(xù)區(qū)域可能在很遠,而如果數(shù)據(jù)組塊相反被分裂以填充裂紋,則所需數(shù)目的像素會被分配在附近,從而導致良好的局部化但更差的相干性。
本發(fā)明的一個或多個實施例通過將數(shù)據(jù)分配的基本空間單位設為在間距為n*m的網(wǎng)格上排列的n*m像素塊來簡化數(shù)據(jù)填塞,其中n和m較小但不小于2*2。這些塊因而可被認為是“超像素”。
單個分配的組塊通常具有n*m以上個字節(jié),且組塊因此必須跨多個塊。由此,塊較佳地是鏈接的。塊的前兩個像素較佳地包括指向鏈中下一個塊的指針(可以是如上所述經(jīng)Hilbert編碼的)。這實際上是單鏈表的二維模擬。向量可相對于當前塊以網(wǎng)格單位來指定,使得例如如果塊指定向量(+1,0),則它意味著組塊在右邊的下一塊中繼續(xù);如果塊指定(-2,-1),則它意味著組塊在向左的兩個塊以及向上的一個塊中繼續(xù)。(0,0)向量(等價于空指針)可用于指示當前塊是鏈中的最后一個。
這一方案中的數(shù)據(jù)額外開銷在塊大小非常小時可能很高。對于2x2塊的限制情況,每一塊的四個像素中的2個用作指向下一塊的指針,使得額外開銷數(shù)據(jù)是該塊的總數(shù)據(jù)的一半。然而,可以有許多補償因素。一個因素是填塞算法被極大簡化,導致具有較少浪費空間和較佳局部化的更為最優(yōu)的解決方案。
在一個實施例中,組塊分配算法通過順序地分配n*m個塊來工作。對于k個字節(jié),可分配cei1((n*m-2)/k)個塊。塊的分配可包括定位最接近目標點的空塊以及將其標記為滿。在分配了所需數(shù)目的塊之后,然后將數(shù)據(jù)和下一塊指針寫入這些塊中?!白罱咏笨墒褂酶鞣N度量來定義,但是帶有有用特性的四個選擇是
1)Euclidean(L2)范數(shù)這將選擇具有到目標的最短直線距離的塊,從而填充同心圓中的塊。
2)Manhattan(L1)范數(shù)該距離度量是x偏移和y偏移的絕對值之和。盡管圓在L2中定義了與目標點等距離的點集,但是矩形在L1中定義了該集合。由此,塊將在使用該度量時填滿同心矩形。L1度量對于大多數(shù)應用比L2度量有意義,因為數(shù)據(jù)圖像中的窗口本身是矩形的,且因為二維指針的最大范圍是矩形的。
3)Hilbert曲線范數(shù)該范數(shù)是使用實際Hilbert曲線路徑長度來定義的,其中象限如前一節(jié)所描述的在較低的兩位中編碼。最小化該范數(shù)因而直接最小化了指針大小。同樣,與先前的兩個范數(shù)不同,該范數(shù)是非簡并的,這意味著從目標點(被舍入到最接近的塊位置)到任何其它塊的距離是唯一的。在本實施例中,“最接近的”未分配塊因而是被唯一地定義的。
4)矩形螺線范數(shù)該矩形類似于L1范數(shù),但是它通過對與目標等距離的矩形路徑L1中的塊施加一致的排序來破壞L1范數(shù)的簡并度。該路徑可以在矩形上的任意點處開始和結束。為方便起見,可順時針漸進地指定下部x、下部x角。該范數(shù)具有的優(yōu)點是與Hilbert曲線范數(shù)一樣,它唯一地定義了“最接近的”未分配塊。假定與預先存在的滿塊沒有沖突,則順序塊是相鄰的,由此形成了圍繞目標的展開螺線。
用于在分配期間選取鏈中的最佳(自由)下一塊的其它度量也是可能的。在一個實施例中,分配程序可以不僅考慮每一塊與目標點的距離,而且考慮每一塊與前一塊的距離。同一度量可用于測量這兩個距離。或者,可使用不同度量,并且這兩個距離可被添加或與相對加權因子組合以給出組合距離。在決定下一塊的位置時對與前一塊的距離給予大的加權有利于相干性,而對與目標點的絕對距離給予大的加權有利于空間局部化。因此,這一方案允許通過調(diào)整單個參數(shù)來以任何期望的方式折衷相干性和局部化。
另一重要的參數(shù)是塊大小“n”。本討論假定塊是正方形的,即n=m。n不等于m的非正方形塊在其中目標點的密度在水平和垂直方向上不同,或為了在偏好相干掃描行訪問的計算機體系結構上的更好性能的情況下可能是有用的。塊大小定義了存儲器粒度,這類似于普通1D(一維)存儲器中的“存儲器排列”。大的塊大小減小了數(shù)據(jù)額外開銷,因為下一塊指針使用已分配空間的2/n^2部分;并且它們也提高了相干性。然而,大的塊大小增加了浪費的空間,因為整個塊是一次性分配的。所浪費的空間進而可能使空間局部化變差。對塊大小的適當選擇取決于期望組塊長度的分布以及目標點的空間分布。作出最佳選擇是復雜的,且一般應當使用典型數(shù)據(jù)通過實驗來完成。
對于地圖向量數(shù)據(jù),發(fā)現(xiàn)4像素×4像素的塊是良好的大小。數(shù)據(jù)額外開銷是總數(shù)據(jù)的八分之一,這是相當大的,但是因減少的浪費空間量導致的更緊密填塞較佳地補償了增加的額外開銷。圖11-13示出了對于使用4*4個塊(圖11)、6*6個塊(圖12)和8*8個塊(13)的美國Virgin Islands之一的數(shù)據(jù)圖像(為高對比度而增強)。為清楚起見,所浪費的空間在圖11-13中被繪出為白色(盡管在實踐中,為改進壓縮性能,浪費的空間被分配以值零或黑色)。很清楚,8*8個塊既浪費了大量的空間又提供了較差的局部化,而4x4個塊浪費了少得多的空間且局部化更好。圖11的4*4塊圖像也壓縮到比另外兩個更小的文件大小。
注意,需要一數(shù)據(jù)結構來跟蹤哪些塊是滿的,并基于目標點和前一塊位置來找出最接近的空塊。R樹(Antonin Guttman的R-TreesA Dynamic Index Structure forSpatial Searching,SIGMOD會議1984∶47-57,該參考文獻通過引用結合于此)提供了可用于解決這一問題的一種有效的稀疏數(shù)據(jù)結構。也可僅使用位圖,其中“0”位指示自由塊,而“1”位指示填充的塊。這些數(shù)據(jù)結構可都支持條帶化,由此在任何給定時刻都只有總圖像的一部分被保持在工作存儲器中。這允許離線創(chuàng)建非常大的空間數(shù)據(jù)庫。由于局部化被良好地界定,因此將數(shù)據(jù)庫用于隨后的空間查詢只需每次有一小窗口“可見”。
平坦化圖像數(shù)據(jù)
對于大多數(shù)形式的有損或無損壓縮,性能可通過使得圖像函數(shù)的量值變小,由此占據(jù)較少的有效位來優(yōu)化。因此,在一些實施例中,使用特殊的編碼技術來“平坦化”原始數(shù)據(jù)。這些技術的結果可從圖5中清楚,圖5示出了在平坦化之前(圖5A)和平坦化之后(圖5B)數(shù)據(jù)圖像的同樣密集填充的區(qū)域。圖5中使用的數(shù)據(jù)圖像是Virgin Islands的道路地圖數(shù)據(jù)圖像。注意,圖5B被故意加深以便在本申請中更可見。在圖5B中,如所呈現(xiàn)的,矩形圖像作為一個整體是暗淡的灰色陰影。此外,圖5A中極為明顯的少量像素值變化在圖5B中仍可見,它們大多在圖像的下半部分。遍及圖5B的絕大部分的像素值的一致性證明了對圖5A的數(shù)據(jù)“平坦化”的程度的有效性。
注意,在平坦化之前,數(shù)據(jù)圖像具有完整的8位動態(tài)范圍,并展示出使得它非常差地壓縮的高頻和結構化圖案(實際上,該圖像的無損JPEG2000不會小于原始的未處理大小)。在“平坦化”之后,大多數(shù)結構不見了,并且絕大部分像素具有小于8且因此可僅使用3位來表示的值。該圖像的相應JPEG2000壓縮形式具有比3∶1更好的壓縮。
“平坦化”可以包括多個簡單的數(shù)據(jù)變換,包括以下(這是在圖5的示例中應用的變換的完整列表)
應用于圖5的平坦化技術
在圖5的平坦化技術中,諸如數(shù)據(jù)塊的寬度或高度等16位值通常使用高位字節(jié)和低位字節(jié)來編碼??墒褂?6位是因為值偶爾會超過255(8位限制)某一未指定的量,然而在大多數(shù)情況下,這些值不會超過255。對于適合8位的值,高位字節(jié)將為0。頻繁的0高位字節(jié)后跟有效的低位字節(jié)解決了圖5A部分中清楚的大多數(shù)2像素周期性??扇缦卤?所示地重映射16位
表2
在表1中,左邊的8列表示該對的第一個像素,它先前在高位字節(jié);右邊的8列表示第二像素,它先前在低位字節(jié)。通過以此方式重新分配位,可訪問值的范圍(0-65535)保持不變,但是兩個字節(jié)變得更對稱。例如,對于所有的16位值0-255,兩個字節(jié)各自假定值<16。
類似的位交錯技術應用于32位或更大的整數(shù)值。這些技術也可擴展到有符號量。對于其中符號頻繁改變的變量,如對于道路向量的差分編碼所發(fā)生的,可向位置0分配符號位,并且絕對值可如上所述以交替的字節(jié)來編碼。注意,為令人信服地繪出,道路向量數(shù)據(jù)可以用大于像素的精度來表示。代替地可使用小于像素的任意單位,或者等價地,可使用定點算術結合上述技術來實現(xiàn)子像素精度。在本示例性實施例中,對1/16的像素精度使用4個子像素的位。
當數(shù)字如上所述地編碼時,期望使得數(shù)字盡可能小。有時候上下文暗示了達到這一目標的明顯方式。例如,因為在一較佳實施例中每一數(shù)據(jù)塊是2或更多像素寬,因此可在編碼之前從數(shù)據(jù)寬度中減去2。更重要地,數(shù)據(jù)塊中編碼的指針和任何位置向量相對于指針位置以像素來指定而非以絕對坐標來指定。這不僅極大地減小了要編碼的數(shù)字的大小,而且還允許數(shù)據(jù)圖像的一部分在局部坐標系統(tǒng)中向量性地解碼和呈現(xiàn),而不考慮該部分的絕對位置。
在一個較佳實施例中,對于定義曲線(例如,道路)的一系列點的向量呈現(xiàn),只需相對于原始指針位置指定第一個點。隨后的點可被編碼為從前一點的“增量”或步進向量。在第二個這樣的點之后,其它的后續(xù)點可被編碼為二階導數(shù),或當前和前一增量之差。使用二階導數(shù)來編碼一般對于諸如道路等結構是高效的,因為它們往往是具有導數(shù)連續(xù)性的曲線的離散化。換言之,道路往往逐步改變其方向。
替換平坦化技術
在文獻(1)(作為附錄A附加于此)中討論了用于一般可被編碼為ASCII的每一字節(jié)具有單個字符的文本數(shù)據(jù)的另一種“平坦化”技術。在(1)中所描述的應用中,編碼英文文本,并且因此字母基于字母在英語的代表性樣例中出現(xiàn)的遞減頻率來重新映射。同一技術可在本文環(huán)境中使用,盡管地圖中編碼的大多由街道名構成的文本具有與原始英語相當不同的統(tǒng)計量。例如,數(shù)字和大寫字母要重要得多。
注意,用于如上所述地編碼指針或數(shù)據(jù)的特定方法是示例性的;許多其它編碼也是可行的?!傲己玫摹本幋a一般得到平滑和/或具有低動態(tài)范圍的圖像。
使用以上技術,15m/像素下的華盛頓州的King County的道路地圖如下表3所示地壓縮
表3
令人驚訝的是,地圖數(shù)據(jù)的JPEG2000表示(包括有損預呈現(xiàn)道路地像、無損指針層和無損數(shù)據(jù)層)實際上要小于將原始數(shù)據(jù)表示為表格文本的壓縮ZIP文件。(該文件是美國人口普查局2002 TIGER/Line數(shù)據(jù)庫的一部分。)然而,與原始的ZIP不同,該新表示已準備好交互式地向客戶機供應,且有效地支持連續(xù)可掃視和可縮放空間訪問。
文獻(2)(作為展示B附加于此)中介紹的原始的預呈現(xiàn)多比例地圖發(fā)明不僅包括單個預呈現(xiàn)圖像,還包括以逐漸粗略的分辨率呈現(xiàn)的、并帶有重新按比例縮放的線寬(或其它可視特征)的這些圖像的棧。盡管這些預呈現(xiàn)的任一個中都沒有省略任何特征,但是某些特征被削弱得足以僅在總計意義上清晰可見,例如,城市的地區(qū)道路在州級變?yōu)榘档幕疑:c。
本發(fā)明的一個或多個實施例可被擴展成包括對應于較粗略地預呈現(xiàn)的道路地像的指針和數(shù)據(jù)圖像,其中僅表示了原始向量對象的一個子集。例如,在比用于預呈現(xiàn)圖像的分辨率低得多的分辨率下的州級指針和數(shù)據(jù)圖像可能僅包括用于州和國家高速公路的數(shù)據(jù),而不包括所有的地區(qū)道路。這些較粗略的數(shù)據(jù)也可以是“抽象”,例如僅指定道路名而不指定向量。不同分辨率下的圖像可能包括原始數(shù)據(jù)的變化的混合或子集,或經(jīng)抽象的版本。該技術既允許所有相關數(shù)據(jù)都適應較小的粗略圖像,又向客戶機提供了對該比例下導航相關的向量信息的子集。
盡管以上列出的實現(xiàn)提出了每一分辨率下的8位灰度級預呈現(xiàn)地像,但是預呈現(xiàn)圖像也可以是彩色的。此外,即使預呈現(xiàn)圖像是單通道圖像,它們也可由客戶機彩色地顯示,因為向量數(shù)據(jù)可用于以與預呈現(xiàn)素材不同的顏色繪出重要的道路。最后,預呈現(xiàn)圖像可以省略向量數(shù)據(jù)中存在的某些特征或道路,從而依賴于客戶機來適當?shù)睾铣蓤D像和向量素材。
盡管本發(fā)明此處是參考特定實施例來描述的,但是可以理解,這些實施例僅示出了本發(fā)明的原理和應用。因此,要理解,可對說明性實施例作出眾多修改并且可設計出其它排列而不脫離由所附權利要求書定義的本發(fā)明的精神和范圍。
權利要求書
1.一種傳送指示圖像的信息的方法,包括將一個或多個信息節(jié)點作為第一圖像來傳送、傳送包括指示定義要用于在所述第一圖像中的預定位置處顯示的特性的向量的信息的第二圖像、以及傳送包括所述第一和第二圖像之間的映射的第三圖像,使得所述第一和第二圖像的接收者可使所述第一和第二圖像相關以利用所述預定位置處的所述向量。
2.如權利要求1所述的方法,其特征在于,所述第一圖像是地圖,且其中所述第二圖像是定義僅在預定細節(jié)水平下顯示的可視數(shù)據(jù)的一組向量。
3.如權利要求1所述的方法,其特征在于,所述第一圖像是地圖。
4.如權利要求1所述的方法,其特征在于,所述第二圖像包括超鏈接。
5.如權利要求1所述的方法,其特征在于,所述第一圖像是地圖,且其中所述第二圖像包括一組向量并且其中所述向量中的多個位于與所述第一圖像中要應用所述向量的位置相對應的位置上,且其中所述向量中的多個位于所述第二圖像上不與所述第一圖像上要應用所述向量的所述位置相對應的位置上。
6.如權利要求5所述的方法,其特征在于,還包括利用一高效填塞算法來構造所述第二圖像以減少所述第二圖像上出現(xiàn)一個或多個向量的位置與所述第一圖像上要應用所述一個或多個向量的位置之間的空間的量。
7.如權利要求6所述的方法,其特征在于,所述向量包括啟動節(jié)點或子節(jié)點的信息。
8.一種呈現(xiàn)圖像的方法,包括從遠程計算機接收第一、第二和第三數(shù)據(jù)集,所述第一數(shù)據(jù)集代表圖像,所述第二數(shù)據(jù)集代表定義所述圖像在規(guī)定位置上的特征的向量,而所述第三數(shù)據(jù)集用于規(guī)定所述位置。
9.如權利要求8所述的方法,其特征在于,所述規(guī)定位置是地圖上的街道位置。
10.如權利要求8所述的方法,其特征在于,所述向量表示子節(jié)點,并包括指示所述子節(jié)點應當在什么條件下啟動的信息。
11.如權利要求8所述的方法,其特征在于,所述向量包括到由以下各項構成的組中的至少一個的超鏈接外部網(wǎng)站和嵌入的可視內(nèi)容。
12.如權利要求8所述的方法,其特征在于,所述向量包括到廣告素材的超鏈接。
13.如權利要求8所述的方法,其特征在于,所述向量包括指定用于在所述圖像中預定位置上的部分圖像的呈現(xiàn)方法。
14.一種方法,包括
提供圖像的第一層,所述第一層包括具有所述第一層內(nèi)的位置的所述圖像的特征;以及
提供所述圖像的第二層,所述第二層包括對應于所述特征中相應的一個的數(shù)據(jù)塊;每一所述數(shù)據(jù)塊在所述第二層中基本與所述第一層中對應于每一所述數(shù)據(jù)塊的特征的位置相對應的位置上,其中所述第二層的大小和形狀基本對應于所述第一層的大小和形狀。
15.如權利要求14所述的方法,其特征在于,每一所述數(shù)據(jù)塊描述了所述特征中對應于每一所述數(shù)據(jù)塊的至少一個特性。
16.如權利要求14所述的方法,其特征在于,還包括
提供所述圖像的第三層,所述第三層包括指針,每一所述指針對應于所述特征中相應的一個以及所述數(shù)據(jù)塊中相應的一個。
17.如權利要求16所述的方法,其特征在于,每一所述指針指示每一所述指針的對應數(shù)據(jù)塊相對于每一所述指針的位置的位置。
18.如權利要求15所述的方法,其特征在于,所述描述包括
提供至少一個所述特征的文本數(shù)據(jù)。
19.如權利要求15所述的方法,其特征在于,所述描述包括
提供至少一個所述特征的圖示。
20.如權利要求15所述的方法,其特征在于,所述描述包括
提供指示至少一個所述特征的幾何數(shù)據(jù)。
21.如權利要求20所述的方法,其特征在于,所述幾何數(shù)據(jù)包括輪廓數(shù)據(jù)。
22.如權利要求15所述的方法,其特征在于,所述描述包括
提供至少一個所述特征的色彩信息。
23.如權利要求15所述的方法,其特征在于,所述描述包括
提供到與所述至少一個特征有關的外部網(wǎng)站的至少一個鏈接。
24.如權利要求15所述的方法,其特征在于,所述描述包括
提供與至少一個所述特征有關的嵌入的可視內(nèi)容。
25.如權利要求13所述的方法,其特征在于,所述描述包括
提供與至少一個所述特征有關的廣告信息。
26.如權利要求15所述的方法,其特征在于,所述描述包括
提供路段的圖解細節(jié)。
27.如權利要求15所述的方法,其特征在于,所述描述包括
提供由以下各項構成的組中的至少一個的圖解細節(jié)至少一條道路、至少一個公園、區(qū)域地形、水體水文地理、至少一個建筑物、至少一個公共廁所、至少一個無線保真站、至少一條電力線、以及至少一個體育館。
28.一種包括在一個或多個軟件程序的控制下操作的處理單元的裝置,所述軟件程序用于使所述處理單元執(zhí)行以下動作,包括
提供圖像的第一層,所述第一層包括具有所述第一層內(nèi)的位置的所述圖像的特征;以及
提供所述圖像的第二層,所述第二層包括對應于所述特征中相應的一個的數(shù)據(jù)塊;每一所述數(shù)據(jù)塊在所述第二層中基本與所述第一層中對應于每一所述數(shù)據(jù)塊的特征的位置相對應的位置上,其中所述第二層的大小和形狀基本對應于所述第一層的大小和形狀。
29.一種包含一個或多個軟件程序的存儲介質(zhì),所述軟件程序用于使處理單元執(zhí)行以下動作,包括
提供圖像的第一層,所述第一層包括具有所述第一層內(nèi)的位置的所述圖像的特征;以及
提供所述圖像的第二層,所述第二層包括對應于所述特征中相應的一個的數(shù)據(jù)塊;每一所述數(shù)據(jù)塊在所述第二層中基本與所述第一層中對應于每一所述數(shù)據(jù)塊的特征的位置相對應的位置上,其中所述第二層的大小和形狀基本對應于所述第一層的大小和形狀。
30.一種方法,包括
提供圖像的第一層,所述第一層包括具有所述第一層內(nèi)的位置的所述圖像的特征;
提供所述圖像的第二層,所述第二層包括對應于并描述所述特征中相應的一個的數(shù)據(jù)塊,每一所述數(shù)據(jù)塊在所述第二層中至少基本與所述第一層中對應于每一所述數(shù)據(jù)塊的特征的位置相對應的位置上;以及
提供所述圖像的第三層,所述第三層包括具有所述第三層中的位置的指針,每一所述指針對應于所述特征中相應的一個以及所述數(shù)據(jù)塊中相應的一個,每一所述指針在所述第三層中的位置至少基本對應于所述第一層中與每一所述指針相對應的特征的位置。
31.如權利要求30所述的方法,其特征在于,所述第二層和所述第三層各自具有對應于所述第一層的大小和形狀的大小和形狀。
32.如權利要求30所述的方法,其特征在于,還包括
從所述第一層、所述第二層和所述第三層的組合形成地像。
33.如權利要求32所述的方法,其特征在于,還包括平坦化所述地像中的數(shù)據(jù)。
34.如權利要求30所述的方法,其特征在于,每一所述指針指示每一所述指針的對應數(shù)據(jù)塊相對于每一所述指針的位置的位置。
35.如權利要求34所述的方法,其特征在于,所述指示包括標識二維中的偏移。
36.如權利要求35所述的方法,其特征在于,所述偏移的每一所述維以像素來表達。
37.如權利要求35所述的方法,其特征在于,所述指示包括將偏移標識為沿Hilbert曲線的一維距離。
38.如權利要求37所述的方法,其特征在于,沿所述一維曲線的所述偏移以像素為單位來表達。
39.如權利要求37所述的方法,其特征在于,沿所述一維曲線的所述偏移以對應于像素的整數(shù)倍的單位來表達。
40.如權利要求30所述的方法,其特征在于,所述提供所述圖像的第二層包括
采用一填塞算法來定位每一所述數(shù)據(jù)塊以實現(xiàn)每一所述數(shù)據(jù)塊與每一所述數(shù)據(jù)塊在所述第二層中的目標位置的最大接近度,所述第二層中的所述目標位置對應于所述第一層中與每一所述數(shù)據(jù)塊相對應的特征的位置。
41.如權利要求40所述的方法,其特征在于,所述最大接近度是基于每一所述數(shù)據(jù)塊的位置與每一所述數(shù)據(jù)塊的所述目標位置之間的最短直線距離來確定的。
42.如權利要求40所述的方法,其特征在于,所述最大接近度是基于每一所述數(shù)據(jù)塊的位置與每一所述數(shù)據(jù)塊的所述目標位置之間的二維中每一維的偏移的絕對值之和來確定的。
43.如權利要求40所述的方法,其特征在于,所述最大接近度是基于每一所述數(shù)據(jù)塊的位置與每一所述數(shù)據(jù)塊的所述目標位置之間的最小Hilbert曲線長度來確定的。
44.一種包含一個或多個軟件程序的存儲介質(zhì),所述軟件程序可用于使得處理單元執(zhí)行以下動作,包括
提供圖像的第一層,所述第一層包括具有所述第一層內(nèi)的位置的所述圖像的特征;
提供所述圖像的第二層,所述第二層包括對應于并描述所述特征中相應的一個的數(shù)據(jù)塊,每一所述數(shù)據(jù)塊在所述第二層中至少基本與所述第一層中對應于每一所述數(shù)據(jù)塊的特征的位置相對應的位置上;以及
提供所述圖像的第三層,所述第三層包括具有所述第三層中的位置的指針,每一所述指針對應于所述特征中相應的一個以及所述數(shù)據(jù)塊中相應的一個,每一所述指針在所述第三層中的位置至少基本對應于所述第一層中與每一所述指針相對應的特征的位置。
45.如權利要求44所述的存儲介質(zhì),其特征在于,所述第二層和所述第三層各自具有對應于所述第一層的大小和形狀的大小和形狀。
46.如權利要求44所述的存儲介質(zhì),其特征在于,所述處理單元還執(zhí)行以下動作
從所述第一層、所述第二層和所述第三層的組合形成地像。
47.如權利要求44所述的存儲介質(zhì),其特征在于,每一所述指針指示每一所述指針的對應數(shù)據(jù)塊相對于每一所述指針的位置的位置。
48.如權利要求44所述的存儲介質(zhì),其特征在于,所述指示包括標識二維中的偏移。
49.如權利要求44所述的存儲介質(zhì),其特征在于,所述提供所述圖像的第二層包括
采用一填塞算法來定位每一所述數(shù)據(jù)塊以實現(xiàn)每一所述數(shù)據(jù)塊與每一所述數(shù)據(jù)塊在所述第二層中的目標位置的最大接近度,所述第二層中的所述目標位置對應于所述第一層中與每一所述數(shù)據(jù)塊相對應的特征的位置。
50.如權利要求49所述的存儲介質(zhì),其特征在于,所述最大接近度是基于每一所述數(shù)據(jù)塊的位置與每一所述數(shù)據(jù)塊的所述目標位置之間的最短直線距離來確定的。
51.一種包括在一個或多個軟件程序的控制下操作的處理單元的裝置,所述軟件程序可用于使得所述處理單元執(zhí)行以下動作,包括
提供圖像的第一層,所述第一層包括具有所述第一層內(nèi)的位置的所述圖像的特征;
提供所述圖像的第二層,所述第二層包括對應于并描述所述特征中相應的一個的數(shù)據(jù)塊,每一所述數(shù)據(jù)塊在所述第二層中至少基本與所述第一層中對應于每一所述數(shù)據(jù)塊的特征的位置相對應的位置上;以及
提供所述圖像的第三層,所述第三層包括具有所述第三層中的位置的指針,每一所述指針對應于所述特征中相應的一個以及所述數(shù)據(jù)塊中相應的一個,每一所述指針在所述第三層中的位置至少基本對應于所述第一層中與每一所述指針相對應的特征的位置。
52.如權利要求51所述的裝置,其特征在于,所述第二層和所述第三層各自具有對應于所述第一層的大小和形狀的大小和形狀。
53.如權利要求51所述的裝置,其特征在于,所述處理單元還執(zhí)行以下動作
從所述第一層、所述第二層和所述第三層的組合形成地像。
54.如權利要求51所述的裝置,其特征在于,每一所述指針指示每一所述指針的對應數(shù)據(jù)塊相對于每一所述指針的位置的位置。
55.如權利要求54所述的裝置,其特征在于,所述指示包括標識二維中的偏移。
56.如權利要求51所述的裝置,其特征在于,所述提供所述圖像的第二層包括
采用一填塞算法來定位每一所述數(shù)據(jù)塊以實現(xiàn)每一所述數(shù)據(jù)塊與每一所述數(shù)據(jù)塊在所述第二層中的目標位置的最大接近度,所述第二層中的所述目標位置對應于所述第一層中與每一所述數(shù)據(jù)塊相對應的特征的位置。
57.如權利要求56所述的裝置,其特征在于,所述最大接近度是基于每一所述數(shù)據(jù)塊的位置與每一所述數(shù)據(jù)塊的所述目標位置之間的最短直線距離來確定的。
摘要
公開了一種系統(tǒng)和方法,包括提供圖像的第一層,該第一層包括具有第一層內(nèi)的位置的圖像的特征;以及提供圖像的第二層,該第二層包括對應于這些特征中相應的一個的數(shù)據(jù)塊;每一數(shù)據(jù)塊在第二層中基本與第一層中對應于每一數(shù)據(jù)塊的特征的位置相對應的位置上,其中第二層的大小和形狀基本對應于所述第一層的大小和形狀。
權利要求
1.一種方法,包括
在通信鏈路上建立第一計算機和第二計算機之間的通信,所述第二計算機具有以壓縮圖像數(shù)據(jù)的形式存儲其中的圖像集合;
在所述圖像集合中選擇第一圖像以在所述第一計算機上查看;
從所述第二計算機向所述第一計算機發(fā)送所述第一圖像的壓縮圖像數(shù)據(jù)的至少一部分,其中所述發(fā)送包括將所述第一圖像的第一感興趣區(qū)域的全分辨率圖像數(shù)據(jù)下載到所述第一計算機。
2.如權利要求1所述的方法,其特征在于,所述發(fā)送包括
至少發(fā)送所述第一圖像的在所述第一感興趣區(qū)域之外的區(qū)域的低分辨率圖像數(shù)據(jù)。
3.如權利要求2所述的方法,其特征在于,所述至少發(fā)送低分辨率圖像數(shù)據(jù)包括
發(fā)送外部區(qū)域的所述圖像數(shù)據(jù),其中所述外部區(qū)域圖像數(shù)據(jù)是以隨著逐步靠近所述第一感興趣區(qū)域而增高的分辨率來提供的。
4.如權利要求3所述的方法,其特征在于,還包括
至少部分地降低所述第一感興趣區(qū)域的所述圖像數(shù)據(jù)存儲在所述第一計算機上的分辨率水平;以及
將所述第一圖像的第二感興趣區(qū)域的附加圖像數(shù)據(jù)下載到所述第一計算機,以允許以全分辨率呈現(xiàn)所述第二感興趣區(qū)域。
5.如權利要求4所述的方法,其特征在于,所述第二感興趣區(qū)域與所述第一感興趣區(qū)域重疊。
6.如權利要求4所述的方法,其特征在于,所述第二感興趣區(qū)域不與所述第一感興趣區(qū)域重疊。
7.如權利要求4所述的方法,其特征在于,還包括
重復所述部分降低步驟和所述下載附加圖像數(shù)據(jù)步驟以提供轉(zhuǎn)換的感興趣區(qū)域。
8.如權利要求1所述的方法,其特征在于,還包括
在所述圖像集合中選擇多個附加圖像;
在從所述第二計算機向所述第一計算機發(fā)送所述選定圖像中的任一個的全部之前,從所述第二計算機向所述第一計算機發(fā)送所述選定圖像的每一個的圖像數(shù)據(jù)的至少一部分。
9.一種方法,包括
在通信鏈路上建立第一計算機與第二計算機之間的通信,所述第二計算機具有以壓縮圖像數(shù)據(jù)形式存儲其中的圖像集合;
在所述集合中選擇多個圖像以傳送給所述第一計算機;
在發(fā)送所述選定圖像的任一個的全分辨率圖像數(shù)據(jù)之前,從所述第二計算機向所述第一計算機發(fā)送全部所述選定圖像的低分辨率圖像數(shù)據(jù)。
10.如權利要求9所述的方法,其特征在于,還包括
發(fā)送所述選定圖像的給定之一的感興趣區(qū)域的全分辨率圖像數(shù)據(jù),所述感興趣區(qū)域比所述給定圖像的全部小。
11.如權利要求10所述的方法,其特征在于,還包括
發(fā)送所述給定圖像在所述感興趣區(qū)域外面的部分的低于全分辨率圖像數(shù)據(jù)。
12.如權利要求11所述的方法,其特征在于,所述發(fā)送所述圖像的所述外面部分的低于全分辨率圖像數(shù)據(jù)包括
發(fā)送所述外面部分圖像數(shù)據(jù),以使得所述給定圖像的所述外面部分存儲在所述第一計算機上的分辨率隨著逐步靠近所述感興趣區(qū)域而增高。
13.如權利要求9所述的方法,其特征在于,所述多個圖像是一出版物的多個頁面。
14.如權利要求13所述的方法,其特征在于,所述出版物的所述多個頁面具有一限定的順序次序。
15.如權利要求14所述的方法,其特征在于,具有所述順序次序的所述頁面被依次編號。
16.如權利要求14所述的方法,其特征在于,還包括
以全分辨率呈現(xiàn)所述多個頁面的第一選定頁面,其中所述第一選定頁面是第一活動頁面。
17.如權利要求16所述的方法,其特征在于,還包括
以低于全分辨率呈現(xiàn)所述多個頁面中除所述第一活動頁面之外的頁面。
18.如權利要求17所述的方法,其特征在于,還包括
以隨著頁面離所述第一活動頁面的距離增大而降低的分辨率水平來呈現(xiàn)所述其它頁面。
19.如權利要求18所述的方法,其特征在于,所述多個其它頁面以多個分辨率呈現(xiàn),所述多個分辨率等于呈現(xiàn)所述第一活動頁面的所述全分辨率除以一常數(shù)的所述多個其它頁面中的相應頁面相對于所述第一活動頁面放置的距離次冪。
20.如權利要求19所述的方法,其特征在于,所述常數(shù)等于2。
21.如權利要求17所述的方法,其特征在于,還包括
丟棄所述圖像數(shù)據(jù)的至少一部分,從而允許以所述全分辨率呈現(xiàn)所述第一活動頁面;
以全分辨率呈現(xiàn)所述多個頁面的第二選定頁面,由此使所述第二選定頁面成為第二活動頁面。
22.如權利要求21所述的方法,其特征在于,所述第二活動頁面按頁面的所述順序次序緊靠所述第一活動頁面之前、或緊隨所述第一活動頁面之后。
23.如權利要求21所述的方法,其特征在于,所述第二活動頁面按頁面的所述順序次序距離所述第一活動頁面至少兩個頁面。
24.如權利要求9所述的方法,其特征在于,所述第二計算機是便攜式設備。
25.如權利要求24所述的方法,其特征在于,所述第一計算機是個人計算機。
26.如權利要求24所述的方法,其特征在于,所述第一計算機是web服務器。
27.如權利要求9所述的方法,其特征在于,所述通信鏈路包括所述第一計算機和所述第二計算機之間的直接鏈路。
28.如權利要求9所述的方法,其特征在于,所述通信鏈路包括因特網(wǎng)通信鏈路。
29.如權利要求25所述的方法,其特征在于,所述便攜式設備是數(shù)碼相機,而所述多個圖像是照片。
30.如權利要求29所述的方法,其特征在于,還包括
完成所述照片的所述數(shù)據(jù)從所述數(shù)碼相機向所述個人計算機的所述發(fā)送。
31.如權利要求30所述的方法,其特征在于,還包括
將所述圖片上傳到web服務器。
32.如權利要求30所述的方法,其特征在于,還包括
將所述發(fā)送數(shù)據(jù)存儲在所述個人計算機的虛擬顯示器中。
33.如權利要求32所述的方法,其特征在于,所述虛擬顯示器包括能夠至少部分地描述所述圖像的小波數(shù)據(jù)。
34.如權利要求32所述的方法,其特征在于,還包括
繼續(xù)所述發(fā)送和所述存儲,直到以指定分辨率表示所述虛擬顯示器中的所述圖像數(shù)據(jù)。
35.如權利要求34所述的方法,其特征在于,還包括
在物理顯示器上以所述指定分辨率呈現(xiàn)存儲在所述虛擬顯示器中的所述圖像數(shù)據(jù)。
36.如權利要求9所述的方法,其特征在于,還包括
在所述第一計算機上提供所述圖像集合中所有圖像的高速緩存的表示,其中所述高速緩存的表示以比所述圖像集合存儲在所述第二計算機中的分辨率更低的分辨率來存儲,所述圖像的所述高速緩存的表示是所述第一計算機的高速緩存內(nèi)的高速緩存圖像。
37.如權利要求36所述的方法,其特征在于,還包括
將所述第一計算機的高速緩存內(nèi)的所述高速緩存圖像填塞到一綜合畫中,以使得所述高速緩存圖像向物理顯示器的呈現(xiàn)在所述物理顯示器的緊湊區(qū)域內(nèi)顯示所述綜合畫。
38.如權利要求37所述的方法,其特征在于,所述緊湊區(qū)域至少基本上是矩形。
39.如權利要求37所述的方法,其特征在于,還包括
允許所述第一計算機的用戶放大和縮小所述綜合畫。
40.如權利要求37所述的方法,其特征在于,還包括
允許所述第一計算機的用戶掃視所述綜合畫。
41.如權利要求37所述的方法,其特征在于,還包括
使元數(shù)據(jù)與所述高速緩存圖像集相關聯(lián),所述集中具有至少一個高速緩存圖像。
42.如權利要求41所述的方法,其特征在于,還包括
用所述元數(shù)據(jù)將每一所述高速緩存圖像集鏈接到每一所述集內(nèi)的圖像的更詳細呈現(xiàn)。
43.如權利要求42所述的方法,其特征在于,還包括
當對所述綜合畫的導航到達指定的縮放閾值時使用所述元數(shù)據(jù)調(diào)用到所述更詳細呈現(xiàn)的所述鏈接。
44.如權利要求37所述的方法,其特征在于,還包括
使用紋理映射重新排列所述高速緩存中的所述經(jīng)填塞的高速緩存圖像。
45.如權利要求44所述的方法,其特征在于,所述紋理映射用軟件實現(xiàn)。
46.如權利要求44所述的方法,其特征在于,所述紋理映射是硬件加速的。
47.如權利要求44所述的方法,其特征在于,所述紋理映射包括對所述綜合畫執(zhí)行三維立體變換。
全文摘要
公開了一種系統(tǒng)和方法,它可包括在通信鏈路上建立第一計算機與第二計算機之間的通信,所述第二計算機具有以壓縮圖像數(shù)據(jù)的形式存儲其中的圖像集合;在該集合中選擇多個圖像以傳送給所述第一計算機;以及在發(fā)送任一選定圖像的全分辨率圖像數(shù)據(jù)之前從第二計算機向第一計算機發(fā)送全部選定圖像的低分辨率圖像數(shù)據(jù)。
文檔編號G06T17/00GK101147174SQ200580043057
公開日2008年3月19日 申請日期2005年10月17日 優(yōu)先權日2004年10月15日
發(fā)明者B·阿格拉亞阿卡斯, J·沃克, I·吉爾曼 申請人:微軟公司