亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于基于dwt的系統(tǒng)的運(yùn)動(dòng)補(bǔ)償?shù)牡蛷?fù)雜度方法

文檔序號:6435347閱讀:131來源:國知局
專利名稱:用于基于dwt的系統(tǒng)的運(yùn)動(dòng)補(bǔ)償?shù)牡蛷?fù)雜度方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于基于DWT的系統(tǒng)的運(yùn)動(dòng)補(bǔ)償?shù)牡蛷?fù)雜度方法。
背景技術(shù)
虛擬機(jī)平臺通過在每個(gè)操作系統(tǒng)自己的虛擬機(jī)內(nèi)運(yùn)行該操作系統(tǒng)來允許多個(gè)客操作系統(tǒng)在物理機(jī)上的同時(shí)執(zhí)行??梢栽谔摂M機(jī)中提供的一個(gè)示例性服務(wù)是虛擬桌面會話。虛擬桌面會話在本質(zhì)上是在虛擬機(jī)內(nèi)運(yùn)行的將其用戶界面發(fā)送到遠(yuǎn)程計(jì)算機(jī)的個(gè)人計(jì)算機(jī)環(huán)境。這一體系結(jié)構(gòu)類似于遠(yuǎn)程桌面環(huán)境,但改為將多個(gè)用戶同時(shí)連接到操作系統(tǒng),在虛擬桌面會話中每一用戶能夠訪問在虛擬桌面環(huán)境中的虛擬機(jī)中執(zhí)行的他們自己的操作系統(tǒng)。現(xiàn)代操作系統(tǒng)實(shí)施了用于3D應(yīng)用/視頻游戲的三維(3D)圖形用戶界面及其操作系統(tǒng)用戶界面。用戶享受與3D環(huán)境交互的體驗(yàn),并且所期望的將是能夠在虛擬桌面會話中將3D圖形流傳輸給客戶端;然而,由于多種原因而難以實(shí)現(xiàn)流傳輸3D圖形。例如,流傳輸 3D圖形的動(dòng)作需要帶寬和/或壓縮。帶寬是有限的,并且通常在通過因特網(wǎng)連接時(shí)不受客戶端或服務(wù)器控制。壓縮可以減小必須從服務(wù)器發(fā)送給客戶端的數(shù)據(jù)量;然而,壓縮操作具有高等待時(shí)間并且是處理器密集的。因此,所期望的是用于減小必須從服務(wù)器發(fā)送給客戶端的數(shù)據(jù)量和/或?yàn)榱藢λ鰯?shù)據(jù)進(jìn)行壓縮所花費(fèi)的時(shí)間的方案。

發(fā)明內(nèi)容
一示例性實(shí)施例包括一種系統(tǒng)。在該示例中,系統(tǒng)包括但不限于處理器、以及在計(jì)算機(jī)系統(tǒng)可操作時(shí)與該處理器通信的存儲器。在該示例中,該存儲器可以包括計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令在執(zhí)行以后致使該處理器通過離散小波變換過程將圖像小塊分解成一組子帶圖像,其中該組子帶圖像至少包括低通子帶圖像;量化該組子帶圖像;從低通子帶圖像和該低通子帶圖像的上一版本中確定一組運(yùn)動(dòng)矢量;從該組子帶圖像的上一版本和該組運(yùn)動(dòng)矢量中為該組子帶圖像確定一組增量陣列;以及將所確定的增量陣列和該組運(yùn)動(dòng)矢量發(fā)送給遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。除以上之外,權(quán)利要求書具體實(shí)施方式
和附圖中描述了其他技術(shù)。另一示例性實(shí)施例包括一種方法。在該示例中,該方法包括但不限于通過離散小波變換過程將圖像小塊分解成一組一級子帶圖像、一組二級子帶圖像以及一組三級子帶圖像;量化該組一級子帶圖像、該組二級子帶圖像以及該組三級子帶圖像;從三級低通子帶圖像和該三級低通子帶圖像的上一版本中確定一組三級運(yùn)動(dòng)矢量;從參考子帶圖像和該組三級運(yùn)動(dòng)矢量中為該組一級子帶圖像、該組二級子帶圖像和該組三級子帶圖像確定增量陣列;以及將所確定的增量陣列和至少該組三級運(yùn)動(dòng)矢量發(fā)送給遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。除以上之外,權(quán)利要求書具體實(shí)施方式
和附圖中描述了其他技術(shù)。另一示例性實(shí)施例包括計(jì)算機(jī)可讀存儲介質(zhì)。在該示例中,該計(jì)算機(jī)可讀存儲介質(zhì)包括計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令在執(zhí)行以后致使該處理器根據(jù)一組運(yùn)動(dòng)矢量對一組子帶圖像進(jìn)行重新定位;將增量矢量應(yīng)用于該組經(jīng)重新定位的子帶圖像,由此獲得一組經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像;對該組經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像進(jìn)行逆量化;通過離散小波逆變換過程將該組經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像組合成圖像小塊;以及顯示該圖像小塊。除以上之外,權(quán)利要求書具體實(shí)施方式
和附圖中描述了其他技術(shù)。本領(lǐng)域技術(shù)人員將理解,本公開的一個(gè)或多個(gè)各種方面可包括但不限于用于實(shí)現(xiàn)此處所引用的方面的電路和/或編程;該電路和/或編程實(shí)質(zhì)上可以是配置成實(shí)現(xiàn)本文所引用的方面的硬件、軟件和/或固件的任何組合,這取決于系統(tǒng)設(shè)計(jì)者的設(shè)計(jì)選擇。以上是概述,并且因此必然包含細(xì)節(jié)的簡化、一般化及省略。本領(lǐng)域技術(shù)人員將明白,本概述只是說明性的并且決不旨在是限制性的。


