本申請涉及圖像處理領(lǐng)域,特別涉及一種虛擬參考幀的建立方法及設(shè)備。
背景技術(shù):
在視頻文件的傳輸過程中,編碼器將每一幀圖像進(jìn)行編碼后傳輸至解碼器,解碼器將圖像解碼然后在顯示設(shè)備上播放視頻,在播放視頻時(shí),有一些圖像會重復(fù)出現(xiàn),例如固定的背景,會在前景物體離開后重新出現(xiàn),將這些重復(fù)出現(xiàn)的圖像作為虛擬參考幀,虛擬參考幀在視頻播放的過程中并不會顯示,只是用來在編碼和解碼時(shí)進(jìn)行參考,提高編碼和解碼效率。
例如,相關(guān)技術(shù)中,編碼器根據(jù)待傳輸?shù)闹辽僖粋€(gè)圖像幀以及預(yù)設(shè)的建模算法生成背景圖像,該背景圖像可以是視頻播放時(shí)固定的背景,對于至少一個(gè)圖像幀中每一個(gè)圖像幀,如果該圖像幀中某個(gè)塊與背景圖像中對應(yīng)的塊相似,則將相似的塊作為用于建立虛擬參考幀的塊,將用于建立虛擬參考幀的塊存儲在一個(gè)緩存區(qū)中,然后將挑選過建立虛擬參考幀的塊的圖像幀發(fā)送至解碼器,這樣,當(dāng)存入足夠多的用于建立虛擬參考幀的塊時(shí),將緩存區(qū)中存儲的用于建立虛擬參考幀的塊提取出來作為虛擬參考幀,參考該虛擬參考幀對之后待傳輸?shù)膱D像幀進(jìn)行編碼,并且將該虛擬參考幀作為單獨(dú)的一幀發(fā)送至解碼器。
又如,另一相關(guān)技術(shù)中,編碼器不需要將虛擬參考幀單獨(dú)作為一幀傳輸至解碼器;解碼器接收到圖像幀后,基于和編碼器相同的建模算法生成背景圖像,并根據(jù)并根據(jù)背景圖像挑選每一個(gè)圖像幀中用于建立虛擬參考幀的塊,將用于建立虛擬參考幀的塊存儲在一個(gè)緩存區(qū)中,當(dāng)存入與編碼器相同的建立虛擬參考幀的塊時(shí),將緩存區(qū)中用于建立虛擬參考幀的塊提取出來作為虛擬參考幀,并參考該虛擬參考幀對之后的圖像幀解碼。
但是,如果將虛擬參考幀作為單獨(dú)的一幀傳輸,增加了數(shù)據(jù)傳輸量,增加了額外的碼率,占用了過多的網(wǎng)絡(luò)資源;如果不傳輸虛擬參考幀,解碼器需要基于和編碼器相同的算法建立虛擬參考幀,解碼器復(fù)雜度較高,功耗較大。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中建立虛擬參考幀時(shí)造成的解碼器復(fù)雜度較高,功耗較大,或者使用額外碼率的問題,本申請實(shí)施例提供了一種虛擬參考幀的建立方法及設(shè)備。所述技術(shù)方案如下:
第一方面,提供了一種虛擬參考幀的建立方法,應(yīng)用于解碼器,該方法包括:
接收編碼器傳輸?shù)闹辽僖粋€(gè)圖像幀,至少一個(gè)圖像幀中每一個(gè)圖像幀包含至少一個(gè)塊;
利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀,虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀。
在一種可能的實(shí)現(xiàn)方式中,利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀之前,方法還包括:
分配第一虛擬參考幀緩存區(qū);
利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀,包括:
確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置,并將每一個(gè)帶有虛擬參考幀標(biāo)識的塊分別存儲在第一虛擬參考幀緩存區(qū)中。
在一種可能的實(shí)現(xiàn)方式中,確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置,包括:
根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識還用于指示所在的塊的位置信息,確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置,包括:
根據(jù)虛擬參考幀標(biāo)識的指示確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置。
在一種可能的實(shí)現(xiàn)方式中,該方法還包括:
接收編碼器發(fā)送的指示信息,指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,預(yù)設(shè)格式的字段用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的至少一項(xiàng)。
在一種可能的實(shí)現(xiàn)方式中,利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀之后,方法還包括:
接收編碼器發(fā)送的解碼指示信號,根據(jù)解碼指示信號,參照虛擬參考幀進(jìn)行解碼,解碼指示信號用于指示參照虛擬參考幀進(jìn)行解碼。
第二方面,提供了一種虛擬參考幀的建立方法,應(yīng)用于編碼器,該方法包括:
獲取至少一個(gè)圖像幀,至少一個(gè)圖像幀中每一個(gè)圖像幀包含至少一個(gè)塊;
在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊,至少一個(gè)圖像幀不包含虛擬參考幀;
對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀;
向解碼器傳輸至少一個(gè)圖像幀。
在一種可能的實(shí)現(xiàn)方式中,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊,包括:
當(dāng)目標(biāo)塊與目標(biāo)背景塊中相似像素對的數(shù)量大于或等于第一閾值時(shí),將目標(biāo)塊確定為用于建立虛擬參考幀的塊;
其中,所述目標(biāo)塊為目標(biāo)圖像幀中的任意一個(gè)塊,所述目標(biāo)背景塊是根據(jù)所述目標(biāo)塊在目標(biāo)圖像幀中的位置確定的所述目標(biāo)塊在背景圖像中對應(yīng)的塊,所述至少一個(gè)圖像幀包含所述目標(biāo)圖像幀;所述相似像素對包括分別位于所述目標(biāo)塊與所述目標(biāo)背景塊中位置相對應(yīng)的兩個(gè)像素,且所述相似像素對包括的兩個(gè)像素滿足至少一個(gè)分量之差的絕對值小于或等于第二閾值。
在一種可能的實(shí)現(xiàn)方式中,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的編碼塊之前,該方法還包括:
基于所述至少一個(gè)圖像幀,按照預(yù)設(shè)的建模算法生成所述背景圖像。
在一種可能的實(shí)現(xiàn)方式中,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊之前,該方法還包括:
分配第二虛擬參考幀緩存區(qū);
在所述至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊之后,所述方法還包括:
根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)用于建立虛擬參考幀的塊的位置,并將每一個(gè)用于建立虛擬參考幀的塊分別存儲在所述第二虛擬參考幀緩存區(qū)中。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識還用于指示所在的塊的位置信息。
在一種可能的實(shí)現(xiàn)方式中,該方法還包括:
向所述解碼器發(fā)送指示信息,所述指示信息用于指示所述預(yù)設(shè)的位置映射關(guān)系。
在一種可能的實(shí)現(xiàn)方式中,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,包括:
對所述用于建立虛擬參考幀的塊增加預(yù)設(shè)數(shù)量的比特,所述虛擬參考幀標(biāo)識承載在新增的所述預(yù)設(shè)數(shù)量的比特上。
在一種可能的實(shí)現(xiàn)方式中,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,包括:
在所述用于建立虛擬參考幀的塊中設(shè)定預(yù)設(shè)格式的字段,所述虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,所述預(yù)設(shè)格式的字段用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的至少一項(xiàng)。
在一種可能的實(shí)現(xiàn)方式中,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識之后,該方法還包括:
當(dāng)至少一個(gè)圖像幀中用于建立虛擬參考幀的塊組合成虛擬參考幀時(shí),參照虛擬參考幀進(jìn)行編碼;
向解碼器發(fā)送解碼指示信號,解碼指示信號用于指示參照虛擬參考幀進(jìn)行解碼。
第三方面,提供了一種解碼器,包括:
接收單元,用于接收編碼器傳輸?shù)闹辽僖粋€(gè)圖像幀,至少一個(gè)圖像幀中每一個(gè)圖像幀包含至少一個(gè)塊;
處理單元,用于利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀,虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀。
在一種可能的實(shí)現(xiàn)方式中,處理單元,還用于分配第一虛擬參考幀緩存區(qū);確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置,并將每一個(gè)帶有虛擬參考幀標(biāo)識的塊分別存儲在第一虛擬參考幀緩存區(qū)中。
在一種可能的實(shí)現(xiàn)方式中,處理單元,還用于根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識還用于指示所在的塊的位置信息,
處理單元,還用于根據(jù)虛擬參考幀標(biāo)識的指示確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置。
在一種可能的實(shí)現(xiàn)方式中,接收單元,接收編碼器發(fā)送的指示信息,指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,預(yù)設(shè)格式的字段用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的至少一項(xiàng)。
在一種可能的實(shí)現(xiàn)方式中,接收單元,還用于接收編碼器發(fā)送的解碼指示信號,解碼指示信號用于指示參照虛擬參考幀進(jìn)行解碼;
處理單元,還用于根據(jù)解碼指示信號,參照虛擬參考幀進(jìn)行解碼。
第四方面,提供了一種編碼器,包括:
處理單元,用于獲取至少一個(gè)圖像幀,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,至少一個(gè)圖像幀中每一個(gè)圖像幀包含至少一個(gè)塊,至少一個(gè)圖像幀不包含虛擬參考幀,虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀;
發(fā)送單元,用于向解碼器傳輸至少一個(gè)圖像幀。
在一種可能的實(shí)現(xiàn)方式中,處理單元,還用于當(dāng)目標(biāo)塊與目標(biāo)背景塊中相似像素對的數(shù)量大于或等于第一閾值時(shí),將目標(biāo)塊確定為用于建立虛擬參考幀的塊;
其中,目標(biāo)塊為目標(biāo)圖像幀中的任意一個(gè)塊,目標(biāo)背景塊是根據(jù)目標(biāo)塊在目標(biāo)圖像幀中的位置確定的目標(biāo)塊在背景圖像中對應(yīng)的塊,至少一個(gè)圖像幀包含目標(biāo)圖像幀;相似像素對包括分別位于目標(biāo)塊與目標(biāo)背景塊中位置相對應(yīng)的兩個(gè)像素,且相似像素對包括的兩個(gè)像素滿足至少一個(gè)分量之差的絕對值小于或等于第二閾值。
在一種可能的實(shí)現(xiàn)方式中,處理單元,還用于基于至少一個(gè)圖像幀,按照預(yù)設(shè)的建模算法生成背景圖像。
在一種可能的實(shí)現(xiàn)方式中,處理單元,還用于分配第二虛擬參考幀緩存區(qū);根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)用于建立虛擬參考幀的塊的位置,并將每一個(gè)用于建立虛擬參考幀的塊分別存儲在第二虛擬參考幀緩存區(qū)中。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識還用于指示所在的塊的位置信息。
在一種可能的實(shí)現(xiàn)方式中,發(fā)送單元,還用于向解碼器發(fā)送指示信息,指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
在一種可能的實(shí)現(xiàn)方式中,處理單元,還用于對用于建立虛擬參考幀的塊增加預(yù)設(shè)數(shù)量的比特,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。
在一種可能的實(shí)現(xiàn)方式中,處理單元,還用于在用于建立虛擬參考幀的塊中設(shè)定預(yù)設(shè)格式的字段,虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,預(yù)設(shè)格式的字段用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的至少一項(xiàng)。
在一種可能的實(shí)現(xiàn)方式中,處理單元,還用于當(dāng)至少一個(gè)圖像幀中用于建立虛擬參考幀的塊組合成虛擬參考幀時(shí),參照虛擬參考幀進(jìn)行編碼;
發(fā)送單元,還用于向解碼器發(fā)送解碼指示信號,解碼指示信號用于指示參照虛擬參考幀進(jìn)行解碼。
第五方面,提供了一種解碼器,包括:處理器、存儲器和接收器,處理器和存儲器相互連接,處理器和接收器相互連接,存儲器用于存儲數(shù)據(jù)和程序,處理器用于調(diào)用存儲器存儲的程序?qū)崿F(xiàn)以下功能:
接收器,用于接收編碼器傳輸?shù)闹辽僖粋€(gè)圖像幀,至少一個(gè)圖像幀中每一個(gè)圖像幀包含至少一個(gè)塊;
處理器,用于利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀,虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀。
在一種可能的實(shí)現(xiàn)方式中,處理器,還用于分配第一虛擬參考幀緩存區(qū);確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置,并將每一個(gè)帶有虛擬參考幀標(biāo)識的塊分別存儲在第一虛擬參考幀緩存區(qū)中。
在一種可能的實(shí)現(xiàn)方式中,處理器,還用于根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識還用于指示所在的塊的位置信息,
處理器,還用于根據(jù)虛擬參考幀標(biāo)識的指示確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置。
在一種可能的實(shí)現(xiàn)方式中,接收器,接收編碼器發(fā)送的指示信息,指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,預(yù)設(shè)格式的字段用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的至少一項(xiàng)。
在一種可能的實(shí)現(xiàn)方式中,接收器,還用于接收編碼器發(fā)送的解碼指示信號,解碼指示信號用于指示參照虛擬參考幀進(jìn)行解碼;
處理器,還用于根據(jù)解碼指示信號,參照虛擬參考幀進(jìn)行解碼。
第六方面,提供了一種編碼器,包括:處理器、存儲器和發(fā)送器,處理器和存儲器相互連接,處理器和發(fā)送器相互連接,存儲器用于存儲數(shù)據(jù)和程序,處理器用于調(diào)用存儲器存儲的程序?qū)崿F(xiàn)以下功能:
處理器,用于獲取至少一個(gè)圖像幀,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,至少一個(gè)圖像幀中每一個(gè)圖像幀包含至少一個(gè)塊,至少一個(gè)圖像幀不包含虛擬參考幀,虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀;
發(fā)送器,用于向解碼器傳輸至少一個(gè)圖像幀。
在一種可能的實(shí)現(xiàn)方式中,處理器,還用于當(dāng)目標(biāo)塊與目標(biāo)背景塊中相似像素對的數(shù)量大于或等于第一閾值時(shí),將目標(biāo)塊確定為用于建立虛擬參考幀的塊;
其中,目標(biāo)塊為目標(biāo)圖像幀中的任意一個(gè)塊,目標(biāo)背景塊是根據(jù)目標(biāo)塊在目標(biāo)圖像幀中的位置確定的目標(biāo)塊在背景圖像中對應(yīng)的塊,至少一個(gè)圖像幀包含目標(biāo)圖像幀;相似像素對包括分別位于目標(biāo)塊與目標(biāo)背景塊中位置相對應(yīng)的兩個(gè)像素,且相似像素對包括的兩個(gè)像素滿足至少一個(gè)分量之差的絕對值小于或等于第二閾值。
在一種可能的實(shí)現(xiàn)方式中,處理器,還用于基于至少一個(gè)圖像幀,按照預(yù)設(shè)的建模算法生成背景圖像。
在一種可能的實(shí)現(xiàn)方式中,處理器,還用于分配第二虛擬參考幀緩存區(qū);根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)用于建立虛擬參考幀的塊的位置,并將每一個(gè)用于建立虛擬參考幀的塊分別存儲在第二虛擬參考幀緩存區(qū)中。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識還用于指示所在的塊的位置信息。
在一種可能的實(shí)現(xiàn)方式中,發(fā)送器,還用于向解碼器發(fā)送指示信息,指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
在一種可能的實(shí)現(xiàn)方式中,處理器,還用于對用于建立虛擬參考幀的塊增加預(yù)設(shè)數(shù)量的比特,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。
在一種可能的實(shí)現(xiàn)方式中,處理器,還用于在用于建立虛擬參考幀的塊中設(shè)定預(yù)設(shè)格式的字段,虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,預(yù)設(shè)格式的字段用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的至少一項(xiàng)。
在一種可能的實(shí)現(xiàn)方式中,處理器,還用于當(dāng)至少一個(gè)圖像幀中用于建立虛擬參考幀的塊組合成虛擬參考幀時(shí),參照虛擬參考幀進(jìn)行編碼;
發(fā)送器,還用于向解碼器發(fā)送解碼指示信號,解碼指示信號用于指示參照虛擬參考幀進(jìn)行解碼。
本申請實(shí)施例提供的一種虛擬參考幀的建立方法及設(shè)備,編碼器獲取至少一個(gè)圖像幀,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,向解碼器傳輸至少一個(gè)圖像幀。因?yàn)橛糜诮⑻摂M參考幀的塊添加了虛擬參考幀標(biāo)識,在傳輸過程中不需要傳輸虛擬參考幀,不會造成碼率上升,而且,解碼器只需要將帶有虛擬參考幀標(biāo)識的塊提取出來組成虛擬參考幀,不需要用和編碼器相同的算法基于圖像幀建立虛擬參考幀,減少了解碼器的復(fù)雜度和功耗。
附圖說明
為了更清楚地說明本申請實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本申請實(shí)施例提供的一種虛擬參考幀的建立方法流程示意圖;
圖2a是本申請實(shí)施例提供的一種位置映射關(guān)系示意圖;
圖2b是本申請實(shí)施例提供的另一種位置映射關(guān)系示意圖;
圖3a為本申請實(shí)施例提供的一種圖像幀的結(jié)構(gòu)示意圖;
圖3b為本申請實(shí)施例提供的一種預(yù)設(shè)格式的字段結(jié)構(gòu)示意圖;
圖4為本申請實(shí)施例提供的一種虛擬參考幀建立效果示意圖;
圖5為本申請實(shí)施例提供的一種位置相同的塊效果示意圖;
圖6為本申請實(shí)施例提供的一種參考幀緩存隊(duì)列示意圖;
圖7是本申請另一實(shí)施例提供的一種虛擬參考幀的建立方法流程示意圖;
圖8是本申請又一實(shí)施例提供的一種虛擬參考幀的建立方法流程示意圖;
圖9是本申請實(shí)施例提供的一種解碼器結(jié)構(gòu)示意圖;
圖10是本申請實(shí)施例提供的一種編碼器結(jié)構(gòu)示意圖;
圖11是本申請實(shí)施例提供的另一種解碼器結(jié)構(gòu)示意圖;
圖12是本申請實(shí)施例提供的另一種編碼器結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本申請的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本申請實(shí)施方式作進(jìn)一步地詳細(xì)描述。
本申請實(shí)施例提供一種虛擬參考幀的建立方法,應(yīng)用于解碼器,如圖1所示,該方法包括以下步驟:
101、接收編碼器傳輸?shù)闹辽僖粋€(gè)圖像幀。
至少一個(gè)圖像幀中每一個(gè)圖像幀可以包含一個(gè)塊或多個(gè)塊。需要說明的是,一個(gè)塊包含多個(gè)像素,例如,一個(gè)塊可以包含16×16個(gè)像素,或者8×8個(gè)像素,當(dāng)然也可以是其他個(gè)數(shù),本申請對此不作限制。此處,至少一圖像幀包含的是視頻的數(shù)據(jù)內(nèi)容。
102、利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀。
至少一個(gè)圖像幀中可以是每一個(gè)圖像幀都包含帶有虛擬參考幀標(biāo)識的塊,也可以是部分圖像幀包含帶有虛擬參考幀標(biāo)識的塊。一個(gè)圖像幀可以包括一個(gè)或多個(gè)帶有虛擬參考幀標(biāo)識的塊。
可選的,步驟102之前,該方法還包括:分配第一虛擬參考幀緩存區(qū)。
其中,該第一虛擬參考幀緩存區(qū)用于存儲帶有虛擬參考幀標(biāo)識的塊,第一虛擬參考幀緩存區(qū)的大小可以是一個(gè)圖像幀的大小,當(dāng)?shù)谝惶摂M參考幀緩存區(qū)存入的帶有虛擬參考幀標(biāo)識的塊占滿整個(gè)第一虛擬參考幀緩存區(qū)時(shí),虛擬參考幀建立完成,可以在第一虛擬參考幀緩存區(qū)中將虛擬參考幀提取出來;或者,當(dāng)?shù)谝惶摂M參考幀緩存區(qū)存入的帶有虛擬參考幀標(biāo)識的塊的數(shù)量超過預(yù)設(shè)數(shù)量時(shí),虛擬參考幀建立完成。需要說明的是,分配好第一虛擬參考幀緩存區(qū)的同時(shí),可以存儲一個(gè)初始圖像,初始圖像可以是純色圖像,例如全白圖像或全黑圖像,也可以只是分配第一虛擬參考幀緩存區(qū),不存入圖像。
利用至少一個(gè)圖像幀中多個(gè)帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀,包括:
根據(jù)預(yù)設(shè)的位置映射關(guān)系對每一個(gè)帶有虛擬參考幀標(biāo)識的塊在其所在幀中的位置進(jìn)行映射以獲取每一個(gè)帶有虛擬參考幀標(biāo)識的塊映射后的位置;
按照每一個(gè)帶有虛擬參考幀標(biāo)識的塊映射后的位置將每一個(gè)帶有虛擬參考幀標(biāo)識的塊存儲在該第一虛擬參考幀緩存區(qū)以形成虛擬參考幀。需要說明的是,當(dāng)兩個(gè)帶有虛擬參考幀標(biāo)識的塊的位置相同時(shí),可以用在后接收到的帶有虛擬參考幀標(biāo)識的塊替換在前接收到的帶有虛擬參考幀標(biāo)識的塊;或者,將位置相同的兩個(gè)帶有虛擬參考幀標(biāo)識的塊中每一個(gè)像素的像素分量計(jì)算加權(quán)平均值形成新的塊存儲在第一虛擬參考幀緩存區(qū)中。
其中,預(yù)設(shè)的位置映射關(guān)系可以是位置等同的映射關(guān)系,即在映射之前和映射之后,帶有虛擬參考幀標(biāo)識的塊在幀中的位置相同,比如,在圖2a中,塊a為帶有虛擬參考幀標(biāo)識的塊,第一個(gè)圖像幀為塊a所在的幀,塊a在第一個(gè)圖像幀中的位置是第3行第4列,則塊a在建立后的虛擬參考幀中的位置也是第3行第4列;或者預(yù)設(shè)的位置關(guān)系是位置不同的映射關(guān)系,即在映射之前和映射之后,帶有虛擬參考幀標(biāo)識的塊在幀中的位置發(fā)生了變化,比如,在圖2b中,塊a為帶有虛擬參考幀標(biāo)識的塊,第一個(gè)圖像幀為塊a所在的幀,塊a在第一個(gè)圖像幀中的位置是第3行第4列,則塊a在建立后的虛擬參考幀中的位置也是第4行第5列。
需要說明的是,該預(yù)設(shè)的位置映射關(guān)系可以預(yù)先存儲在解碼器,或者,接收編碼器發(fā)送的指示信息,指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
或者,所述虛擬參考幀標(biāo)識包括用于指示所在塊的位置信息,則利用至少一個(gè)圖像幀中多個(gè)帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀,包括:
按照每一個(gè)帶有虛擬參考幀標(biāo)識的塊中虛擬參考幀標(biāo)識所包含的位置信息將帶有虛擬參考幀標(biāo)識的塊存儲在該第一虛擬參考幀緩存區(qū)以形成虛擬參考幀。
虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀。需要說明的是,虛擬參考幀標(biāo)識可以有多種存在方式,此處提供兩種具體的方式:
第一種方式、在帶有虛擬參考幀標(biāo)識的塊中,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。即利用額外的比特表示虛擬參考幀標(biāo)識。
第二種方式、虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,如圖3a所示,圖3a為一個(gè)圖像幀的結(jié)構(gòu)示意圖,一個(gè)圖像幀包括網(wǎng)絡(luò)抽象層單位頭(英文:network abstraction layer unit header)、幀頭(英文:slice segment header)和幀數(shù)據(jù)(英文:slice segment data)。幀數(shù)據(jù)包括編碼樹單元(英文:coding tree unit),編碼樹單元包括編碼四分樹(英文:coding quadtree),編碼四分樹包括編碼單元(英文:Coding unit)等等,如此一級一級劃分。預(yù)設(shè)格式的字段可以包括:運(yùn)動矢量差(英文:motion vector difference)字段、編碼單元量化系數(shù)變化絕對值(英文:coding unit quantization parameter delta absolute,縮寫:cu_qp_delta_abs)字段、分割模式(英文:part_mode)字段等字段中的一項(xiàng)或多項(xiàng)。預(yù)設(shè)格式的字段可以用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的一項(xiàng)或多項(xiàng)。此處,預(yù)設(shè)格式的字段可以是一個(gè)字段直接指示一個(gè)參數(shù),也可以是多個(gè)字段組合起來指示一個(gè)參數(shù),例如,如圖3b所示,圖3b為預(yù)設(shè)格式的字段結(jié)構(gòu)示意圖,預(yù)設(shè)格式的字段指示預(yù)設(shè)量化系數(shù)時(shí),預(yù)設(shè)格式的字段可以包括初始量化系數(shù)減26的值(英文:Intitial QP minus 26,縮寫:init_qp_minus26)字段、編碼單元量化系數(shù)變化使能信號(英文:Coding unit QP delta enabled flag,縮寫:cu_qp_delta_enabled_flag)字段、編碼單元量化系數(shù)變化深度(英文:Different coding unit QP delta depth,縮寫:diff_cu_qp_delta_depth)字段、編碼單元量化系數(shù)變化絕對值字段和編碼單元量化系數(shù)變化正負(fù)號(英文:Coding unit QP delta sign flag,縮寫:cu_qp_delta_sign_flag)字段,其中QP為量化系數(shù)(英文:Quantization Parameter,縮寫:QP),當(dāng)預(yù)設(shè)格式的字段所指示的量化系數(shù)是預(yù)設(shè)量化系數(shù)時(shí),表示該預(yù)設(shè)格式的字段所在的塊為用于建立虛擬參考幀的塊。
進(jìn)一步,解碼器可以接收編碼器發(fā)送的解碼指示信號,該解碼指示信號用于指示第一虛擬參考幀緩存區(qū)中存儲的帶有虛擬參考幀標(biāo)識的塊可以形成虛擬參考幀,解碼器在第一虛擬參考幀緩存區(qū)中提取出虛擬參考幀加入到第一參考幀緩存隊(duì)列中,參照虛擬參考幀對隨后接收到的圖像幀進(jìn)行解碼,第一參考幀緩存隊(duì)列包含用于解碼的參考幀。解碼過程中是根據(jù)每一個(gè)圖像幀中包含的信息確定使用哪幾個(gè)參考幀進(jìn)行解碼,這是在編碼器編碼時(shí)確定的,并將解碼使用的參考幀序號寫入到該圖像幀中,解碼器根據(jù)每個(gè)圖像幀中包含的信息選擇相應(yīng)的參考幀解碼即可。
示例性的,參照圖4、圖5和圖6所示,本實(shí)施例舉出具體示例對建立虛擬參考幀的過程進(jìn)行詳細(xì)說明:
如圖4所示,解碼器在接收到解碼指示信號之前,將帶有虛擬參考幀標(biāo)識的塊存入第一虛擬參考幀緩存區(qū)中,接收一個(gè)圖像幀,將該圖像幀中帶有虛擬參考幀標(biāo)識的塊存入到第一虛擬參考幀緩存區(qū)中,然后接收下一個(gè)圖像幀,這樣一個(gè)圖像幀一個(gè)圖像幀進(jìn)行處理,將圖像幀中帶有虛擬參考幀標(biāo)識的塊存入到第一虛擬參考幀緩存區(qū)就是建立虛擬參考幀的過程;此時(shí),第一虛擬參考幀緩存區(qū)中緩存的帶有虛擬參考幀標(biāo)識的塊所形成的幀還不能用于解碼。在接收到指示信號之前,解碼器將每一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊根據(jù)各自的位置存儲在第一虛擬參考幀緩存區(qū)中,當(dāng)兩個(gè)帶有虛擬參考幀標(biāo)識的塊的位置相同時(shí),可以用在后接收到的帶有虛擬參考幀標(biāo)識的塊替換在前接收到的帶有虛擬參考幀標(biāo)識的塊;或者,將位置相同的兩個(gè)帶有虛擬參考幀標(biāo)識的塊中每一個(gè)像素的像素分量計(jì)算加權(quán)平均值形成新的塊存儲在第一虛擬參考幀緩存區(qū)中。
如圖5所示,例如,解碼器接收到第一個(gè)圖像幀中有5個(gè)帶有虛擬參考幀標(biāo)識的塊,分別為塊a、塊b、塊c、塊d、塊e,按照5個(gè)塊的位置分別存儲在第一虛擬參考幀緩存區(qū),解碼器接收到第二個(gè)圖像幀中有3個(gè)帶有虛擬參考幀標(biāo)識的塊,分別為塊f、塊g和塊h,按照3個(gè)塊的位置分別存儲在虛擬參考幀緩存中,但是,第一個(gè)圖像幀中的塊a和第二個(gè)圖像幀中的塊f位置相同,可以用塊f替換塊a,也可以計(jì)算塊f和塊a中每個(gè)像素的分量的加權(quán)平均值形成新的塊i,并將塊i存儲在塊f和塊a原本的位置上。
示例地,以塊a和塊f分別包含4個(gè)像素為例,塊a包含像素a1、像素a2、像素a3和像素a4,塊f包含像素f1、像素f2、像素f3和像素f4,像素a1和像素f1位置對應(yīng)、像素a2和像素f2位置對應(yīng)、像素a3和像素f3位置對應(yīng)、像素a4和像素f4位置對應(yīng)。如果每個(gè)像素有三個(gè)分量Y、U、V,對于像素a1和像素f1其中的一個(gè)分量,以分量Y為例,可以按照第一公式Pi1=Pa1×W1+Pf1×W2+c計(jì)算塊i的像素i1的Y分量,其中,Pi1為像素i1的Y分量的值,Pa1為像素a1的Y分量的值,Pf1為像素f1的Y分量的值,W1和W2為加權(quán)系數(shù),c為補(bǔ)償系數(shù);或者,按照第二公式Pi1=Pa1×W0+Pf1×(1-W0)+c計(jì)算塊i的像素i1的Y分量,其中,W0為加權(quán)系數(shù)。像素的每個(gè)分量都可以按照第一公式或第二公式進(jìn)行計(jì)算,每一對對應(yīng)的像素也可以按照預(yù)設(shè)公式計(jì)算出每個(gè)分量新的數(shù)值,這樣,就可以得到新的像素i1、像素i2、像素i3和像素i4,就可以組成新的塊i,將塊i存儲在塊a原本的位置上。
如圖6所示,解碼指示信號指示第一虛擬參考幀緩存區(qū)中緩存的帶有虛擬參考幀標(biāo)識的塊組成了可以用于解碼的虛擬參考幀,解碼器在接收到解碼指示信號之后,將第一虛擬參考幀緩存區(qū)中的虛擬參考幀提取出來加入到第一參考幀緩存隊(duì)列中,解碼器參照虛擬參考幀對之后接收的圖像幀進(jìn)行解碼。
本申請中需要傳輸?shù)膸际菆D像幀,將用于建立虛擬參考幀的塊在圖像幀中添加標(biāo)識,沒有另外單獨(dú)傳送虛擬參考幀,減少了數(shù)據(jù)傳輸量,節(jié)約了網(wǎng)絡(luò)資源。另外,有些相關(guān)技術(shù)中雖然不傳輸虛擬參考幀,但是,解碼器要在圖像幀中根據(jù)與編碼器相同的算法建立背景圖像,選擇建立虛擬參考幀的塊,并建立虛擬參考幀,相比之下,本申請不需要解碼器建立背景圖像,選擇用于建立虛擬參考幀的塊,只需要根據(jù)虛擬參考幀標(biāo)識直接將帶有虛擬參考幀標(biāo)識的塊組成虛擬參考幀就好,降低了解碼器的復(fù)雜度,節(jié)省了處理器資源。而且,因?yàn)榻獯a器只需要根據(jù)虛擬參考幀標(biāo)識就可以獲取用于建立虛擬參考幀的塊,如果編碼器建立虛擬參考幀時(shí)所使用的算法有了變更,解碼器不受影響,兼容性更好。
結(jié)合上述圖1對應(yīng)的實(shí)施例,本申請另一實(shí)施例提供一種虛擬參考幀的建立方法,應(yīng)用于編碼器,如圖7所示,該方法包括以下步驟:
701、獲取至少一個(gè)圖像幀。
至少一個(gè)圖像幀可以是一個(gè)圖像幀或多個(gè)圖像幀,一個(gè)圖像幀可以包含一個(gè)塊或多個(gè)塊,一個(gè)塊可以包含一個(gè)或多個(gè)像素。
702、在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊。
此處,可選的,步驟702之前,本實(shí)施例提供的虛擬參考幀的建立方法還包括:
分配第二虛擬參考幀緩存區(qū),第二虛擬參考幀緩存區(qū)可以緩存用于建立虛擬參考幀的塊,第二虛擬參考幀緩存區(qū)的大小可以是一個(gè)圖像幀的大小。需要說明的是,分配好第二虛擬參考幀緩存區(qū)的同時(shí),可以存儲一個(gè)初始圖像,初始圖像可以是純色圖像,例如全白圖像或全黑圖像,也可以只是分配第二虛擬參考幀緩存區(qū),不存入圖像。
可選的,將該至少一個(gè)圖像幀中任意一個(gè)圖像幀作為目標(biāo)圖像幀,將目標(biāo)圖像幀中的任意一個(gè)塊作為目標(biāo)塊進(jìn)行示例性說明,當(dāng)該目標(biāo)塊與目標(biāo)背景塊中相似像素對的數(shù)量大于或等于第一閾值時(shí),將該目標(biāo)塊確定為用于建立虛擬參考幀的塊,第一閾值為預(yù)先設(shè)定的值,第一閾值可以通過實(shí)驗(yàn)獲取,也可以參考相關(guān)技術(shù)中常用的值確定。其中,目標(biāo)背景塊是根據(jù)目標(biāo)塊在目標(biāo)圖像幀中的位置確定的目標(biāo)塊在背景圖像中對應(yīng)的塊,背景圖像可以是基于至少一個(gè)圖像幀,按照預(yù)設(shè)的建模算法生成的,例如,一個(gè)視頻中,固定的背景會在前景物體離開后重新出現(xiàn),固定的背景不會變化,只會被前景物體遮擋,這個(gè)固定的背景就是背景圖像。像素對是指位于目標(biāo)塊與目標(biāo)背景塊中位置相對應(yīng)的兩個(gè)像素,相似像素對中的的兩個(gè)像素滿足至少一個(gè)相同的像素分量之差的絕對值小于或等于第二閾值,第二閾值為預(yù)先設(shè)定的值,第二閾值可以通過實(shí)驗(yàn)獲取,也可以參考相關(guān)技術(shù)中常用的值確定。
需要說明的是,目標(biāo)背景塊在背景圖像中的位置與目標(biāo)塊在目標(biāo)圖像幀中的位置可以相同,例如,每一個(gè)圖像幀包含的塊可以是m行,n列,每一個(gè)塊的位置可以用所處的行序號和列序號確定,目標(biāo)塊在目標(biāo)圖像幀中位于x行y列,目標(biāo)背景塊在背景圖像中也位于x行y列;或者,目標(biāo)背景塊在背景圖像中的位置與目標(biāo)塊在目標(biāo)圖像幀中的位置也可以不同,例如,目標(biāo)塊在目標(biāo)圖像幀中位于x行y列,目標(biāo)背景塊在背景圖像中也位于x+1行y+1列,本申請對此不作限制。
可選的,一個(gè)像素可以包含三個(gè)像素分量,例如YUV像素分量,其中Y為亮度分量,U,V為色度分量。對于像素對中兩個(gè)像素,當(dāng)三個(gè)像素分量中,至少一個(gè)相同的像素分量之差的絕對值小于或等于第二閾值時(shí),將該像素對確定為相似像素對,也可以是三個(gè)像素分量重每個(gè)相同的像素分量之差的絕對值均小于或等于第二閾值時(shí),將該像素對確定為相似像素對,否則為不相似像素對。
可選的,步驟702之后,還包括:
根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)用于建立虛擬參考幀的塊的位置,并將每一個(gè)用于建立虛擬參考幀的塊分別存儲在第二虛擬參考幀緩存區(qū)中。
例如,每一個(gè)圖像幀包含的塊可以是m行,n列,以第一個(gè)圖像幀中的塊a為例,塊a為用于建立虛擬參考幀的塊,塊a在第一個(gè)圖像幀中位于第x行第y列,塊a在第一個(gè)圖像幀中的位置可以表示為(x,y),預(yù)設(shè)的位置映射關(guān)系可以指示塊a在第二虛擬參考幀緩存區(qū)中的存儲位置為(x,y),或者,預(yù)設(shè)的位置映射關(guān)系可以指示塊a在第二虛擬參考幀緩存區(qū)中的存儲位置為(x+dx,y+dy),其中,dx和dy是位置偏移量,當(dāng)然,此處只是舉例說明,并不代表本申請局限于此。
可選的,編碼器可以解碼器發(fā)送指示信息,該指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
703、對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識。
虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀。
可選的,本實(shí)施例提供兩種具體的添加虛擬參考幀標(biāo)識的方式:
第一種方式、在帶有虛擬參考幀標(biāo)識的塊中,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。即利用額外的比特表示虛擬參考幀標(biāo)識。
第二種方式、虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上。預(yù)設(shè)格式的字段可以包括:運(yùn)動矢量差字段、編碼單元量化系數(shù)變化絕對值字段、分割模式字段等字段中的一項(xiàng)或多項(xiàng)。預(yù)設(shè)格式的字段可以用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的一項(xiàng)或多項(xiàng)。
可選的,編碼器根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)用于建立虛擬參考幀的塊的位置之后,可以將位置信息分別添加入虛擬參考幀標(biāo)識中,這樣,解碼器就可以直接根據(jù)虛擬參考幀標(biāo)識確定每一個(gè)用于建立虛擬參考幀的塊的位置,不需要再做計(jì)算。
704、向解碼器傳輸至少一個(gè)圖像幀。
當(dāng)編碼器將一個(gè)圖像幀中用于建立虛擬參考幀的塊添加了虛擬參考幀標(biāo)識后即可發(fā)送該圖像幀,繼續(xù)處理下一個(gè)圖像幀。
步驟703之后,當(dāng)至少一個(gè)圖像幀中用于建立虛擬參考幀的塊組合成虛擬參考幀時(shí),可以參照虛擬參考幀進(jìn)行編碼;具體的,當(dāng)?shù)诙摂M參考幀緩存區(qū)全部填滿或者存儲的塊的數(shù)量超過預(yù)設(shè)數(shù)量時(shí),視為虛擬參考幀建立完成,可以將虛擬參考幀放入第二參考幀緩存隊(duì)列中,參照虛擬參考幀對之后的圖像幀進(jìn)行編碼,第二參考幀緩存隊(duì)列包含用于編碼的參考幀。需要說明的是,如果存入的塊沒有占滿第一虛擬參考幀緩存區(qū)而需要提取虛擬參考幀時(shí),可以將空白的部分填充純色的塊完成虛擬參考幀的建立,例如,填充純白的塊;或者,不需要填充空白的部分,直接將第一虛擬參考幀緩存區(qū)中的塊提取出來組成虛擬參考幀??蛇x的,當(dāng)虛擬參考幀建立之后,還可以向解碼器發(fā)送解碼指示信號,解碼指示信號用于指示解碼器參照虛擬參考幀進(jìn)行解碼。參照圖1對應(yīng)的實(shí)施例,解碼器在接收到解碼指示信號之前,將帶有虛擬參考幀標(biāo)識的塊存入第一虛擬參考幀緩存區(qū)中,當(dāng)接收到解碼指示信號時(shí),將第一虛擬參考幀緩存區(qū)中的虛擬參考幀提取出來放入第一參考幀緩存隊(duì)列中,并參照虛擬參考幀對之后接收的圖像幀進(jìn)行解碼。
可選的,步驟704之前,編碼器可以將至少一個(gè)圖像幀進(jìn)行編碼。
此處,向解碼器傳輸?shù)闹辽僖粋€(gè)圖像幀不包括虛擬參考幀,可選的,結(jié)合步驟703中有關(guān)解碼指示信號的描述,解碼指示信號在至少一個(gè)圖像幀中最后一個(gè)用于建立虛擬參考幀的塊之后發(fā)送至解碼器,當(dāng)然,此處只是舉例說明,解碼指示信號也可以直接指示虛擬參考幀建立完成時(shí)最后一個(gè)發(fā)送的圖像幀的幀序號或塊序號,本申請對此不作限制。
因?yàn)榫幋a器對用于建立虛擬參考幀的塊添加了虛擬參考幀標(biāo)識,在傳輸過程中不需要傳輸虛擬參考幀,不會造成碼率上升,而且,解碼器只需要將帶有虛擬參考幀標(biāo)識的塊提取出來組成虛擬參考幀,不需要用和編碼器相同的算法基于圖像幀建立背景圖像,再選擇用于建立虛擬參考幀的塊,然后建立虛擬參考幀,減少了解碼器的復(fù)雜度和功耗。另外,現(xiàn)有技術(shù)中,編碼器和解碼器利用相同的算法建立虛擬參考幀,當(dāng)不同廠家生產(chǎn)的編碼器使用的建立虛擬參考幀的算法不同時(shí),解碼器無法兼容不同的算法,或者,編碼器建立虛擬參考幀的算法有了更新,則解碼器也需要更新,而解碼器往往位于用戶使用的視頻播放設(shè)備上,例如,電視機(jī)、電腦等,這些設(shè)備的更新周期一般較長,會給用戶使用造成不便。而本申請?zhí)峁┑奶摂M參考幀的建立方法,因?yàn)橛糜诮⑻摂M參考幀標(biāo)識的塊帶有虛擬參考幀標(biāo)識,解碼器提取帶有虛擬參考幀標(biāo)識的塊就可以建立虛擬參考幀,不需要像編碼器一樣利用算法建立虛擬參考幀,因此,編碼器側(cè)建立虛擬參考幀的算法即便更新,也不影響解碼器建立虛擬參考幀,同時(shí),對于不同廠家生產(chǎn)的編碼器,解碼器有很好的兼容性,也不會造成用戶使用不便。
本實(shí)施例提供的虛擬參考幀的建立方法,是上述圖1對應(yīng)的實(shí)施例中所描述的解碼側(cè)虛擬參考幀的建立方法對應(yīng)的編碼側(cè)方法,圖1對應(yīng)的實(shí)施例中的解釋說明與圖7對應(yīng)的實(shí)施例中的解釋說明相互適用。
基于上述圖1和圖7對應(yīng)的實(shí)施例中所描述的虛擬參考幀的建立方法,本申請又一實(shí)施例提供一種虛擬參考幀的建立方法,應(yīng)用于編碼器和解碼器,參照圖8所示,該方法包括以下步驟:
801、編碼器獲取N個(gè)圖像幀。
N為大于1的正整數(shù)。
802、編碼器在第n個(gè)圖像幀中確定用于建立虛擬參考幀的塊。
第n個(gè)圖像幀為編碼器獲取的N個(gè)圖像幀中的第n個(gè)圖像幀,n為[1,N]內(nèi)的整數(shù)。
803、編碼器將第n個(gè)圖像幀中用于建立虛擬參考幀的塊存儲在第二虛擬參考幀緩存區(qū)中,并對第n個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識。
804、編碼器向解碼器傳輸?shù)趎個(gè)圖像幀。
重復(fù)執(zhí)行步驟802-步驟804。在步驟804之后還包括:
805、當(dāng)?shù)诙摂M參考幀緩存區(qū)中用于建立虛擬參考幀的塊的數(shù)量超過預(yù)設(shè)數(shù)量時(shí),編碼器建立虛擬參考幀,并向解碼器發(fā)送解碼指示信號。
編碼器利用第二虛擬參考幀緩存區(qū)中用于建立虛擬參考幀的塊建立虛擬參考幀,編碼器建立虛擬參考幀之后參照虛擬參考幀對之后待發(fā)送的圖像幀進(jìn)行編碼。
806、解碼器接收到編碼器發(fā)送的指示信號后,利用接收到的圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀。
具體的,解碼器可以將第一虛擬參考幀緩存區(qū)中存儲的帶有虛擬參考幀標(biāo)識的塊提取出來組成虛擬參考幀。
807、解碼器將虛擬參考幀加入到第一參考幀緩存隊(duì)列中,并參照虛擬參考幀進(jìn)行解碼。
本申請中需要傳輸?shù)膸际菆D像幀,沒有傳送虛擬參考幀,相關(guān)技術(shù)中不僅要傳輸圖像幀,還要傳輸虛擬參考幀,相比之下,本申請的技術(shù)方案減少了數(shù)據(jù)傳輸量,節(jié)約了網(wǎng)絡(luò)資源。另外,有些相關(guān)技術(shù)中不傳輸虛擬參考幀,但是,解碼器要在圖像幀中根據(jù)與編碼器相同的算法建立背景圖像,選擇建立虛擬參考幀的塊,并建立虛擬參考幀,相比之下,本申請不需要解碼器建立背景圖像,選擇用于建立虛擬參考幀的塊,只需要根據(jù)虛擬參考幀標(biāo)識直接將帶有虛擬參考幀標(biāo)識的塊組成虛擬參考幀就好,降低了解碼器的復(fù)雜度,節(jié)省了處理器資源。而且,因?yàn)榻獯a器只需要根據(jù)虛擬參考幀標(biāo)識就可以獲取用于建立虛擬參考幀的塊,如果編碼器建立虛擬參考幀時(shí)所使用的算法有了變更,解碼器不受影響,兼容性更好。
基于上述圖1對應(yīng)的實(shí)施例,本申請實(shí)施例提供一種解碼器,用于執(zhí)行上述圖1對應(yīng)的實(shí)施例中所描述的虛擬參考幀的建立方法,參照圖9所示,該解碼器90包括:處理單元901和接收單元902。
接收單元902,用于接收編碼器傳輸?shù)闹辽僖粋€(gè)圖像幀,至少一個(gè)圖像幀中每一個(gè)圖像幀包含至少一個(gè)塊;
處理單元901,用于利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀,虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀。
在一種可能的實(shí)現(xiàn)方式中,處理單元901,還用于分配第一虛擬參考幀緩存區(qū);確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置,并將每一個(gè)帶有虛擬參考幀標(biāo)識的塊分別存儲在第一虛擬參考幀緩存區(qū)中。
在一種可能的實(shí)現(xiàn)方式中,處理單元901,還用于根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識還用于指示所在的塊的位置信息,
處理單元901,還用于根據(jù)虛擬參考幀標(biāo)識的指示確定每一個(gè)帶有虛擬參考幀標(biāo)識的塊的位置。
在一種可能的實(shí)現(xiàn)方式中,接收單元902,接收編碼器發(fā)送的指示信息,指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,預(yù)設(shè)格式的字段用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的至少一項(xiàng)。
在一種可能的實(shí)現(xiàn)方式中,接收單元902,還用于接收編碼器發(fā)送的解碼指示信號,解碼指示信號用于指示參照虛擬參考幀進(jìn)行解碼;
處理單元901,還用于根據(jù)解碼指示信號,參照虛擬參考幀進(jìn)行解碼。
本申請實(shí)施例提供的解碼器,接收編碼器傳輸?shù)闹辽僖粋€(gè)圖像幀,利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀。因?yàn)橛糜诮⑻摂M參考幀的塊添加了虛擬參考幀標(biāo)識,在傳輸過程中不需要傳輸虛擬參考幀,不會造成碼率上升,而且,解碼器只需要將帶有虛擬參考幀標(biāo)識的塊提取出來組成虛擬參考幀,不需要用和編碼器相同的算法基于圖像幀建立虛擬參考幀,減少了解碼器的復(fù)雜度和功耗。
基于上述圖7對應(yīng)的實(shí)施例,本申請實(shí)施例提供一種編碼器,用于執(zhí)行上述圖8對應(yīng)的實(shí)施例中所描述的虛擬參考幀的建立方法,參照圖10所示,該編碼器100包括:處理單元1001和發(fā)送單元1002。
處理單元1001,用于獲取至少一個(gè)圖像幀,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,至少一個(gè)圖像幀中每一個(gè)圖像幀包含至少一個(gè)塊,至少一個(gè)圖像幀不包含虛擬參考幀,虛擬參考幀標(biāo)識用于指示所在的塊用于建立虛擬參考幀;
發(fā)送單元1002,用于向解碼器傳輸至少一個(gè)圖像幀。
在一種可能的實(shí)現(xiàn)方式中,處理單元1001,還用于當(dāng)目標(biāo)塊與目標(biāo)背景塊中相似像素對的數(shù)量大于或等于第一閾值時(shí),將目標(biāo)塊確定為用于建立虛擬參考幀的塊;
其中,目標(biāo)塊為目標(biāo)圖像幀中的任意一個(gè)塊,目標(biāo)背景塊是根據(jù)目標(biāo)塊在目標(biāo)圖像幀中的位置確定的目標(biāo)塊在背景圖像中對應(yīng)的塊,至少一個(gè)圖像幀包含目標(biāo)圖像幀;相似像素對包括分別位于目標(biāo)塊與目標(biāo)背景塊中位置相對應(yīng)的兩個(gè)像素,且相似像素對包括的兩個(gè)像素滿足至少一個(gè)分量之差的絕對值小于或等于第二閾值。
在一種可能的實(shí)現(xiàn)方式中,處理單元1001,還用于基于至少一個(gè)圖像幀,按照預(yù)設(shè)的建模算法生成背景圖像。
在一種可能的實(shí)現(xiàn)方式中,處理單元1001,還用于分配第二虛擬參考幀緩存區(qū);根據(jù)預(yù)設(shè)的位置映射關(guān)系確定每一個(gè)用于建立虛擬參考幀的塊的位置,并將每一個(gè)用于建立虛擬參考幀的塊分別存儲在第二虛擬參考幀緩存區(qū)中。
在一種可能的實(shí)現(xiàn)方式中,虛擬參考幀標(biāo)識還用于指示所在的塊的位置信息。
在一種可能的實(shí)現(xiàn)方式中,發(fā)送單元1002,還用于向解碼器發(fā)送指示信息,指示信息用于指示預(yù)設(shè)的位置映射關(guān)系。
在一種可能的實(shí)現(xiàn)方式中,處理單元1001,還用于對用于建立虛擬參考幀的塊增加預(yù)設(shè)數(shù)量的比特,虛擬參考幀標(biāo)識承載在新增的預(yù)設(shè)數(shù)量的比特上。
在一種可能的實(shí)現(xiàn)方式中,處理單元1001,還用于在用于建立虛擬參考幀的塊中設(shè)定預(yù)設(shè)格式的字段,虛擬參考幀標(biāo)識承載在預(yù)設(shè)格式的字段上,預(yù)設(shè)格式的字段用于指示預(yù)設(shè)量化步長、預(yù)設(shè)塊大小、預(yù)設(shè)編碼方式、預(yù)設(shè)運(yùn)動矢量、預(yù)設(shè)殘差、預(yù)設(shè)量化參數(shù)中的至少一項(xiàng)。
在一種可能的實(shí)現(xiàn)方式中,處理單元1001,還用于當(dāng)至少一個(gè)圖像幀中用于建立虛擬參考幀的塊組合成虛擬參考幀時(shí),參照虛擬參考幀進(jìn)行編碼;
發(fā)送單元1002,還用于向解碼器發(fā)送解碼指示信號,解碼指示信號用于指示參照虛擬參考幀進(jìn)行解碼。
本申請實(shí)施例提供的編碼器,獲取至少一個(gè)圖像幀,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,向解碼器傳輸至少一個(gè)圖像幀。因?yàn)橛糜诮⑻摂M參考幀的塊添加了虛擬參考幀標(biāo)識,在傳輸過程中不需要傳輸虛擬參考幀,不會造成碼率上升,而且,解碼器只需要將帶有虛擬參考幀標(biāo)識的塊提取出來組成虛擬參考幀,不需要用和編碼器相同的算法基于圖像幀建立虛擬參考幀,減少了解碼器的復(fù)雜度和功耗。
基于上述圖1對應(yīng)的實(shí)施例,本申請實(shí)施例提供另一種解碼器,用于執(zhí)行上述圖1對應(yīng)的實(shí)施例中所描述的虛擬參考幀的建立方法,參照圖11所示,該解碼器110包括:處理器1101、存儲器1102和接收器1103,處理器1101和存儲器1102相互連接,處理器1101和接收器1103相互連接。
其中,存儲器1102用于存儲數(shù)據(jù)和程序。
處理器1101用于調(diào)用存儲器中存儲的程序?qū)崿F(xiàn)圖1對應(yīng)的實(shí)施例中所描述的虛擬參考幀的建立方法。處理器1101與圖9對應(yīng)的實(shí)施例中的處理單元301對應(yīng)。
接收器1103與圖9對應(yīng)的實(shí)施例中的接收單元302對應(yīng)。接收器1103可以是天線或者有線網(wǎng)絡(luò)接口。
處理器1101和接收器1103實(shí)現(xiàn)的功能與圖9對應(yīng)的實(shí)施例中處理單元301和接收單元302的功能相同,此處不再贅述。
本申請實(shí)施例提供的解碼器,接收編碼器傳輸?shù)闹辽僖粋€(gè)圖像幀,利用至少一個(gè)圖像幀中帶有虛擬參考幀標(biāo)識的塊建立虛擬參考幀。因?yàn)橛糜诮⑻摂M參考幀的塊添加了虛擬參考幀標(biāo)識,在傳輸過程中不需要傳輸虛擬參考幀,不會造成碼率上升,而且,解碼器只需要將帶有虛擬參考幀標(biāo)識的塊提取出來組成虛擬參考幀,不需要用和編碼器相同的算法基于圖像幀建立虛擬參考幀,減少了解碼器的復(fù)雜度和功耗。
基于上述圖7對應(yīng)的實(shí)施例,本申請實(shí)施例提供另一種編碼器,用于執(zhí)行上述圖8對應(yīng)的實(shí)施例中所描述的虛擬參考幀的建立方法,參照圖12所示,該編碼器120包括:處理器1201、存儲器1202和發(fā)送器1203,處理器1201和存儲器1202相互連接,處理器1201和發(fā)送器1203相互連接。
其中,存儲器1202用于存儲數(shù)據(jù)和程序。
處理器1201用于調(diào)用存儲器中存儲的程序?qū)崿F(xiàn)圖7對應(yīng)的實(shí)施例中所描述的虛擬參考幀的建立方法。處理器1201與圖10對應(yīng)的實(shí)施例中的處理單元401對應(yīng)。
發(fā)送器1203與圖10對應(yīng)的實(shí)施例中的發(fā)送單元402對應(yīng)。發(fā)送器1203可以是天線或者有線網(wǎng)絡(luò)接口。
處理器1201和發(fā)送器1203實(shí)現(xiàn)的功能與圖10對應(yīng)的實(shí)施例中處理單元401和發(fā)送單元402的功能相同,此處不再贅述。
本申請實(shí)施例提供的編碼器,獲取至少一個(gè)圖像幀,在至少一個(gè)圖像幀中確定用于建立虛擬參考幀的塊,對至少一個(gè)圖像幀中用于建立虛擬參考幀的塊添加虛擬參考幀標(biāo)識,向解碼器傳輸至少一個(gè)圖像幀。因?yàn)閷τ糜诮⑻摂M參考幀的塊添加了虛擬參考幀標(biāo)識,在傳輸過程中不需要傳輸虛擬參考幀,不會造成碼率上升,而且,解碼器只需要將帶有虛擬參考幀標(biāo)識的塊提取出來組成虛擬參考幀,不需要用和編碼器相同的算法基于圖像幀建立虛擬參考幀,減少了解碼器的復(fù)雜度和功耗。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
以上所述僅為本申請的較佳實(shí)施例,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的保護(hù)范圍之內(nèi)。