本發(fā)明涉及視頻編碼技術(shù)領(lǐng)域,尤其涉及一種視頻幀壓縮方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)中,在視頻編解碼過程中需要頻繁地讀取內(nèi)存中的圖像數(shù)據(jù),這一過程需要占用大量的系統(tǒng)帶寬和資源,為了節(jié)省系統(tǒng)帶寬及資源,通常是先利用預(yù)測編碼技術(shù)對待存儲的圖像數(shù)據(jù)進行壓縮,并將壓縮后的圖像數(shù)據(jù)存儲到內(nèi)存中,以便于后續(xù)的使用。
例如,可以利用DPCM(Differential Pulse Code Modulation,差分脈沖編碼調(diào)制)技術(shù)對圖像數(shù)據(jù)進行壓縮,具體為:對于圖像數(shù)據(jù)的像素數(shù)據(jù)塊,首先根據(jù)圖像的空間相關(guān)性,通過周邊位置的像素值對當(dāng)前位置的像素值進行預(yù)測,其中周邊位置的像素值稱為預(yù)測值,當(dāng)前位置的實際像素值與預(yù)測值之間的差值稱為殘差值,然后,采用變長編碼方式對得到的殘差數(shù)據(jù)進行編碼,從而實現(xiàn)對圖像數(shù)據(jù)的壓縮。變長編碼方式是指將數(shù)據(jù)進行分組,并根據(jù)分組中數(shù)據(jù)的大小選用特定長度的bit來表示信息,其中,變長編碼方式包括有符號變長編碼和無符號變長編碼,即對于[-2N,2N-1]之間的有符號數(shù)據(jù)可以用N+1bit來表示,對于[0,2N-1]之間的無符號數(shù)據(jù)可以用N bit來表示。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下技術(shù)問題:
上述圖像數(shù)據(jù)的壓縮方式是采用固定的預(yù)設(shè)模板對當(dāng)前位置的像素值進行預(yù)測(例如,規(guī)定以左邊的像素值作為當(dāng)前位置像素值的預(yù)測值),但是由于數(shù)據(jù)是隨機的,所以任何預(yù)設(shè)模板都難以很好地匹配所有的情況,可見上述圖像像素值預(yù)測方式的精確性不高,進而會導(dǎo)致殘差數(shù)據(jù)的均值偏離或產(chǎn)生絕對值過大的殘差數(shù)據(jù),即得到的殘差數(shù)據(jù)中的相鄰的像素數(shù)據(jù)間仍存在較強的相關(guān)性,從而限制了圖像數(shù)據(jù)壓縮率的提高。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種視頻幀壓縮方法及裝置,其能夠為視頻幀中的像素提供更 精確的預(yù)測值,以減小現(xiàn)有壓縮方式中殘差值的絕對值,從而進一步提高視頻幀的壓縮率。
一方面,本發(fā)明提供一種視頻幀壓縮方法,所述方法包括:
對視頻幀進行區(qū)域劃分;
根據(jù)當(dāng)前像素所屬的區(qū)域,確定所述當(dāng)前像素所對應(yīng)的至少一種預(yù)測方式;
根據(jù)所述至少一種預(yù)測方式,確定所述當(dāng)前像素所對應(yīng)的最佳預(yù)測值;
將所述當(dāng)前像素的像素值與所述最佳預(yù)測值進行作差,得到所述當(dāng)前像素對應(yīng)的殘差值,并對所述殘差值進行壓縮處理。
另一方面,本發(fā)明提供一種視頻幀壓縮裝置,所述裝置包括劃分模塊、第一確定模塊、第二確定模塊、預(yù)測模塊以及壓縮模塊,其中,
所述劃分模塊,用于對視頻幀進行區(qū)域劃分;
所述第一確定模塊,用于根據(jù)當(dāng)前像素所屬的區(qū)域,確定所述當(dāng)前像素所對應(yīng)的至少一種預(yù)測方式;
所述第二確定模塊,用于根據(jù)所述至少一種預(yù)測方式,確定所述當(dāng)前像素所對應(yīng)的最佳預(yù)測值;
所述預(yù)測模塊,用于將所述當(dāng)前像素的像素值與所述最佳預(yù)測值進行作差,得到所述當(dāng)前像素對應(yīng)的殘差值;
所述壓縮模塊,用于對所述殘差值進行壓縮處理。
本發(fā)明提供的具有自適應(yīng)特性的視頻幀壓縮方法及裝置,對視頻幀進行區(qū)域劃分;根據(jù)當(dāng)前像素所屬的區(qū)域,確定所述當(dāng)前像素所對應(yīng)的至少一種預(yù)測方式;根據(jù)所述至少一種預(yù)測方式,確定所述當(dāng)前像素所對應(yīng)的最佳預(yù)測值;將所述當(dāng)前像素的像素值與所述最佳預(yù)測值進行作差,得到所述當(dāng)前像素對應(yīng)的殘差值,并對所述殘差值進行壓縮處理。與現(xiàn)有技術(shù)相比,其能夠為所述視頻幀中的像素提供更精確的預(yù)測值,以減小現(xiàn)有壓縮方式中殘差值的絕對值,從而進一步提高視頻幀的壓縮率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明 的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明視頻幀壓縮方法一實施例的流程示意圖;
圖2為本發(fā)明視頻幀壓縮方法另一實施例的流程示意圖;
圖3為以4×4大小的視頻幀為例,闡述上述實施例中所述視頻幀的區(qū)域劃分示意圖;
圖4為本發(fā)明視頻幀壓縮裝置一實施例的結(jié)構(gòu)示意圖;
圖5為本發(fā)明視頻幀壓縮裝置另一實施例的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
如圖1所示,本發(fā)明實施例提供一種視頻幀壓縮方法,所述方法包括:
S11、對視頻幀進行區(qū)域劃分。
S12、根據(jù)當(dāng)前像素所屬的區(qū)域,確定所述當(dāng)前像素所對應(yīng)的至少一種預(yù)測方式。
S13、根據(jù)所述至少一種預(yù)測方式,確定所述當(dāng)前像素所對應(yīng)的最佳預(yù)測值。
S14、將所述當(dāng)前像素的像素值與所述最佳預(yù)測值進行作差,得到所述當(dāng)前像素對應(yīng)的殘差值,并對所述殘差值進行壓縮處理。
本發(fā)明實施例提供的視頻幀壓縮方法,對視頻幀進行區(qū)域劃分;根據(jù)當(dāng)前像素所屬的區(qū)域,確定所述當(dāng)前像素所對應(yīng)的至少一種預(yù)測方式;根據(jù)所述至少一種預(yù)測方式,確定所述當(dāng)前像素所對應(yīng)的最佳預(yù)測值;將所述當(dāng)前像素的像素值與所述最佳預(yù)測值進行作差,得到所述當(dāng)前像素對應(yīng)的殘差值,并對所述殘差值進行壓縮處理。與現(xiàn)有技術(shù)相比,其能夠為所述視頻幀中的像素提供更精確的預(yù)測值,以減小現(xiàn)有壓縮方式中殘差值的絕對值,從而進一步提高視頻幀的壓縮率。
如圖2所示,本發(fā)明實施例提供一種視頻幀壓縮方法,所述方法包括:
S21、對視頻幀進行區(qū)域劃分;
區(qū)域劃分的具體方法為:根據(jù)所述視頻幀的各個像素是否具有左相鄰像素和/或上相鄰像素,將所述視頻幀劃分為第一區(qū)域、第二區(qū)域、第三區(qū)域和第四區(qū)域。
這里,以4×4大小的視頻幀為例,具體的劃分方式如圖3所示,由圖3可知,所述第一區(qū)域B1內(nèi)的像素不具有左相鄰像素和上相鄰像素,所述第二區(qū)域B2內(nèi)的像素不具有左相鄰像素,所述第三區(qū)域B3內(nèi)的像素不具有上相鄰像素,所述第四區(qū)域B4內(nèi)的像素具有左相鄰像素和上相鄰像素。
S22、確定當(dāng)前像素的至少一個預(yù)測方式;
具體地,根據(jù)當(dāng)前像素所屬的區(qū)域,確定所述當(dāng)前像素所對應(yīng)的至少一種預(yù)測方式。
例如,當(dāng)所述視頻幀由M×N個像素構(gòu)成,所述像素的像素值為A[i][j](i和j分別表示列和行,且i=0、1、…、M-1,j=0、1、…、N-1)時,
若所述當(dāng)前像素屬于所述第一區(qū)域,則對所述當(dāng)前像素不進行預(yù)測,并保留所述當(dāng)前像素的像素值A(chǔ)[0][0];
若所述當(dāng)前像素屬于所述第二區(qū)域且所述當(dāng)前像素與所述第一區(qū)域內(nèi)的像素相鄰,則確定所述當(dāng)前像素具有一種預(yù)測方式,所述預(yù)測方式對應(yīng)的預(yù)測值為A[0][0];
若所述當(dāng)前像素屬于所述第二區(qū)域且所述當(dāng)前像素與所述第一區(qū)域內(nèi)的像素不相鄰,則確定所述當(dāng)前像素具有兩種預(yù)測方式,所述兩種預(yù)測方式對應(yīng)的預(yù)測值分別為A[0][j-1]和2*A[0][j-1]-A[0][j-2];
若所述當(dāng)前像素屬于所述第三區(qū)域且所述當(dāng)前像素與所述第一區(qū)域內(nèi)的像素相鄰,則確定所述當(dāng)前像素具有兩種預(yù)測方式,所述兩種預(yù)測方式對應(yīng)的預(yù)測值分別為A[0][0]和A[0][1];
若所述當(dāng)前像素屬于所述第三區(qū)域且所述當(dāng)前像素與所述第一區(qū)域內(nèi)的像素不相鄰,則確定所述當(dāng)前像素具有三種預(yù)測方式,所述三種預(yù)測方式對應(yīng)的預(yù)測值分別為A[i-1][0]、A[i-1][1]和2*A[i-1][0]-A[i-2][0];
若所述當(dāng)前像素屬于所述第四區(qū)域,則確定所述當(dāng)前像素具有三種預(yù)測方 式,所述三種預(yù)測方式對應(yīng)的預(yù)測值分別為A[i-1][j]、A[i][j-1]和(A[i-1][j]+A[i][j-1]+1)/2。
上述列舉了設(shè)置多種預(yù)測方式的一種情況,但是為當(dāng)前像素提供多種預(yù)測方式的方法不僅僅限于此。
S23、得到當(dāng)前像素的至少一個預(yù)測值;
具體地,根據(jù)所述至少一種預(yù)測方式,得到所述當(dāng)前像素對應(yīng)的至少一個預(yù)測值。
S24、確定當(dāng)前像素的最佳預(yù)測值;
具體地,將所述當(dāng)前像素的像素值分別與所述至少一個預(yù)測值進行比較,以確定所述當(dāng)前像素所對應(yīng)的最佳預(yù)測值,其中,所述最佳預(yù)測值為所述至少一個預(yù)測值中與所述當(dāng)前像素的像素值最接近的一個預(yù)測值。
S25、得到當(dāng)前像素的殘差值;
具體地,將所述當(dāng)前像素的像素值與所述最佳預(yù)測值進行作差,得到所述當(dāng)前像素對應(yīng)的殘差值。
S26、對所述殘差值進行壓縮處理。
具體地,所述對所述殘差值進行壓縮處理為對所述第一區(qū)域內(nèi)像素的像素值以及所述第一區(qū)域以外的各個像素對應(yīng)的殘差值進行變長壓縮編碼。
其中,變長壓縮編碼是指將待進行壓縮編碼數(shù)據(jù)進行分組,并根據(jù)分組中數(shù)據(jù)的大小選用特定長度的bit來表示信息,其中,所述變長壓縮編碼包括有符號變長壓縮編碼和無符號變長壓縮編碼,即對于[-2N,2N-1]之間的有符號數(shù)據(jù)可以用N+1bit來表示,對于[0,2N-1]之間的無符號數(shù)據(jù)可以用N bit來表示。
較佳地,在步驟S25與步驟S26之間還可包括步驟:標(biāo)記當(dāng)前像素的實際預(yù)測方式;
具體地,按照以下標(biāo)記方式對所述當(dāng)前像素的實際預(yù)測方式進行標(biāo)記:
若所述當(dāng)前像素有一種預(yù)測方式,則不標(biāo)記所述當(dāng)前像素的實際預(yù)測方式;
若所述當(dāng)前像素有兩種預(yù)測方式,則使用1個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式;
若所述當(dāng)前像素有三種預(yù)測方式,則使用1或2個比特標(biāo)記所述當(dāng)前像素 的實際預(yù)測方式,其中,當(dāng)所述當(dāng)前像素的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式相同時使用1個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式;當(dāng)所述當(dāng)前像素的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式不相同時使用2個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式。
由此可見,與現(xiàn)有技術(shù)相比,由于在對所述當(dāng)前像素的實際預(yù)測方式進行標(biāo)記時,采用的是自適應(yīng)的標(biāo)記方式,即當(dāng)所述當(dāng)前像素的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式相同時僅使用1個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式,以實現(xiàn)使用盡量少的比特來標(biāo)記預(yù)測方式,從而進一步提高視頻幀的壓縮率。
但是,對所述當(dāng)前像素的實際預(yù)測方式進行標(biāo)記的方式不僅僅限于此。
其中,所述視頻幀的各個像素按照自左向右、自上而下地順序進行預(yù)測。
下面將以4×4大小的視頻幀為例,闡述上述視頻幀壓縮方法。
如圖3所示,為所述4×4大小的視頻幀的分區(qū)示意圖,其中所述視頻幀的各個像素及其像素值為Aij和A[i][j](i為列坐標(biāo),取值為0、1、2、3,j為行坐標(biāo),取值為0、1、2、3),根據(jù)所述各個像素的相鄰像素情況,即是否具有左相鄰像素或上相鄰像素,將所述視頻幀劃分為第一區(qū)域B1、第二區(qū)域B2、第三區(qū)域B3和第四區(qū)域B4。
1)所述第一區(qū)域B1內(nèi)的像素A00
由于所述第一區(qū)域B1內(nèi)的像素A00不具有左相鄰像素和上相鄰像素,故對于所述像素A00不進行預(yù)測,而是直接保留其原像素值A(chǔ)[0][0]。
2)所述第二區(qū)域B2內(nèi)的像素A01、A02和A03,
像素A01具有一種預(yù)測方式,所述像素A01采用所述預(yù)測方式得到的預(yù)測值為A[0][0],此時,由于只具有一種預(yù)測方式,所以不需要額外的比特對像素A01的實際預(yù)測方式進行標(biāo)記;
像素A02具有兩種預(yù)測方式,所述像素A02采用所述兩種預(yù)測方式得到的兩個預(yù)測值分別為A[0][1]和2*A[0][1]-A[0][0],并將所述像素A02的像素值A(chǔ)[0][2]分別與上述兩個預(yù)測值進行比較,并將與A[0][2]最接近的一個預(yù)測值作為最佳預(yù)測值,而且使用1個比特標(biāo)記所述像素A02的實際預(yù)測方式,例如,可以使用 1B表示確定A[0][1]作為A02最佳預(yù)測值,0B表示確定2*A[0][1]-A[0][0]作為A02的最佳預(yù)測值;
像素A03具有兩種預(yù)測方式,所述像素A03采用所述兩種預(yù)測方式得到的兩個預(yù)測值分別為A[0][2]和2*A[0][2]-A[0][1],并將所述像素A03的像素值A(chǔ)[0][3]分別與上述兩個預(yù)測值進行比較,并將與A[0][3]最接近的一個預(yù)測值作為最佳預(yù)測值,而且使用1個比特標(biāo)記所述像素A03的實際預(yù)測方式,例如,可以使用1B表示確定A[0][2]作為A03的最佳預(yù)測值,0B表示確定2*A[0][2]-A[0][1]作為A03的最佳預(yù)測值。
3)所述第三區(qū)域B3內(nèi)的像素A10、A20和A30
像素A10具有兩種預(yù)測方式,所述像素A10采用所述兩種預(yù)測方式得到的兩個預(yù)測值分別為A[0][0]和A[0][1],并將所述像素A10的像素值A(chǔ)[1][0]分別與上述兩個預(yù)測值進行比較,并將與A[1][0]最接近的一個預(yù)測值作為最佳預(yù)測值,而且使用1個比特標(biāo)記所述像素A10的實際預(yù)測方式,例如,可以使用1B表示確定A[0][0]作為A10最佳預(yù)測值,0B表示確定A[0][1]作為A10的最佳預(yù)測值;
像素A20具有三種預(yù)測方式,所述像素A20采用所述三種預(yù)測方式得到的三個預(yù)測值分別為A[1][0]、A[1][1]和2*A[1][0]-A[0][0],并將所述像素A20的像素值A(chǔ)[2][0]分別與上述三個預(yù)測值進行比較,并將與A[2][0]最接近的一個預(yù)測值作為最佳預(yù)測值,由于A20具有三種預(yù)測方式,當(dāng)采用二進制來標(biāo)記上述三種預(yù)測方式時,很容易想到可以使用2個比特來標(biāo)記A20的實際預(yù)測方式,為了進一步提供視頻幀的壓縮率,這里還提供了另一種標(biāo)記方式,即自適應(yīng)的標(biāo)記方式:可以使用1個或2個比特標(biāo)記A20的實際預(yù)測方式,具體地,當(dāng)所述當(dāng)前像素的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式相同時使用1個比特標(biāo)記所述當(dāng)前像素值的實際預(yù)測方式;當(dāng)所述當(dāng)前像素的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式不相同時使用2個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式。
例如,假設(shè)11B表示采用左相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,10B表示采用左下相鄰像素值作為當(dāng)前像素的最佳預(yù)測值。
情形一、像素A10采用其左相鄰像素值A(chǔ)[0][0]作為最佳預(yù)測值:
若像素A20采用其左相鄰像素值A(chǔ)[1][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是 應(yīng)該使用11B表示確定A[1][0]作為像素A20的最佳預(yù)測值,這里注意到A20的實際預(yù)測方式與其左相鄰像素A10的實際預(yù)測方式相同,即均是采用左相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,這里可以使用0B代替11B來表示確定A[1][0]作為像素A20的最佳預(yù)測值;
若像素A20采用其左下相鄰像素值A(chǔ)[1][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用10B表示確定A[1][1]作為像素A20的最佳預(yù)測值;
若像素A20采用2*A[1][0]-A[0][0]作為最佳預(yù)測值,由于已經(jīng)采用0B來表示確定A[1][0]作為像素A20的最佳預(yù)測值,即11B未被占用,因而可以使用11B表示確定2*A[1][0]-A[0][0]作為像素A20的最佳預(yù)測值。
情形二、像素A10采用其左下相鄰像素值A(chǔ)[0][1]作為最佳預(yù)測值:
若像素A20采用其左相鄰像素值A(chǔ)[1][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用11B表示確定A[1][0]作為像素A20的最佳預(yù)測值;
若像素A20采用其左下相鄰像素值A(chǔ)[1][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該采用10B表示確定A[1][1]作為像素A20的最佳預(yù)測值,這里注意到A20的實際預(yù)測方式與其左相鄰像素A10的實際預(yù)測方式相同,即均是采用左下相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,這里可以使用0B代替10B來表示確定A[1][1]作為像素A20的最佳預(yù)測值;
若像素A20采用2*A[1][0]-A[0][0]作為最佳預(yù)測值,由于已經(jīng)采用0B來表示確定A[1][1]作為像素A20的最佳預(yù)測值,即10B未被占用,因而可以使用10B表示確定2*A[1][0]-A[0][0]作為像素A20的最佳預(yù)測值。
類似地,所述像素A30具有三種預(yù)測方式,所述像素A30采用所述三種預(yù)測方式得到的三個預(yù)測值分別為A[2][0]、A[2][1]和2*A[2][0]-A[1][0],并將所述像素A30的像素值A(chǔ)[3][0]分別與上述三個預(yù)測值進行比較,并將與A[3][0]最接近的一個預(yù)測值作為最佳預(yù)測值。
例如,假設(shè)11B表示采用左相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,10B表示采用左下相鄰像素值作為當(dāng)前像素的最佳預(yù)測值。
情形一、像素A20采用其左相鄰像素值A(chǔ)[1][0]作為最佳預(yù)測值:
若像素A30采用其左相鄰像素值A(chǔ)[2][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是 應(yīng)該使用11B表示確定A[2][0]作為像素A30的最佳預(yù)測值,這里注意到A30的實際預(yù)測方式與其左相鄰像素A20的實際預(yù)測方式相同,即均是采用左相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,這里可以使用0B代替11B來表示確定A[2][0]作為像素A30的最佳預(yù)測值;
若像素A30采用其左下相鄰像素值A(chǔ)[2][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用10B表示確定A[2][1]作為像素A30的最佳預(yù)測值;
若像素A30采用2*A[2][0]-A[1][0]作為最佳預(yù)測值,由于已經(jīng)采用0B來表示確定A[2][0]作為像素A30的最佳預(yù)測值,即11B未被占用,因而可以使用11B表示確定2*A[2][0]-A[1][0]作為像素A30的最佳預(yù)測值。
情形二、像素A20采用其左下相鄰像素值A(chǔ)[1][1]作為最佳預(yù)測值:
若像素A30采用其左相鄰像素值A(chǔ)[2][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用11B表示確定A[2][0]作為像素A30的最佳預(yù)測值;
若像素A30采用其左下相鄰像素值A(chǔ)[2][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用10B表示確定A[2][1]作為像素A30最佳預(yù)測值,這里注意到A30的實際預(yù)測方式與其左相鄰像素A20的實際預(yù)測方式相同,即均是采用左下相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,這里可以使用0B代替10B來表示確定A[2][1]作為像素A30的最佳預(yù)測值;
若像素A30采用2*A[2][0]-A[1][0]作為最佳預(yù)測值,由于已經(jīng)采用0B來表示確定A[2][1]作為像素A30最佳預(yù)測值,即10B未被占用,因而可以使用10B表示確定2*A[2][0]-A[1][0]作為像素A30的最佳預(yù)測值。
情形三、像素A20采用2*A[1][0]-A[0][0]作為最佳預(yù)測值:
若像素A30采用其左相鄰像素值A(chǔ)[3][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用11B表示確定A[2][0]作為像素A30的最佳預(yù)測值;
若像素A30采用其左下相鄰像素值A(chǔ)[2][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該10B表示確定A[2][1]作為像素A30的最佳預(yù)測值;
若像素A30采用2*A[2][0]-A[1][0]作為最佳預(yù)測值,這里注意到A30的實際預(yù)測方式與其左相鄰像素A20的實際預(yù)測方式相同,因而可以采用0B來表示確定2*A[2][0]-A[1][0]作為像素A30的最佳預(yù)測值。
4)所述第四區(qū)域B4內(nèi)的像素A11和A21
對于所述第四區(qū)域B4內(nèi)的像素值,其中各個像素均具有左相鄰像素值且具有上相鄰像素值,這里以像素A11和A21為例進行說明。
像素A11具有三種預(yù)測方式,所述像素A11采用所述三種預(yù)測方式得到的三個預(yù)測值分別為A[0][1]、A[1][0]和(A[0][1]+A[1][0]+1)/2,并將所述像素A11的像素值A(chǔ)[1][1]分別與上述三個預(yù)測值進行比較,并將與A[1][1]最接近的一個預(yù)測值作為最佳預(yù)測值。
例如,假設(shè)11B表示采用左相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,10B表示采用上相鄰像素值作為當(dāng)前像素的最佳預(yù)測值。
考慮到像素A01只能采用A[0][0]作為最佳像素值。
若像素A11采用其左相鄰像素值A(chǔ)[0][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用11B表示確定A[0][1]作為像素A11的最佳預(yù)測值;
若像素A11采用其上相鄰像素值A(chǔ)[1][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用10B表示確定A[1][0]作為像素A11的最佳預(yù)測值,這里注意到A11的實際預(yù)測方式與其左相鄰像素A01的實際預(yù)測方式相同,即均是采用上相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,這里可以使用0B代替10B來表示確定A[1][0]作為像素A11的最佳預(yù)測值;
若像素A11采用(A[0][1]+A[1][0]+1)/2作為最佳預(yù)測值,由于已經(jīng)采用0B來表示確定A[1][0]作為像素A11的最佳預(yù)測值,即10B未被占用,因而可以使用10B表示確定(A[0][1]+A[1][0]+1)/2作為像素A11的最佳預(yù)測值。
像素A21具有三種預(yù)測方式,所述像素A21采用所述三種預(yù)測方式得到的三個預(yù)測值分別為A[1][1]、A[2][0]和(A[1][1]+A[2][0]+1)/2,并將所述像素A21的像素值A(chǔ)[2][1]分別與上述三個預(yù)測值進行比較,并將與A[2][1]最接近的一個預(yù)測值作為最佳預(yù)測值。
例如,假設(shè)11B表示采用左相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,10B表示采用上相鄰像素值作為當(dāng)前像素的最佳預(yù)測值。
情形一、像素A11采用其左相鄰像素值A(chǔ)[0][1]作為最佳預(yù)測值:
若像素A21采用其左相鄰像素值A(chǔ)[1][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是 應(yīng)該11B表示確定A[1][1]作為像素A21的最佳預(yù)測值,這里注意到A21的實際預(yù)測方式與其左相鄰像素A11的實際預(yù)測方式相同,即均是采用左相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,這里可以使用0B代替11B來表示確定A[1][1]作為像素A21的最佳預(yù)測值;
若像素A21采用其上相鄰像素值A(chǔ)[2][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用10B表示確定A[2][0]作為像素A21的最佳預(yù)測值;
若像素A21采用(A[1][1]+A[2][0]+1)/2作為最佳預(yù)測值,由于已經(jīng)采用0B來表示確定A[1][1]作為像素A21的最佳預(yù)測值,即11B未被占用,因而可以使用11B表示確定(A[0][1]+A[1][0]+1)/2作為像素A21的最佳預(yù)測值。
情形二、像素A11采用其上相鄰像素值A(chǔ)[1][0]作為最佳預(yù)測值:
若像素A21采用其左相鄰像素值A(chǔ)[1][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該11B表示確定A[1][1]作為像素A21的最佳預(yù)測值;
若像素A21采用其上相鄰像素值A(chǔ)[2][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用10B表示確定A[2][0]作為像素A21的最佳預(yù)測值,這里注意到A21的實際預(yù)測方式與其左相鄰像素A11的實際預(yù)測方式相同,即均是采用上相鄰像素值作為當(dāng)前像素的最佳預(yù)測值,這里可以使用0B代替10B來表示確定A[2][0]作為像素A21的最佳預(yù)測值;
若像素A21采用(A[1][1]+A[2][0]+1)/2作為最佳預(yù)測值,由于已經(jīng)采用0B來表示確定A[2][0]作為像素A21的最佳預(yù)測值,即10B未被占用,因而可以使用10B表示確定(A[1][1]+A[2][0]+1)/2作為像素A21的最佳預(yù)測值。
情形三、像素A11采用(A[0][1]+A[1][0]+1)/2作為最佳預(yù)測值:
若像素A21采用其左相鄰像素值A(chǔ)[1][1]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用11B表示確定A[1][1]作為像素A21的最佳預(yù)測值;
若像素A21采用其上相鄰像素值A(chǔ)[2][0]作為最佳預(yù)測值,根據(jù)上述假設(shè)是應(yīng)該使用10B表示確定A[2][0]作為像素A21的最佳預(yù)測值;
若像素A21采用(A[1][1]+A[2][0]+1)/2作為最佳預(yù)測值,這里注意到A21的實際預(yù)測方式與其左相鄰像素A11的實際預(yù)測方式相同,因而可以采用0B來表示確定(A[1][1]+A[2][0]+1)/2作為像素A21的最佳預(yù)測值。
同理,得到所述第四區(qū)域B4的其他像素的最佳預(yù)測值。
進而獲得所述第一區(qū)域B1以外的其他像素對應(yīng)的殘差值,并對所述像素A00和其他像素對應(yīng)的殘差值進行變長壓縮編碼。
本發(fā)明實施例提供的視頻幀壓縮方法,與現(xiàn)有技術(shù)相比,一方面,其能夠為所述視頻幀中的像素提供更精確的預(yù)測值,以減小現(xiàn)有壓縮方式中殘差值的絕對值,從而進一步提高視頻幀的壓縮率;另一方面,由于在對所述當(dāng)前像素的實際預(yù)測方式進行標(biāo)記時,采用的是自適應(yīng)的標(biāo)記方式,即當(dāng)所述當(dāng)前像素值的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式相同時僅使用1個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式,以實現(xiàn)使用盡量少的比特來標(biāo)記預(yù)測方式,從而進一步提高視頻幀的壓縮率。
如圖4所示,本發(fā)明實施例提供一種視頻幀壓縮裝置,所述裝置包括所述裝置包括劃分模塊41、第一確定模塊42、第二確定模塊43、預(yù)測模塊44以及壓縮模塊45,其中,
所述劃分模塊41,用于對視頻幀進行區(qū)域劃分;
具體地,所述劃分模塊41,用于根據(jù)所述視頻幀的各個像素是否具有左相鄰像素或上相鄰像素,將所述視頻幀劃分為第一區(qū)域、第二區(qū)域、第三區(qū)域和第四區(qū)域。
所述第一確定模塊42,用于根據(jù)當(dāng)前像素所屬的區(qū)域,確定所述當(dāng)前像素所對應(yīng)的至少一種預(yù)測方式;
具體地,當(dāng)所述視頻幀由M×N個像素構(gòu)成,所述像素的像素值為A[i][j](i和j分別表示列和行,且i=0、1、…、M-1,j=0、1、…、N-1)時,所述第一確定模塊,用于當(dāng)所述當(dāng)前像素屬于所述第一區(qū)域時,對所述當(dāng)前像素不進行預(yù)測,并保留所述當(dāng)前像素的像素值A(chǔ)[0][0];
當(dāng)所述當(dāng)前像素屬于所述第二區(qū)域且所述當(dāng)前像素與所述第一區(qū)域內(nèi)的像素相鄰時,確定所述當(dāng)前像素具有一種預(yù)測方式,所述預(yù)測方式對應(yīng)的預(yù)測值為A[0][0];
當(dāng)所述當(dāng)前像素屬于所述第二區(qū)域且所述當(dāng)前像素與所述第一區(qū)域內(nèi)的像素不相鄰時,確定所述當(dāng)前像素具有兩種預(yù)測方式,所述兩種預(yù)測方式對應(yīng)的 預(yù)測值分別為A[0][j-1]和2*A[0][j-1]-A[0][j-2];
當(dāng)所述當(dāng)前像素屬于所述第三區(qū)域且所述當(dāng)前像素與所述第一區(qū)域內(nèi)的像素相鄰時,確定所述當(dāng)前像素具有兩種預(yù)測方式,所述兩種預(yù)測方式對應(yīng)的預(yù)測值分別為A[0][0]和A[0][1];
當(dāng)所述當(dāng)前像素屬于所述第三區(qū)域且所述當(dāng)前像素與所述第一區(qū)域內(nèi)的像素不相鄰時,確定所述當(dāng)前像素具有三種預(yù)測方式,所述三種預(yù)測方式對應(yīng)的預(yù)測值分別為A[i-1][0]、A[i-1][1]和2*A[i-1][0]-A[i-2][0];
當(dāng)所述當(dāng)前像素屬于所述第四區(qū)域時,確定所述當(dāng)前像素具有三種預(yù)測方式,所述三種預(yù)測方式對應(yīng)的預(yù)測值分別為A[i-1][j]、A[i][j-1]和(A[i-1][j]+A[i][j-1]+1)/2。
所述第二確定模塊43,用于根據(jù)所述至少一種預(yù)測方式,確定所述當(dāng)前像素所對應(yīng)的最佳預(yù)測值;
所述預(yù)測模塊44,用于將所述當(dāng)前像素的像素值與所述最佳預(yù)測值進行作差,得到所述當(dāng)前像素對應(yīng)的殘差值;
所述壓縮模塊45,用于對所述殘差值進行壓縮處理。
具體地,所述壓縮模塊45,用于對所述第一區(qū)域內(nèi)像素的像素值以及所述第一區(qū)域以外的各個像素對應(yīng)的殘差值進行變長壓縮編碼。
其中,變長壓縮編碼是指將待進行壓縮編碼數(shù)據(jù)進行分組,并根據(jù)分組中數(shù)據(jù)的大小選用特定長度的bit來表示信息,其中,所述變長壓縮編碼包括有符號變長壓縮編碼和無符號變長壓縮編碼,即對于[-2N,2N-1]之間的有符號數(shù)據(jù)可以用N+1bit來表示,對于[0,2N-1]之間的無符號數(shù)據(jù)可以用N bit來表示。
本發(fā)明實施例提供的具有自適應(yīng)特性的視頻幀壓縮裝置,對視頻幀進行區(qū)域劃分;根據(jù)當(dāng)前像素所屬的區(qū)域,確定所述當(dāng)前像素所對應(yīng)的至少一種預(yù)測方式;根據(jù)所述至少一種預(yù)測方式,確定所述當(dāng)前像素所對應(yīng)的最佳預(yù)測值;將所述當(dāng)前像素的像素值與所述最佳預(yù)測值進行作差,得到所述當(dāng)前像素對應(yīng)的殘差值,并對所述殘差值進行壓縮處理。與現(xiàn)有技術(shù)相比,其能夠為所述視頻幀中的像素提供更精確的預(yù)測值,以減小現(xiàn)有壓縮方式中殘差值的絕對值,從而進一步提高視頻幀的壓縮率。
進一步地,如圖5所示,所述裝置還包括標(biāo)記模塊46,其中,
所述標(biāo)記模塊46,用于按照以下方式對所述當(dāng)前像素的實際預(yù)測方式進行標(biāo)記:當(dāng)所述當(dāng)前像素有一種預(yù)測方式時不標(biāo)記所述當(dāng)前像素的實際預(yù)測方式;當(dāng)所述當(dāng)前像素有兩種預(yù)測方式時使用1個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式;當(dāng)所述當(dāng)前像素有三種預(yù)測方式時使用1或2個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式,其中,當(dāng)所述當(dāng)前像素的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式相同時使用1個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式;當(dāng)所述當(dāng)前像素的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式不相同時使用2個比特標(biāo)記所述當(dāng)前像素的實際預(yù)測方式。
由此可見,與現(xiàn)有技術(shù)相比,由于在對所述當(dāng)前像素的實際預(yù)測方式進行標(biāo)記時,采用的是自適應(yīng)的標(biāo)記方式,即當(dāng)所述當(dāng)前像素值的實際預(yù)測方式與其左相鄰像素的實際預(yù)測方式相同時僅使用1個比特標(biāo)記所述當(dāng)前像素值的實際預(yù)測方式,以實現(xiàn)使用盡量少的比特來標(biāo)記預(yù)測方式,從而進一步提高視頻幀的壓縮率。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。