本發(fā)明涉及圖像處理領(lǐng)域,具體而言,涉及一種屏幕圖像的全局運動向量的處理方法和裝置。
背景技術(shù):
屏幕圖像是一類比較特殊復(fù)雜的視頻圖像,它的每一幀圖像都是復(fù)合圖像,既包含普通的圖片信息也包含文字信息,并且相鄰幀之間具有相關(guān)性,利用相鄰幀塊之間的相關(guān)性對圖像進(jìn)行壓縮,可以得到較好的壓縮性能。在處理當(dāng)前幀時,與之相關(guān)性較強的幀記為參考幀,可以找到當(dāng)前要處理的圖像幀與參考幀中相同的內(nèi)容,例如,可以是背景或不變部分,即相同內(nèi)容的位置相同,這些部分對應(yīng)的位移是(0,0)向量;還可以是由于用戶移動窗口,或者閱讀時上下滾動文檔等動作造成移動的部分,即相同內(nèi)容的位置不同,可以估算出這部分內(nèi)容的位移向量,稱為全局運動向量(mv)。全局運動向量的計算可以通過特征點提取和特征匹配得到。
但是,現(xiàn)有技術(shù)中全局運動向量的處理方法中的特征點檢測和特征值匹配算法復(fù)雜,耗時較長,無法實現(xiàn)屏幕圖像的實時壓縮。
針對現(xiàn)有技術(shù)中屏幕圖像的全局運動向量的處理方法耗時長,實時壓縮性能差的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種屏幕圖像的全局運動向量的處理方法和裝置,以至少解決現(xiàn)有技術(shù)中屏幕圖像的全局運動向量的處理方法耗時長,實時壓縮性能差的技術(shù)問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種屏幕圖像的全局運動向量的處理方法,包括:獲取屏幕圖像中的當(dāng)前幀和參考幀;獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,其中,通過當(dāng)前像素點與相鄰像素點的差值獲取特征點;將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配,其中,通過像素值的哈希值得到特征值;根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量。
進(jìn)一步地,獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,包括:對當(dāng)前幀進(jìn)行分塊,得到當(dāng)前幀的多個第一宏塊,對參考幀進(jìn)行分塊,得到參考幀的多個第二宏塊;獲取每個第一宏塊中的所有像素點的興趣值,并獲取每個第二宏塊中的所有像素點的興趣值;將每個第一宏塊中的最大興趣值對應(yīng)的像素點作為第一特征點,并將每個第二宏塊中的最大興趣值對應(yīng)的像素點作為第二特征點。
進(jìn)一步地,獲取每個第一宏塊中的所有像素點的興趣值,并獲取每個第二宏塊中的所有像素點的興趣值,包括:計算每個第一宏塊中的第一像素點在多個預(yù)設(shè)方向上與相鄰的第二像素點的差值,得到多個第一差值,并計算每個第二宏塊中的第三像素點在多個預(yù)設(shè)方向上與相鄰的第四像素點的差值,得到多個第二差值,其中,第一像素點為每個第一宏塊中除邊緣像素點之外的像素點,第三像素點為每個第二宏塊中除邊緣像素點之外的像素點;選取多個第一差值中的最小值作為第一像素點的興趣值,并選取多個第二差值中的最小值作為第三像素點的興趣值。
進(jìn)一步地,將每個第一宏塊中的最大興趣值對應(yīng)的像素點作為第一特征點,并將每個第二宏塊中的最大興趣值對應(yīng)的像素點作為第二特征點,包括:獲取每個第一宏塊中的最大興趣值,并獲取每個第二宏塊中的最大興趣值;判斷每個第一宏塊中的最大興趣值是否滿足第一預(yù)設(shè)條件,并判斷每個第二宏塊中的最大興趣值是否超過第一預(yù)設(shè)條件;如果每個第一宏塊中的最大興趣值滿足第一預(yù)設(shè)條件,則將每個第一宏塊中的最大興趣值對應(yīng)的像素點作為第一特征點,如果每個第二宏塊中的最大興趣值滿足第一預(yù)設(shè)條件,則將獲取每個第二宏塊中的最大興趣值對應(yīng)的像素點作為第二特征點。
進(jìn)一步地,第一預(yù)設(shè)條件用于表征最大興趣值超過第一預(yù)設(shè)值。
進(jìn)一步地,在將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配之前,上述方法還包括:獲取在每個第一特征點的預(yù)設(shè)范圍內(nèi)的多個第五像素點的像素值,并獲取在每個第二特征點的預(yù)設(shè)范圍內(nèi)的多個第六像素點的像素值;計算多個第五像素點的像素值的哈希值,得到第一特征點的特征值,并計算多個第六像素點的像素值的哈希值,得到第二特征點的特征值。
進(jìn)一步地,根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量,包括:如果任意一個第一特征點的特征值與任意一個第二特征點的特征值匹配成功,則得到任意一個第一特征點與任意一個第二特征點的偏移向量;對每個偏移向量的出現(xiàn)次數(shù)進(jìn)行統(tǒng)計,得到至少一個主偏移向量;判斷至少一個主偏移向量是否滿足第二預(yù)設(shè)條件;如果第一主偏移向量滿足第二預(yù)設(shè)條件,則確定第一主偏移向量為全局運動向量。
進(jìn)一步地,第二預(yù)設(shè)條件用于表征第一主偏移向量的出現(xiàn)次數(shù)超過第二預(yù)設(shè)值。
進(jìn)一步地,如果任意一個第一特征點的特征值與多個第二特征點的特征值匹配成功,則從多個第一特征點中刪除任意一個第一特征點。
進(jìn)一步地,在根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量之后,上述方法還包括:分別對當(dāng)前幀和參考幀進(jìn)行分塊;根據(jù)全局運動向量,將當(dāng)前幀的每個宏塊和參考幀的每個宏塊進(jìn)行比較,得到當(dāng)前幀的每個宏塊的類型信息;根據(jù)當(dāng)前幀的每個宏塊的類型信息,對當(dāng)前幀的每個宏塊進(jìn)行相應(yīng)編碼,得到多個編碼碼流;根據(jù)全局運動向量,當(dāng)前幀的每個宏塊的類型信息和多個編碼碼流,生成復(fù)合碼流;將復(fù)合碼流發(fā)送給接收設(shè)備。
進(jìn)一步地,根據(jù)全局運動向量,將當(dāng)前幀的每個宏塊和參考幀的每個宏塊進(jìn)行比較,得到當(dāng)前幀的每個宏塊的類型信息,包括:如果當(dāng)前幀的第三宏塊與參考幀中相同位置的宏塊相同,則確定第三宏塊的類型信息為零運動向量塊;如果當(dāng)前幀的第四宏塊按照全局運動向量進(jìn)行移動后,與參考幀中相應(yīng)位置的宏塊相同,則確定第四宏塊的類型信息為全局運動向量塊;確定當(dāng)前幀的第五宏塊的類型信息為幀內(nèi)塊,其中,第五宏塊為當(dāng)前幀的多個宏塊中除第三宏塊和第四宏塊之外的宏塊。
進(jìn)一步地,根據(jù)當(dāng)前幀的每個宏塊的類型信息,對當(dāng)前幀的每個宏塊進(jìn)行相應(yīng)編碼,得到多個編碼碼流,包括:對當(dāng)前幀中類型信息為幀內(nèi)塊的宏塊進(jìn)行幀內(nèi)編碼,得到多個編碼碼流。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種屏幕圖像的全局運動向量的處理裝置,包括:第一獲取單元,用于獲取屏幕圖像中的當(dāng)前幀和參考幀;第二獲取單元,用于獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,其中,通過當(dāng)前像素點與相鄰像素點的差值獲取特征點;匹配單元,用于將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配,其中,通過像素值的哈希值得到特征值;處理單元,用于根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種存儲介質(zhì),存儲介質(zhì)包括存儲的程序,其中,在程序運行時控制存儲介質(zhì)所在設(shè)備執(zhí)行上述實施例中的屏幕圖像的全局運動向量的處理方法。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種處理器,處理器用于運行程序,其中,程序運行時執(zhí)行上述實施例中的屏幕圖像的全局運動向量的處理方法。
在本發(fā)明實施例中,獲取屏幕圖像中的當(dāng)前幀和參考幀,獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配,根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量,從而實現(xiàn)全局運動向量的計算過程。容易注意到的是,由于可以通過當(dāng)前像素點與相鄰像素點的差值獲取特征點,并通過像素值的哈希值得到特征值,與現(xiàn)有技術(shù)相比,特征點的獲取與特征值的匹配均較為簡單,全局運動向量的處理過程耗時短,從而解決了現(xiàn)有技術(shù)中屏幕圖像的全局運動向量的處理方法耗時長,實時壓縮性能差技術(shù)問題,可以達(dá)到降低算法復(fù)雜度,縮短處理時長,進(jìn)一步達(dá)到提高壓縮性能的技術(shù)效果。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的一種屏幕圖像的全局運動向量的處理方法的流程圖;
圖2是根據(jù)本發(fā)明實施例的一種可選的當(dāng)前像素點與多個預(yù)設(shè)方向上相鄰像素點的關(guān)系圖;
圖3是根據(jù)本發(fā)明實施例的一種可選的屏幕圖像的全局運動向量的處理方法的流程圖;
圖4是根據(jù)本發(fā)明實施例的一種可選的屏幕圖像的編解碼系統(tǒng)的示意圖;以及
圖5是根據(jù)本發(fā)明實施例的一種屏幕圖像的全局運動向量的處理裝置的示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
實施例1
根據(jù)本發(fā)明實施例,提供了一種屏幕圖像的全局運動向量的處理方法的實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機(jī)可執(zhí)行指令的計算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本發(fā)明實施例的一種屏幕圖像的全局運動向量的處理方法的流程圖,如圖1所示,該方法包括如下步驟:
步驟s102,獲取屏幕圖像中的當(dāng)前幀和參考幀。
具體地,上述的屏幕圖像可以是對屏幕進(jìn)行錄屏,得到的多幀圖像;上述的當(dāng)前幀可以是多幀圖像中當(dāng)前需要處理的圖像幀;上述的參考幀可以是多幀圖像中與當(dāng)前幀相鄰的圖像幀。
步驟s104,獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,其中,通過當(dāng)前像素點與相鄰像素點的差值獲取特征點。
具體地,上述的第一特征點可以是當(dāng)前幀圖像中的像素點;上述的第二特征點可以是當(dāng)前幀圖像中的像素點。
在一種可選的方案中,可以對當(dāng)前幀和參考幀進(jìn)行分塊,并計算每個分塊中多個像素點與預(yù)設(shè)方向上相鄰點的差值,得到每個像素點的興趣值,并從多個像素點的興趣值中選取出滿足壓縮條件的像素點作為特征點。
步驟s106,將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配,其中,通過像素值的哈希值得到特征值。
具體地,上述的特征值可以是特征點周圍預(yù)設(shè)范圍內(nèi)所有像素值的哈希值(hash)。
在一種可選的方案中,在確定出每個分塊的特征點之后,可以計算每個特征點周圍一定范圍內(nèi)的所有像素值的hash值,得到每個特征點的特征值,并將當(dāng)前幀中每個特征點的特征值與參考幀中每個特征點的特征值進(jìn)行匹配,得到匹配點。
步驟s108,根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量。
在一種可選的方案中,如果第一特征點的特征值與第二特征點的特征值匹配成功,則可以記錄第一特征點到第二特征點的偏移向量,得到當(dāng)前需要處理的圖像幀的全局運動向量。
根據(jù)本發(fā)明上述實施例,獲取屏幕圖像中的當(dāng)前幀和參考幀,獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配,根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量,從而實現(xiàn)全局運動向量的計算過程。容易注意到的是,由于可以通過當(dāng)前像素點與相鄰像素點的差值獲取特征點,并通過像素值的哈希值得到特征值,與現(xiàn)有技術(shù)相比,特征點的獲取與特征值的匹配均較為簡單,全局運動向量的處理過程耗時短,從而解決了現(xiàn)有技術(shù)中屏幕圖像的全局運動向量的處理方法耗時長,實時壓縮性能差技術(shù)問題。因此,通過本發(fā)明上述實施例提供的方案,可以達(dá)到降低算法復(fù)雜度,縮短處理時長,進(jìn)一步達(dá)到提高壓縮性能的技術(shù)效果。
可選地,在本發(fā)明上述實施例中,步驟s104,獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,包括:
步驟s1042,對當(dāng)前幀進(jìn)行分塊,得到當(dāng)前幀的多個第一宏塊,對參考幀進(jìn)行分塊,得到參考幀的多個第二宏塊。
在一種可選的方案中,可以獲取屏幕圖像中當(dāng)前需要處理的圖像幀,該圖像幀的大小為w*h,將當(dāng)前幀拆分成m*n的宏塊,得到多個第一宏塊??梢詫⒖紟鐾瑯拥奶幚?,得到多個第二宏塊。
步驟s1044,獲取每個第一宏塊中的所有像素點的興趣值,并獲取每個第二宏塊中的所有像素點的興趣值。
具體地,上述的所有像素點可以是每個宏塊中除邊緣像素點的所有像素點;上述的興趣值可以是所有像素點與領(lǐng)域點的差值。
在一種可選的方案中,可以計算每個第一宏塊中除邊緣像素點的所有像素點在多個方向上與領(lǐng)域點的差值,并將多個差值中的最小值作為每個第一宏塊中的所有像素點的興趣值??梢詫⒖紟鐾瑯拥奶幚?,得到每個第二宏塊中的所有像素點的興趣值。
步驟s1046,將每個第一宏塊中的最大興趣值對應(yīng)的像素點作為第一特征點,并將每個第二宏塊中的最大興趣值對應(yīng)的像素點作為第二特征點。
在一種可選的方案中,在計算得到每個第一宏塊中除邊緣點之外的其他像素點的興趣值,并從中取出最大興趣值對應(yīng)的像素點作為第一特征點,得到每個第一宏塊中的第一特征點。可以對參考幀做同樣的處理,得到每個第二宏塊中的第二特征點。
可選地,在本發(fā)明上述實施例中,步驟s1044,獲取每個第一宏塊中的所有像素點的興趣值,并獲取每個第二宏塊中的所有像素點的興趣值,包括:
步驟s10442,計算每個第一宏塊中的第一像素點在多個預(yù)設(shè)方向上與相鄰的第二像素點的差值,得到多個第一差值,并計算每個第二宏塊中的第三像素點在多個預(yù)設(shè)方向上與相鄰的第四像素點的差值,得到多個第二差值,其中,第一像素點為每個第一宏塊中除邊緣像素點之外的像素點,第三像素點為每個第二宏塊中除邊緣像素點之外的像素點。
具體地,上述的多個預(yù)設(shè)方向可以包括:0°、45°、90°和135°四個方向。
步驟s10444,選取多個第一差值中的最小值作為第一像素點的興趣值,并選取多個第二差值中的最小值作為第三像素點的興趣值。
在一種可選的方案中,在當(dāng)前幀和參考幀中,對于如圖2所示的當(dāng)前像素點和相鄰像素點,均可以通過如下公式計算當(dāng)前像素點i(i,j)在0°、45°、90°和135°四個方向上與相鄰點的差值:
v0=abs(i(i,j)-i(i,j-1))+abs(i(i,j)-i(i,j+1)),
v45=abs(i(i,j)-i(i+1,j-1))+abs(i(i,j)-i(i-1,j+1)),
v90=abs(i(i,j)-i(i-1,j))+abs(i(i,j)-i(i+1,j)),
v135=abs(i(i,j)-i(i-1,j-1))+abs(i(i,j)-i(i+1,j+1)),
d(i,j)=min{v0,v90,v45,v135},
并選取四個差值中的最小值作為當(dāng)前點的興趣值,即得到第一像素點的興趣值和第三像素點的興趣值。
可選地,在本發(fā)明上述實施例中,步驟s1046,將每個第一宏塊中的最大興趣值對應(yīng)的像素點作為第一特征點,并將每個第二宏塊中的最大興趣值對應(yīng)的像素點作為第二特征點,包括:
步驟s10462,獲取每個第一宏塊中的最大興趣值,并獲取每個第二宏塊中的最大興趣值。
步驟s10464,判斷每個第一宏塊中的最大興趣值是否滿足第一預(yù)設(shè)條件,并判斷每個第二宏塊中的最大興趣值是否超過第一預(yù)設(shè)條件。
可選地,在本發(fā)明上述實施例中,第一預(yù)設(shè)條件用于表征最大興趣值超過第一預(yù)設(shè)值。
具體地,由于每個第一宏塊中的最大興趣值或每個第二宏塊中的最大興趣值與其他興趣值的差距較小,為了提高特征點獲取的準(zhǔn)確度,可以判斷最大興趣值是否超過第一預(yù)設(shè)值。
步驟s10466,如果每個第一宏塊中的最大興趣值滿足第一預(yù)設(shè)條件,則將每個第一宏塊中的最大興趣值對應(yīng)的像素點作為第一特征點,如果每個第二宏塊中的最大興趣值滿足第一預(yù)設(shè)條件,則將獲取每個第二宏塊中的最大興趣值對應(yīng)的像素點作為第二特征點。
在一種可選的方案中,可以通過如下公式計算每個第一宏塊或每個第二宏塊中的最大興趣值,如果判斷出該最大興趣值超出閾值,則此最大興趣值對應(yīng)的像素點可以作為特征點o(i,j),即得到每個第一宏塊的第一特征點和每個第二宏塊的第二特征點:o(i,j)=max(i,j)屬于m×n的塊{d(i,j)}。
可選地,在本發(fā)明上述實施例中,在步驟s106,將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配之前,該方法還包括:
步驟s110,獲取在每個第一特征點的預(yù)設(shè)范圍內(nèi)的多個第五像素點的像素值,并獲取在每個第二特征點的預(yù)設(shè)范圍內(nèi)的多個第六像素點的像素值。
具體地,上述的預(yù)設(shè)范圍內(nèi)的多個像素點可以是以每個特征點為中心的p*q矩形區(qū)域中的p*q個像素點。
步驟s112,計算多個第五像素點的像素值的哈希值,得到第一特征點的特征值,并計算多個第六像素點的像素值的哈希值,得到第二特征點的特征值。
在一種可選的方案中,對于當(dāng)前幀中的每個特征點,計算以此點為中心的p*q矩形區(qū)域中的p*q個像素值的hash值作為當(dāng)前特征點的特征值,從而得到第一特征點的特征值和第二特征點的特征值。
可選地,在本發(fā)明上述實施例中,步驟s108,根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量,包括:
步驟s1082,如果任意一個第一特征點的特征值與任意一個第二特征點的特征值匹配成功,則得到任意一個第一特征點與任意一個第二特征點的偏移向量。
步驟s1084,對每個偏移向量的出現(xiàn)次數(shù)進(jìn)行統(tǒng)計,得到至少一個主偏移向量。
步驟s1086,判斷至少一個主偏移向量是否滿足第二預(yù)設(shè)條件。
可選地,在本發(fā)明上述實施例中,第二預(yù)設(shè)條件用于表征第一主偏移向量的出現(xiàn)次數(shù)超過第二預(yù)設(shè)值。
具體地,由于主偏移向量之間差距較小,為了提高全局運動向量的處理的準(zhǔn)確度,可以判斷主偏移向量的出現(xiàn)次數(shù)是否超過第二預(yù)設(shè)值。
步驟s1088,如果第一主偏移向量滿足第二預(yù)設(shè)條件,則確定第一主偏移向量為全局運動向量。
在一種可選的方案中,當(dāng)前幀中的每個特征點與參考幀中的特征點的特征值進(jìn)行匹配,匹配成功后,記錄特征點的偏移,最后對每個偏移向量出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計,得到主偏移向量,如果主偏移向量滿足一定的條件,就作為全局運動向量。
可選地,在本發(fā)明上述實施例中,如果任意一個第一特征點的特征值與多個第二特征點的特征值匹配成功,則從多個第一特征點中刪除任意一個第一特征點。
在一種可選的方案中,在當(dāng)前幀中每個特征點進(jìn)行匹配的過程中。如果在參考幀中出現(xiàn)多個匹配點,認(rèn)為此時產(chǎn)生了匹配沖突,則將當(dāng)前點從特征點集合中刪除。
需要說明的是,可以對當(dāng)前幀和參考幀進(jìn)行相同的處理,得到當(dāng)前幀中的所有特征點和參考幀中的所有特征點,以及每個特征點的特征值。
可選地,在本發(fā)明上述實施例中,在步驟s108,根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量之后,該方法還包括:
步驟s114,分別對當(dāng)前幀和參考幀進(jìn)行分塊。
步驟s116,根據(jù)全局運動向量,將當(dāng)前幀的每個宏塊和參考幀的每個宏塊進(jìn)行比較,得到當(dāng)前幀的每個宏塊的類型信息。
具體地,上述的類型信息可以包括如下之一:零運動向量塊、全局運動向量塊和幀內(nèi)塊,其中,幀內(nèi)塊可以包括:預(yù)測塊、文字塊和圖片塊。
步驟s118,根據(jù)當(dāng)前幀的每個宏塊的類型信息,對當(dāng)前幀的每個宏塊進(jìn)行相應(yīng)編碼,得到多個編碼碼流。
步驟s120,根據(jù)全局運動向量,當(dāng)前幀的每個宏塊的類型信息和多個編碼碼流,生成復(fù)合碼流。
步驟s122,將復(fù)合碼流發(fā)送給接收設(shè)備。
具體地,上述的接收設(shè)備可以是控制屏幕顯示屏幕圖像的設(shè)備,例如屏幕的圖像工作站,也可以是顯示屏幕圖像的設(shè)備,例如投影儀。
在一種可選的方案中,在獲取到全局運動向量之后,可以將當(dāng)前幀分成m*n的宏塊,根據(jù)全局運動向量將當(dāng)前幀中的每個宏塊與參考幀中的每個宏塊進(jìn)行比較,將當(dāng)前幀中的每個宏塊進(jìn)行分類,得到每個宏塊的類型信息,對不同類型的宏塊采用不同的方式進(jìn)行編碼,得到當(dāng)前幀的壓縮碼流,即上述的多個編碼碼流,并根據(jù)全局運動向量,當(dāng)前幀的每個宏塊的類型信息和當(dāng)前幀的壓縮碼流,得到復(fù)合碼流,并將復(fù)合碼流發(fā)送給接收設(shè)備,接收設(shè)備可以根據(jù)當(dāng)前幀中每個宏塊的類型信息和全局運動向量,對當(dāng)前幀的壓縮碼流進(jìn)行解碼,并將解碼后的多個宏塊進(jìn)行合并,得到當(dāng)前幀圖像。
可選地,在本發(fā)明上述實施例中,步驟s116,根據(jù)全局運動向量,將當(dāng)前幀的每個宏塊和參考幀的每個宏塊進(jìn)行比較,得到當(dāng)前幀的每個宏塊的類型信息,包括:
步驟s1162,如果當(dāng)前幀的第三宏塊與參考幀中相同位置的宏塊相同,則確定第三宏塊的類型信息為零運動向量塊。
步驟s1164,如果當(dāng)前幀的第四宏塊按照全局運動向量進(jìn)行移動后,與參考幀中相應(yīng)位置的宏塊相同,則確定第四宏塊的類型信息為全局運動向量塊。
步驟s1166,確定當(dāng)前幀的第五宏塊的類型信息為幀內(nèi)塊,其中,第五宏塊為當(dāng)前幀的多個宏塊中除第三宏塊和第四宏塊之外的宏塊。
在一種可選的方案中,可以將當(dāng)前幀的每個宏塊和參考幀的每個宏塊進(jìn)行比較,如果相同位置的宏塊完全相同,則確定當(dāng)前宏塊的類型信息為零運動向量塊;如果當(dāng)前宏塊經(jīng)過全局運動向量運動之后和參考幀相應(yīng)位置的宏塊完全相同,則確定當(dāng)前宏塊的類型信息為全局運動向量塊,并確定其它的塊為幀內(nèi)塊。
可選地,在本發(fā)明上述實施例中,步驟s118,根據(jù)當(dāng)前幀的每個宏塊的類型信息,對當(dāng)前幀的每個宏塊進(jìn)行相應(yīng)編碼,得到多個編碼碼流,包括:
步驟s1182,對當(dāng)前幀中類型信息為幀內(nèi)塊的宏塊進(jìn)行幀內(nèi)編碼,得到多個編碼碼流。
在一種可選的方案中,在當(dāng)前幀中,對于類型信息為零運動向量的宏塊以及類型信息為全局運動向量塊的宏塊,無需進(jìn)行壓縮編碼;而對于類型信息為幀內(nèi)塊的宏塊,可以采用幀內(nèi)編碼方式進(jìn)行編碼壓縮,得到幀內(nèi)編碼碼流,即得到多個編碼碼流。
圖3是根據(jù)本發(fā)明實施例的一種可選的屏幕圖像的全局運動向量的處理方法的流程圖,圖4是根據(jù)本發(fā)明實施例的一種可選的屏幕圖像的編解碼系統(tǒng)的示意圖,下面結(jié)合圖3和圖4對本發(fā)明一種優(yōu)選的實施例進(jìn)行詳細(xì)說明。
如圖3所示,該方法可以包括如下步驟:
步驟s31,對參考幀進(jìn)行分塊,得到參考幀中特征點。
可選地,可以獲取屏幕圖像中的參考幀w×h,并將其分成16×16的塊,計算每個塊中除去邊緣點的所有其它點在0,45,90,135四個方向上與鄰域點的差值,并取四個值中的最小值作為當(dāng)前點的興趣值,每個塊中取所有點的興趣值中的最大值,如果此最大興趣值超出閾值,則此興趣值對應(yīng)的點為參考幀中的特征點。
步驟s32,計算各個特征點的特征值。
可選地,對于參考幀中的每個特征點,計算以此點為中心的5×5矩形區(qū)域中的25個像素值的hash值作為當(dāng)前特征點的特征值。
步驟s33,對當(dāng)前幀進(jìn)行分塊,得到當(dāng)前幀中特征點。
可選地,可以獲取屏幕圖像中的參考幀w×h,并將其分成16×16的塊,計算每個塊中除去邊緣點的所有其它點在0,45,90,135四個方向上與鄰域點的差值,并取四個值中的最小值作為當(dāng)前點的興趣值,每個塊中取所有點的興趣值中的最大值,如果此最大興趣值超出閾值,則此興趣值對應(yīng)的點為當(dāng)前幀中的特征點。
步驟s34,計算各個特征點的特征值。
可選地,對于當(dāng)前幀中的每個特征點,計算以此點為中心的5×5矩形區(qū)域中的25個像素值的hash值作為當(dāng)前特征點的特征值。
步驟s35,特征值匹配。
步驟s36,確定全局運動向量。
可選地,當(dāng)前幀中的每個特征點與參考幀中的特征點的特征值進(jìn)行匹配,匹配成功后,記錄特征點的偏移,最后對每個偏移向量出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計,得到主偏移向量,如果主偏移向量滿足一定的條件,就作為全局運動向量。在當(dāng)前幀中每個特征點進(jìn)行匹配的過程中,如果在參考幀中出現(xiàn)多個匹配點,認(rèn)為此時產(chǎn)生了匹配沖突,則將當(dāng)前點從特征點集合中刪除。
步驟s37,將當(dāng)前幀分成m*n的塊。
步驟s38,對m*n塊進(jìn)行分類。
可選地,在計算得到全局運動向量后,將前幀分成16×16的塊。當(dāng)前幀的每個塊和參考幀中的塊進(jìn)行比較,如果相同位置的塊完全相同,那么當(dāng)前塊記為0運動向量塊;如果當(dāng)前塊經(jīng)過全局運動后和參考幀相應(yīng)位置的塊完全相同,那么當(dāng)前塊為全局運動向量塊。其它的塊為幀內(nèi)塊
步驟s39,對m*n塊進(jìn)行編碼壓縮,得到復(fù)合碼流。
可選地,可以采用幀內(nèi)編碼方式對幀內(nèi)塊進(jìn)行編碼壓縮,得到幀內(nèi)編碼碼流,并將塊類型信息、全局運動矢量值和幀內(nèi)編碼碼流組合為復(fù)合碼流,傳輸?shù)浇邮赵O(shè)備,接收設(shè)備對每個塊的碼流進(jìn)行解碼并合并得到屏幕圖像中的當(dāng)前幀。
如圖4所示,屏幕圖像的編解碼系統(tǒng)可以包括發(fā)送設(shè)備和接收設(shè)備,其中,發(fā)送設(shè)備可以是便攜設(shè)備,例如,筆記本電腦、平板電腦等,接收設(shè)備可以是顯示設(shè)備,例如,拼接屏,投影儀等。發(fā)送設(shè)備可以包括:當(dāng)前幀和參考幀特征點選取模塊,全局運動向量估計模塊,不同類型塊編碼模塊,碼流組織模塊和發(fā)送模塊,接收設(shè)備可以包括:接收模塊,碼流拆分模塊,不同類型塊解碼模塊和幀顯示模塊。其中,當(dāng)前幀和參考幀特征點選取模塊用于執(zhí)行圖3中的步驟s31和步驟s33,全局運動矢量估計模塊用于執(zhí)行圖3中的步驟s32、步驟s34至步驟s36,不同類型塊編碼模塊用于執(zhí)行圖3中的步驟s38和步驟s39中的對m*n塊進(jìn)行編碼壓縮步驟,碼流組織模塊用于執(zhí)行圖3中的步驟s39中的得到復(fù)合碼流步驟,發(fā)送模塊用于將復(fù)合碼流發(fā)送給接收設(shè)備的接收模塊,碼流拆分模塊用于執(zhí)行與碼流組織模塊相對應(yīng)的解碼步驟,不同類型塊解碼模塊用于執(zhí)行與不同類型塊編碼模塊相對應(yīng)的解碼步驟,幀顯示模塊用于將不同類型塊解碼模塊得到的每個塊進(jìn)行合并,并將合并后的圖像幀進(jìn)行顯示。
通過上述方案,提供了一種屏幕圖像的全局運動向量的處理方法,包括圖像特征點的提取方法和特征值的匹配方法,達(dá)到快遞、準(zhǔn)確地確定全局運動向量,從而進(jìn)一步達(dá)到更高的壓縮性能,并且可以適用于所有屏幕圖像壓縮的場合,無需特殊設(shè)備支持,適用于多種類型移動終端,包括手機(jī)、pc等設(shè)備,具有傳輸顯示效果好、用戶體驗好的效果。
實施例2
根據(jù)本發(fā)明實施例,提供了一種屏幕圖像的全局運動向量的處理裝置的實施例。
圖5是根據(jù)本發(fā)明實施例的一種屏幕圖像的全局運動向量的處理裝置的示意圖,如圖5所示,該裝置包括:
第一獲取單元51,用于獲取屏幕圖像中的當(dāng)前幀和參考幀。
具體地,上述的屏幕圖像可以是對屏幕進(jìn)行錄屏,得到的多幀圖像;上述的當(dāng)前幀可以是多幀圖像中當(dāng)前需要處理的圖像幀;上述的參考幀可以是多幀圖像中與當(dāng)前幀相鄰的圖像幀。
第二獲取單元53,用于獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,其中,通過當(dāng)前像素點與相鄰像素點的差值獲取特征點。
具體地,上述的第一特征點可以是當(dāng)前幀圖像中的像素點;上述的第二特征點可以是當(dāng)前幀圖像中的像素點。
在一種可選的方案中,可以對當(dāng)前幀和參考幀進(jìn)行分塊,并計算每個分塊中多個像素點與預(yù)設(shè)方向上相鄰點的差值,得到每個像素點的興趣值,并從多個像素點的興趣值中選取出滿足壓縮條件的像素點作為特征點。
匹配單元55,用于將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配,其中,通過像素值的哈希值得到特征值。
具體地,上述的特征值可以是特征點周圍預(yù)設(shè)范圍內(nèi)所有像素值的哈希值。
在一種可選的方案中,在確定出每個分塊的特征點之后,可以計算每個特征點周圍一定范圍內(nèi)的所有像素值的hash值,得到每個特征點的特征值,并將當(dāng)前幀中每個特征點的特征值與參考幀中每個特征點的特征值進(jìn)行匹配,得到匹配點。
處理單元57,用于根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量。
在一種可選的方案中,如果第一特征點的特征值與第二特征點的特征值匹配成功,則可以記錄第一特征點到第二特征點的偏移向量,得到當(dāng)前需要處理的圖像幀的全局運動向量。
根據(jù)本發(fā)明上述實施例,獲取屏幕圖像中的當(dāng)前幀和參考幀,獲取當(dāng)前幀中的多個第一特征點,并獲取參考幀中的多個第二特征點,將每個第一特征點的特征值與每個第二特征點的特征值進(jìn)行匹配,根據(jù)匹配結(jié)果,得到當(dāng)前幀的全局運動向量,從而實現(xiàn)全局運動向量的計算過程。容易注意到的是,由于可以通過當(dāng)前像素點與相鄰像素點的差值獲取特征點,并通過像素值的哈希值得到特征值,與現(xiàn)有技術(shù)相比,特征點的獲取與特征值的匹配均較為簡單,全局運動向量的處理過程耗時短,從而解決了現(xiàn)有技術(shù)中屏幕圖像的全局運動向量的處理方法耗時長,實時壓縮性能差技術(shù)問題。因此,通過本發(fā)明上述實施例提供的方案,可以達(dá)到降低算法復(fù)雜度,縮短處理時長,進(jìn)一步達(dá)到提高壓縮性能的技術(shù)效果。
可選地,在本發(fā)明上述實施例中,第二獲取單元53包括:分塊模塊,用于對當(dāng)前幀進(jìn)行分塊,得到當(dāng)前幀的多個第一宏塊,對參考幀進(jìn)行分塊,得到參考幀的多個第二宏塊;獲取模塊,用于獲取每個第一宏塊中的所有像素點的興趣值,并獲取每個第二宏塊中的所有像素點的興趣值;第一處理模塊,用于將每個第一宏塊中的最大興趣值對應(yīng)的像素點作為第一特征點,并將每個第二宏塊中的最大興趣值對應(yīng)的像素點作為第二特征點。
可選地,在本發(fā)明上述實施例中,獲取模塊包括:計算子模塊,用于計算每個第一宏塊中的第一像素點在多個預(yù)設(shè)方向上與相鄰的第二像素點的差值,得到多個第一差值,并計算每個第二宏塊中的第三像素點在多個預(yù)設(shè)方向上與相鄰的第四像素點的差值,得到多個第二差值,其中,第一像素點為每個第一宏塊中除邊緣像素點之外的像素點,第三像素點為每個第二宏塊中除邊緣像素點之外的像素點;選取子模塊,用于選取多個第一差值中的最小值作為第一像素點的興趣值,并選取多個第二差值中的最小值作為第三像素點的興趣值。
可選地,在本發(fā)明上述實施例中,第一處理模塊包括:獲取子模塊,用于獲取每個第一宏塊中的最大興趣值,并獲取每個第二宏塊中的最大興趣值;判斷子模塊,用于判斷每個第一宏塊中的最大興趣值是否滿足第一預(yù)設(shè)條件,并判斷每個第二宏塊中的最大興趣值是否超過第一預(yù)設(shè)條件;處理子模塊,用于股如果每個第一宏塊中的最大興趣值滿足第一預(yù)設(shè)條件,則將每個第一宏塊中的最大興趣值對應(yīng)的像素點作為第一特征點,如果每個第二宏塊中的最大興趣值滿足第一預(yù)設(shè)條件,則將獲取每個第二宏塊中的最大興趣值對應(yīng)的像素點作為第二特征點。
可選地,在本發(fā)明上述實施例中,第一預(yù)設(shè)條件用于表征最大興趣值超過第一預(yù)設(shè)值。
可選地,在本發(fā)明上述實施例中,該裝置還包括:第三獲取單元,用于獲取在每個第一特征點的預(yù)設(shè)范圍內(nèi)的多個第五像素點的像素值,并獲取在每個第二特征點的預(yù)設(shè)范圍內(nèi)的多個第六像素點的像素值;計算單元,用于計算多個第五像素點的像素值的哈希值,得到第一特征點的特征值,并計算多個第六像素點的像素值的哈希值,得到第二特征點的特征值。
可選地,在本發(fā)明上述實施例中,匹配單元55包括:第二處理模塊,用于如果任意一個第一特征點的特征值與任意一個第二特征點的特征值匹配成功,則得到任意一個第一特征點與任意一個第二特征點的偏移向量;統(tǒng)計模塊,用于對每個偏移向量的出現(xiàn)次數(shù)進(jìn)行統(tǒng)計,得到至少一個主偏移向量;判斷模塊,用于判斷至少一個主偏移向量是否滿足第二預(yù)設(shè)條件;確定模塊,用于如果第一主偏移向量滿足第二預(yù)設(shè)條件,則確定第一主偏移向量為全局運動向量。
可選地,在本發(fā)明上述實施例中,第二預(yù)設(shè)條件用于表征第一主偏移向量的出現(xiàn)次數(shù)超過第二預(yù)設(shè)值。
可選地,在本發(fā)明上述實施例中,如果任意一個第一特征點的特征值與多個第二特征點的特征值匹配成功,則所述裝置還包括:刪除模塊,用于從多個第一特征點中刪除任意一個第一特征點。
可選地,在本發(fā)明上述實施例中,該裝置還包括:分塊單元,用于分別對當(dāng)前幀和參考幀進(jìn)行分塊;比較單元,用于根據(jù)全局運動向量,將當(dāng)前幀的每個宏塊和參考幀的每個宏塊進(jìn)行比較,得到當(dāng)前幀的每個宏塊的類型信息;編碼單元,用于根據(jù)當(dāng)前幀的每個宏塊的類型信息,對當(dāng)前幀的每個宏塊進(jìn)行相應(yīng)編碼,得到多個編碼碼流;生成單元,用于根據(jù)全局運動向量,當(dāng)前幀的每個宏塊的類型信息和多個編碼碼流,生成復(fù)合碼流;發(fā)送單元,用于將復(fù)合碼流發(fā)送給接收設(shè)備。
可選地,在本發(fā)明上述實施例中,比較單元包括:第一確定子模塊,用于如果當(dāng)前幀的第三宏塊與參考幀中相同位置的宏塊相同,則確定第三宏塊的類型信息為零運動向量塊;第二確定子模塊,用于如果當(dāng)前幀的第四宏塊按照全局運動向量進(jìn)行移動后,與參考幀中相應(yīng)位置的宏塊相同,則確定第四宏塊的類型信息為全局運動向量塊;第三確定子模塊,用于確定當(dāng)前幀的第五宏塊的類型信息為幀內(nèi)塊,其中,第五宏塊為當(dāng)前幀的多個宏塊中除第三宏塊和第四宏塊之外的宏塊。
可選地,在本發(fā)明上述實施例中,編碼單元包括:編碼模塊,用于對當(dāng)前幀中類型信息為幀內(nèi)塊的宏塊進(jìn)行幀內(nèi)編碼,得到多個編碼碼流。
需要說明的是,本實施例中的優(yōu)選實施方式可以參見實施例1中的相關(guān)描述,此處不再贅述。
實施例3
根據(jù)本發(fā)明實施例,提供了一種存儲介質(zhì)的實施例,存儲介質(zhì)包括存儲的程序,其中,在程序運行時控制存儲介質(zhì)所在設(shè)備執(zhí)行上述實施例1中的屏幕圖像的全局運動向量的處理方法。
實施例4
根據(jù)本發(fā)明實施例,提供了一種處理器的實施例,處理器用于運行程序,其中,程序運行時執(zhí)行上述實施例1中的屏幕圖像的全局運動向量的處理方法。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可為個人計算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。