圖1描繪了計(jì)算機(jī)系統(tǒng)的高級框圖。
圖2描繪了虛擬機(jī)服務(wù)器的高級框圖。
圖3描繪了虛擬機(jī)服務(wù)器的高級框圖。
圖4描繪了虛擬桌面服務(wù)器的高級框圖。
圖5描繪了虛擬桌面服務(wù)器的高級框圖。
圖6描繪了示例性的壓縮算法。
圖7描繪了經(jīng)分解的圖像小塊。
圖8描繪了用于對圖像進(jìn)行壓縮的操作過程。
圖9示出了包括附加操作的圖8的操作過程。
圖10描繪了用于對圖像進(jìn)行壓縮的操作過程。
圖11示出了包括附加操作的圖10的操作過程。
圖12描繪了用于對圖像進(jìn)行壓縮的操作過程。
圖13示出了包括附加操作的圖12的操作過程。
具體實(shí)施例方式所公開的主題可以使用一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)。圖1及以下討論旨在提供可在其中實(shí)現(xiàn)所公開的主題的合適計(jì)算環(huán)境的簡要概括描述。貫穿本說明書使用的術(shù)語“電路”可包括諸如硬件中斷控制器、硬盤驅(qū)動(dòng)器、網(wǎng)絡(luò)適配器、圖形處理器、基于硬件的視頻/音頻編解碼器等硬件組件,以及用于操作這些硬件的固件。術(shù)語“電路”還可以包括由固件和/或軟件來配置的進(jìn)行指令讀取和執(zhí)行的微處理器、專用集成電路、以及處理器,例如多核通用處理單元的核。處理器可由從例如RAM、R0M、 固件和/或大容量存儲等存儲器加載的指令來配置,從而具體化可用于配置處理器來執(zhí)行功能的邏輯。在其中電路包括硬件和軟件的組合的示例實(shí)施例中,實(shí)現(xiàn)者可以編寫具體化邏輯的源代碼,該源代碼隨后被編譯成可由硬件執(zhí)行的機(jī)器可讀代碼。因?yàn)楸绢I(lǐng)域技術(shù)人員可以明白現(xiàn)有技術(shù)已經(jīng)進(jìn)化到硬件實(shí)現(xiàn)的功能或軟件實(shí)現(xiàn)的功能之間幾乎沒有差別的地步,因而選擇硬件還是軟件來實(shí)現(xiàn)此處描述的功能只是一個(gè)設(shè)計(jì)選擇。換言之,由于本領(lǐng)域的技術(shù)人員可以理解軟件進(jìn)程可被變換成等效的硬件結(jié)構(gòu),且硬件結(jié)構(gòu)本身可被變換成等效的軟件進(jìn)程,因此選擇硬件實(shí)現(xiàn)或是軟件實(shí)現(xiàn)留給了實(shí)現(xiàn)者。
5
現(xiàn)在參考圖1,描繪了示例性計(jì)算系統(tǒng)100。計(jì)算機(jī)系統(tǒng)100可包括處理器102, 例如,執(zhí)行核。盡管示出了一個(gè)處理器102,但在其他實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可具有多個(gè)處理器,例如每一處理器襯底有多個(gè)執(zhí)行核,和/或各自可具有多個(gè)執(zhí)行核的多個(gè)處理器襯底。如圖所示,各種計(jì)算機(jī)可讀存儲介質(zhì)110可由一個(gè)或多個(gè)系統(tǒng)總線互連,所述系統(tǒng)總線將各種系統(tǒng)組件耦合到處理器102。系統(tǒng)總線可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包括存儲器總線或存儲器控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。在一示例實(shí)施例中,計(jì)算機(jī)可讀存儲介質(zhì)110可以包括例如隨機(jī)存取存儲器 (RAM) 104、存儲設(shè)備106(例如電機(jī)硬盤驅(qū)動(dòng)器、固態(tài)硬盤驅(qū)動(dòng)器等)、固件108(例如閃速 RAM或ROM)、以及可移動(dòng)存儲設(shè)備118 (例如CD-ROM、軟盤、DVD、閃速驅(qū)動(dòng)器、外部存儲設(shè)備等)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可使用其他類型的計(jì)算機(jī)可讀存儲介質(zhì),如磁帶盒、閃存卡、和/或數(shù)字視頻盤。計(jì)算機(jī)可讀存儲介質(zhì)110可以提供處理器可執(zhí)行指令122、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及用于計(jì)算機(jī)100的其他數(shù)據(jù)的非易失性和易失性存儲?;据斎?輸出系統(tǒng)(BIOS) 120 可被存儲在固件108中,它包含幫助在諸如啟動(dòng)期間在計(jì)算機(jī)系統(tǒng)100內(nèi)的各元件之間傳遞信息的基本例程。包括操作系統(tǒng)和/或應(yīng)用程序的多個(gè)程序可被存儲在固件108、存儲設(shè)備106、RAM 104和/或可移動(dòng)存儲設(shè)備118上,并且可由處理器102來執(zhí)行。命令和信息可由計(jì)算機(jī)100通過輸入設(shè)備116來接收,輸入設(shè)備可包括但不限于鍵盤和定點(diǎn)設(shè)備。其他輸入設(shè)備可以包括話筒、操縱桿、游戲手柄、掃描儀等等。這些和其他輸入設(shè)備常通過耦合到系統(tǒng)總線的串行端口接口連接到處理器102,但也可通過其他接口連接,如并行端口、游戲端口或通用串行總線(USB)。顯示器或其他類型的顯示設(shè)備也可經(jīng)由諸如視頻適配器等可以是圖形處理器單元112的一部分或可連接到圖形處理器單元112 的接口來連接到系統(tǒng)總線。除顯示器之外,計(jì)算機(jī)通常包括其他外圍輸出設(shè)備,如揚(yáng)聲器和打印機(jī)(未示出)。圖1的示例性系統(tǒng)還可包括主適配器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線和連接到SCSI總線的外部存儲設(shè)備。計(jì)算機(jī)系統(tǒng)100可以使用到諸如遠(yuǎn)程計(jì)算機(jī)之類的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)可以是另一計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他常見的網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括上面關(guān)于計(jì)算機(jī)系統(tǒng)100所述的許多或全部元件。當(dāng)在LAN或WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)系統(tǒng)100可通過網(wǎng)絡(luò)接口卡114連接至LAN或WAN。NIC 114可以是內(nèi)置或外置的,其可以連接到系統(tǒng)總線。在聯(lián)網(wǎng)環(huán)境中,相對于計(jì)算機(jī)系統(tǒng)100所描述的程序模塊或其部分可被儲存在遠(yuǎn)程存儲器存儲設(shè)備中??梢岳斫?,所描述的網(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間建立通信鏈路的其他手段。 雖然可構(gòu)想本發(fā)明的許多實(shí)施例尤其適用于計(jì)算機(jī)化的系統(tǒng),然而在本說明中不意味著將本發(fā)明限于那些實(shí)施例。轉(zhuǎn)到圖2,示出了可被用來生成虛擬機(jī)的示例性虛擬化平臺。在該實(shí)施例中,系統(tǒng)管理程序微內(nèi)核202可被配置成控制并仲裁對計(jì)算機(jī)系統(tǒng)200的硬件的訪問。系統(tǒng)管理程序微內(nèi)核202可以生成稱為分區(qū)的執(zhí)行環(huán)境,如子分區(qū)1到子分區(qū)N(其中N是大于1的整數(shù))。在此,子分區(qū)是系統(tǒng)管理程序微內(nèi)核202所支持的基本隔離單元。系統(tǒng)管理程序微內(nèi)核202可以隔離一個(gè)分區(qū)中的進(jìn)程,使其不能訪問另一分區(qū)的資源。每個(gè)子分區(qū)都可以被映射到在系統(tǒng)管理程序微內(nèi)核202控制之下的一組硬件資源,例如,存儲器、設(shè)備、處理器周期等。在各實(shí)施例中,系統(tǒng)管理程序微內(nèi)核202可以是獨(dú)立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件中、專用集成電路、或其組合。系統(tǒng)管理程序微內(nèi)核202可以通過限制物理計(jì)算機(jī)系統(tǒng)中的客操作系統(tǒng)的存儲器視圖來實(shí)施分區(qū)。當(dāng)系統(tǒng)管理程序微內(nèi)核202實(shí)例化一虛擬機(jī)時(shí),它可以將系統(tǒng)物理存儲器(SPM)的頁(例如,具有開始和結(jié)束地址的固定長度存儲器塊)分配給虛擬機(jī)作為客物理存儲器(GPM)。在此,客機(jī)的受限的系統(tǒng)存儲器視圖受系統(tǒng)管理程序微內(nèi)核202控制。 術(shù)語“客物理存儲器”是從虛擬機(jī)的視點(diǎn)描述存儲器頁的簡寫方式,且術(shù)語系統(tǒng)物理存儲器是從物理系統(tǒng)的觀點(diǎn)描述存儲器頁的簡寫方式。因此,被分配給虛擬機(jī)的存儲器頁會有客物理地址(虛擬機(jī)所使用的地址)和系統(tǒng)物理地址(頁的實(shí)際地址)??筒僮飨到y(tǒng)可以虛擬化客物理存儲器。虛擬存儲器是一種管理技術(shù),其允許操作系統(tǒng)過度提交存儲器,并且給予應(yīng)用程序?qū)B續(xù)工作存儲器的唯一訪問。在虛擬化環(huán)境中, 客操作系統(tǒng)可以使用一個(gè)或多個(gè)頁表來將已知為虛擬客地址的虛擬地址轉(zhuǎn)換成客物理地址。在該示例中,存儲器地址可以具有客虛擬地址、客物理地址以及系統(tǒng)物理地址。在所描繪的示例中,父分區(qū)組件也可被認(rèn)為是類似于Xen的開源系統(tǒng)管理程序的域0,父分區(qū)組件可以包括主機(jī)204。主機(jī)204可以是操作系統(tǒng)(或一組配置實(shí)用程序),并且主機(jī)204可以被配置成通過使用虛擬服務(wù)提供者228 (VSP)向在子分區(qū)1_N中執(zhí)行的客操作系統(tǒng)提供資源。VPS 228(—般在開源社區(qū)中被稱為后端驅(qū)動(dòng)程序)可用來通過虛擬服務(wù)客戶機(jī)(VSC)(在開源社區(qū)或類虛擬化設(shè)備中一般稱為前端驅(qū)動(dòng)程序)對到硬件資源的接口進(jìn)行多路復(fù)用。如圖所示,虛擬服務(wù)客戶機(jī)可以在客操作系統(tǒng)的上下文中執(zhí)行。然而, 這些驅(qū)動(dòng)程序不同于客機(jī)中的其余驅(qū)動(dòng)程序,因?yàn)橄蛩鼈兲峁┝讼到y(tǒng)管理程序而非客機(jī)。 在一示例性實(shí)施例中,虛擬服務(wù)提供者228與虛擬服務(wù)客戶機(jī)216和218通信所使用的路徑可以被視為虛擬路徑。如圖所示,仿真器234(例如虛擬化IDE設(shè)備、虛擬化視頻適配器、虛擬化NIC等) 可被配置成在主機(jī)204中運(yùn)行并被附加到可供客操作系統(tǒng)220和222使用的資源。例如,當(dāng)客操作系統(tǒng)接觸被映射到設(shè)備的寄存器所處的存儲器位置、或者存儲器被映射的設(shè)備時(shí), 微內(nèi)核系統(tǒng)管理程序202可截取該請求并將客機(jī)試圖寫入的值傳遞給相關(guān)聯(lián)的仿真器。在此,該示例中的資源可被認(rèn)為是虛擬設(shè)備所處的位置。仿真器的以這種方式的使用可以被視為仿真路徑。仿真路徑與虛擬化路徑相比是低效的,因?yàn)榕c在VSP和VSC之間傳遞消息相比,它需要更多的CPU資源來仿真設(shè)備。例如,可以將經(jīng)由仿真路徑把值寫入盤所需的、 被映射至寄存器的存儲器上的幾百個(gè)動(dòng)作減少為一個(gè)消息,該消息在虛擬路徑中從VSC被傳遞至VSP。每個(gè)子分區(qū)都可包括一個(gè)或多個(gè)虛擬處理器Q30和23 ,客操作系統(tǒng)Q20和 222)可管理并調(diào)度線程以便在這些虛擬處理器上執(zhí)行。一般而言,虛擬處理器是提供具有特定架構(gòu)的物理處理器的表示的可執(zhí)行指令以及相關(guān)聯(lián)的狀態(tài)信息。例如,一個(gè)虛擬機(jī)可具有帶有英特爾x86處理器特性的虛擬處理器,而另一虛擬處理器可具有PowerPC處理器的特性。本例中的虛擬處理器可被映射到計(jì)算機(jī)系統(tǒng)的處理器,使得實(shí)現(xiàn)虛擬處理器的指令將得到處理器的支持。由此,在包括多個(gè)處理器的實(shí)施例中,虛擬處理器可以由處理器同時(shí)執(zhí)行,同時(shí)例如其他處理器執(zhí)行系統(tǒng)管理程序指令。分區(qū)中虛擬處理器和存儲器的組合可被認(rèn)為是虛擬機(jī)??筒僮飨到y(tǒng)Q20和222)可以是任何操作系統(tǒng),如來自微軟 、蘋果 、開源社區(qū)等的操作系統(tǒng)??筒僮飨到y(tǒng)可包括用戶/內(nèi)核操作模式,并且可具有能包括調(diào)度器、存儲器管理器等的內(nèi)核。一般而言,內(nèi)核模式可包括處理器中的執(zhí)行模式,該執(zhí)行模式授予至少對特權(quán)處理器指令的訪問。每一客操作系統(tǒng)可具有相關(guān)聯(lián)的文件系統(tǒng),該文件系統(tǒng)上存儲有諸如終端服務(wù)器、電子商務(wù)服務(wù)器、電子郵件服務(wù)器等應(yīng)用程序以及客操作系統(tǒng)本身??筒僮飨到y(tǒng)可調(diào)度線程來在虛擬處理器上執(zhí)行,并且可實(shí)現(xiàn)此類應(yīng)用程序的實(shí)例?,F(xiàn)在參考圖3,示出了上述圖2中的可替代的虛擬化平臺。圖3描繪了與圖2的組件相類似的組件;然而,在該示例實(shí)施例中,系統(tǒng)管理程序302可包括微內(nèi)核組件以及和圖 2的主機(jī)204中的組件(如虛擬服務(wù)提供者2 和設(shè)備驅(qū)動(dòng)程序224)相類似的組件,而管理操作系統(tǒng)304可包含例如用于配置系統(tǒng)管理程序302的配置實(shí)用程序。在該體系結(jié)構(gòu)中, 系統(tǒng)管理程序302可以執(zhí)行與圖2的系統(tǒng)管理程序微內(nèi)核202相同或相似的功能;然而,在該體系結(jié)構(gòu)中,圖3的系統(tǒng)管理程序302可被配置成向在子分區(qū)中執(zhí)行的客操作系統(tǒng)提供資源。圖3的系統(tǒng)管理程序302可以是獨(dú)立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件內(nèi),或者系統(tǒng)管理程序302的一部分可以由專用集成電路來實(shí)現(xiàn)?,F(xiàn)在參考圖4,它示出虛擬桌面服務(wù)器400的高級框圖。在一實(shí)施例中,虛擬桌面服務(wù)器400可以被配置成部署到客戶機(jī)(例如,諸如智能電話的移動(dòng)設(shè)備)、具有和圖1所示組件相似的組件的計(jì)算機(jī)系統(tǒng)等等的虛擬桌面會話(VDQ。簡言之,虛擬桌面技術(shù)使用戶能與虛擬機(jī)中運(yùn)行的客操作系統(tǒng)遠(yuǎn)程地交互。不同于遠(yuǎn)程桌面會話,在虛擬桌面會話中,僅僅一個(gè)用戶登錄到客操作系統(tǒng)中并且該用戶可以對其具有總控制,例如,該用戶可以作為管理員運(yùn)行并且在客機(jī)上具有完全的權(quán)限。在所示例子中,虛擬桌面服務(wù)器400可以具有與圖2和圖3的計(jì)算機(jī)系統(tǒng)200或300類似的組件。虛擬化平臺402是上面在圖2和圖3 中所述的虛擬化基礎(chǔ)結(jié)構(gòu)組件的邏輯抽象。在以下章節(jié)中被描述為在虛擬化平臺402 “以內(nèi)”的功能可以在圖2和圖3所述的一個(gè)或多個(gè)元件中實(shí)現(xiàn)。例如,將在下面的段落中更詳細(xì)描述的3D圖形服務(wù)管理器404可以在圖2的主機(jī)204中實(shí)現(xiàn)。在一個(gè)更特定的示例中, 3D圖形服務(wù)管理器404可以在父分區(qū)中運(yùn)行的主機(jī)操作系統(tǒng)中實(shí)現(xiàn)。虛擬桌面會話的啟動(dòng)要求對虛擬機(jī)內(nèi)的客操作系統(tǒng)進(jìn)行實(shí)例化。在一示例性實(shí)施例中,虛擬桌面管理器(例如處理器可執(zhí)行指令的模塊)可以響應(yīng)于請求而啟動(dòng)虛擬機(jī) 414 (其可以引導(dǎo)客操作系統(tǒng)428)。虛擬桌面管理器可以在邏輯處理器上執(zhí)行,并且可以指示虛擬化平臺402(例如微內(nèi)核系統(tǒng)管理程序20 為分區(qū)分配存儲器。虛擬化平臺402可以執(zhí)行并且配置虛擬機(jī)414的存儲器內(nèi)的虛擬設(shè)備,并且將引導(dǎo)加載器程序加載到分配給 VM 414的存儲器中。引導(dǎo)加載器程序可以在虛擬處理器上執(zhí)行(其進(jìn)而可以在處理器上運(yùn)行),并且客操作系統(tǒng)4 可以加載在虛擬機(jī)414內(nèi)。會話管理器408可以由客操作系統(tǒng) 428來加載,并且其可以加載諸如運(yùn)行時(shí)子系統(tǒng)似6之類的環(huán)境子系統(tǒng),所述環(huán)境子系統(tǒng)可以包括諸如操作系統(tǒng)核410之類的內(nèi)核模式部分。例如,在一實(shí)施例中,環(huán)境子系統(tǒng)可以被配置成將服務(wù)的子集展示給應(yīng)用程序并向內(nèi)核420提供訪問點(diǎn)。當(dāng)客操作系統(tǒng)4 被加載時(shí),引導(dǎo)加載器程序可以退出,并將對虛擬機(jī)414的控制轉(zhuǎn)交給客操作系統(tǒng)428??筒僮飨到y(tǒng)4 可以執(zhí)行圖4所示的各個(gè)模塊,并且將其自身配置為主控虛擬桌面會話。例如,客操作系統(tǒng)4 可以包括致使遠(yuǎn)程呈現(xiàn)引擎406、會話管理器408等等在引導(dǎo)以后啟動(dòng)的注冊表
在客操作系統(tǒng)4 運(yùn)行以后的某個(gè)時(shí)刻,其可以從客戶端接收連接請求。該傳入的連接請求可以首先由遠(yuǎn)程呈現(xiàn)引擎406來處理,該遠(yuǎn)程呈現(xiàn)引擎406可以被配置為監(jiān)聽連接消息,并且當(dāng)接收到消息時(shí),其可以產(chǎn)生棧實(shí)例。遠(yuǎn)程呈現(xiàn)引擎406可以運(yùn)行會話的協(xié)議棧實(shí)例,并且3D圖形用戶界面(其在虛擬化平臺402中渲染)可以被遠(yuǎn)程顯示子系統(tǒng) 418捕捉并且通過協(xié)議棧實(shí)例發(fā)送給客戶端。一般而言,協(xié)議棧實(shí)例可被配置成將用戶界面輸出路由到相關(guān)聯(lián)的客戶機(jī)、以及將從相關(guān)聯(lián)的客戶機(jī)接收到的用戶輸入路由到操作系統(tǒng)核410。簡言之,操作系統(tǒng)核410可以被配置成管理屏幕輸出收集來自鍵盤、鼠標(biāo)和其它設(shè)備的輸入。用戶憑證(例如用戶名/ 口令組合)可由遠(yuǎn)程呈現(xiàn)引擎406接收并被傳遞至?xí)捁芾砥?08。會話管理器408可以將憑證傳遞至登錄過程,登錄過程可以將憑證路由至認(rèn)證子系統(tǒng)424以進(jìn)行驗(yàn)證。認(rèn)證子系統(tǒng)似4可以確定用戶憑證是有效的并且可以啟動(dòng)虛擬桌面會話,也就是說用戶可以登陸到客操作系統(tǒng)428。認(rèn)證子系統(tǒng)似4還可以生成系統(tǒng)令牌,該系統(tǒng)令牌可以在每當(dāng)用戶嘗試執(zhí)行一進(jìn)程時(shí)使用,以確定用戶是否具有運(yùn)行該進(jìn)程或線程的安全憑證。例如,當(dāng)進(jìn)程或線程嘗試獲得訪問時(shí)(例如,打開、關(guān)閉、刪除和/或修改例如文件、設(shè)置或應(yīng)用程序這樣的對象),線程或進(jìn)程可由安全子系統(tǒng)422來認(rèn)證。安全子系統(tǒng)422可以對照與對象相關(guān)聯(lián)的訪問控制列表來檢查系統(tǒng)令牌,并且基于系統(tǒng)令牌中的信息與訪問控制列表的比較來確定線程是否具有許可。如果安全子系統(tǒng)422確定線程被授權(quán),則允許該線程訪問對象。繼續(xù)對圖4的描述,在一實(shí)施例中,操作系統(tǒng)核410可以包括圖形顯示界面 416(⑶I)和輸入子系統(tǒng)412。在一示例實(shí)施例中,輸入子系統(tǒng)412可以被配置成經(jīng)由虛擬桌面會話的協(xié)議棧實(shí)例從客戶機(jī)接收用戶輸入,并將該輸入發(fā)送至操作系統(tǒng)核410。在一些實(shí)施例中,用戶輸入可包括表示絕對和/或相對鼠標(biāo)運(yùn)動(dòng)命令、鼠標(biāo)坐標(biāo)、鼠標(biāo)點(diǎn)擊、鍵盤信號、操縱桿運(yùn)動(dòng)信號等的信號。例如對圖標(biāo)的鼠標(biāo)雙擊之類的用戶輸入可被操作系統(tǒng)核410接收,并且輸入子系統(tǒng)412可被配置成確定圖標(biāo)位于與該雙擊相關(guān)聯(lián)的坐標(biāo)處。輸入子系統(tǒng)412隨后可被配置成向可執(zhí)行與該圖標(biāo)相關(guān)聯(lián)的應(yīng)用的進(jìn)程的運(yùn)行時(shí)子系統(tǒng)4 發(fā)送通知。轉(zhuǎn)到圖5,圖5示出了用于將虛擬桌面服務(wù)器400配置為將表示三維圖形用戶界面的圖像流傳輸給諸如客戶端520之類的客戶端的組件。簡言之,客戶端520可以包括具有與圖1所示的組件類似的組件的計(jì)算機(jī)系統(tǒng)、移動(dòng)設(shè)備或瘦客戶端。例如,瘦客戶端可以具有商業(yè)硬件和單片式web瀏覽器,該web瀏覽器被配置為管理該硬件、用戶輸入和輸出并且連接到因特網(wǎng)。在該示例中,瘦客戶端還可以包括將在下面的段落中更詳細(xì)描述的客戶端運(yùn)動(dòng)補(bǔ)償模塊518、客戶端處理器526、例如顯示器之類的用戶界面522、以及任選的客戶端 3D圖形處理單元524。虛擬桌面服務(wù)器400可以包括運(yùn)動(dòng)補(bǔ)償模塊404,該運(yùn)動(dòng)補(bǔ)償模塊404以虛線示出以指示在一示例性的實(shí)施例中,運(yùn)動(dòng)補(bǔ)償模塊404可以由例如處理器102或圖形處理單元 504之類的處理單元來實(shí)施,或者在編解碼器502的固件或邏輯內(nèi)實(shí)現(xiàn)。例如,運(yùn)動(dòng)補(bǔ)償模塊404可以被寫入指令,所述指令致使基于x86的處理器內(nèi)的單指令多數(shù)據(jù)(SIMD)指令處理某些操作。在另一示例中,運(yùn)動(dòng)補(bǔ)償模塊404可以用著色器語言來編寫。在又一示例中,運(yùn)動(dòng)補(bǔ)償模塊404的邏輯可以在編解碼器502內(nèi)的硬件中實(shí)現(xiàn),該編解碼器502可以附加到虛擬桌面服務(wù)器400的主板。在一示例性的實(shí)施例中,運(yùn)動(dòng)補(bǔ)償模塊的實(shí)例可以運(yùn)行在 3D圖形處理單元504上,另一實(shí)例可以運(yùn)行在處理器102上,并且編解碼器502可以執(zhí)行運(yùn)動(dòng)補(bǔ)償模塊操作。選擇由CPU、GPU和/或在硬件內(nèi)來實(shí)施運(yùn)動(dòng)補(bǔ)償模塊404是設(shè)計(jì)選擇, 該設(shè)計(jì)選擇可以基于虛擬桌面服務(wù)器400內(nèi)的處理器和圖形處理單元的數(shù)量、以及以硬件或硬件/軟件的組合來實(shí)現(xiàn)該模塊的期望度。這樣的選擇留給實(shí)現(xiàn)者。繼續(xù)對圖5的描述,圖5示出了 3D應(yīng)用506,該3D應(yīng)用506可以是客操作系統(tǒng)似8 的圖形用戶界面、3D文字處理程序、3D視頻游戲等等。3D應(yīng)用可以向3D圖形應(yīng)用程序接口 (API) 508發(fā)出指令,該3D圖形應(yīng)用程序接口仏 1)508可以是諸如來自微軟@的0丨1^(^30 之類的API。簡言之,3D圖形API 508提供例如視頻游戲之類的圖形應(yīng)用與3D圖形服務(wù)客戶端510之間的抽象層。一方面,3D圖形API 508提供到3D圖形服務(wù)客戶端510所展示的圖形處理單元接口的低級接口,另一方面其提供可以由應(yīng)用調(diào)用的3D圖形命令庫。API508 可以將3D圖形命令庫映射到由3D圖形服務(wù)客戶端510展示的接口,由此使游戲開發(fā)者不必理解每個(gè)圖形驅(qū)動(dòng)程序的特性。在操作中,API 508可以生成例如基本幾何形狀之類的圖元,其中該圖元在計(jì)算機(jī)圖形中用作被表示成頂點(diǎn)和常數(shù)的其他形狀的構(gòu)建塊,并且API 508將該頂點(diǎn)存儲在例如存儲器頁之類的多個(gè)頂點(diǎn)緩沖器中。當(dāng)API 508發(fā)出渲染命令時(shí),3D圖形服務(wù)客戶端510可以對命令和數(shù)據(jù)進(jìn)行格式化;將其打包到一個(gè)或多個(gè)GPU令牌中;以及通過共享的存儲器 514將GPU令牌與對頂點(diǎn)緩沖器的位置的描述一起發(fā)送給3D-GPU服務(wù)提供器512。3D-GPU 服務(wù)提供器512可以執(zhí)行和提取來自GPU令牌的渲染命令和數(shù)據(jù),并且將其翻譯回將被API 發(fā)出的命令和指令。然后,3D-GPU服務(wù)提供器512可以將該命令發(fā)出給3D GPU驅(qū)動(dòng)程序 516。圖形處理單元504可以執(zhí)行和生成表示圖像幀的位圖,例如像素值陣列。3D-GPU 服務(wù)提供器512可以捕捉位圖并且將該位圖傳遞給運(yùn)動(dòng)補(bǔ)償模塊404,該運(yùn)動(dòng)補(bǔ)償模塊404 將在下面段落中更詳細(xì)描述。一般而言,運(yùn)動(dòng)補(bǔ)償模塊404可以對幀進(jìn)行壓縮并且通過共享的存儲器514將圖像發(fā)送給虛擬機(jī)414。經(jīng)壓縮的幀可以被發(fā)送給遠(yuǎn)程呈現(xiàn)引擎406并且通過一個(gè)或多個(gè)信息分組被發(fā)送給客戶端?,F(xiàn)在轉(zhuǎn)到圖6,圖6示出了可以用于實(shí)施運(yùn)動(dòng)補(bǔ)償模塊404的示例性模塊、以及可以用于實(shí)施客戶端運(yùn)動(dòng)補(bǔ)償模塊518的示例性模塊。這些示例性模塊中的一些或全部可以以GPU可執(zhí)行指令、CPU可執(zhí)行指令和/或在硬件邏輯內(nèi)實(shí)現(xiàn)。而且,這些模塊中的一些是虛線示出的,以指示它們被認(rèn)為是任選的。在圖形處理單元504生成了表示幀(源圖像)的位圖以后,該幀可以被運(yùn)動(dòng)補(bǔ)償模塊404捕捉并且被小塊化(tiling)模塊602處理。在一示例性的實(shí)施例中,小塊化模塊 602可以將源幀劃分成各個(gè)小塊,所述小塊被實(shí)現(xiàn)為來自源圖像的圖像數(shù)據(jù)的連續(xù)部分。在一特定的實(shí)施例中,102^10 像素幀可以被劃分成16個(gè)6虹64像素的小塊。繼續(xù)對圖6的描述,在幀被分割成小塊以后,每個(gè)小塊任選地可以由差分模塊616 來處理。差分模塊616可以接收小塊并且將當(dāng)前小塊與相應(yīng)的參考小塊相比較。參考小塊可以是來自上一幀的相應(yīng)小片(參考小塊)。在該示例中,差分模塊616可以通過將表示小塊的位圖與相同小塊的上一版本相比較來確定當(dāng)前小塊是否已經(jīng)相對于對比小塊被改變。如果小塊中的像素值從一幀到下一幀不具有改變,則差分模塊616丟棄該小塊。在差分模塊616由運(yùn)行在處理器102上的可執(zhí)行指令(即SIMD指令)來實(shí)施的示例性實(shí)施例中,多個(gè)小塊可以在單個(gè)操作中同時(shí)與參考小塊相比較。在另一示例性的實(shí)施例中,差分模塊616 可以由運(yùn)行在3D圖形處理單元504上的著色器指令來實(shí)施。在該示例中,3D圖形處理單元 504的多個(gè)著色器流水線可以用于同時(shí)將源小塊與參考小塊相比較。在檢測到改變的小塊以后,運(yùn)動(dòng)補(bǔ)償模塊404可以被配置為估計(jì)該小塊如何從以前的版本改變,并且將差(增量)發(fā)送給客戶端520。本質(zhì)上,運(yùn)動(dòng)補(bǔ)償包括搜索一個(gè)或多個(gè)運(yùn)動(dòng)矢量;將所述一個(gè)或多個(gè)運(yùn)動(dòng)矢量應(yīng)用于源圖像;以及計(jì)算與根據(jù)所述一個(gè)或多個(gè)運(yùn)動(dòng)矢量重新定位的源圖像之間的增量。運(yùn)動(dòng)矢量精確度取決于圖像中所使用的運(yùn)動(dòng)矢量的數(shù)目以及搜索的精確度。在一示例性的實(shí)施例中,運(yùn)動(dòng)矢量搜索操作和增量計(jì)算可以在已經(jīng)由DWT模塊 604對源圖像執(zhí)行了離散小波變換以后執(zhí)行。搜索運(yùn)動(dòng)矢量和在DWT域中根據(jù)數(shù)據(jù)生成增量陣列(例如表示參考圖像小塊與經(jīng)重新定位的源圖像小塊之間的差的像素值陣列)通過如下方式減小了虛擬桌面服務(wù)器400上的負(fù)擔(dān)消除了傳統(tǒng)的壓縮技術(shù)由于其在空間域中執(zhí)行運(yùn)動(dòng)矢量搜索和增量陣列計(jì)算而經(jīng)歷的開銷。也就是說,不需要在虛擬桌面服務(wù)器 400上執(zhí)行通常執(zhí)行的逆DWT操作,因?yàn)樗阉骱驮隽筷嚵杏?jì)算在DWT域中進(jìn)行。類似于幀差分模塊616,DWT模塊604可以由在處理器102上運(yùn)行的可執(zhí)行指令來實(shí)施,并且可以使用 SIMD指令來在單個(gè)操作中同時(shí)對多個(gè)小塊執(zhí)行DWT操作。在另一示例性的實(shí)施例中,DffT 模塊604可以由運(yùn)行在3D圖形處理單元504上的著色器指令來實(shí)施。在該示例中,3D圖形處理單元504的多個(gè)著色器流水線可以用于同時(shí)對多個(gè)小塊執(zhí)行DWT操作。。最后,DWT模塊604也可以在編解碼器502的硬件邏輯中實(shí)現(xiàn)。例如,簡要地參考圖7,圖7示出了通過對圖像小塊進(jìn)行三個(gè)離散小波變換所獲得的所得到的經(jīng)分解的小塊700。離散小波變換(DWT)將源圖像小塊的像素陣列的各個(gè)顏色分量分解成相應(yīng)的顏色子帶。例如,在單個(gè)變換以后,圖像小塊被分解成四個(gè)像素子帶,一個(gè)對應(yīng)于一級低通子帶(LL)702并且其他三個(gè)一級低通子帶對應(yīng)于水平(HL)704子帶、垂直(LH) 706子帶、以及對角線高通(HH)708子帶??偟膩碚f,經(jīng)分解的圖像示出了 LL子帶中的粗糙逼近圖像、以及較高子帶中的三個(gè)詳細(xì)圖像。每個(gè)一級子帶都是原始小塊的尺寸的四分之一(即在原始小塊為64x64像素的實(shí)例中為32x32像素)。如該附圖所示,一級低通帶702可以進(jìn)一步被分解以獲得另一等級的分解,由此產(chǎn)生16x16像素的二級子帶710、 712,714和716。二級LL子帶710可以進(jìn)一步被分解成四個(gè)8x8像素的三級子帶三級LL 718、三級LH 722、三級HL 720、以及三級HH 724。簡要地回到圖6,在已經(jīng)獲得經(jīng)離散小波變換的小塊以后,這些小塊可以被發(fā)送給量化模塊606,該量化模塊606可以被配置為對子帶圖像進(jìn)行壓縮,并且然后這些小塊被發(fā)送給運(yùn)動(dòng)預(yù)測模塊614。運(yùn)動(dòng)預(yù)測模塊614可以被配置為在一個(gè)或所有LL子帶(例如圖7 的一級LL子帶702、二級LL子帶710、或者三級LL子帶72 中搜索運(yùn)動(dòng)矢量。選擇搜索哪個(gè)LL子帶取決于實(shí)現(xiàn)者的目的。例如,與在二級中相比,運(yùn)動(dòng)矢量搜索可以在三級中更快速地執(zhí)行;然而,由于三級具有較低的分辨率,因此運(yùn)動(dòng)矢量精確度較低。如果實(shí)現(xiàn)者想要優(yōu)化速度,則他或她可以在三級中執(zhí)行搜索。如果實(shí)現(xiàn)者想要優(yōu)化精確度,則他或她可以在一級中執(zhí)行搜索。在另一實(shí)施例中,實(shí)現(xiàn)者可以將從較高等級(三級)獲得的運(yùn)動(dòng)矢量用作在較低等級(二級)中的搜索的參考點(diǎn)。回到圖7,圖7示出了三級LL子帶718中的搜索。如該附圖所示,在三級LL子帶 718中獲得了四個(gè)運(yùn)動(dòng)矢量(盡管獲得了四個(gè)運(yùn)動(dòng)矢量,但是本領(lǐng)域的技術(shù)人員能夠理解, 可以獲得更小或更大數(shù)目的運(yùn)動(dòng)矢量)。例如,運(yùn)動(dòng)預(yù)測模塊614可以被配置為將三級LL 子帶718細(xì)分成四個(gè)4x4像素的塊,并且然后執(zhí)行搜索,由此產(chǎn)生三級LL子帶718中的4 個(gè)運(yùn)動(dòng)矢量。該搜索可以通過將4x4像素塊與三級LL子帶718中的其他像素相比較來執(zhí)行。例如,來自源圖像的第一像素塊可以與來自參考圖像的相應(yīng)像素塊相比較,并且誤差(即兩個(gè)塊之間的差)可以被計(jì)算出。運(yùn)動(dòng)補(bǔ)償模塊404可以移動(dòng)來自源圖像的第一像素塊;記錄用于對塊進(jìn)行重新定位的矢量;以及將經(jīng)重新定位的第一像素塊與來自參考圖像的相應(yīng)的新像素塊相比較。該操作可以在進(jìn)行了預(yù)定次數(shù)的比較操作或者獲得了最小誤差值以前一直進(jìn)行。在未獲得最小誤差時(shí),用于產(chǎn)生最低誤差的矢量可以被選為第一像素塊的運(yùn)動(dòng)矢量。運(yùn)動(dòng)補(bǔ)償模塊404可以在處理器102、3D圖形處理單元504上和/或編解碼器502 中同時(shí)計(jì)算第二、第三、第四像素塊的運(yùn)動(dòng)矢量。該組所確定的運(yùn)動(dòng)矢量由圖7的運(yùn)動(dòng)矢量 7 來示出。由于三級子帶是二級子帶的大小的1/4,一級子帶的大小的1/8,因此每個(gè)三級運(yùn)動(dòng)矢量都可以乘以標(biāo)量以便獲得二級運(yùn)動(dòng)矢量728,以及乘以另一標(biāo)量以獲得一級運(yùn)動(dòng)矢量730。在一示例性的實(shí)施例中,誤差可以使用多種技術(shù)之一來計(jì)算。例如,可以使用均方誤差、絕對差之和、平均絕對差、平方誤差之和、以及絕對差之和度量來計(jì)算誤差。在一示例性的實(shí)施例中,可以使用絕對差之和度量,因?yàn)檫@些運(yùn)算可以比其他一些度量更快地執(zhí)行。 例如,塊內(nèi)的每個(gè)像素都可以由整數(shù)來表示。也就是說,在4x4像素塊中,該塊可以具有16 個(gè)整數(shù),每像素一個(gè)整數(shù)。來自源圖像小塊的塊可以與來自參考圖像小塊的16像素的塊相比較,并且可以獲得每個(gè)像素的絕對差。然后,該絕對差可以一起相加以獲得絕對差值之和 (“SAD”)值。然后,來自源圖像小塊的塊可以與來自參考圖像小塊的其他塊相比較,并且可以計(jì)算出SAD值。具有最低SAD值的塊與參考塊最相似,并且用于從源圖像小塊移動(dòng)像素值塊的矢量可以被設(shè)置成運(yùn)動(dòng)矢量。在運(yùn)動(dòng)矢量已經(jīng)被獲得和縮放以后,可以使用運(yùn)動(dòng)矢量來為每個(gè)子帶圖像生成增量陣列。例如,每個(gè)子帶圖像(例如在三級LL子帶718中執(zhí)行運(yùn)動(dòng)矢量搜索這一實(shí)例中的 10個(gè)子帶圖像)可以被發(fā)送給求和模塊608,該求和模塊使用運(yùn)動(dòng)矢量來偏移子帶圖像并且從參考圖像小塊中減去源圖像小塊來創(chuàng)建增量陣列。在圖7所示的實(shí)施例中,在DWT域中可以生成10個(gè)增量陣列每個(gè)子帶圖像一個(gè)增量陣列。如圖6所示,增量陣列可以被發(fā)送給熵編碼器模塊610,該熵編碼器模塊610可以執(zhí)行熵編碼過程以對增量陣列和運(yùn)動(dòng)矢量進(jìn)行壓縮。熵編碼器模塊610可以被配置為基于可用傳輸帶寬和存儲器資源選出多個(gè)不同編碼器之一來執(zhí)行熵編碼過程。示例性的熵編石馬技術(shù)可以包括在名禾爾為"System and method foreffectively encoding and decoding electronic information (用于有效地對電子信息進(jìn)行編碼和解碼的系統(tǒng)和方法)”的美國專利No. 7,460,725中所描述的技術(shù),該申請的全部內(nèi)容通過引用并入本申請。然后,經(jīng)壓縮的增量陣列和運(yùn)動(dòng)矢量可以在一個(gè)或多個(gè)小塊包中與該幀中的每個(gè)其他小塊的增量陣列和運(yùn)動(dòng)矢量一起被發(fā)送給客戶端520。另外,增量陣列和運(yùn)動(dòng)矢量可以被發(fā)送給另一加法器模塊612,該加法器模塊612可以將增量陣列與通過該運(yùn)動(dòng)被重新定位的子帶參考小塊圖像相加。這些子帶參考小塊圖像反映客戶端520的狀態(tài),并且可以在下一捕捉操作期間用作參考小塊圖像,而不使用來自空間域的參考圖像?;氐綀D5,客戶端520可以通過因特網(wǎng)接收一個(gè)或多個(gè)表示運(yùn)動(dòng)矢量和增量陣列的分組,并且將包含在該分組內(nèi)的信息路由到客戶端3D圖形處理單元524、編解碼器(未示出)、或者處理器526??蛻舳诉\(yùn)動(dòng)補(bǔ)償模塊518可以對小塊進(jìn)行解壓縮,重建幀并且將表示幀的位圖寫入存儲器。然后,位圖可以由用戶界面522顯示。參考圖6,客戶端運(yùn)動(dòng)壓縮模塊518可以接收小塊包,并且提取小塊的子帶圖像和運(yùn)動(dòng)矢量,并且將該小塊的子帶圖像和運(yùn)動(dòng)矢量發(fā)送給熵解碼器模塊616,該熵解碼器模塊 616可以對子帶圖像和運(yùn)動(dòng)矢量進(jìn)行解壓縮。如該附圖所示,運(yùn)動(dòng)矢量可以被發(fā)送給運(yùn)動(dòng)調(diào)節(jié)模塊620,該運(yùn)動(dòng)調(diào)節(jié)模塊620可以包括表示用戶界面522當(dāng)前所顯示的小塊的子帶圖像。運(yùn)動(dòng)矢量可以用于重新定位表示用戶界面522當(dāng)前所顯示的小塊的子帶圖像,并且經(jīng)重新定位的子帶圖像可以被發(fā)送給加法器模塊618,該加法器模塊618可以將增量陣列與經(jīng)重新定位的子帶圖像相加。在特定的示例中,與當(dāng)前所顯示的幀相關(guān)聯(lián)的一級HH子帶圖像的四個(gè)部分可以根據(jù)四個(gè)經(jīng)縮放的一級矢量730被重新定位,并且被發(fā)送給加法器模塊 618。表示與當(dāng)前所顯示的幀相關(guān)聯(lián)的一級HH子帶圖像的像素陣列可以與一級HH子帶圖像的增量陣列相加。可以并行地對每個(gè)子帶圖像執(zhí)行類似的操作。所得到的經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像可以被發(fā)送給逆量化模塊622,并且然后被發(fā)送給離散小波逆變換模塊624。離散小波逆變換模塊6M可以被配置為從經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像中組合小塊。參考圖7,在一示例性的實(shí)施例中,圖6的逆DWT模塊6 可以被配置為從圖7所示的10個(gè)子帶圖像中組合圖像小塊。在該示例中,逆DWT模塊6M可以將三級子帶圖像(718、720、722和724)組合成二級LL子帶圖像710。然后,逆DWT模塊6M可以取得二級LL子帶圖像710、二級LH子帶圖像714、二級HL子帶圖像712、以及二級HH子帶圖像716,并且將它們組合以形成一級LL子帶圖像702。最后,逆DWT模塊6M可以取得一級 LL子帶圖像702、一級LH子帶圖像706、一級HL子帶圖像704、以及一級HH子帶圖像708, 并且將它們組合以形成圖像小塊。逆DWT模塊6M可以并行地運(yùn)行在圖形處理單元504或處理器102上,并且可以用單個(gè)操作組合其他小塊。然后,小塊可以被安排和寫入存儲器。 然后,可以向用戶界面522渲染表示幀的位圖。下面是描繪操作過程的一系列流程圖。為便于理解,流程圖被組織成使得初始流程圖通過總體“大圖”視點(diǎn)來渲染各實(shí)現(xiàn),并且后續(xù)的流程圖提供以虛線示出的進(jìn)一步的附加物和/或細(xì)節(jié)。此外,本領(lǐng)域的技術(shù)人員可以理解,虛線所描繪的操作過程被認(rèn)為是任選的。參考圖8,圖8示出了包括操作800-810的用于對虛擬桌面會話期間的圖像進(jìn)行壓縮的操作過程。操作800開始該操作過程,并且操作802示出了 通過離散小波變換過程將圖像小塊分解成一組子帶圖像,其中該組子帶圖像至少包括一低通子帶圖像。例如,在一實(shí)施例中,離散小波變換模塊604可以被配置為將圖像小塊(即圖像的子部分)分解(即分隔)成子帶。例如并且參考圖7,子帶可以至少包括低級低通子帶(LL),比如LL子帶718、 710或702。低通子帶與其他子帶相比以最低分辨率示出了對圖像小塊的粗糙逼近。繼續(xù)對圖8的描述,操作804示出了 對該組子帶圖像進(jìn)行量化。例如,在一實(shí)施例中,在分解以后但在運(yùn)動(dòng)估計(jì)以前,該組子帶圖像可以由量化模塊606量化。在該示例性實(shí)施例中,可以使用量化來壓縮子帶圖像。操作806示出了 從該低通子帶圖像以及該低通子帶圖像的上一版本中確定一組運(yùn)動(dòng)矢量。例如并且再次轉(zhuǎn)到圖6,在該示例中,運(yùn)行補(bǔ)償模塊404可以包括運(yùn)動(dòng)預(yù)測模塊 614,例如可執(zhí)行指令。在該示例中,運(yùn)動(dòng)預(yù)測模塊614可以通過搜索小塊的低通子帶圖像來確定運(yùn)動(dòng)矢量,例如二維矢量,該運(yùn)動(dòng)矢量可以定義與源圖像小塊中的像素坐標(biāo)的偏差。在至少一個(gè)示例性的實(shí)施例中,可以執(zhí)行9點(diǎn)菱形搜索來找出合適的運(yùn)動(dòng)矢量。 例如,參考子帶小塊圖像的像素陣列中的中心點(diǎn)可以與來自源低級低通子帶小塊圖像的像素塊一起被選出??梢酝ㄟ^將源低級低通子帶小塊圖像的像素塊與參考子帶小塊圖像相比較來為菱形上的每個(gè)點(diǎn)計(jì)算出SAD值,并且可以保存最低的SAD值。然后,該菱形的中心點(diǎn)例如可以被偏移到具有最低SAD值的點(diǎn),并且可以為該菱形的5個(gè)點(diǎn)計(jì)算SAD值??梢员4鎭碜栽摬僮鞯淖畹蚐AD值。在一示例性實(shí)施例中,具有最低SAD值的的點(diǎn)的坐標(biāo)可以被設(shè)置成運(yùn)動(dòng)矢量,或者可以執(zhí)行所期望數(shù)目的附加迭代。搜索越長,則壓縮方案花費(fèi)時(shí)間越長。繼續(xù)對圖8的描述,操作808示出了 從該組子帶圖像的之前版本以及該組運(yùn)動(dòng)矢量中為該組子帶圖像確定一組增量陣列。例如并且再次參考6,該組運(yùn)動(dòng)矢量可以用于為該組中的每個(gè)子帶圖像確定增量陣列。例如,可以使用運(yùn)動(dòng)矢量來相對于參考子帶圖像偏移子帶圖像,并且然后可以計(jì)算出差。例如,來自當(dāng)前小塊(即源)的一級對角線子帶圖像(HH)、以及之前例如在上一捕捉操作期間獲得的參考一級對角線子帶圖像可以被發(fā)送給加法器模塊608。一級對角線子帶圖像內(nèi)的每個(gè)像素塊的中心點(diǎn)可以使用運(yùn)動(dòng)矢量來重新定位。在對源子帶圖像進(jìn)行重新定位以后,可以從源子帶圖像中減去表示參考子帶圖像的像素陣列。如果運(yùn)動(dòng)矢量導(dǎo)致良好的匹配,則所得到的陣列應(yīng)當(dāng)主要包括0值。轉(zhuǎn)到操作810,該操作示出了 將所確定的增量陣列和該組運(yùn)動(dòng)矢量發(fā)送給遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。參考圖5,所確定的增量陣列和運(yùn)動(dòng)矢量可以被運(yùn)動(dòng)補(bǔ)償模塊404通過共享存儲器514發(fā)送給遠(yuǎn)程呈現(xiàn)引擎406。遠(yuǎn)程呈現(xiàn)引擎406可以在虛擬處理器上執(zhí)行(也就是說,遠(yuǎn)程呈現(xiàn)引擎406可以在受限的上下文中在處理器102上運(yùn)行),并且致使所確定的增量陣列和運(yùn)動(dòng)矢量通過一個(gè)或多個(gè)分組被發(fā)送給客戶端。在一示例性的實(shí)施例中,3D圖形處理單元504可以用于實(shí)施上述操作中的某些操作。在該實(shí)施例中,運(yùn)動(dòng)補(bǔ)償模塊404的某些功能可以并行地在3D圖形處理單元504上運(yùn)行。例如在一實(shí)施例中,DffT模塊604、加法器模塊608和612和/或運(yùn)動(dòng)預(yù)測模塊614例如可以以著色器指令來實(shí)現(xiàn)。簡言之,著色器指令是主要用于計(jì)算渲染效果的GPU指令集。 由于著色器被編寫為以將變換應(yīng)用于大的元素集合,因此著色器良好地適于處理運(yùn)動(dòng)補(bǔ)償模塊404的并行處理,使得多個(gè)小塊可以同時(shí)被處理?,F(xiàn)在參考圖9,圖9示出圖8的操作過程的可替代的實(shí)施例,其包括附加操作 912-926。操作912示出了 通過將從低通子帶圖像獲得的像素值相繼地與從該低通子帶圖像的上一版本中獲得像素值相比較來確定該組運(yùn)動(dòng)矢量。例如,運(yùn)動(dòng)預(yù)測模塊614可以被配置為相繼地將來自源低通子帶圖像的像素值塊與來自參考圖像的像素值塊比較。例如, 運(yùn)動(dòng)預(yù)測模塊614可以選擇像素值塊并且記錄源塊的坐標(biāo)。然后,運(yùn)動(dòng)預(yù)測模塊614可以將源塊與具有相同坐標(biāo)的參考塊相比較并且確定該塊是否匹配。然后,運(yùn)動(dòng)預(yù)測模塊614可以對源快重新定位;記錄被其用于對該源快進(jìn)行重新定位的矢量;以及將該源快與來自參考塊的處于該位置的像素值相比較并且計(jì)算出二者之間的誤差。運(yùn)動(dòng)預(yù)測模塊614可以繼續(xù)該過程,直到在預(yù)定義的誤差閾值下進(jìn)行計(jì)算或者進(jìn)行了預(yù)定義次數(shù)的比較操作。當(dāng)該過程進(jìn)行時(shí),運(yùn)動(dòng)預(yù)測模塊614可以用多個(gè)不同的源像素塊來執(zhí)行相同的操作。在該過程結(jié)束以后,運(yùn)動(dòng)預(yù)測模塊614可以被配置為選擇用于獲得最低誤差的矢量作為運(yùn)動(dòng)矢量。繼續(xù)對圖9的描述,操作914示出了 通過將三級低通子帶圖像劃分成多個(gè)像素值塊并且相繼地將所述多個(gè)像素塊與從該三級低通子帶圖像的上一版本中獲得的像素值塊相比較來確定該組運(yùn)動(dòng)矢量。例如并且參考圖6,在一實(shí)施例中,運(yùn)動(dòng)預(yù)測模塊614可以被配置為確定四個(gè)運(yùn)動(dòng)矢量來自三級低通子帶圖像718的每4x4像素塊一個(gè)運(yùn)動(dòng)矢量。該子帶圖像小塊可以通過分解一級低通子帶702并且然后分解二級低通子帶710來獲得。該組操作產(chǎn)生三級LL718。然后,該組四個(gè)運(yùn)動(dòng)矢量可以使用與上述技術(shù)類似的技術(shù)來確定。繼續(xù)對圖9的描述,操作916示出了 從三級低通子帶圖像以及該三級低通子帶圖像的上一版本中確定該組運(yùn)動(dòng)矢量。例如并且參考圖6,在一實(shí)施例中,運(yùn)動(dòng)預(yù)測模塊614 可以被配置為從三級低通子帶(3級LL 718)中確定運(yùn)動(dòng)矢量。該子帶圖像小塊可以通過分解一級低通子帶702并且然后分解二級低通子帶710來獲得。該組操作產(chǎn)生三級LL 718。 由于分辨率如此低,因此所得到的矢量與通過在數(shù)值上更低的子帶內(nèi)進(jìn)行搜索將獲得的運(yùn)動(dòng)矢量相比精度更低,然而,該搜索可以更快地完成,因?yàn)樾纬稍搱D像的像素的數(shù)量小,并且低分辨率使得更易于找到匹配。現(xiàn)在轉(zhuǎn)到操作918,操作918示出了 針對二級子帶圖像和一級子帶圖像縮放該組運(yùn)動(dòng)矢量。再次參考圖6,在一示例性的實(shí)施例中,運(yùn)動(dòng)矢量可以從較高子帶(即二級)獲得,并且被縮放為使得其可以應(yīng)用于數(shù)值上更低等級的子帶圖像(即一級)子帶圖像。例如,在從三級低通子帶718獲得運(yùn)動(dòng)矢量的實(shí)施例中,這些運(yùn)動(dòng)矢量可以乘以縮放值,使得它們可以應(yīng)用于二級子帶(712、714和716),以及乘以另一縮放值,使得它們可以應(yīng)用于一級子帶(704、706和708)。在一示例性的實(shí)施例中,三級低通子帶718是原始圖像的尺寸的1/8,并且從該子帶獲得的運(yùn)動(dòng)矢量可以乘以2以便獲得二級子帶的運(yùn)動(dòng)矢量,以及乘以 4以便獲得一級子帶的運(yùn)動(dòng)矢量。在該示例中,在獲得經(jīng)縮放的矢量以后,這些矢量與源子帶圖像和參考子帶圖像的源組一起可以被發(fā)送給加法器模塊608以便確定多個(gè)增量陣列。操作920示出了 將第二小塊發(fā)送給硬件編解碼器,該硬件編解碼器被配置為同時(shí)為第二小塊確定增量陣列和一組運(yùn)動(dòng)矢量。例如并且參考圖5,在一示例性實(shí)施例中,第二小塊可以被發(fā)送給編解碼器520,并且可以在為第一小塊確定第一小塊的增量陣列和運(yùn)動(dòng)矢量時(shí)同時(shí)為第二小塊確定第二小塊的增量陣列和運(yùn)動(dòng)矢量。轉(zhuǎn)到操作922,該操作示出了 對所確定的增量陣列和該組運(yùn)動(dòng)矢量進(jìn)行熵編碼。 例如并且參考圖6,熵編碼器模塊610可以被配置為在將組子帶圖像的增量陣列以及運(yùn)動(dòng)矢量發(fā)送給遠(yuǎn)程呈現(xiàn)引擎406以前對它們進(jìn)行熵編碼。在該示例性實(shí)施例中,熵編碼器模塊610可以使用無損數(shù)據(jù)壓縮算法來壓縮增量陣列和運(yùn)動(dòng)矢量。由于某些編碼方案需要更多的資源(即存儲器和CPU周期)來實(shí)施,因此在一示例性實(shí)施例中,熵編碼器模塊610可以被配置為基于當(dāng)前存儲器帶寬來從一組編碼器中選擇編碼器。例如,在一實(shí)施例中,熵編碼器模塊610可以包括基于上下文的自適應(yīng)二進(jìn)制算數(shù)編碼編碼器(CABAC)模塊或行程編碼編碼器(RLE)模塊。在熵編碼器模塊610與量化模塊606 —起使用的例子中,熵編碼器模塊610可以被配置為為了調(diào)節(jié)圖像的質(zhì)量和/或基于可用的存儲器帶寬來調(diào)節(jié)一個(gè)或多個(gè)量化參數(shù)。轉(zhuǎn)到操作924,操作擬4示出了 確定圖像小塊已經(jīng)從該圖像小塊的上一版本發(fā)生了改變。例如,在一實(shí)施例中,運(yùn)動(dòng)補(bǔ)償模塊404可以被配置為將運(yùn)動(dòng)估計(jì)技術(shù)應(yīng)用于自上一捕捉以來已經(jīng)改變的小塊。例如,圖形處理單元504可以執(zhí)行包括自上一渲染操作以來還未改變的小塊的位圖并且將該位圖繪制到存儲器。在該示例中,表示該圖像的像素陣列可以被小塊化模塊602分解成小塊、例如較小陣列,并且發(fā)送給差分模塊616。差分模塊 616可以被配置為將每個(gè)小塊與例如該小塊的上一版本之類的參考小塊相比較。在小塊的像素值與該小塊的上一版本相同時(shí),差分模塊616可以丟棄該小塊。在存在差異時(shí),差分模塊616可以將該小塊轉(zhuǎn)發(fā)給離散小波變換模塊604。現(xiàn)在參考操作926,操作擬6示出了 將該組運(yùn)動(dòng)矢量存儲在與所確定的增量陣列相關(guān)聯(lián)的元數(shù)據(jù)內(nèi)。再次轉(zhuǎn)到圖5,在一示例性實(shí)施例中,增量陣列可以一起被打包到小塊包中并且該小塊包可以與該幀中的每個(gè)小塊的小塊包一起被打包到幀包中。然后,幀包可以被發(fā)送給遠(yuǎn)程呈現(xiàn)引擎406,該遠(yuǎn)程呈現(xiàn)引擎406可以將該幀包插入到一個(gè)或多個(gè)信息分組中并且將所述分組發(fā)送給客戶端。在該示例中,每個(gè)小塊包都可以包括可存儲元數(shù)據(jù)的報(bào)頭。在該示例性的實(shí)施例中,增量陣列的運(yùn)動(dòng)矢量可以與指示該小塊已經(jīng)經(jīng)過運(yùn)動(dòng)補(bǔ)償?shù)奈灰黄鸨徊迦氲綀?bào)頭中。現(xiàn)在轉(zhuǎn)到圖10,圖10示出了用于對圖像進(jìn)行壓縮的包括操作1000-1010的操作過程。操作1000開始該操作過程,并且操作1002示出了 通過離散小波變換過程將圖像小塊分解成一組一級子帶圖像、一組二級子帶圖像、以及一組三級子帶圖像。例如,在一實(shí)施例中,離散小波變換模塊604可以被配置為通過對小塊圖像執(zhí)行離散小波變換來將圖像小塊 (即表示該圖像的像素值的分部)分解(即分隔)成子帶。在一示例性的實(shí)施例中,DWT模塊604可以由處理單元執(zhí)行指令來實(shí)現(xiàn)或者在附加到虛擬桌面服務(wù)器400的主板的硬件編解碼器502內(nèi)實(shí)現(xiàn)等等。在硬件編解碼器示例中,3D-GPU服務(wù)提供器512可以捕捉圖像并且將其發(fā)送給編解碼器502以供編解碼器電路進(jìn)行處理。例如并且參考圖7,DWT模塊604可以被配置為執(zhí)行三個(gè)等級的離散小波變換。第一 DWT操作可以將圖像小塊分隔成一級水平子帶(HL) 704、一級垂直子帶(LH) 706、一級對角線子帶(HH) 708、以及一級低通子帶(LL) 702分量。在第一 DWT完成以后,一級低通子帶圖像702可以被反饋到DWT模塊中,并且可以產(chǎn)生一組二級子帶圖形,所述二級子帶圖形可以包括二級水平子帶712、二級垂直子帶圖像714、二級對角線子帶圖像716、以及二級低通子帶圖像710。最后,可以對二級低通子帶圖像710執(zhí)行第三離散小波變換以生成一組三級子帶圖形,所述三級子帶圖形可以包括三級水平子帶712、三級垂直子帶圖像714、三級對角線子帶圖像716、以及三級低通子帶圖像718?;剡^來參考圖10,操作1004示出了 對該組一級子帶圖像、該組二級子帶圖像以及該組三級子帶圖像進(jìn)行量化。例如,在一實(shí)施例中,在分解以后但在運(yùn)動(dòng)估計(jì)以前,該組子帶圖像可以被量化模塊606量化。在該示例性實(shí)施例中,可以使用量化來壓縮該組子帶圖像。操作1006示出了 從三級低通子帶圖像以及該三級低通子帶圖像的上一版本中確定一組三級運(yùn)動(dòng)矢量。例如并且再次轉(zhuǎn)到圖6,在該示例中,運(yùn)行補(bǔ)償模塊404可以包括運(yùn)動(dòng)預(yù)測模塊614,例如可執(zhí)行指令或者集成在編解碼器502內(nèi)的邏輯。在該示例中,運(yùn)動(dòng)預(yù)測模塊614可以在該組子帶圖像被量化以后通過搜索三級低通子帶圖像718來確定三級
運(yùn)動(dòng)矢量?,F(xiàn)在轉(zhuǎn)到操作1008,操作1004示出了 從參考子帶圖像和該組三級運(yùn)動(dòng)矢量中為該組一級子帶圖像、該組二級子帶圖像以及該組三級子帶圖像確定增量陣列。例如并且轉(zhuǎn)到圖6,在一實(shí)施例中,一組運(yùn)動(dòng)矢量(例如四個(gè)運(yùn)動(dòng)矢量)三級低通子帶圖像718的每 4x4像素塊一個(gè)運(yùn)動(dòng)矢量可以與該組一級子帶圖像、該組二級子帶圖像、該組三級子帶圖像、參考圖像(例如組一級子帶圖像、該組二級子帶圖像、以及該組三級子帶圖像的上一版本)一起被發(fā)送給加法器模塊608。在該示例中,加法器模塊608可以被配置為根據(jù)合適的運(yùn)動(dòng)矢量來偏移該組子帶圖像并且計(jì)算出差陣列。在一特定的示例中,三級子帶圖像(LL 718、HL 712、LH 714、以及HH724)可以基于三級運(yùn)動(dòng)矢量被偏移一定數(shù)目的像素,并且差陣列可以通過將來自三級子帶圖像的像素值與參考三級子帶圖像相比較來確定。類似地,加法器模塊608可以用2來縮放三級運(yùn)動(dòng)矢量7 并使用它們從參考二級子帶圖像中計(jì)算差陣列,并且用4來縮放三級運(yùn)動(dòng)矢量726 并使用它們從參考一級子帶圖像中計(jì)算差陣列。在該過程結(jié)束時(shí),加法器模塊608可以具有10個(gè)差陣列和40個(gè)運(yùn)動(dòng)矢量?,F(xiàn)在轉(zhuǎn)到操作1010,操作1010示出了 將所確定的增量陣列和至少該組三級運(yùn)動(dòng)矢量發(fā)送給遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。參考圖5,所確定的增量陣列和所確定的運(yùn)動(dòng)矢量可以被打包到小塊包中并且被運(yùn)動(dòng)補(bǔ)償模塊404通過共享存儲器514發(fā)送給遠(yuǎn)程呈現(xiàn)引擎406。遠(yuǎn)程呈現(xiàn)引擎406可以在虛擬存儲器上執(zhí)行并且致使小塊包通過一個(gè)或多個(gè)分組被發(fā)送給客戶端。圖11示出了圖10所示的操作過程的替換實(shí)施例,其包括附加操作1112-1118。操作1112示出了 在該示例性實(shí)施例中,操作過程可以包括用于通過相繼地將從三級低通子帶圖像所獲得的像素值塊與從該三級低通子帶圖像的上一版本所獲得的像素值塊相比較來確定該組三級運(yùn)動(dòng)矢量的操作。例如,運(yùn)動(dòng)預(yù)測模塊614可以被配置為使用評估度量來搜索三級運(yùn)動(dòng)矢量718。在一示例性實(shí)施例中,運(yùn)動(dòng)預(yù)測模塊614可以將三級運(yùn)動(dòng)矢量718 分解成4個(gè)象限,并且可以相繼地將來自每個(gè)象限的像素值塊與來自參考圖像的像素值塊相比較。運(yùn)動(dòng)預(yù)測模塊614可以繼續(xù)搜索,直到該計(jì)算產(chǎn)生低于預(yù)定義的誤差閾值的誤差值或者進(jìn)行了預(yù)定次數(shù)的計(jì)算。操作1114示出了 由硬件編解碼器從與第二小塊相關(guān)聯(lián)的低通子帶圖像以及第二小塊的至少一組三級運(yùn)動(dòng)矢量中同時(shí)為一組三級運(yùn)動(dòng)矢量確定增量陣列;以及由圖形處理單元從與第三圖像小塊相關(guān)聯(lián)的低通子帶圖像以及第三圖像小塊的至少一組三級運(yùn)動(dòng)矢量中同時(shí)為一組三級運(yùn)動(dòng)矢量確定增量陣列。例如并且回過來參考圖5,在一示例性實(shí)施例中,可以由3D GPU 504為第二圖像小塊以及由硬件編解碼器502同時(shí)執(zhí)行與上面參照圖 10所述的操作類似的操作。在該示例中,小塊可以同時(shí)被不同的執(zhí)行單元處理并且被發(fā)送給客戶端520。操作1116示出了 對所確定的增量陣列和該組三級運(yùn)動(dòng)矢量進(jìn)行熵編碼。例如并且參考圖6,熵編碼器模塊610可以被配置為在將組子帶圖像的增量陣列以及運(yùn)動(dòng)矢量發(fā)送給遠(yuǎn)程呈現(xiàn)引擎406以前對它們進(jìn)行熵編碼。在該示例性實(shí)施例中,熵編碼器模塊610可以使用無損數(shù)據(jù)壓縮算法來壓縮增量陣列和運(yùn)動(dòng)矢量。操作1118示出了 確定圖像小塊已經(jīng)從該圖像小塊的上一版本發(fā)生了改變。例如,在一實(shí)施例中,運(yùn)動(dòng)補(bǔ)償模塊404可以被配置為將運(yùn)動(dòng)估計(jì)技術(shù)應(yīng)用于自上一捕捉以來已經(jīng)改變的小塊。例如,3D圖形處理單元504可以執(zhí)行包括自上一渲染操作以來還未改變的小塊的位圖并且將該位圖繪制到存儲器。在該實(shí)例中,表示該圖像的像素陣列可以被小塊化模塊602分解成小塊,例如較小陣列,并且發(fā)送給差分模塊616。差分模塊616可以被配置為將每個(gè)小塊與例如該小塊的上一版本之類的參考小塊相比較。在小塊的像素值與該小塊的上一版本相同時(shí),差分模塊616可以丟棄該小塊。在存在差異時(shí),差分模塊616可以將該小塊轉(zhuǎn)發(fā)給離散小波變換模塊604?,F(xiàn)在轉(zhuǎn)到圖12,圖12示出了用于對圖像進(jìn)行解壓縮的操作過程,其操作1200、 1202、1204、1206、1208和1210。操作1200開始操作過程,并且操作1202示出了 根據(jù)一組運(yùn)動(dòng)矢量對一組子帶圖像進(jìn)行位置調(diào)節(jié)。例如并且參考圖5,在一示例性實(shí)施例中,客戶端520可以包括客戶端運(yùn)動(dòng)補(bǔ)償模塊518,該客戶端運(yùn)動(dòng)補(bǔ)償模塊518可以由例如編解碼器 (未示出)之類的硬件來實(shí)施,或者由硬件/軟件的組合(例如由處理器102或3D圖行處理單元(也未示出)中任一執(zhí)行的可執(zhí)行指令)來實(shí)施。在該實(shí)施例中,客戶端520可以被配置為接收一組增量陣列和一組運(yùn)動(dòng)矢量。在該示例中,客戶端520還可以被配置為存儲用于生成當(dāng)前所顯示的幀(即參考子帶圖像)的經(jīng)離散小波變換的子帶圖像的副本??蛻舳?20將該組增量陣列和一個(gè)或多個(gè)運(yùn)動(dòng)矢量發(fā)送給客戶端運(yùn)動(dòng)補(bǔ)償模塊518的運(yùn)動(dòng)調(diào)節(jié)模塊620。運(yùn)動(dòng)調(diào)節(jié)模塊620可以接收該組運(yùn)動(dòng)矢量并且使用所述一個(gè)或多個(gè)運(yùn)動(dòng)矢量來調(diào)節(jié)該組參考子帶圖像。在一特定的示例中,該組運(yùn)動(dòng)矢量可以是一級運(yùn)動(dòng)矢量730,例如40個(gè)運(yùn)動(dòng)矢量,并且用于生成當(dāng)前幀的經(jīng)離散小波變換的子帶圖像可以包括一級HH子帶圖像、一級LH子帶圖像、一級HL子帶圖像、以及一級LL子帶圖像。現(xiàn)在參考操作1204,操作1204示出了 將增量陣列應(yīng)用于該組經(jīng)重新定位的子帶圖像,由此獲得一組經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像。例如并且參考圖6,加法器模塊618可以接收用于生成當(dāng)前幀的經(jīng)位置調(diào)節(jié)的經(jīng)離散小波變換的子帶圖像、以及增量陣列。在該示例中, 增量陣列可以與每個(gè)參考子帶圖像相加,由此創(chuàng)建一組經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像?,F(xiàn)在參考操作1206,操作1206示出了 對該組經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像進(jìn)行逆量化。例如并且參考圖6,該組經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像可以被傳遞給逆量化模塊622,該逆量化模塊622使用自適應(yīng)量化參數(shù)來對子帶圖像進(jìn)行解量化。繼續(xù)對圖12的描述,操作1208示出了 通過離散小波逆變換過程將該組經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像組合成圖像小塊。例如并且再次轉(zhuǎn)到圖6,在一示例性實(shí)施例中,客戶端運(yùn)動(dòng)補(bǔ)償模塊518可以包括離散小波逆變換模塊624,該離散小波逆變換模塊擬4可以接收經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像。在該示例中,離散小波逆變換模塊6M可以將經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)淖訋D像組裝成圖像小塊?,F(xiàn)在轉(zhuǎn)到操作1210,操作1210示出了 顯示圖像小塊。例如并且轉(zhuǎn)到圖5,該圖像小塊和該幀的所有其他圖像小塊可以被組裝成幀并且寫入存儲器??蛻舳?20可以讀取位圖并且將其渲染給顯示設(shè)備。參考圖13,圖13示出了圖12的操作過程的可替代的實(shí)施例,其包括操作1312、 1314、1316和1318。操作1312示出了 從根據(jù)一組三級運(yùn)動(dòng)矢量被調(diào)節(jié)的一組三級子帶圖像中組合二級低通子帶圖像;從一組二級子帶圖像、經(jīng)組合的三級低通子帶圖像、以及一組二級運(yùn)動(dòng)矢量中組合一級低通子帶圖像;以及從一組一級子帶圖像、經(jīng)組合的一級低通子帶圖像、以及一組一級運(yùn)動(dòng)矢量中組合圖像小塊。例如并且參考圖7,在一示例性的實(shí)施例中,圖6的逆DWT模塊6M可以被配置為從圖7所示的10個(gè)子帶圖像中組合圖像小塊。例如,運(yùn)動(dòng)調(diào)節(jié)模塊620可能之前已經(jīng)調(diào)節(jié)了每個(gè)參考子帶圖像并且將其與相關(guān)聯(lián)的增量陣列相加。逆DWT模塊擬4可以在該示例中被配置為從經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)娜壸訋D像中組合經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)亩塋L子帶圖像。然后,逆DWT模塊6M可以從經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)亩壸訋D像中組合經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)囊患塋L子帶圖像。最后,逆DWT模塊6M可以從經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)囊患壸訋D像中組合經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)男K圖像?,F(xiàn)在轉(zhuǎn)到操作1314,操作1314示出了 從與該組子帶圖像相關(guān)聯(lián)的小塊報(bào)頭中的元數(shù)據(jù)中提取該組運(yùn)動(dòng)矢量。例如,在一示例性實(shí)施例中,客戶端運(yùn)動(dòng)補(bǔ)償模塊518可以被配置為接收小塊包,該小塊包包括例如一組增量陣列、指示該小塊包已被運(yùn)動(dòng)補(bǔ)償?shù)奈?、以及一組存儲在該報(bào)頭中的運(yùn)動(dòng)矢量。在該示例中,客戶端運(yùn)動(dòng)補(bǔ)償模塊518可以確定該小塊已經(jīng)被運(yùn)動(dòng)補(bǔ)償,并且從小塊報(bào)頭中讀取運(yùn)動(dòng)矢量,并且將其與小塊包中的陣列一起傳遞給例如熵解碼器模塊616或者直接傳遞給運(yùn)動(dòng)調(diào)節(jié)模塊620?,F(xiàn)在轉(zhuǎn)到操作1316,操作1316示出了 縮放該組運(yùn)動(dòng)矢量。例如,在一實(shí)施例中, 小塊包可以包括10個(gè)子帶增量陣列,例如4個(gè)三級子帶增量陣列、3個(gè)二級子帶增量陣列、以及3個(gè)一級子帶增量陣列;以及四個(gè)運(yùn)動(dòng)矢量,例如三級LL718的每個(gè)象限一個(gè)運(yùn)動(dòng)矢量。在該示例中,運(yùn)動(dòng)調(diào)節(jié)模塊620可以被配置為縮放該組運(yùn)動(dòng)矢量以便將其應(yīng)用于二級和一級子帶圖像。在一示例性的實(shí)施例中,三級低通子帶718是原始圖像的尺寸的1/8, 并且因此從該子帶獲得的運(yùn)動(dòng)矢量可以乘以2以便獲得二級子帶的運(yùn)動(dòng)矢量,以及乘以4 以便獲得一級子帶的運(yùn)動(dòng)矢量。操作1318示出了 對該組三級子帶圖像、該組二級子帶圖像以及該組一級子帶圖像進(jìn)行熵解碼。例如并且參考圖6,熵解碼器模塊616可以被配置為接收10個(gè)子帶增量陣列并且選擇無損數(shù)據(jù)解壓縮方案來對增量陣列進(jìn)行解壓縮。例如,小塊包可以指示哪個(gè)壓縮方案曾被熵編碼器模塊610使用。在該示例中,熵解碼器模塊616可以使用該信息來選擇合適的解碼器并且對子帶增量陣列進(jìn)行解碼。前述的詳細(xì)描述通過示例和/或操作圖闡述了系統(tǒng)和/或過程的各實(shí)施例。在這樣的框圖和/或示例包含一個(gè)或多個(gè)功能和/或操作的范圍內(nèi),本領(lǐng)域技術(shù)人員將理解,這樣的框圖,或示例內(nèi)的每一功能和/或操作可以分別地和/或共同地通過范圍廣泛的硬件、 軟件、固件或幾乎其任何組合來實(shí)現(xiàn)。盡管示出和描述了此處所描述的本主題的特定方面,但是,對于本領(lǐng)域的技術(shù)人員顯而易見的是,基于此處的原理,在不偏離此處所描述的主題以及其廣泛的方面的情況下,可以作出更改和修改,因此,所附權(quán)利要求書將包含在它們的范圍內(nèi),所有這樣的更改和修改都將在此處所描述的主題的真正的精神和范圍內(nèi)。
權(quán)利要求
1.一種被配置為對虛擬桌面會話期間的圖像進(jìn)行壓縮的計(jì)算機(jī)系統(tǒng)G00),包括處理器(102);以及存儲器(104和/或106),該存儲器(104和/或106)在計(jì)算機(jī)系統(tǒng)(400)為可操作時(shí)與處理器(10 通信,該存儲器(104和/或106)其上存儲有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令在執(zhí)行以后致使處理器(102)通過離散小波變換過程將圖像小塊分解成一組子帶圖像(702,704,706和708),其中該組子帶圖像至少包括低通子帶圖像(702);對該組子帶圖像進(jìn)行量化;從低通子帶圖像(702)以及該低通子帶圖像的上一版本中確定一組運(yùn)動(dòng)矢量;從該組子帶圖像的上一版本和該組運(yùn)動(dòng)矢量中為該組子帶圖像(702,704,706和708) 確定一組增量陣列;以及將所確定的增量陣列和該組運(yùn)動(dòng)矢量發(fā)送給遠(yuǎn)程計(jì)算機(jī)系統(tǒng)(520)。
2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述存儲器還包括在執(zhí)行以后致使該處理器執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令 通過將從該低通子帶圖像獲得的像素值相繼地與從該低通子帶圖像的上一版本中獲得的像素值相比較來確定該組運(yùn)動(dòng)矢量。
3.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述存儲器還包括在執(zhí)行以后致使該處理器執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令通過將三級低通子帶圖像劃分成多個(gè)像素值塊并且相繼地將所述多個(gè)像素值塊與從該三級低通子帶圖像的上一版本中獲得的像素值相比較來確定該組運(yùn)動(dòng)矢量。
4.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述存儲器還包括在執(zhí)行以后致使該處理器執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令從三級低通子帶圖像以及該三級低通子帶圖像的上一版本中確定該組運(yùn)動(dòng)矢量。
5.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述存儲器還包括在執(zhí)行以后致使該處理器執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令針對二級子帶圖像和一級子帶圖像縮放該組運(yùn)動(dòng)矢量。
6.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述存儲器還包括在執(zhí)行以后致使該處理器執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令將第二小塊發(fā)送給硬件編解碼器,該硬件編解碼器被配置為同時(shí)為第二小塊確定增量陣列和一組運(yùn)動(dòng)矢量。
7.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述存儲器還包括在執(zhí)行以后致使該處理器執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令對所確定的增量陣列和該組運(yùn)動(dòng)矢量進(jìn)行熵編碼。
8.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述存儲器還包括在執(zhí)行以后致使該處理器執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令確定該圖像小塊已經(jīng)從該圖像小塊的上一版本發(fā)生了改變。
9.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述存儲器還包括在執(zhí)行以后致使該處理器執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令將該組運(yùn)動(dòng)矢量存儲在與所確定的增量陣列相關(guān)聯(lián)的元數(shù)據(jù)內(nèi)。
10.如權(quán)利要求1所述的系統(tǒng),其特征在于,該處理器是圖形處理單元。
11.一種用于對遠(yuǎn)程呈現(xiàn)會話期間的圖像進(jìn)行壓縮的方法,包括通過離散小波變換過程將圖像小塊分解成一組一級子帶圖像(702,704,706和708)、 一組二級子帶圖像(710,712,714和716)以及一組三級子帶圖像(718,720,722和724);量化該組一級子帶圖像(702,704,706和708)、該組二級子帶圖像(710,712,714和 716)以及該組三級子帶圖像(718,720,722和724);從三級低通子帶圖像(718)和該三級低通子帶圖像的上一版本中確定一組三級運(yùn)動(dòng)矢量(7 );從參考子帶圖像和該組三級運(yùn)動(dòng)矢量中為該組一級子帶圖像(702,704,706和708)、 該組二級子帶圖像(710,712,714和716)和該組三級子帶圖像(718,720,722和724)確定增量陣列;以及將所確定的增量陣列和至少該組三級運(yùn)動(dòng)矢量(726)發(fā)送給遠(yuǎn)程計(jì)算機(jī)系統(tǒng)(520)。
12.如權(quán)利要求11所述的方法,其特征在于,還包括通過將從該三級低通子帶圖像獲得的像素值塊相繼地與從三級該低通子帶圖像的上一版本中獲得的像素值塊相比較來確定該組三級運(yùn)動(dòng)矢量。
13.如權(quán)利要求11所述的方法,其特征在于,還包括由硬件編解碼器從與第二小塊相關(guān)聯(lián)的低通子帶圖像和第二小塊的至少一組三級運(yùn)動(dòng)矢量中為一組三級運(yùn)動(dòng)矢量同時(shí)確定增量陣列;由圖形處理單元從與第三圖像小塊相關(guān)聯(lián)的低通子帶圖像和第三圖像小塊的至少一組三級運(yùn)動(dòng)矢量中為一組三級運(yùn)動(dòng)矢量同時(shí)確定增量陣列。
14.如權(quán)利要求11所述的方法,其特征在于,還包括對所確定的增量陣列和該組三級運(yùn)動(dòng)矢量進(jìn)行熵編碼。
15.如權(quán)利要求11所述的方法,其特征在于,還包括確定該圖像小塊已經(jīng)從該圖像小塊的上一版本發(fā)生了改變。
全文摘要
本發(fā)明涉及用于基于DWT的系統(tǒng)的運(yùn)動(dòng)補(bǔ)償?shù)牡蛷?fù)雜度方法。描述了用于在離散小波變換域中執(zhí)行運(yùn)動(dòng)補(bǔ)償?shù)募夹g(shù)。在一示例性實(shí)施例中,服務(wù)器可以在離散小波變換域中對圖像執(zhí)行運(yùn)動(dòng)補(bǔ)償,并且將至少一個(gè)運(yùn)動(dòng)矢量和至少一個(gè)增量陣列發(fā)送給客戶端。客戶端可以使用所述至少一個(gè)運(yùn)動(dòng)矢量和所述至少一個(gè)增量陣列來組合圖像。除以上之外,在具體實(shí)施方式
、權(quán)利要求書和附圖中描述了其他方面。
文檔編號G06T9/00GK102411786SQ201110307789
公開日2012年4月11日 申請日期2011年9月28日 優(yōu)先權(quán)日2010年9月29日
發(fā)明者B·A·庫馬, K·M·馬拉迪 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1