虛擬桌面圖像傳輸方法及裝置與流程
2023-12-01 02:37:25 3

本發明涉及虛擬桌面技術領域,尤其涉及虛擬桌面圖像傳輸方法及裝置。
背景技術:
虛擬桌面是一種支持企業級實現桌面系統的遠程動態訪問與數據中心統一託管的技術。虛擬桌面利用虛擬化技術,實現數據和應用等集中管理,從伺服器中虛擬多個桌面,客戶通過客戶端連接伺服器使用桌面作業系統。虛擬桌面通過將個人桌面集中部署在數據中心,實現桌面統一管控,不僅能夠節約硬體成本,而且能夠節約管理成本和運維成本,同時為用戶提供按需訪問的雲桌面。但是虛擬桌面基礎架構需要實時傳送大量圖像數據,對帶寬要求高,而廣域網帶寬通常是有限的,因此如何削減伺服器和客戶端之間的傳輸流量成為虛擬桌面基礎架構的關鍵問題。
目前,已有的削減流量方案包括微軟的rdp(remotedesktopprotocol,遠程桌面協議)協議以及紅帽公司的spice(simpleprotocolforindependentcomputingenvironment,獨立計算環境簡單協議)協議中的圖像壓縮和傳輸協議。這兩種方案存在一定程度的不足:rdp協議使用行程編碼壓縮圖像,這是一種無損壓縮算法,雖然壓縮後的圖像質量很好,但由於無損壓縮算法的壓縮比低,導致伺服器和客戶端之間需要傳輸的數據量大,對帶寬要求高;spice協議使用了無損壓縮算法和有損壓縮算法,利用簡單的方法判斷圖像適用何種壓縮算法,這種方法識別準確率低,容易誤判,被誤判的圖像選擇不合適的壓縮算法反而可能導致流量上升,此外,spice協議中的緩存方法只保存單幀圖像的哈希值,只能匹配重複傳輸的圖像,一旦圖像稍有變化便無法命中,因此緩存命中率低,通過命中緩存削減流量的效果不明顯。
技術實現要素:
本發明的主要目的在於提出一種虛擬桌面圖像傳輸方法及裝置,旨在實現保證圖像質量的前提下削減虛擬桌面的圖像傳輸流量。
為實現上述目的,本發明提供一種虛擬桌面圖像傳輸方法,所述方法包括如下步驟:
獲取待傳輸的虛擬桌面圖像;
判斷所述虛擬桌面圖像是否全部或部分命中緩存;
根據判斷結果將所述虛擬桌面圖像分割為命中塊和非命中塊;
對所述非命中塊進行圖像分析,根據預設的與圖像分析結果對應的壓縮算法壓縮所述非命中塊;
將壓縮後的所述非命中塊對應的的圖像數據發送至客戶端,同時獲取所述命中塊的緩存位置發送至客戶端。
可選地,所述判斷所述虛擬桌面圖像是否全部或部分命中緩存的步驟包括:
按照滾動哈希算法計算所述虛擬桌面圖像的滾動哈希值;
將計算得到的滾動哈希值與緩存資料庫中預先存儲的滾動哈希值進行匹配;
若所述虛擬桌面圖像的滾動哈希值全部存在於所述緩存資料庫中,則判定所述虛擬桌面圖像全部命中緩存;
若所述虛擬桌面圖像的滾動哈希值部分存在於所述緩存資料庫中,則判定所述虛擬桌面圖像部分命中緩存。
可選地,所述根據判斷結果將所述虛擬桌面圖像分割為命中塊和非命中塊的步驟包括:
在所述虛擬桌面圖像部分命中緩存時,將命中緩存的區域進行擴展匹配,得到對應的最大匹配區域;
將所述最大匹配區域進行去重處理,得到所述虛擬桌面圖像的命中塊,並將未命中緩存的區域中與所述命中塊不重合的部分作為所述虛擬桌面圖像的非命中塊。
可選地,所述對所述非命中塊進行圖像分析,根據預設的與圖像分析結果對應的壓縮算法壓縮所述非命中塊的步驟包括:
獲取所述非命中塊的圖像尺寸,將所述圖像尺寸與預設尺寸進行比較;
若所述圖像尺寸小於所述預設尺寸,則根據無損壓縮算法壓縮所述非命中塊;
若所述圖像尺寸大於或等於所述預設尺寸,則計算所述非命中塊的平滑性得分,根據預設的與所述平滑性得分對應的壓縮算法壓縮所述非命中塊。
可選地,所述根據預設的與所述平滑性得分對應的壓縮算法壓縮所述非命中塊的步驟包括:
確定所述平滑性得分所處的預設級別區間,其中,所述預設級別區間按照預設平滑性得分閾值分為高、中、低三個級別;
若所述非命中塊的平滑性得分處於高級別區間,則根據有損壓縮算法壓縮所述非命中塊;
若所述非命中塊的平滑性得分處於中級別區間,則判斷當前伺服器所處的網絡資源狀態是否繁忙,若是,則根據有損壓縮算法壓縮所述非命中塊,否則根據無損壓縮算法壓縮所述非命中塊;
若所述非命中塊的平滑性得分處於低級別區間,則根據無損壓縮算法壓縮所述非命中塊。
此外,為實現上述目的,本發明還提供一種虛擬桌面圖像傳輸裝置,所述裝置包括:
獲取模塊,用於獲取待傳輸的虛擬桌面圖像;
判斷模塊,用於判斷所述虛擬桌面圖像是否全部或部分命中緩存;
分割模塊,用於根據判斷結果將所述虛擬桌面圖像分割為命中塊和非命中塊;
壓縮模塊,用於對所述非命中塊進行圖像分析,根據預設的與圖像分析結果對應的壓縮算法壓縮所述非命中塊;
發送模塊,用於將壓縮後的所述非命中塊對應的的圖像數據發送至客戶端,同時獲取所述命中塊的緩存位置發送至客戶端。
可選地,所述判斷模塊包括:
計算單元,用於按照滾動哈希算法計算所述虛擬桌面圖像的滾動哈希值;
匹配單元,用於將計算得到的滾動哈希值與緩存資料庫中預先存儲的滾動哈希值進行匹配;
判定單元,用於若所述虛擬桌面圖像的滾動哈希值全部存在於所述緩存資料庫中,則判定所述虛擬桌面圖像全部命中緩存;若所述虛擬桌面圖像的滾動哈希值部分存在於所述緩存資料庫中,則判定所述虛擬桌面圖像部分命中緩存。
可選地,所述分割模塊包括:
擴展單元,用於在所述虛擬桌面圖像部分命中緩存時,將命中緩存的區域進行擴展匹配,得到對應的最大匹配區域;
去重單元,用於將所述最大匹配區域進行去重處理,得到所述虛擬桌面圖像的命中塊,並將未命中緩存的區域中與所述命中塊不重合的部分作為所述虛擬桌面圖像的非命中塊。
可選地,所述壓縮模塊包括:
比較單元,用於獲取所述非命中塊的圖像尺寸,將所述圖像尺寸與預設尺寸進行比較;
第一壓縮單元,用於若所述圖像尺寸小於所述預設尺寸,則根據無損壓縮算法壓縮所述非命中塊;
第二壓縮單元,用於若所述圖像尺寸大於或等於所述預設尺寸,則計算所述非命中塊的平滑性得分,根據預設的與所述平滑性得分對應的壓縮算法壓縮所述非命中塊。
可選地,所述第二壓縮單元還用於:
確定所述平滑性得分所處的預設級別區間,其中,所述預設級別區間按照預設平滑性得分閾值分為高、中、低三個級別;
若所述非命中塊的平滑性得分處於高級別區間,則根據有損壓縮算法壓縮所述非命中塊;
若所述非命中塊的平滑性得分處於中級別區間,則判斷當前伺服器所處的網絡資源狀態是否繁忙,若是,則根據有損壓縮算法壓縮所述非命中塊,否則根據無損壓縮算法壓縮所述非命中塊;
若所述非命中塊的平滑性得分處於低級別區間,則根據無損壓縮算法壓縮所述非命中塊。
本發明獲取待傳輸的虛擬桌面圖像;判斷所述虛擬桌面圖像是否全部或部分命中緩存;根據判斷結果將所述虛擬桌面圖像分割為命中塊和非命中塊;對所述非命中塊進行圖像分析,根據預設的與圖像分析結果對應的壓縮算法壓縮所述非命中塊;將壓縮後的所述非命中塊對應的的圖像數據發送至客戶端,同時獲取所述命中塊的緩存位置發送至客戶端。本發明基於圖像緩存和圖像壓縮算法框架,通過判斷虛擬桌面圖像是否命中緩存以將虛擬桌面圖像分割為命中塊和非命中塊,對於命中塊,直接將命中塊的緩存位置發送至客戶端而不必發送完整的圖像數據,從而削減了圖像傳輸流量,對於非命中塊,通過採用與圖像特徵對應的壓縮算法進行壓縮後發送至客戶端,能夠實現較高的壓縮性能和壓縮比,進一步大幅削減圖像傳輸流量,同時保證圖像質量。本發明能夠實現保證圖像質量的前提下削減虛擬桌面的圖像傳輸流量。
附圖說明
圖1為本發明虛擬桌面圖像傳輸方法一實施例的流程示意圖;
圖2為圖1中步驟s20的細化步驟示意圖;
圖3為圖1中步驟s30的細化步驟示意圖;
圖4為圖1中步驟s40的細化步驟示意圖;
圖5為本發明虛擬桌面圖像傳輸裝置一實施例的功能模塊示意圖;
圖6為圖5中判斷模塊20的細化功能模塊示意圖;
圖7為圖5中分割模塊30的細化功能模塊示意圖;
圖8為圖5中壓縮模塊40的細化功能模塊示意圖。
本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。
本發明實施例中的虛擬桌面基於桌面虛擬化技術,所謂桌面虛擬化,是指將計算機的終端系統(也稱作桌面)進行虛擬化,以達到桌面使用的安全性和靈活性,用戶可以通過任何設備,在任何地點,任何時間通過網絡訪問該桌面系統。
桌面虛擬化依賴於伺服器虛擬化,在數據中心的伺服器上進行伺服器虛擬化,生成大量的獨立的桌面作業系統(虛擬機或者虛擬桌面),同時根據專有的虛擬桌面協議發送給終端設備。用戶終端通過乙太網登陸到虛擬主機上,只需要記住用戶名和密碼及網關信息,即可隨時隨地的通過網絡訪問自己的桌面系統,從而實現單機多用戶。
然而,虛擬桌面基礎架構需要實時傳送大量圖像數據,對帶寬要求較高,在帶寬有限的情況下,圖像傳輸速率受限,如果不對待傳輸圖像作任何處理,不僅會導致圖像數據的傳輸不流暢,影響用戶的使用體驗,同時也會使客戶端消耗大量流量,因此如何削減伺服器和客戶端之間的傳輸流量成為虛擬桌面基礎架構的關鍵問題。
目前,已有的削減流量方案包括微軟的遠程桌面協議(remotedesktopprotocol,rdp)協議以及紅帽公司的spice協議中的圖像壓縮和傳輸協議。這兩種方案存在一定程度的不足:rdp協議使用行程編碼壓縮圖像,這是一種無損壓縮算法,雖然壓縮後的圖像質量很好,但由於無損壓縮算法的壓縮比低,導致伺服器和客戶端之間需要傳輸的數據量大,對帶寬要求高;spice協議使用了無損壓縮算法和有損壓縮算法,利用簡單的方法判斷圖像適用何種壓縮算法,這種方法識別準確率低,容易誤判,被誤判的圖像選擇不合適的壓縮算法反而可能導致流量上升,此外,spice協議中的緩存方法只保存單幀圖像的哈希值,只能匹配重複傳輸的圖像,一旦圖像稍有變化便無法命中,因此緩存命中率低,通過命中緩存削減流量的效果不明顯。
基於上述虛擬桌面的基礎架構和現有技術的缺陷,為實現保證圖像質量的前提下削減虛擬桌面的圖像傳輸流量,提出本發明虛擬桌面圖像傳輸方法及裝置各個實施例。
本發明提供一種虛擬桌面圖像傳輸方法。
參照圖1,圖1為本發明虛擬桌面圖像傳輸方法一實施例的流程示意圖。所述方法包括如下步驟:
步驟s10,獲取待傳輸的虛擬桌面圖像;
本實施例的應用場景可以為:用戶通過計算機或移動終端等客戶端登錄虛擬主機訪問虛擬桌面,無論是辦公應用還是瀏覽網頁,短時間內屏幕的大部分數據都不會發生變化,而只有少部分改變,理論上,數據在發送過一遍之後,後續重複傳輸數據都屬於冗餘數據。
由於虛擬桌面基礎架構中傳輸的圖像數據具有一定的冗餘度,一種很好的解決辦法是利用緩存的思想,發送方和接收方把已經傳輸過的圖像數據緩存起來,下次發送方發送數據前,先在緩存中查找是否已經存在,如果存在則無需再次發送數據,只需發送圖像數據的緩存位置,從而減少了圖像傳輸流量。
本實施例伺服器和客戶端進行虛擬桌面的圖像數據傳輸時,伺服器首先獲取待傳輸的虛擬桌面圖像,該虛擬桌面圖像為單幀圖像。
步驟s20,判斷所述虛擬桌面圖像是否全部或部分命中緩存;
然後,伺服器判斷獲取到的虛擬桌面圖像是否全部或部分命中緩存。具體地,由於由哈希算法計算得到的哈希值可唯一代表某一圖像區域,因此,作為一種實施方式,可通過滾動哈希算法計算獲取到的虛擬桌面圖像的滾動哈希值,然後再將其與緩存的虛擬桌面圖像的滾動哈希值進行匹配,若該虛擬桌面圖像的滾動哈希值全部存在於該緩存資料庫中,則判定該虛擬桌面圖像全部命中緩存,若該虛擬桌面圖像的滾動哈希值部分存在於該緩存資料庫中,則判定該虛擬桌面圖像部分命中緩存。當然,若緩存資料庫中不存在計算得到的該虛擬桌面圖像的滾動哈希值,則判定該虛擬桌面圖像未命中緩存。
步驟s30,根據判斷結果將所述虛擬桌面圖像分割為命中塊和非命中塊;
伺服器可根據上述判斷結果將所述虛擬桌面圖像分割為命中塊和非命中塊。具體地,在虛擬桌面圖像全部命中緩存時,只存在命中塊;在虛擬桌面圖像部分命中緩存時,存在命中塊和非命中塊,此時可以在命中緩存的圖像區域周圍作進一步的擴展匹配,以得到最大匹配區域。
步驟s40,對所述非命中塊進行圖像分析,根據預設的與圖像分析結果對應的壓縮算法壓縮所述非命中塊;
未被緩存命中的圖像構成了未命中區域,如果直接傳輸未命中區域圖像,流量仍然較大,因此可以使用圖像壓縮算法對圖像進行壓縮處理,從而降低流量傳輸。壓縮算法包括有損壓縮算法和無損壓縮算法,其中經過無損壓縮算法處理得到的圖像質量高,但是壓縮比低;有損壓縮算法的壓縮比高但是圖像質量在某些情況下較差。有損和無損壓縮算法適合不同類型的圖像。
本實施例中,用戶可預先設置圖像類型與壓縮算法之間的對應關係存儲至伺服器中,伺服器對上述步驟得到的非命中塊進行圖像分析,得到圖像分析結果,然後根據圖像分析結果選擇對應的壓縮算法對非命中塊進行壓縮。
典型的圖像可以分為兩類:自然類圖像和文字類圖像。每類圖像都有適用的壓縮算法。如果文字類圖像使用有損壓縮,由於文字邊緣變化較大,會造成文字邊緣模糊,導致用戶體驗較差。因此為了在壓縮比和壓縮質量之間取得平衡,需要根據圖像內容信息動態選擇合適的壓縮算法。
比如,對於自然類圖像,其圖像變換緩慢,由於人類肉眼對高頻區域並不敏感,因而使用有損壓縮算法更為合適,在不降低視覺體驗的情況下,能夠大幅提升壓縮比;對於純色或者文字類圖像,這類圖像色彩簡單,重複內容較多,因此適合無損壓縮。
步驟s50,將壓縮後的所述非命中塊對應的的圖像數據發送至客戶端,同時獲取所述命中塊的緩存位置發送至客戶端。
在對非命中塊進行壓縮後,伺服器再將壓縮後的非命中塊對應的的圖像數據發送至客戶端,同時獲取所述命中塊的緩存位置發送至客戶端,如此,客戶端能夠根據緩存位置提取自身緩存區的命中塊圖像,然後結合接收到的非命中塊圖像進行拼接,就能得到整個虛擬桌面圖像。
在當前圖像幀傳輸完成後,伺服器和客戶端同步更新圖像緩存,以使得緩存區緩存實時的傳輸圖像。
本實施例基於圖像緩存和圖像壓縮算法框架,通過判斷虛擬桌面圖像是否命中緩存以將虛擬桌面圖像分割為命中塊和非命中塊,對於命中塊,直接將命中塊的緩存位置發送至客戶端而不必發送完整的圖像數據,從而削減了圖像傳輸流量,對於非命中塊,通過採用與圖像特徵對應的壓縮算法進行壓縮後發送至客戶端,能夠實現較高的壓縮性能和壓縮比,進一步大幅削減圖像傳輸流量,同時保證圖像質量。本實施例能夠實現保證圖像質量的前提下削減虛擬桌面的圖像傳輸流量。
進一步地,參照圖2,圖2為圖1中步驟s20的細化步驟示意圖。基於上述圖1所示的實施例,所述步驟s20可以包括:
步驟s21,按照滾動哈希算法計算所述虛擬桌面圖像的滾動哈希值;
步驟s22,將計算得到的滾動哈希值與緩存資料庫中預先存儲的滾動哈希值進行匹配;
步驟s23,若所述虛擬桌面圖像的滾動哈希值全部存在於所述緩存資料庫中,則判定所述虛擬桌面圖像全部命中緩存;
步驟s24,若所述虛擬桌面圖像的滾動哈希值部分存在於所述緩存資料庫中,則判定所述虛擬桌面圖像部分命中緩存;
本實施例利用滾動方式匹配待傳輸的虛擬桌面圖像和緩存的虛擬桌面圖像,首先,伺服器按照滾動哈希算法計算所述虛擬桌面圖像的滾動哈希值,對於某一虛擬桌面圖像,將得到若干滾動哈希值,然後,將計算得到的滾動哈希值與緩存資料庫中預先存儲的滾動哈希值進行匹配,若所述虛擬桌面圖像的滾動哈希值全部存在於所述緩存資料庫中,則判定所述虛擬桌面圖像全部命中緩存,若所述虛擬桌面圖像的滾動哈希值部分存在於所述緩存資料庫中,則判定所述虛擬桌面圖像部分命中緩存。
進一步地,參照圖3,圖3為圖1中步驟s30的細化步驟示意圖,所述步驟s30可以包括:
步驟s31,在所述虛擬桌面圖像部分命中緩存時,將命中緩存的區域進行擴展匹配,得到對應的最大匹配區域;
步驟s32,將所述最大匹配區域進行去重處理,得到所述虛擬桌面圖像的命中塊,並將未命中緩存的區域中與所述命中塊不重合的部分作為所述虛擬桌面圖像的非命中塊。
在滾動哈希匹配過程中,為了能夠找到更大的匹配區域,因此需要向周邊區域擴展,在本實施例中,在所述虛擬桌面圖像部分命中緩存時,伺服器將命中緩存的區域進行擴展匹配,以進一步得到對應的最大匹配區域。多個最大匹配區域可能存在交集,因此需要再將多個最大匹配區域進行去重處理,從而得到所述虛擬桌面圖像的命中塊,然後,將未命中緩存的區域中與命中塊不重合的部分作為所述虛擬桌面圖像的非命中塊,由此將虛擬桌面圖像分割為了命中塊和非命中塊。
上述算法是近似窮舉的快速匹配算法,不僅能夠提高匹配效率,而且緩存命中率較高,從而能夠大幅削減圖像傳輸流量。
進一步地,參照圖4,圖4為圖1中步驟s40的細化步驟示意圖,基於上述的實施例,所述步驟s40可以包括:
步驟s41,獲取所述非命中塊的圖像尺寸,將所述圖像尺寸與預設尺寸進行比較;
步驟s42,若所述圖像尺寸小於所述預設尺寸,則根據無損壓縮算法壓縮所述非命中塊;
步驟s43,若所述圖像尺寸大於或等於所述預設尺寸,則計算所述非命中塊的平滑性得分,根據預設的與所述平滑性得分對應的壓縮算法壓縮所述非命中塊。
為進一步削減圖像傳輸流量,在使用緩存算法對待傳輸圖像作緩存處理後,可以使用圖像壓縮算法對未命中塊進行壓縮處理。
對於尺寸較小的圖像,有損壓縮算法可能有數據填充,反而導致壓縮比降低,因此小尺寸圖像可以直接使用無損壓縮。具體地,伺服器首先獲取非命中塊的圖像尺寸,然後將獲取到的圖像尺寸與預設尺寸進行比較,若非命中塊圖像尺寸小於預設尺寸,則根據無損壓縮算法壓縮所述非命中塊;若非命中塊圖像尺寸大於或等於預設尺寸,則計算所述非命中塊的平滑性得分,根據預設的與所述平滑性得分對應的壓縮算法壓縮所述非命中塊。
本實施例可根據圖像相鄰像素關係計算圖像平滑性得分值,如果圖像變化越緩慢,則評分越高,說明圖像越平滑,更趨近於自然類圖像;如果圖像變化越劇烈,則評分越低,說明圖像邊緣較多,更趨近於文字類圖像。
進一步地,根據預設的與所述平滑性得分對應的壓縮算法壓縮所述非命中塊的步驟可以包括:
步驟s431,確定所述平滑性得分所處的預設級別區間,其中,所述預設級別區間按照預設平滑性得分閾值分為高、中、低三個級別;
步驟s432,若所述非命中塊的平滑性得分處於高級別區間,則根據有損壓縮算法壓縮所述非命中塊;
步驟s433,若所述非命中塊的平滑性得分處於中級別區間,則判斷當前伺服器所處的網絡資源狀態是否繁忙,若是,則根據有損壓縮算法壓縮所述非命中塊,否則根據無損壓縮算法壓縮所述非命中塊;
步驟s434,若所述非命中塊的平滑性得分處於低級別區間,則根據無損壓縮算法壓縮所述非命中塊。
具體地,伺服器確定計算得到的非命中塊的平滑性得分所處的預設級別區間,其中,預設級別區間按照預設平滑性得分閾值分為高、中、低三個級別,若非命中塊的平滑性得分處於高級別區間,說明該非命中塊圖像接近自然類圖像,此時根據有損壓縮算法壓縮該非命中塊;若非命中塊的平滑性得分處於低級別區間,說明該非命中塊圖像接近文字類圖像,此時根據無損壓縮算法壓縮該非命中塊;若非命中塊的平滑性得分處於中級別區間,此時即可採用有損壓縮算法也可採用無損壓縮算法,具體算法選擇方式為:判斷當前伺服器所處的網絡資源狀態是否繁忙,若是,則說明帶寬資源相對緊張,此時根據有損壓縮算法壓縮該非命中塊,否則可以根據無損壓縮算法壓縮該非命中塊。
本實施例通過將單幀圖像進行分割而得到若干非命中塊,對每個非命中塊根據其特徵並結合當前網絡狀況選擇合適的壓縮算法,相對於現有技術的固定壓縮算法和簡單識別單幀圖像以選擇壓縮算法的方式,本實施例壓縮算法的選擇更具靈活性,壓縮性能和壓縮比更高,既能夠保證圖像質量,又能夠進一步削減圖像傳輸流量,從而能夠在保證視覺效果的前提下,使用戶流暢使用虛擬桌面,顯著提高在廣域網環境中使用虛擬桌面的用戶體驗。
本發明還提供一種虛擬桌面圖像傳輸裝置。
參照圖5,圖5為本發明虛擬桌面圖像傳輸裝置一實施例的功能模塊示意圖。所述裝置包括:
獲取模塊10,用於獲取待傳輸的虛擬桌面圖像;
本實施例的應用場景可以為:用戶通過計算機或移動終端等客戶端登錄虛擬主機訪問虛擬桌面,無論是辦公應用還是瀏覽網頁,短時間內屏幕的大部分數據都不會發生變化,而只有少部分改變,理論上,數據在發送過一遍之後,後續重複傳輸數據都屬於冗餘數據。
由於虛擬桌面基礎架構中傳輸的圖像數據具有一定的冗餘度,一種很好的解決辦法是利用緩存的思想,發送方和接收方把已經傳輸過的圖像數據緩存起來,下次發送方發送數據前,先在緩存中查找是否已經存在,如果存在則無需再次發送數據,只需發送圖像數據的緩存位置,從而減少了圖像傳輸流量。
本實施例伺服器和客戶端進行虛擬桌面的圖像數據傳輸時,獲取模塊10首先獲取待傳輸的虛擬桌面圖像,該虛擬桌面圖像為單幀圖像。
判斷模塊20,用於判斷所述虛擬桌面圖像是否全部或部分命中緩存;
然後,判斷模塊20判斷獲取到的虛擬桌面圖像是否全部或部分命中緩存。具體地,由於由哈希算法計算得到的哈希值可唯一代表某一圖像區域,因此,作為一種實施方式,可通過滾動哈希算法計算獲取到的虛擬桌面圖像的滾動哈希值,然後再將其與緩存的虛擬桌面圖像的滾動哈希值進行匹配,若該虛擬桌面圖像的滾動哈希值全部存在於該緩存資料庫中,則判定該虛擬桌面圖像全部命中緩存,若該虛擬桌面圖像的滾動哈希值部分存在於該緩存資料庫中,則判定該虛擬桌面圖像部分命中緩存。當然,若緩存資料庫中不存在計算得到的該虛擬桌面圖像的滾動哈希值,則判定該虛擬桌面圖像未命中緩存。
分割模塊30,用於根據判斷結果將所述虛擬桌面圖像分割為命中塊和非命中塊;
分割模塊30可根據上述判斷結果將所述虛擬桌面圖像分割為命中塊和非命中塊。具體地,在虛擬桌面圖像全部命中緩存時,只存在命中塊;在虛擬桌面圖像部分命中緩存時,存在命中塊和非命中塊,此時可以在命中緩存的圖像區域周圍作進一步的擴展匹配,以得到最大匹配區域。
壓縮模塊40,用於對所述非命中塊進行圖像分析,根據預設的與圖像分析結果對應的壓縮算法壓縮所述非命中塊;
未被緩存命中的圖像構成了未命中區域,如果直接傳輸未命中區域圖像,流量仍然較大,因此可以使用圖像壓縮算法對圖像進行壓縮處理,從而降低流量傳輸。壓縮算法包括有損壓縮算法和無損壓縮算法,其中經過無損壓縮算法處理得到的圖像質量高,但是壓縮比低;有損壓縮算法的壓縮比高但是圖像質量在某些情況下較差。有損和無損壓縮算法適合不同類型的圖像。
本實施例中,用戶可預先設置圖像類型與壓縮算法之間的對應關係存儲至伺服器中,壓縮模塊40對上述步驟得到的非命中塊進行圖像分析,得到圖像分析結果,然後根據圖像分析結果選擇對應的壓縮算法對非命中塊進行壓縮。
典型的圖像可以分為兩類:自然類圖像和文字類圖像。每類圖像都有適用的壓縮算法。如果文字類圖像使用有損壓縮,由於文字邊緣變化較大,會造成文字邊緣模糊,導致用戶體驗較差。因此為了在壓縮比和壓縮質量之間取得平衡,需要根據圖像內容信息動態選擇合適的壓縮算法。
比如,對於自然類圖像,其圖像變換緩慢,由於人類肉眼對高頻區域並不敏感,因而使用有損壓縮算法更為合適,在不降低視覺體驗的情況下,能夠大幅提升壓縮比;對於純色或者文字類圖像,這類圖像色彩簡單,重複內容較多,因此適合無損壓縮。
發送模塊50,用於將壓縮後的所述非命中塊對應的的圖像數據發送至客戶端,同時獲取所述命中塊的緩存位置發送至客戶端。
在壓縮模塊40對非命中塊進行壓縮後,發送模塊50再將壓縮後的非命中塊對應的的圖像數據發送至客戶端,同時獲取所述命中塊的緩存位置發送至客戶端,如此,客戶端能夠根據緩存位置提取自身緩存區的命中塊圖像,然後結合接收到的非命中塊圖像進行拼接,就能得到整個虛擬桌面圖像。
在當前圖像幀傳輸完成後,伺服器和客戶端同步更新圖像緩存,以使得緩存區緩存實時的傳輸圖像。
本實施例基於圖像緩存和圖像壓縮算法框架,通過判斷虛擬桌面圖像是否命中緩存以將虛擬桌面圖像分割為命中塊和非命中塊,對於命中塊,直接將命中塊的緩存位置發送至客戶端而不必發送完整的圖像數據,從而削減了圖像傳輸流量,對於非命中塊,通過採用與圖像特徵對應的壓縮算法進行壓縮後發送至客戶端,能夠實現較高的壓縮性能和壓縮比,進一步大幅削減圖像傳輸流量,同時保證圖像質量。本實施例能夠實現保證圖像質量的前提下削減虛擬桌面的圖像傳輸流量。
進一步地,參照圖6,圖6為圖5中判斷模塊20的細化功能模塊示意圖。基於上述圖5所示的實施例,所述判斷模塊20可以包括:
計算單元21,用於按照滾動哈希算法計算所述虛擬桌面圖像的滾動哈希值;
匹配單元22,用於將計算得到的滾動哈希值與緩存資料庫中預先存儲的滾動哈希值進行匹配;
判定單元23,用於若所述虛擬桌面圖像的滾動哈希值全部存在於所述緩存資料庫中,則判定所述虛擬桌面圖像全部命中緩存;若所述虛擬桌面圖像的滾動哈希值部分存在於所述緩存資料庫中,則判定所述虛擬桌面圖像部分命中緩存。
本實施例利用滾動方式匹配待傳輸的虛擬桌面圖像和緩存的虛擬桌面圖像,首先,計算單元21按照滾動哈希算法計算所述虛擬桌面圖像的滾動哈希值,對於某一虛擬桌面圖像,將得到若干滾動哈希值,然後,匹配單元22將計算得到的滾動哈希值與緩存資料庫中預先存儲的滾動哈希值進行匹配,若所述虛擬桌面圖像的滾動哈希值全部存在於所述緩存資料庫中,則判定單元23判定所述虛擬桌面圖像全部命中緩存,若所述虛擬桌面圖像的滾動哈希值部分存在於所述緩存資料庫中,則判定單元23判定所述虛擬桌面圖像部分命中緩存。
進一步地,參照圖7,圖7為圖5中分割模塊30的細化功能模塊示意圖。所述分割模塊30可以包括:
擴展單元31,用於在所述虛擬桌面圖像部分命中緩存時,將命中緩存的區域進行擴展匹配,得到對應的最大匹配區域;
去重單元32,用於將所述最大匹配區域進行去重處理,得到所述虛擬桌面圖像的命中塊,並將未命中緩存的區域中與所述命中塊不重合的部分作為所述虛擬桌面圖像的非命中塊。
在滾動哈希匹配過程中,為了能夠找到更大的匹配區域,因此需要向周邊區域擴展,在本實施例中,在所述虛擬桌面圖像部分命中緩存時,擴展單元31將命中緩存的區域進行擴展匹配,以進一步得到對應的最大匹配區域。多個最大匹配區域可能存在交集,因此去重單元32需要再將多個最大匹配區域進行去重處理,從而得到所述虛擬桌面圖像的命中塊,然後,將未命中緩存的區域中與命中塊不重合的部分作為所述虛擬桌面圖像的非命中塊,由此將虛擬桌面圖像分割為了命中塊和非命中塊。
上述算法是近似窮舉的快速匹配算法,不僅能夠提高匹配效率,而且緩存命中率較高,從而能夠大幅削減圖像傳輸流量。
進一步地,參照圖8,圖8為圖5中壓縮模塊40的細化功能模塊示意圖。基於上述的實施例,所述壓縮模塊40可以包括:
比較單元41,用於獲取所述非命中塊的圖像尺寸,將所述圖像尺寸與預設尺寸進行比較;
第一壓縮單元42,用於若所述圖像尺寸小於所述預設尺寸,則根據無損壓縮算法壓縮所述非命中塊;
第二壓縮單元43,用於若所述圖像尺寸大於或等於所述預設尺寸,則計算所述非命中塊的平滑性得分,根據預設的與所述平滑性得分對應的壓縮算法壓縮所述非命中塊。
為進一步削減圖像傳輸流量,在使用緩存算法對待傳輸圖像作緩存處理後,可以使用圖像壓縮算法對未命中塊進行壓縮處理。
對於尺寸較小的圖像,有損壓縮算法可能有數據填充,反而導致壓縮比降低,因此小尺寸圖像可以直接使用無損壓縮。具體地,比較單元41首先獲取非命中塊的圖像尺寸,然後將獲取到的圖像尺寸與預設尺寸進行比較,若非命中塊圖像尺寸小於預設尺寸,則第一壓縮單元42根據無損壓縮算法壓縮所述非命中塊;若非命中塊圖像尺寸大於或等於預設尺寸,則第二壓縮單元43計算所述非命中塊的平滑性得分,根據預設的與所述平滑性得分對應的壓縮算法壓縮所述非命中塊。
本實施例第二壓縮單元43可根據圖像相鄰像素關係計算圖像平滑性得分值,如果圖像變化越緩慢,則評分越高,說明圖像越平滑,更趨近於自然類圖像;如果圖像變化越劇烈,則評分越低,說明圖像邊緣較多,更趨近於文字類圖像。
進一步地,所述第二壓縮單元43還用於:
確定所述平滑性得分所處的預設級別區間,其中,所述預設級別區間按照預設平滑性得分閾值分為高、中、低三個級別;若所述非命中塊的平滑性得分處於高級別區間,則根據有損壓縮算法壓縮所述非命中塊;若所述非命中塊的平滑性得分處於中級別區間,則判斷當前伺服器所處的網絡資源狀態是否繁忙,若是,則根據有損壓縮算法壓縮所述非命中塊,否則根據無損壓縮算法壓縮所述非命中塊;若所述非命中塊的平滑性得分處於低級別區間,則根據無損壓縮算法壓縮所述非命中塊。
具體地,第二壓縮單元43確定計算得到的非命中塊的平滑性得分所處的預設級別區間,其中,預設級別區間按照預設平滑性得分閾值分為高、中、低三個級別,若非命中塊的平滑性得分處於高級別區間,說明該非命中塊圖像接近自然類圖像,此時根據有損壓縮算法壓縮該非命中塊;若非命中塊的平滑性得分處於低級別區間,說明該非命中塊圖像接近文字類圖像,此時根據無損壓縮算法壓縮該非命中塊;若非命中塊的平滑性得分處於中級別區間,此時即可採用有損壓縮算法也可採用無損壓縮算法,具體算法選擇方式為:判斷當前伺服器所處的網絡資源狀態是否繁忙,若是,則說明帶寬資源相對緊張,此時根據有損壓縮算法壓縮該非命中塊,否則可以根據無損壓縮算法壓縮該非命中塊。
本實施例通過將單幀圖像進行分割而得到若干非命中塊,對每個非命中塊根據其特徵並結合當前網絡狀況選擇合適的壓縮算法,相對於現有技術的固定壓縮算法和簡單識別單幀圖像以選擇壓縮算法的方式,本實施例壓縮算法的選擇更具靈活性,壓縮性能和壓縮比更高,既能夠保證圖像質量,又能夠進一步削減圖像傳輸流量,從而能夠在保證視覺效果的前提下,使用戶流暢使用虛擬桌面,顯著提高在廣域網環境中使用虛擬桌面的用戶體驗。
以上僅為本發明的優選實施例,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護範圍內。