TW202406352A - 一種圖像編解碼方法及裝置 - Google Patents

一種圖像編解碼方法及裝置 Download PDF

Info

Publication number
TW202406352A
TW202406352A TW112127921A TW112127921A TW202406352A TW 202406352 A TW202406352 A TW 202406352A TW 112127921 A TW112127921 A TW 112127921A TW 112127921 A TW112127921 A TW 112127921A TW 202406352 A TW202406352 A TW 202406352A
Authority
TW
Taiwan
Prior art keywords
block
code length
decoded
component
encoded
Prior art date
Application number
TW112127921A
Other languages
English (en)
Inventor
潘冬萍
孫煜程
武曉陽
陳方棟
Original Assignee
大陸商杭州海康威視數字技術股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 大陸商杭州海康威視數字技術股份有限公司 filed Critical 大陸商杭州海康威視數字技術股份有限公司
Publication of TW202406352A publication Critical patent/TW202406352A/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation

Abstract

本申請提供一種圖像編解碼方法及裝置,涉及視訊編解碼領域,可以用於避免碼流溢出。具體方法包括:解析待解碼塊的碼流,若待解碼塊的碼流中包括第一碼字,則確定待解碼塊對應的圖像塊是否採用回退模式;若待解碼塊對應的圖像塊採用回退模式,且碼流緩衝器中已儲存的碼長超出設定上溢線,則根據碼流緩衝器的超出碼長,確定待解碼塊的每個分量的固定碼長,其中,待解碼塊包括一個或多個分量,對於待解碼塊的第一分量,第一分量的固定碼長用於指示解析第一分量的單個畫素點時所需的碼長,碼流緩衝器的超出碼長為碼流緩衝器中的已儲存碼長超出設定上溢線的碼長;基於每個分量的固定碼長,對每個分量的畫素點進行解析,以解碼待解碼塊。

Description

一種圖像編解碼方法及裝置
本申請實施例涉及視訊編解碼領域,尤其涉及一種圖像編解碼方法及裝置。
視訊編碼技術也稱為視訊壓縮技術,用於降低視訊訊號的資料頻寬。其中,視訊是連續的圖像序列,由連續的圖像幀構成,一幀圖像即為一幅圖像。由於人眼的視覺暫留效應,當幀序列以一定的速率播放時,人眼可見的就是連續的視訊。對視訊進行編解碼即對視訊中的每一幀圖像進行編解碼。以一幀圖像為例,在編碼端,圖像編碼器對圖像編碼,得到圖像對應的碼流並傳輸碼流至解碼端;在解碼端,圖像解碼器解析碼流,從而重建圖像。
其中,在圖像編解碼過程中,為了提高壓縮效率,常見的視訊壓縮技術都採用了變長編碼,一個視訊序列經過壓縮編碼之後所得到的碼流是變速率的,不適合即時地在固定碼率的通道中傳輸。因此,通常將編碼器產生的變碼率資料先輸出到一定儲存空間的緩衝器,然後再從緩衝器以固定碼率輸出。應理解,緩衝器的儲存空間的大小是一定的,若輸入至緩衝器的碼流資料過大,導致需要緩衝器暫時儲存的資料超出其儲存空間的大小,則會出現碼流“上溢”的情況,從而導致後續的圖像資訊丟失。
因此,如何在圖像編解碼過程中,基於緩衝器的剩餘儲存空間控制編碼器產生的碼率,是當前亟待解決的問題。
本申請實施例提供一種圖像編解碼方法及裝置,可以用於避免碼流溢出。
為達到上述目的,本申請實施例採用如下技術方案:
第一方面,本申請實施例提供一種圖像編碼方法,該方法由解碼端執行,該方法包括:解析待解碼塊的碼流,若待解碼塊的碼流中包括第一碼字,則確定待解碼塊對應的圖像塊是否採用回退模式,其中,待解碼塊的碼長小於待解碼塊的最大碼長,最大碼長為基於碼流緩衝器的設定上溢線確定的,設定上溢線用於指示碼流緩衝器中允許碼流佔用的最大儲存空間,第一碼字用於指示回退模式或原始值模式;若待解碼塊對應的圖像塊採用回退模式,且碼流緩衝器中已儲存的碼長超出設定上溢線,則根據碼流緩衝器的超出碼長,確定待解碼塊的每個分量的固定碼長,其中,待解碼塊包括一個或多個分量,對於待解碼塊的第一分量,第一分量的固定碼長用於指示解析第一分量的單個畫素點時所需的碼長,碼流緩衝器的超出碼長為碼流緩衝器中的已儲存碼長超出設定上溢線的碼長;基於每個分量的固定碼長,對每個分量的畫素點進行解析,以解碼待解碼塊。
本申請實施例提供的圖像編碼方法至少具有以下有益效果:在編碼端採用回退模式時,解碼端可以採用回退模式對待解碼塊進行解碼,可以基於碼流緩衝器的剩餘記憶體,避免出現碼流上溢或下溢的情況。進而避免待解碼塊的圖像資訊丟失。
第二方面,本申請實施例提供一種圖像編碼方法,該方法由編碼端執行,該方法包括:獲取待編碼塊的最大碼長,最大碼長為基於碼流緩衝器的設定上溢線確定的,設定上溢線用於指示碼流緩衝器中允許碼流佔用的最大儲存空間;對待編碼塊進行預編碼,得到待編碼塊的第一碼長,第一碼長為待編碼塊預編碼後得到的碼流的長度;若第一碼長大於或等於最大碼長,採用回退模式對待編碼塊進行編碼,其中,基於回退模式對待編碼塊進行編碼得到的碼長小於最大碼長,基於回退模式對待編碼塊進行編碼得到的碼流中包括第一碼字,第一碼字用於指示回退模式或原始值模式。
基於上述實施例,該方法可以首先對待編碼塊進行預編碼,基於預編碼得到的碼流長度與待編碼塊允許佔用的碼長對比,並根據對比結果,確定是否會出現碼流溢出的情況。進而,在確定會出現碼流溢出的情況時,採用回退模式對待編碼塊進行編碼,以避免待編碼塊的圖像資訊丟失。
第三方面,本申請提供了一種圖像解碼裝置。該解碼裝置可以是視訊解碼器或包含視訊解碼器的設備。該解碼裝置包括用於實現第一方面中任一種可能實現方式中方法的各個模組。所述解碼裝置具有實現上述相關方法實例中行為的功能。所述功能可以通過硬體實現,也可以通過硬體執行相應的軟體實現。所述硬體或軟體包括一個或多個與上述功能對應的模組。其有益效果可以參見相應方法中的描述,此處不再贅述。
第四方面,本申請提供了一種圖像編碼裝置。該編碼裝置可以是視訊編碼器或包含視訊編碼器的設備。該編碼裝置包括用於實現第二方面中任一種可能實現方式中方法的各個模組。所述編碼裝置具有實現上述相關方法實例中行為的功能。所述功能可以通過硬體實現,也可以通過硬體執行相應的軟體實現。所述硬體或軟體包括一個或多個與上述功能對應的模組。其有益效果可以參見相應方法中的描述,此處不再贅述。
第五方面,本申請提供一種電子設備,包括處理器和記憶體,所述記憶體用於儲存電腦指令,所述處理器用於從記憶體中調用並運行所述電腦指令,以實現第一方面至第二方面中任一種實現方式的方法。
例如,該電子設備可以是指視訊編碼器,或包括視訊編碼器的設備。
又如,該電子設備可以是指視訊解碼器,或包括視訊解碼器的設備。
第六方面,本申請提供一種電腦可讀儲存介質,儲存介質中儲存有電腦程式或指令,當電腦程式或指令被計算設備或計算設備所在的儲存系統執行時,以實現第一方面至第二方面中任一種實現方式的方法。
第七方面,本申請提供一種電腦程式產品,該計算程式產品包括指令,當電腦程式產品在計算設備或處理器上運行時,使得計算設備或處理器執行該指令,以實現第一方面至第二方面中任一種實現方式的方法。
第八方面,本申請提供一種晶片,包括記憶體和處理器,記憶體用於儲存電腦指令,處理器用於從記憶體中調用並運行該電腦指令,以實現第一方面至第二方面中任一種實現方式的方法。
第九方面,本申請提供一種圖像譯碼系統,該圖像譯碼系統包括編碼端和解碼端,解碼端用於實現第一方面提供的相應的解碼方法,編碼端用於實現與此對應的編碼方法。
本申請在上述各方面提供的實現方式的基礎上,還可以進行進一步組合以提供更多實現方式。或者說,上述任意一個方面的任意一種可能的實現方式,在不衝突的情況下,均可以應用於其他方面,從而得到新的實施例。例如,上述第一方面提供的任意一種圖像編碼方法,可以在不衝突的情況下兩兩組合、或三個方面進行組合,從而可以得到新的圖像解碼方法。
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本申請保護的範圍。
在本申請的描述中,除非另有說明,“/”表示“或”的意思,例如,A/B可以表示A或B。本文中的“和/或”僅僅是一種描述關聯物件的關聯關係,表示可以存在三種關係,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。此外,“至少一個”是指一個或多個,“多個”是指兩個或兩個以上。“第一”、“第二”等字樣並不對數量和執行次序進行限定,並且“第一”、“第二”等字樣也並不限定一定不同。
需要說明的是,本申請中,“示例性的”或者“例如”等詞用於表示作例子、例證或說明。本申請中被描述為“示例性的”或者“例如”的任何實施例或設計方案不應被解釋為比其他實施例或設計方案更優選或更具優勢。確切而言,使用“示例性的”或者“例如”等詞旨在以具體方式呈現相關概念。
下面描述本申請實施例所應用的系統架構。
參見圖1,圖1示出了本申請實施例所應用的編解碼系統1的架構示意圖。如圖1所示,編解碼系統1可以包括含編碼端10和解碼端20。其中,編碼端10產生經編碼視訊資料。因此,編碼端10可被稱為編碼裝置。解碼端20可對由編碼端10所產生的經編碼視訊資料進行解碼。因此,解碼端20可被稱為解碼裝置。
編碼端10和解碼端20的具體形態可以為各種裝置,包含桌上型電腦、移動計算裝置、筆記型(例如,膝上型)電腦、平板電腦、機上盒、例如所謂的“智慧”電話等電話手持機、電視機、相機、顯示裝置、數位媒體播放機、視訊遊戲控制台、車載電腦或其類似者。
可選的,圖1中的編碼端10和解碼端20可以是兩個單獨的設備。或者,編碼端10和解碼端20可以為同一設備,即編碼端10或對應的功能以及解碼端20或對應的功能可以集成在同一個設備上。
編碼端10和解碼端20之間可以進行通信。例如,解碼端20可經由鏈路30從編碼端10接收經編碼視訊資料。鏈路30可包括能夠將經編碼視訊資料從編碼端10移動到解碼端20的一或多個媒體或裝置。在一個實例中,鏈路30可包括使得編碼端10能夠即時將經編碼視訊資料直接發射到解碼端20的一或多個通信媒體。在此實例中,編碼端10可根據通信標準(例如無線通訊協定)來調製經編碼視訊資料,且可將經調製的視訊資料發射到解碼端20。所述一或多個通信媒體可包含無線和/或有線通信媒體,例如射頻(radio frequency,RF)頻譜或一或多個物理傳輸線。所述一或多個通信媒體可形成基於分組的網路的一部分,基於分組的網路例如為局域網、廣域網路或全球網路(例如,網際網路)。所述一或多個通信媒體可包含路由器、交換器、基站或促進從編碼端10到解碼端20的通信的其它設備。
可選的,編碼端10可以將經編碼資料從輸出介面140輸出到內置或外接的儲存裝置中。儲存裝置可包含多種分散式或本地存取的資料儲存媒體中的任一者,例如硬碟驅動器、藍光光碟、數位通用光碟(digital video disc,DVD)、唯讀光碟(compact disc read-only memory,CD-ROM)、快閃記憶體、易失性或非易失性記憶體,或用於儲存經編碼視訊資料的任何其它合適的數位儲存媒體。
如圖1所示,編碼端10包括視訊源120、編碼器100和輸出介面140。在一些實例中,輸出介面140可包含調節器/解調器(數據機)和/或發射器。視訊源120可包括視訊捕獲裝置(例如,攝像機)、含有先前捕獲的視訊資料的視訊存檔、用以從視訊內容提供者接收視訊資料的視訊饋入介面,和/或用於產生視訊資料的電腦圖形系統,或視訊資料的這些來源的組合。編碼器100可對來自視訊源120的視訊資料進行編碼。在一些示例中,編碼端10經由輸出介面140將經編碼視訊資料直接發射到解碼端20。在其它實例中,經編碼視訊資料還可儲存到儲存裝置上,供解碼端20以後存取來用於解碼和/或播放。
如圖1所示,解碼端20包括輸入介面240、解碼器200和顯示裝置220。在一些實例中,輸入介面240包含接收器和/或數據機。輸入介面240可經由鏈路30和/或從儲存裝置接收經編碼視訊資料。顯示裝置220可與解碼端20集成或可在解碼端20外部。一般來說,顯示裝置220顯示經解碼視訊資料。顯示裝置220可包括多種顯示裝置,例如,液晶顯示器(liquid crystal display,LCD)、等離子顯示器、有機發光二極體(organic light-emitting diode,OLED)顯示器或其它類型的顯示裝置。
可選的,在編碼端10中,還包括碼流緩衝器(圖1中未示出),碼流緩衝器用於接收經編碼產生的碼流資料,並輸出固定碼率的碼流資料。不同待編碼塊經編碼後產生的碼流資料的大小可大體上基於待編碼塊的性質而極大地變化。從而,一個視訊序列經過壓縮編碼之後所得到的碼流是變速率的,不適合即時地在固定碼率的通道中傳輸。可以通過碼流緩衝器平緩經壓縮視訊中的速率變化。其中,碼流緩衝器的儲存空間越大,越能夠承受碼率的波動。
可選的,在解碼端20中,也可以包括另一個緩衝器,其可以用於接收固定碼率的碼流資料,在從緩衝器輸出至解碼器200的碼流解析單元201。
儘管圖1中未示出,但在一些方面,編碼器100和解碼器200可各自與音訊編碼器和解碼器集成,且可包含適當的多工器-多路分解器單元或其它硬體和軟體,以處置共同資料流程或單獨資料流程中的音訊和視訊兩者的編碼。
應理解,圖1所示出的編解碼系統1僅為一種示例,並且本申請的技術可適用於未必包含編碼裝置與解碼裝置之間的任何資料通信的視訊譯碼設置(例如,視訊編碼或視訊解碼)。在其它實例中,資料可從本機存放區器檢索、在網路上資料流等等。編碼裝置可對資料進行編碼並且將資料儲存到記憶體,和/或視訊解碼裝置可從記憶體檢索資料並且對資料進行解碼。在許多實例中,由並不彼此通信而是僅編碼資料到記憶體和/或從記憶體檢索資料且解碼資料的裝置執行編碼和解碼。
下面結合說明書附圖,對圖1中的編碼器100和解碼器200的具體結構進行簡單介紹。
參見圖2,圖2示出用於實現本申請實施例方法的編碼器100的實例的示意性框圖。如圖2所示,編碼器100包括預測處理單元101、殘差計算單元102、殘差變換單元103、量化單元104、編碼單元105、反量化單元(也可以稱為逆量化單元)106、殘差逆變換單元107、重構單元(或者稱為重建單元)108以及濾波器單元109。
一種示例中,編碼器100的輸入為待編碼圖像的圖像塊(即待編碼塊或編碼單元)。
另一種示例中,編碼器100的輸入為待編碼圖像,則編碼器100中還可以包括分割單元(圖2中未示出),該分割單元用於將待編碼圖像分割成多個圖像塊。編碼器100用於待編碼圖像的多個圖像塊逐塊編碼,從而完成對待編碼圖像的編碼。例如,編碼器100對每個圖像塊執行編碼過程,從而完成對待編碼圖像的編碼。
示例性的,一種將待編碼圖像劃分成多個圖像塊的方法可以包括:
步驟11:將一幀圖像分成一個或多個互相不重疊的片(slice),一個片中包括多個編碼單元,各個片之間無依賴關係,可並行/獨立編解碼。
步驟12:對於每個片,編碼端可將其分成一個或多個互相不重疊的獨立編碼單元,各個獨立編碼單元間可相互不依賴,但可以共用該並行編碼單元的一些頭資訊。
步驟13:對於每個獨立編碼單元,編碼端可再將其分成一個或多個互相不重疊的編碼單元。其中,若將獨立編碼單元劃分成多個互相不重疊的編碼單元,則劃分方式可以為水準等分法、垂直等分法或水準垂直等分法。當然具體實現時不現於此。獨立編碼單元內的各個編碼單元可相互依賴,即在執行預測步驟的過程中可以相互參考。
編碼單元的寬為w_cu,高為h_cu,可選的,其寬大于高(除非是邊緣區域)。通常的,編碼單元可為固定的w_cu×h_cu,w_cu和h_cu均為2的N次方(N大於等於0),如16×4,8×4,16×2,8×2,4×2,8×1,4×1等。
編碼單元既可以包括亮度Y、色度Cb、色度Cr三個分量(或紅R、綠G、藍B三分量,或亮度Y、色度U、色度V三個分量),也可以僅包含其中的某一個分量。若包含三個分量,幾個分量的尺寸可以完全一樣,也可以不一樣,具體與圖像輸入格式相關。
如圖3所示,為一種圖像、並行編碼單元、獨立編碼單元和編碼單元之間的對應關係的示意圖。其中,圖3中是以按照3:1將一個圖像劃分為並行編碼單元1和並行編碼單元2,以及一個獨立編碼單元包含4個編碼單元為例進行說明的。
可選的,分割單元將待編碼圖像劃分成多個圖像塊,這些圖像塊可以被進一步分割為更小的塊,例如基於四叉樹結構或者二叉樹結構的圖像塊分割。此外,此分割還可包含分割成條帶(tile)、片(slice)或其它較大單元。該條帶可分成多個圖像塊(或者可分成被稱作片的圖像塊集合)。
預測處理單元101,用於接收或獲取待編碼塊的原始值和已重構圖像資料,基於已重構圖像資料中的相關資料對待編碼塊進行預測,得到待編碼塊的預測塊。
可選的,預測處理單元101可以包括幀間預測器和幀內預測器。其中,幀間預測器可確定用於編碼該待編碼塊的幀間預測模式,並基於確定的幀間預測模式,預測當前圖像塊中一個或多個子塊的運動資訊,例如運動向量(motion vector,MV),並利用當前圖像塊中一個或多個子塊的運動資訊(例如運動向量)獲取或產生當前圖像塊的預測塊。幀內預測器可確定用於編碼該待編碼塊的幀內預測模式。
其中,幀內預測是指,利用視訊空間域的相關性,使用當前圖像塊的已編碼塊進行預測,以達到去除視訊空域冗餘的目的。示例性的,幀內預測規定了多種預測模式,每種預測模式對應一種紋理方向(DC模式除外),例如,若圖像紋理呈現水準狀排布,則水準預測模式可以更好的預測圖像資訊。
幀間預測是指,基於視訊時域的相關性,由於視訊序列包含有較強的時域相關性,使用鄰近已編碼圖像畫素預測當前圖像的畫素,可以達到有效去除視訊時域冗餘的目的。視訊編碼標準的幀間預測部分都採用了基於塊的運動補償技術,主要原理是為當前圖像的每一個區塊在之前已編碼圖像中尋找一個最佳匹配塊,該過程稱為運動估計(MotionEstimation,ME)。
此外,在幀間預測模式下,可以使用運動向量表示當前待編碼塊與其參考圖像中的最佳匹配塊之間的相對位移。每個劃分的塊都有相應的運動向量傳輸到解碼端,如果對每個塊的運動向量進行獨立編碼和傳輸,特別是劃分成小尺寸的塊時,需要消耗相當多的比特。為了降低用於編碼運動向量的比特數,則利用相鄰圖像塊之間的空間相關性,根據相鄰已編碼塊的運動向量對當前待編碼塊的運動向量進行預測,然後對預測差進行編碼。這樣,可以有效地降低表示運動向量的比特數。在對當前待編碼塊的運動向量編碼過程中,首先使用相鄰已編碼塊的運動向量預測當前待編碼塊的運動向量,然後對運動向量的預測值(motion vector prediction,MVP)與運動向量的真正估值之間的差值(motion vector difference,MVD)進行編碼,從而有效降低MV的編碼比特數。
殘差計算單元102用於計算待編碼塊的原始值和待編碼塊的預測塊之間的殘差值,得到殘差塊。例如,逐畫素地將待編碼塊的原始畫素值減去預測塊的畫素值。
在一個示例中,殘差變換單元103用於基於殘差塊確定殘差系數。可選的,在該過程中,可以包括:對殘差塊進行例如離散余弦變換(discrete cosine transform,DCT)或離散正弦變換(discrete sine transform,DST)的變換,以在變換域中獲取變換系數,變換系數也可以稱為變換殘差系數或殘差系數,該殘差系數可以在變換域中表示殘差塊。當然,編碼器100在對待編碼塊進行編碼的過程中也可以不包含殘差變換的步驟。
量化單元104用於通過應用標量量化或向量量化來量化變換系數或殘差值,以獲取經量化殘差系數(或經量化殘差值)。量化過程可以減少與部分或全部殘差系數有關的位深度(bitdepth)。例如,可在量化期間將p位變換系數向下舍入到q位變換系數,其中p大於q。可通過調整量化參數(quantization parameter,QP)修改量化程度。例如,對於標量量化,可以應用不同的標度來實現較細或較粗的量化。較小量化步長對應較細量化,而較大量化步長對應較粗量化。可以通過QP指示合適的量化步長。
其中,在圖像編碼過程中,為實現對圖像的壓縮,通常會對待編碼塊的殘差塊進行量化,或者對該殘差塊經一定處理後得到的殘差系數塊進行量化,從而使得量化後的殘差塊或殘差系數塊可以以更少的比特進行編碼。可以理解,殘差塊為基於待編碼塊的原始區塊和預測塊得到的殘差值塊,殘差系數塊為對殘差塊進行一定處理變換後得到的系數塊。
作為示例,以編碼器100對殘差塊進行量化為例,編碼器100可以為待編碼塊的殘差塊中的每個殘差值除以量化系數,以縮小該殘差塊中的殘差值。這樣,相比未進行量化的殘差值,量化後被縮小的殘差值即可通過更少的比特來編碼,這樣即實現了圖像的壓縮編碼。
編碼單元105用於對上述經量化殘差系數(或經量化殘差值)進行編碼,以經編碼比特流(或稱為碼流)的形式輸出的經編碼圖像資料(即當前待編碼塊的編碼結果),然後可以將經編碼比特流傳輸到解碼器,或將其儲存起來,後續傳輸至解碼器或用於檢索。編碼單元105還可用於對待編碼塊的語法元素進行編碼,例如將待編碼塊採用的預測模式編碼至碼流等。
在一個示例中,編碼單元105對殘差系數進行編碼的一種可行方法為:半定長編碼方式。首先將一個殘差塊(residual block,RB)內殘差的最大絕對值定義為modified maximum(mm)。確定該RB內殘差系數的編碼比特數(同一個RB內殘差系數的編碼比特數一致)。例如,若當前RB的碼長CL為2,當前殘差系數為1,則編碼殘差系數1需要2個比特,表示為01。若前RB的CL為7,則表示編碼8-bit的殘差系數和1-bit的符號位。CL的確定是去找滿足當前子塊所有殘差都在 範圍之內的最小M值。若同時存在 兩個邊界值,則M應增加1,即需要M+1個比特編碼當前RB的所有殘差;若僅存在 兩個邊界值中的一個,則需要編碼一個Trailing位來確定該邊界值是 還是 ;若所有殘差均不存在 中的任何一個,則無需編碼該Trailing位。
當然,也可以採用其他殘差系數編碼方法,如指數Golomb編碼方法,Golomb-Rice編碼方法,截斷一元碼編碼方法,游程編碼方法,直接編碼原始殘差值等。
另外,對於某些特殊的情況,也可以直接編碼原始值,而不是殘差值。
反量化單元106用於對上述經量化殘差系數(或經量化殘差值)進行反量化,以獲取經反量化殘差系數(經反量化殘差值),該反量化是上述量化單元104的反向應用,例如,基於或使用與量化單元104相同的量化步長,應用量化單元104應用的量化方案的逆量化方案。
殘差逆變換單元107用於對上述反量化殘差系數進行逆變換(或反變換),以得到重建的殘差塊。可選的,反變換可以包括逆離散余弦變換(discrete cosine transform,DCT)或逆離散正弦變換(discrete sine transform,DST)。這樣,對上述反量化殘差系數進行逆變換(或反變換)後得到的逆變換值,即為在畫素域(或者稱為樣本域)中重建的殘差值。也即,經反量化的殘差系數塊在經殘差逆變換單元107逆變換後,得到的塊為重建的殘差塊。當然,在編碼器100中不包括上述的殘差變化單元103時,編碼器100也可以不包含反變換的步驟。
重構單元108用於將重建的殘差塊添加至預測塊,以在樣本域中獲取重構塊,重構單元108可以為求和器。例如,重構單元108將重建的殘差塊中的殘差值與預測塊中對應畫素的預測值相加,以得到對應畫素的重建值。該重構單元108輸出的重構塊可以後續用於預測其他待編碼的圖像塊。
濾波器單元109(或簡稱“濾波器”)用於對重構塊進行濾波以獲取經濾波塊,從而順利進行畫素轉變或提高圖像品質。
在一個示例中,編碼器100實現的一種編碼過程可以包括以下步驟:
步驟21:預測處理單元101確定預測模式,並基於確定的預測模式和已編碼圖像塊的重構塊對待編碼塊進行預測,得到待編碼塊的預測塊。
其中,已編碼圖像塊的重構塊是反量化單元106、殘差逆變換單元107以及重構單元108依次對該已編碼圖像塊的經量化殘差系數塊處理後得到的。
步驟22:殘差計算單元102基於預測塊和待編碼塊的原始畫素值,得到待編碼塊的殘差塊;
步驟23:殘差變換單元103對殘差塊進行變換,得到殘差系數塊。
步驟24:量化單元104對殘差系數塊進行量化,得到經量化殘差系數塊。
步驟25:編碼單元105對經量化殘差系數塊進行編碼,以及對相關語法元素(例如預測模式,編碼模式)進行編碼,得到待編碼塊的碼流。
參見圖4,圖4示出用於實現本申請實施例方法的解碼器200的實例的示意性框圖。解碼器200用於接收例如由編碼器100編碼的圖像資料(即經編碼比特流,例如,包括圖像塊的經編碼比特流及相關聯的語法元素),以獲取經解碼圖像塊。
如圖4所示,解碼器200包括碼流解析單元201、反量化單元202、殘差逆變換單元203、預測處理單元204、重構單元205、濾波器單元206。在一些實例中,解碼器200可執行大體上與圖2的編碼器100描述的編碼過程互逆的解碼過程。
碼流解析單元201用於對經編碼比特流執行解碼,以獲取經量化殘差系數(或經量化殘差值)和/或解碼參數(例如,解碼參數可以包括編碼側執行的幀間預測參數、幀內預測參數、濾波器參數和/或其它語法元素中的任意一個或全部)。碼流解析單元201還用於將上述解碼參數轉發至預測處理單元204,以供預測處理單元204根據解碼參數執行預測過程。
反量化單元202的功能可與編碼器100的反量化單元106的功能相同,用於反量化(即逆量化)經碼流解析單元201解碼輸出的經量化殘差系數。
其中,反量化是量化的反過程,反量化指的是將量化後的系數映射為輸入信號空間中的重建信號,重建信號是輸入信號的一個近似。為從壓縮編碼後的碼流中重建圖像塊,解碼器200的反量化單元202可以對從碼流中解析到的殘差塊或殘差系數塊進行反量化,從而可以重建圖像塊對應的未被量化的殘差塊或殘差系數塊,進而,解碼器200根據重建的殘差塊或殘差系數塊對圖像塊進行重建,從而得到圖像的重建塊。
作為示例,以解碼器200從碼流中解析到待解碼塊經量化後的殘差塊為例,解碼器200可以通過反量化單元202對該殘差塊進行反量化。具體的,反量化單元202可以為解析到的殘差塊中的每個殘差值乘以量化系數,以重建待解碼塊對應的未被量化的殘差塊中的殘差值,從而得到重建的殘差塊。其中,量化系數為編碼裝置在編碼待解碼塊時,對待解碼塊的殘差塊進行量化時的量化系數。這樣,解碼器200基於反量化後重建的殘差塊,即可實現對待解碼塊的重建,並得到待解碼塊的重建塊。本領域技術人員可以理解,待編碼塊是編碼端的待處理圖像塊,待解碼塊是解碼端的待處理圖像塊。
殘差逆變換單元203的功能可與編碼器100的殘差逆變換單元107的功能相同,用於對上述經反量化殘差系數進行逆變換(例如,逆DCT、逆整數變換或概念上類似的逆變換過程),得到重建的殘差值。逆變換得到塊即為重建的待解碼塊在畫素域中的殘差塊。
重構單元205(例如求和器)的功能可與編碼器100的重構單元108的功能相同。
預測處理單元204,用於接收或獲取經編碼圖像資料(例如當前圖像塊的經編碼比特流)和已重構圖像資料,預測處理單元204還可以從例如碼流解析單元201接收或獲取預測模式的相關參數和/或關於所選擇的預測模式的資訊(即上述的解碼參數),並且基於已重構圖像資料中的相關資料和解碼參數對當前圖像塊進行預測,得到當前圖像塊的預測塊。
重構單元205用於將重建的殘差塊添加到預測塊,以在樣本域中獲取待解碼圖像的重構塊,例如將重建的殘差塊中的殘差值與預測塊中的預測值相加。
濾波器單元206用於對重構塊進行濾波以獲取經濾波塊,該經濾波塊即為經解碼圖像塊。
具體的,在本申請實施例中,解碼器200用於實現後文實施例中描述的解碼方法。
應當理解的是,在本申請實施例的編碼器100和解碼器200中,針對某個環節的處理結果也可以經過進一步處理後,再輸出到下一個環節,例如,在插值濾波、運動向量推導或濾波等環節之後,對相應環節的處理結果進一步進行Clip或移位shift等操作。
在一個示例中,解碼器200實現的一種解碼過程可以包括以下步驟:
步驟31:碼流解析單元201解析預測模式和殘差編碼模式;
步驟32:碼流解析單元201基於預測模式和殘差編碼模式解析量化相關值(如near值,或QP值等);
步驟33:反量化單元202基於預測模式和量化相關值解析殘差系數;
步驟34:預測處理單元204基於預測模式,獲得當前圖像塊各個畫素的預測值;
步驟35:殘差逆變換單元203對殘差系數逆變換,以重建當前圖像塊各個畫素的殘差值;
步驟36:重構單元205基於當前編碼單元各個畫素的預測值和殘差值,獲得其重建值。
圖1~圖4僅為本申請實施例提供的示例,在一些示例中,編碼器100、解碼器200以及編解碼系統1可以包括更多或更少的部件或單元,本申請對此不予限定。
以下,結合附圖,對本申請實施例提供的如下圖像編解碼方法進行說明。
圖5為本申請提供的一種圖像編碼方法的流程示意圖。可選的 ,該圖像編碼方法可應用於圖1所示出的編解碼系統1,該圖像編碼方法可以由編碼端10執行,具體的,該編碼方法可以由編碼端10包括的編碼器100執行,如圖5所示,本申請實施例提供的圖像編碼方法包括以下步驟:
S101、編碼端獲取待編碼塊的最大碼長。
可以理解的是,待編碼的視訊中可以包含的一個或多個圖像幀。一個圖像幀包括一個或多個圖像塊。本申請實施例中,當前待編碼塊對應待處理圖像(待處理圖像為一個或多個圖像幀中的任意一個圖像幀)的一個圖像塊,待編碼塊可以為編碼單元(coding unit,CU)。
可選的,一個待編碼塊可以包括多個分量。該分量可以為亮度分量,也可以為色度分量。
例如,對於一個尺寸為16×2的待編碼塊對應的圖像塊而言,若該圖像塊的圖像格式為YUV444,則該圖像塊包括一個尺寸為16×2的亮度分量和兩個尺寸為16×2的色度分量。
又例如,對於一個尺寸為16×2的待編碼塊對應的圖像塊而言,若該圖像塊的圖像格式為YUV422,則該圖像塊包括一個尺寸為16×2的亮度分量和兩個尺寸為8×2的色度分量。
其中,最大碼長為基於碼流緩衝器的設定上溢線確定的碼流緩衝器中允許緩存的所述待編碼塊的最大碼流長度,設定上溢線用於指示所述碼流緩衝器中碼流允許佔用的最大儲存空間。
應理解,為防止出現碼流上溢的情況,該最大碼長可以根據圖1所示的編解碼系統中的編碼端的碼流緩衝器的實際儲存空間的大小確定。編碼端和解碼端均可以根據碼流緩衝器的實際儲存空間的大小與上述設定上溢線,確定當前碼流緩衝器中的允許緩存已編碼碼流的儲存空間。進而,編碼端和解碼端可以確定當前碼流緩衝器中已儲存的碼流所佔用的空間大小,並將當前碼流緩衝器中的允許緩存已編碼碼流的儲存空間減去當前已儲存的碼流所佔用的空間大小得到的空間大小確定為上述儲存空間的剩餘空間。
從而,該最大碼長為編碼端用於緩存已編碼碼流的儲存空間當前允許緩存的最大碼流長度,上述最大碼長為儲存空間的剩餘空間中可容納碼流的長度與儲存空間在單位時間內輸出碼流的長度之和。
在一些實施例中,編碼端可以控制碼流緩衝器的設定上溢線,以使得該允許儲存已編碼碼流的空間小於或等於碼流緩衝器的總儲存空間大小。從而,編碼端可以根據碼流緩衝器當前的設定上溢線確定上述碼長範圍。
需要說明的是,在對圖像進行編碼過程中,編碼端可以將碼流緩衝器的設定上溢線下調為碼流緩衝器的總儲存空間大小的二分之一、三分之一或其他可能的大小。示例性的,對於一個“片”而言,在編碼端對該“片”完成編碼之後,為了使得該“片”的已編碼碼流盡快地從碼流緩衝器中輸出,此時可以減小碼流緩衝器中允許容納已編碼碼流的實際空間大小,從而可以減少在編碼端對該“片”完成編碼之後,在碼流緩衝器中儲存的該“片”的碼流。此外,在下調該設定上溢線時,會出現當前碼流緩衝器中已儲存碼流所佔用的空間超出該設定上溢線的情況。此時,編碼端可以基於超出該設定上溢線部分所佔用的空間大小作為確定因素,確定編碼待編碼的固定碼長。
S102、編碼端對待編碼塊進行預編碼,得到待編碼塊的第一碼長。
其中,第一碼長為待編碼塊編碼後得到的碼流的長度。
此外,編碼端可以基於原始值模式對待編碼塊進行預編碼。
原始值模式為直接編碼待編碼塊對應的圖像塊的原始值的模式。
可選的,編碼端可以採用原始值模式,對待編碼塊的原始畫素值經過量化、變換後的值進行編碼。如此,編碼端通過採用原始值模式對待編碼塊進行編碼,可以提升重建待編碼塊圖像的效果。
在近無失真壓縮的編碼方式中,編碼端可以採用原始值模式對待編碼圖像進行編碼。其中,近無失真壓縮是指介於無失真壓縮和失真壓縮之間的壓縮技術,近無失真壓縮的目的是在一定的壓縮倍數下獲得較高的圖像壓縮品質。
可選的,編碼端可以基於逐點預測模式,幀內預測模式,塊複製模式等編碼端預設的預測模式對待編碼塊進行預編碼。
幀內預測模式是將待預測塊周圍相鄰塊中畫素的重建值作為預測值的預測模式。塊複製預測模式是將周圍已編碼(解碼)塊(不一定相鄰)畫素的重建值作為預測值的預測模式。在重建時,逐點預測模式是指將待預測畫素周圍相鄰畫素的重建值作為待預測畫素的預測值的預測模式。
逐點預測模式可以包括垂直預測、水準預測、垂直均值預測和水平均值預測等預測方式中的一種或多種的組合。
垂直預測為用待預測畫素上側(既可以是相鄰的上側,也可以是非相鄰但距離較近的上側)畫素的重建值來獲得待預測畫素的預測值(PointPredData)。水準預測為用待預測畫素左側(既可以是相鄰的左側,也可以是非相鄰但距離較近的左側)畫素的重建值來獲得待預測畫素的預測值。垂直均值預測為用待預測畫素上下方畫素的重建值來獲待得預測畫素的預測值。水平均值預測為用待預測畫素左右兩側畫素的重建值來獲得待預測畫素的預測值。
S103、若第一碼長大於或等於最大碼長,編碼端採用回退模式對待編碼塊進行編碼。
其中,基於所述回退模式對待編碼塊進行編碼得到的碼長小於最大碼長。
其中,採用回退模式對待編碼塊進行編碼,也即基於預先確定的目的碼長,然後採用固定碼長的編碼方式對待編碼塊進行編碼,對待編碼塊進行編碼所需的總碼長即為目的碼長。目的碼長小於最大碼長。
應理解,若第一碼長小於或等於最大碼長,則編碼端無需採用回退模式對待編碼塊進行編碼。
需要說明的是,碼流緩衝器的儲存空間的大小是一定的,若輸入至碼流緩衝器的碼流資料過大,導致需要碼流緩衝器暫時儲存的資料超出其儲存空間的大小,則會出現碼流“上溢”的情況。如此,會導致超出部分的資料丟失,從而,該待編碼視訊的圖像幀中的圖像資訊丟失,根據碼流緩衝器輸出的碼流資料無法完整解析出該圖像幀。
因此,編碼端需要將目的碼長控制在上述最大碼長之內。
在一些實施例中,原始值模式的碼字和回退模式的碼字相同。例如,原始值模式和回退模式的碼字均為第一碼字,則當編碼端編碼回退模式時,可以採用第一碼字時,該第一碼字用於指示回退模式或原始值模式。
在一些實施例中,編碼端可以選擇中點預測回退模式(midPoint prediction fallback mode,MPPF Mode),對待編碼塊進行預測,並在得到預測塊後,基於固定碼長的編碼方式對待編碼塊進行編碼,以得到待編碼塊的碼流。
其中,根據中點預測回退模式,編碼端可以首先將待編碼塊劃分為多個2x2畫素點的子圖像塊,每個2x2子圖像塊塊需要計算一個中值,中值middle的計算方法如下公式(1)。 公式(1)
其中, 為當前待編碼子塊的碼流傳輸通道的比特深度,1 <<表示左移一位。
進而,編碼端可以確定待編碼的子塊均值mean。
一種情形下,若當前子塊無法獲取周圍重建圖像,則mean值即為上述middle值。
另一種情形下,mean值為該子塊的上一行2x1畫素點的子塊重建值的均值,若無法獲取上一行2x1畫素點的子塊重建值,則取該子塊的前一個重建的2x2子塊重建圖像的均值。
進而,編碼端可以確定該子塊的bias值,bias值用於限制mean值的取值。編碼端可以使用bias值和middle值對mean做一個鉗位,以將mean值限制在bias值與middle值組成的取值範圍中。從而,將經過用bias值和middle值調整之後的mean值確定為當前2x2畫素點的待編碼子塊的預測值。
其中,bias值可以根據下述公式(2)確定。 公式(2)
其中, 用於指示待編碼塊的一個分量的量化過程中的量化步長, 用於指示待編碼塊的第 分量,1 <<表示左移一位。
此外,基於MPPF Mode,如圖6所示,可以基於左上角畫素點A,右上角畫素點B,左下角畫素點C,右下角畫素點D的順序,計算該2x2畫素點子塊的殘差值。
可選的,在重建該待編碼子塊的過程中,也可以按照上述左上角畫素點A,右上角畫素點B,左下角畫素點C,右下角畫素點D的順序,依次確定各個畫素點的重建值。
在一些實施例中,編碼端可以採用殘差編碼模式對待編碼塊進行編碼。
可選的,編碼端可以採用回退模式對應的預測模式對待編碼塊進行預測。或者,編碼端可以採用編碼端預設的預測模式中的任一預測模式對待編碼塊進行預測。
其中,編碼端預設的預測模式可以包括逐點預測模式,幀內預測模式,塊複製模式等。
可選的,編碼端可以將回退模式對應的預測模式確定為上述編碼端預設的預測模式中固定的一個。或者,編碼端還可以在編碼過程中選擇上述預設的預測模式中的任意一個作為預測當前待編碼塊時採用的預測模式。
從而,對於採用回退模式編碼的所有待編碼塊,編碼端均採用該固定的預測模式進行預測。
可選的,本申請實施例提供的回退模式可以包括第一回退模式和第二回退模式。其中,第一回退模式即採用回退模式對待編碼塊進行編碼時,直接採用固定的一種預測模式對待編碼塊進行預測,例如垂直均值預測模式。此外,第二回退模式不具有固定的預測模式,當採用第二回退模式對待編碼塊進行編碼時,可以選擇編碼端預設的任一種預測模式對待編碼塊進行預測。此外,第二回退模式可以不具有預測模式,當採用第二回退模式對待編碼塊進行編碼時,直接對原始值進行量化反量化得到重建值。
從而,在得到待編碼塊的預測塊後,編碼端可以執行上文描述的步驟22-步驟25,基於預測塊和待編碼塊的原始畫素值,得到待編碼塊的殘差塊,並對殘差塊進行變換,得到殘差系數塊。進而對殘差系數塊進行量化,得到經量化殘差系數塊。最後對經量化殘差系數塊進行編碼,得到待編碼塊的碼流。
在一些實施例中,編碼端可以先確定待編碼塊的量化參數QP值,進而對該殘差值進行量化處理。
可選的,編碼端可以根據待編碼塊對應的圖像塊的複雜度資訊和碼流緩衝器的剩餘空間,匯出待編碼塊的初始量化參數。進而,編碼端可以根據初始量化參數和量化參數調整值,確定待編碼塊的目標量化參數,目標量化參數的取值範圍在零與編碼端的量化參數預設最大值之間。示例性的,待編碼塊的目標量化參數可以為初始量化參數與量化參數調整值之和。
其中,碼流緩衝器的剩餘容量越大,量化參數調整值越大。該量化參數調整值的取值可以為例如4或8等正整數。
進一步地,編碼端還可以確定待編碼塊的各個分量的固定碼長。
其中,待編碼塊包括一個或多個分量。待編碼塊既可以包括亮度Y、色度Cb、色度Cr三個分量(或紅R、綠G、藍B三分量,或亮度Y、色度U、色度V三個分量),也可以僅包含其中的某一個分量。若包含三個分量,幾個分量的尺寸可以完全一樣,也可以不一樣,具體與圖像輸入格式相關。
示例性的,若待編碼塊的圖像格式為YUV400,則待編碼塊中僅包括亮度分量,編碼端僅需要確定亮度分量的固定碼長。或者,若待編碼塊的圖像格式為YUV420,則待編碼塊中包括亮度Y、色度U以及色度V三個分量,編碼端需要確定亮度分量的固定碼長、第一色度分量的固定碼長以及第二色度分量的固定碼長。
一種示例中,編碼端可以獲取待編碼塊的目標總碼長和待編碼塊的圖像格式,目標總碼長為基於目標畫素深度(bits per pixel,BPP)確定的編碼待編碼塊的各個畫素點時所需的總碼長,待編碼塊的圖像格式用於指示色度分量與亮度分量之間的碼長比值。進而,編碼端可以根據待編碼塊的目標總碼長以及碼長比值,確定待編碼塊的亮度分量的固定碼長和色度分量的固定碼長。
其中,確定目標BPP用於指示在目標壓縮率下編碼待編碼塊的每個畫素點時所需的碼長。目標BPP可以根據待編碼塊的目標壓縮倍率確定,目標BPP也可以視為編碼待編碼塊的每個畫素點時所需的平均碼長。目標BPP由碼流中的圖像頭資訊解析得到。
其中,目標BPP還用於指示在目標壓縮率下編碼待編碼塊的每個畫素點時所需的碼長。目標BPP可以根據待編碼塊的目標壓縮倍率確定。
示例1、若待編碼塊的目標BPP為8,也即待編碼塊的目標總碼長為(8bit×待編碼塊的畫素點個數),且若圖像格式為YUV400,則待編碼塊中僅包括亮度分量一個分量,該亮度分量的總碼長可以為(8 bit×待編碼塊的畫素點個數),也即亮度分量的固定碼長(一個亮度畫素點的碼長)為8 bit。編碼端可以基於上述確定的待編碼塊的總碼長,以固定碼長的編碼方式對該待編碼塊進行編碼。其中,若待編碼塊為16x2的圖像塊,則該待編碼塊的目標總碼長即為256 bit。
示例2、若當前目標BPP為8,也即待編碼塊的目標總碼長為(8 bit×待編碼塊的畫素點個數),且圖像格式為YUV444,則待編碼塊中包括亮度Y、色度U以及色度V三個分量。應理解,此時目標總碼長無法平均分配給亮度Y、色度U以及色度V三個分量。基於該圖像格式為YUV444,Y分量:U分量:V分量的碼長比值可以為2:1:1。從而,編碼端可以確定Y分量的總碼長為(4 bit×待編碼塊的畫素點個數),U分量與V分量的總碼長均為(2 bit×待編碼塊的畫素點個數)。從而,編碼端可以基於(4bit×待編碼塊的畫素點個數)的碼長,以固定碼長的編碼方式對該待編碼塊的Y分量進行編碼。並基於(2 bit×待編碼塊的畫素點個數)的碼長,以固定碼長的編碼方式對該待編碼塊的U分量和V分量進行編碼。
此外,基於該圖像格式為YUV444,每個色度U或V分量中的畫素個數與亮度(Y)分量的畫素個數相同,從而,編碼端可以以4bit(也即亮度的固定碼長為4 bit)作為固定碼長,編碼亮度Y分量中的各個畫素點。並且,編碼端可以以2bit(也即色度的固定碼長為2 bit)作為固定碼長,編碼色度U或V分量中的各個畫素點。
示例3、若當前目標BPP為8,也即待編碼塊的目標總碼長為(8 bit×待編碼塊的畫素點個數),且圖像格式為YUV422,則待編碼塊中包括亮度Y、色度U以及色度V三個分量。應理解,此時無法平均將(8 bit×待編碼塊的畫素點個數)分配給亮度Y、色度U以及色度V三個分量。基於該圖像格式為YUV422,Y分量:U分量:V分量的碼長比值可以為2:1:1。從而,編碼端可以確定Y分量的總碼長為(4 bit×待編碼塊的畫素點個數),U分量與V分量的總碼長均為(2 bit×待編碼塊的畫素點個數)。從而,編碼端可以基於4bit×待編碼塊的畫素點個數的碼長,即以固定碼長為4的定長碼對該待編碼塊的Y分量進行編碼。並基於(2 bit×待編碼塊的畫素點個數)例如2 bit×16×2也即64bit的碼長,以固定碼長為(64/待編碼塊的畫素點個數)的編碼方式對該待編碼塊的U分量和V分量進行編碼。
此外,基於該圖像格式為YUV422,每個色度U或V分量中的畫素個數為亮度Y分量的畫素個數的一半,從而,編碼端可以以4bit(也即亮度分量的固定碼長為4 bit)作為固定碼長,編碼亮度Y分量中的各個畫素點。並且,編碼端同樣可以以4bit(也即色度分量的固定碼長為4 bit)作為固定碼長,編碼色度U或V分量中的各個畫素點。
另一種示例中,編碼端可以獲取待編碼塊的目標BPP、待編碼塊的圖像格式以及編碼待編碼塊的頭資訊所需的碼長。進而,編碼端可以根據待編碼塊的目標BPP、待編碼塊的圖像格式以及編碼待編碼塊的頭資訊所需的碼長,確定待編碼塊的色度分量的固定碼長和亮度分量的固定碼長。
其中,對於每個圖像塊的已編碼碼流,頭資訊為在該碼流的最前端的具有一定長度的資料,該資料可以用於指示當前圖像塊的圖像參數。示例性的,該圖像參數包括當前圖像塊的比特深度、目標BPP、量化參數以及紋理複雜度中的一項或多項。
示例性的,若當前目標BPP為8,也即待編碼塊的目標總碼長為(8bit×待編碼塊的畫素點個數),編碼頭信息所需的碼長為(2 bit×待編碼塊的畫素點個數),且若圖像格式為YUV400,則待編碼塊中僅包括亮度分量一個分量,該亮度分量的總碼長可以為(6 bit×待編碼塊的畫素點個數),從而亮度分量的固定碼長為6bit作為上限。在一個例子中,編碼端可以基於(4 bit×待編碼塊的畫素點個數)例如4 bit×16×2也即128bit的碼長,以固定碼長的編碼方式對該待編碼塊進行編碼。
需要說明的是,在圖像編解碼過程中,由於人肉眼對於圖像亮度更加敏感,通常會優先為圖像塊中的亮度Y分量分配碼長,從而亮度分量上所有畫素的固定碼長之和大於或等於所述色度分量上所有畫素的固定碼長之和。從而,基於該圖像編解碼的過程,可以提升人肉眼查看到的圖像效果。
又一種示例中,編碼端可以獲取待編碼塊的目標BPP、待編碼塊的圖像格式以及編碼待編碼塊的頭資訊所需的碼長。進而,編碼端可以根據碼流緩衝器的剩餘容量、待編碼塊的目標BPP、碼長比值以及編碼待編碼塊的頭資訊所需的碼長,確定待編碼塊的色度分量的固定碼長和亮度分量的固定碼長。
可選的,待編碼塊的所有分量的碼長之和為待編碼塊的目的碼長減去待編碼塊的頭資訊的碼長和碼流緩衝器的超出碼長。
其中,目的碼長為基於目標BPP確定待編碼塊的碼長,設定上溢線的變化量小於待編碼塊的固定碼長與待編碼塊的頭資訊的碼長之間的差值,碼流緩衝器的超出碼長為碼流緩衝器中的已儲存碼長超出所述當前的設定上溢線的碼長。
示例性的,若目標BPP為8,待編碼塊的目的碼長為(8bit×待編碼塊的畫素點個數),若頭資訊需要佔用(2bit×待編碼塊的畫素點個數),此時碼流緩衝區的狀態大於當前的設定上溢線,則設定大於上溢線的部分所占的碼長為overflow_bpp,則此時待編碼塊的所有分量的碼長之和為待編碼塊的目標總碼長(也即8bit×待編碼塊的畫素點個數)減去編碼頭資訊佔用的碼長(例如為2bit×待編碼塊的畫素點個數),再減去overflow_bpp(例如1bit×待編碼塊的畫素點個數)。從而,此時待編碼塊的所有分量的碼長之和為5bit×待編碼塊的畫素點個數。進而,編碼端可以根據待編碼塊的圖像格式以及5bit×待編碼塊的畫素點個數確定待編碼塊的色度分量的固定碼長和亮度分量的固定碼長。
在一些實施例中,若需要調整設定上溢線,設定上溢線的大小滿足以下公式(3): 公式(3)
其中, ,block_size為編碼塊尺寸。target_bpp表示目標BPP。cu_header_bpp表示編碼待編碼塊的頭資訊時所用的碼長, 並且cu_header_bpp小於等於target_bpp。此外,overflow_bpp表示碼流緩衝器中的已儲存碼長超出所述當前的設定上溢線的碼長。
在一些實施例中,若待編碼塊包括多個分量,待編碼塊的多個分量共用回退模式(共用是指多個分量均採用回退模式或均不採用回退模式),從而,編碼端可以僅確定其中一個分量是否採用回退模式,在其中一個分量採用回退模式的情形下,其他分量也採用回退模式。或者,待編碼塊的多個分量中的一部分分量共用回退模式,則編碼端可以僅確定該一部分分量中的一個分量是否採用回退模式、以及除該部分分量的其他分量是否採用回退模式。又或者,待編碼塊的多個分量均不共用回退模式,從而,編碼端可以分別確定每一個分量是否採用回退模式。
在一些實施例中,若當前待編碼塊採用回退模式進行編碼,不更新當前的碼控參數,也即,將待編碼塊的前一個已編碼塊對應的碼控參數確定為待編碼塊的碼控參數。其中,該碼控參數用於匯出下一個待編碼塊的編碼資訊,例如量化步長等參數。
需要說明的是,在編解碼過程中,對於每一個待編碼塊對應的圖像塊,在當前圖像塊編碼結束以後,編碼端和解碼端中的碼控會根據當前圖像塊的複雜度,以及編碼時所需碼長等資訊來更新碼控參數,更新後的碼控參數用於匯出下一個待編碼圖像塊的資訊,如量化步長等。但是,若基於回退模式對該圖像塊進行編碼,由於該待編碼塊的碼長是固定的,其編碼時所需碼長無法正確反應當前圖像內容,因此,若當前圖像塊中若選擇了回退模式,那麼不更新碼控參數。
可選的,對於具有多個分量的待編碼塊,若當前待編碼塊中具有其中一個分量採用回退模式進行編碼,不更新當前的碼控參數。
本申請實施例提供的圖像編碼方法至少具有以下有益效果:該方法可以首先對待編碼塊進行預編碼,基於預編碼得到的碼流長度與待編碼塊允許佔用的碼長對比,並根據對比結果,確定是否會出現碼流上溢或下溢的情況。進而,在確定會出現碼流上溢或下溢的情況時,採用回退模式對待編碼塊進行編碼,以避免待編碼塊的圖像資訊丟失。
在一些實施例中,本申請還提供一種圖像解碼方法,該解碼方法與圖5所示的編碼方法相對應,如圖7所示,圖7為本申請提供的一種圖像解碼方法的流程示意圖,該圖像解碼方法可以由解碼器200執行,也可以由支援解碼器200的功能的解碼端(如圖1所示出的解碼端20)執行,這裡以解碼端實現解碼方法為例進行說明,該圖像解碼方法包括以下步驟:
S201、解碼端解析待解碼塊的碼流,若待解碼塊的碼流中包括第一碼字,以確定待解碼塊對應的圖像塊是否採用回退模式。
其中,在待解碼塊的碼流中用於指示編碼模式的碼字為第一碼字,並且,第一碼字為用於指示回退模式或原始值模式。
在一些實施例中,解碼端可以根據基於原始值模式對待解碼塊進行編碼的碼長是否上溢,來判斷待解碼塊對應的圖像塊是否採用回退模式。
可選的,若待解碼塊對應的圖像塊基於原始值模式編碼的碼長大於或等於所述待解碼塊的最大碼長,則解碼端可以確定待解碼塊對應的圖像塊採用回退模式。
其中,待解碼塊的碼流可以是解碼端從編碼端接收到的碼流,或者是從其他設備獲取的碼流,例如從存放裝置獲取的碼流,本申請實施例對此不作限定。
其中,待解碼塊的碼長小於待解碼塊的最大碼長,最大碼長為基於碼流緩衝器的設定上溢線確定的碼流緩衝器中允許緩存的待解碼塊的最大碼流長度,設定上溢線用於指示碼流緩衝器中允許碼流佔用的最大儲存空間。
需要說明的是,上述碼流緩衝器中允許緩存的碼流的最大碼長為編碼端編碼該待解碼塊時,碼流緩衝器中允許緩存的最大碼流長度。解碼端可以解析待解碼塊的碼流,直接確定最大碼長,或者,解碼端還可以解析待解碼塊的碼流,確定編碼端在編碼該待解碼塊對應的圖像塊時,碼流緩衝器的剩餘記憶體狀態,進而,基於該碼流緩衝器的剩餘記憶體狀態,解碼端可以確定上述最大碼長。
其中,關於該最大碼長的相關解釋可以參考上述步驟S101中的相關描述,在此不再贅述。
在一些實施例中,原始值模式的碼字和回退模式的碼字相同。例如,原始值模式和回退模式的碼字均為第一碼字,則當解碼端解析待解碼塊的碼流,得到第一碼字時,解碼端可以確定待解碼塊採用回退模式或原始值模式。
進而,解碼端可以根據碼流緩衝器中的已佔用記憶體空間的大小,確定待解碼塊是否採用回退模式。
在解碼端確定編碼該待解碼圖像塊時碼流緩衝器中的已佔用記憶體空間大於第一預設記憶體值,也即將上溢的情況下,解碼端確定待解碼塊對應的圖像塊採用回退模式。否則,解碼端確定待解碼塊對應的圖像塊採用原始值模式。
第一預設記憶體值的大小可以根據碼流緩衝器的實際記憶體大小確定,不做具體限制。
可選的,在解碼端確定待解碼塊的碼流長度為所有分量的圖像位寬乘以畫素個數之和,則解碼端可以解析待解碼塊的碼流,基於原始值模式重建待解碼塊的圖像塊。
在一些實施例中,待解碼塊可以包括一個或多個分量。
可選的,待解碼塊可以包括僅包括亮度分量。或者,待解碼塊可以包括三個分量,例如亮度Y、色度Cb、色度Cr三個分量(或紅R、綠G、藍B三分量,或亮度Y、色度U、色度V三個分量)。又或者,在上述三分量的基礎上,待解碼塊還可以包括α分量,也即待解碼塊共包括四分量。其中,α分量為畫素透明度分量。當分量α值為0,則該解碼塊對應的畫素是透明的,α分量的圖像位寬與其他三分量不同。
在一些實施例中,若待解碼塊包括多個分量,待解碼塊的多個分量共用回退模式(共用回退模式即多個分量均採用回退模式或均不採用回退模式),從而,解碼端可以僅確定其中一個分量是否採用回退模式,在其中一個分量採用回退模式的情形下,其他分量也採用回退模式。或者,待解碼塊的多個分量中的一部分分量共用回退模式,則解碼端可以僅確定該一部分分量中的一個分量是否採用回退模式、以及除該部分分量的其他分量是否採用回退模式。又或者,待解碼塊的多個分量均不共用回退模式,從而,解碼端可以分別確定每一個分量是否採用回退模式。
具體的,待解碼塊的碼流中可以包括用於指示上述共用回退模式的情形的標識。從而,解碼端可以根據該標識,確定共用回退模式的分量,並進一步確定各個分量是否採用回退模式。
S202、解碼端在待解碼塊對應的圖像塊採用回退模式,且所述碼流緩衝器中已儲存的碼長超出設定上溢線的情況下,根據碼流緩衝器的超出碼長,確定待解碼塊的每個分量的固定碼長。
其中,待解碼塊包括一個或多個分量,對於待解碼塊的第一分量,第一分量的固定碼長用於指示解析第一分量的單個畫素點時所需的碼長,碼流緩衝器的超出碼長為碼流緩衝器中的已儲存碼長超出當前的設定上溢線的碼長。
在一些實施例中,解碼端可以根據待解碼塊的目標BPP、待解碼塊的圖像格式、待解碼塊的頭資訊的碼長以及編碼該待解碼圖像塊時碼流緩衝區的剩餘記憶體中的一項或多項,確定待解碼塊各個分量的固定碼長。
其中,目標BPP還用於指示在目標壓縮率下解碼待解碼塊的每個畫素點時所需的碼長。目標BPP可以根據待解碼塊的目標壓縮倍率確定,可以理解為,上述目標BPP為解碼待解碼塊的各個畫素點時所需的平均碼長。此外,待解碼塊的圖像格式還可以用於指示色度分量與亮度分量之間的碼長比值,例如若圖像格式為YUV444,則該待解碼圖像塊中Y分量:U分量:V分量的碼長比值可以為2:1:1。
可選的,解碼端可以解析待解碼塊的碼流,解析得到待解碼塊各個分量的BPP,或者,解碼端還可以根據下述可能的實現方式,確定待解碼塊各個分量的BPP。應理解,解碼端確定待解碼塊各個分量的固定碼長的方式,與編碼端在編碼該待解碼塊對應的圖像塊的碼流時確定各個分量的固定碼長的方式相同。
在一種實現方式中,解碼端可以獲取待解碼塊的目標BPP和待解碼塊的圖像格式,並根據待解碼塊的目標BPP以及碼長比值,確定待解碼塊的色度分量的固定碼長和亮度分量的固定碼長。
需要說明的是,解碼端確定各個分量的固定碼長的方式與編碼端是對應的,若編碼端基於一個圖像塊的目標BPP和該圖像塊的圖像格式確定該圖像塊的各個分量的固定碼長,則相應的,在解碼該圖像塊的已編碼碼流時,解碼端同樣基於該圖像塊的目標BPP和該圖像塊的圖像格式確定該圖像塊的各個分量的固定碼長。
示例1、若待解碼塊的目標BPP為8,從而待解碼塊的目標總碼長為8bit×待解碼塊的畫素點個數,且若圖像格式為YUV400,則待解碼塊中僅包括亮度分量一個分量,該亮度分量的總碼長可以為8bit×待解碼塊的畫素點個數,也即亮度分量的固定碼長(一個亮度畫素點的碼長)為8 bit。解碼端可以基於8bit×待解碼塊的畫素點個數的碼長,以固定碼長的解碼方式對該待解碼塊進行解碼。其中,若待解碼塊為16x2的圖像塊,該待解碼塊的碼長即為256 bit。
示例2、若當前目標BPP為8,待解碼塊的目的碼長為8bit×待解碼塊的畫素點個數,且圖像格式為YUV444,則待解碼塊中包括亮度Y、色度U以及色度V三個分量。應理解,此時8bit×待解碼塊的畫素點個數無法平均分配給亮度Y、色度U以及色度V三個分量。基於該圖像格式為YUV444,Y分量:U分量:V分量的碼長比值可以為2:1:1。從而,解碼端可以確定Y分量的總碼長為4bit×待解碼塊的畫素點個數,U分量與V分量的總碼長均為2bit×待解碼塊的畫素點個數。從而,解碼端可以基於4bit×待解碼塊的畫素點個數的碼長,以固定碼長的解碼方式對該待解碼塊的Y分量進行解碼。並基於2bit×待解碼塊的畫素點個數的碼長,以固定碼長的解碼方式對該待解碼塊的U分量和V分量進行解碼。
此外,基於該圖像格式為YUV444,每個色度U或V分量中的畫素個數與亮度Y分量的畫素個數相同,從而,解碼端可以以4bit(也即亮度分量的固定碼長為4 bit)作為固定碼長,解碼亮度Y分量中的各個畫素點。並且,解碼端可以以2bit(也即色度分量的固定碼長為2 bit)作為固定碼長,解碼色度U或V分量中的各個畫素點。
示例3、若當前目標BPP為8,待解碼塊的目的碼長為8bit×待解碼塊的畫素點個數,且圖像格式為YUV422,則待解碼塊中包括亮度Y、色度U以及色度V三個分量。應理解,此時8bit×待解碼塊的畫素點個數無法平均分配給亮度Y、色度U以及色度V三個分量的固定碼長。基於該圖像格式為YUV422,Y分量:U分量:V分量的碼長比值可以為2:1:1。從而,解碼端可以確定Y分量的總碼長為4bit×待解碼塊的畫素點個數,U分量與V分量的總碼長均為2bit×待解碼塊的畫素點個數。從而,解碼端可以基於4bit×待解碼塊的畫素點個數的碼長,以固定碼長的解碼方式對該待解碼塊的Y分量進行解碼。並基於2bit×待解碼塊的畫素點個數的碼長,以固定碼長的解碼方式對該待解碼塊的U分量和V分量進行解碼。
此外,基於該圖像格式為YUV422,每個色度U或V分量中的畫素個數為亮度Y分量的畫素個數的一半,從而,解碼端可以以4bit(也即亮度分量的固定碼長為4bit)作為固定碼長,解碼亮度Y分量中的各個畫素點。並且,解碼端同樣可以以4bit(也即色度分量的固定碼長為4bit)作為固定碼長,解碼色度U或V分量中的各個畫素點。
另一種實現方式中,解碼端可以獲取待解碼塊的目標BPP、待解碼塊的圖像格式以及解碼待解碼塊的頭資訊所需的碼長。進而,解碼端可以根據待解碼塊的目標BPP、待解碼塊的圖像格式以及解碼待解碼塊的頭資訊所需的碼長,確定待解碼塊的色度分量的固定碼長和亮度分量的固定碼長。
示例性的,若當前目標BPP為8,待解碼塊的目的碼長為8bit×待解碼塊的畫素點個數,解碼頭信息所需的碼長為2bit×待解碼塊的畫素點個數,且若圖像格式為YUV400,則待解碼塊中僅包括亮度分量一個分量,該亮度分量的總碼長可以為6bit×待解碼塊的畫素點個數,從而亮度分量的固定碼長為6 bit。解碼端可以基於6bit×待解碼塊的畫素點個數的碼長,以固定碼長的解碼方式對該待解碼塊進行解碼。又一種示例中,解碼端可以獲取待解碼塊的目標BPP、待解碼塊的圖像格式以及解碼待解碼塊的頭資訊所需的碼長。進而,解碼端可以根據碼流緩衝器的剩餘容量、待解碼塊的目標BPP、碼長比值以及解碼待解碼塊的頭資訊所需的碼長,確定待解碼塊的色度分量的固定碼長和亮度分量的固定碼長。
可選的,待解碼塊的所有分量的碼長之和為待解碼塊的目的碼長減去待解碼塊的頭資訊的碼長和碼流緩衝器的超出碼長。
其中,目的碼長為基於目標BPP確定待解碼塊的碼長,設定上溢線的變化量小於或等於待解碼塊的固定碼長與待解碼塊的頭資訊的碼長之間的差值,碼流緩衝器的超出碼長為碼流緩衝器中的已儲存碼長超出所述當前的設定上溢線的碼長。
示例性的,若目標BPP為8,待解碼塊的目的碼長為8bit×待解碼塊的畫素點個數,若頭資訊需要佔用2bit×待解碼塊的畫素點個數,此時碼流緩衝區的狀態大於當前的設定上溢線,則設定大於上溢線的部分所占的碼長為overflow_bpp,則此時待解碼塊的所有分量的碼長之和為待解碼塊的目的碼長(也即8bit×待解碼塊的畫素點個數)減去解碼頭資訊佔用的碼長(例如為2bit×待解碼塊的畫素點個數),再減去overflow_bpp(例如1bit×待解碼塊的畫素點個數)。從而,此時待解碼塊的所有分量的碼長之和為5bit×待解碼塊的畫素點個數。進而,解碼端可以根據待解碼塊的圖像格式以及5bit×待解碼塊的畫素點個數確定待解碼塊的色度分量的固定碼長和亮度分量的固定碼長。
S203、解碼端基於每個分量的固定碼長對待解碼塊中的每個分量的畫素點進行解析,以解碼待解碼塊。
在一些實施例中,如圖8所示,上述步驟S203可以具體實現為以下步驟S2031至步驟S2034:
S2031、解碼端基於每個分量的固定碼長,確定待解碼塊的每個分量的殘差值。
示例性的,解碼端可以基於上述步驟S202中確定的該待解碼塊的各個分量的固定碼長,分別確定待解碼塊中各個分量中每個畫素點的殘差值。
S2032、解碼端獲取回退模式下待解碼塊的預測模式,根據預測模式預測待解碼塊對應的圖像塊,得到待解碼塊的預測值。
可選的,解碼端可以採用回退模式對應的預測模式對待解碼塊進行預測,也即上述第一回退模式。或者,解碼端可以採用解碼端預設的預測模式中的任一預測模式對待解碼塊進行預測,也即上述第二回退模式。應理解,解碼端可以將回退模式對應的預測模式確定為上述解碼端預設的預測模式中固定的一個。從而,對於採用回退模式解碼的所有待解碼塊,解碼端均採用該固定的預測模式進行預測。
其中,解碼端中預設的預測模式與編碼端中預設的預測模式相同,關於具體預測模式的介紹可以參考上述步驟S103中的相關描述,此處不再贅述。
一種實現方式中,在待解碼塊包括一個分量時,解碼端可以解析待解碼塊的碼流,確定出該待解碼塊的預測模式。或者,解碼端可以將預設的預測模式確定為該待解碼塊的預測模式,應理解,該預設的預測模式與編碼端在預測過程中採用的預測模式相同。
另一種實現方式中,在待解碼塊包括多個分量時,待解碼塊的多個分量可以採用同一預測模式,從而,解碼端可以僅確定其中一個分量的預測模式,該預測模式即為待解碼塊所有分量的預測模式。或者,待解碼塊的多個分量中的一部分分量可以採用同一預測模式,則解碼端可以僅確定該一部分分量中的一個分量的預測模式、以及除該部分分量的其他分量的預測模式。又或者,解碼端可以分別確定每一個分量的預測模式。
S2033、解碼端確定待解碼塊的量化參數,根據量化參數,對待解碼塊的殘差值進行反量化。
可選的,解碼端可以首先確定待解碼塊的初始量化參數,進而基於量化參數調整值,對該初始量化參數進行調整,以確定待解碼塊的目標量化參數。目標量化參數的取值範圍在零與編碼端的量化參數預設最大值之間。
示例性的,待解碼塊的目標量化參數可以為初始量化參數與量化參數調整值之和。應理解,解碼端確定目標量化參數的方式與上述編碼端確定該圖像塊的目標量化參數的方式相同。
其中,碼流緩衝器的剩餘容量越大,量化參數調整值越大。該量化參數調整值的取值可以為例如4或8等正整數。
解碼端確定原始量化參數的方式至少包括以下幾種:
一種實現方式中,待解碼塊的頭資訊中包括對待解碼塊對應的圖像塊進行量化操作時的量化參數,從而,解碼端可以解析待解碼塊的頭資訊,確定待解碼塊的初始量化參數。
另一種實現方式中,解碼端可以根據待編碼塊對應的圖像塊的複雜度資訊和碼流緩衝器的剩餘空間,匯出待解碼塊的初始量化參數。
進一步地,解碼端可以根據QP值,可通過公式推導或查表中的至少一種方式確定量化步長Qstep,下面提供了三種可能的實現方法。然後,針對所選擇的量化器組合,採用該待解碼塊的Qstep對該待解碼塊的各個畫素點進行反量化。
方法一: ,其中,a和b是預設的參數,例如a取值為2,b取值為1。
方法二: ,其中,T為與QP相關的整數,例如T=(QP-6)/4。
方法三: ,其中,octave為QP的位階,也即QP的值每增加octave,Qstep的值增加一倍,通常選取octave為6或8,offset為一個整數偏移值。
可選地,可以採用下述的H.265中的傳統標量量化方法實現量化和反量化。
量化:
反量化:
其中,l是量化後得到的水準值,c是待量化的殘差系數(該殘差系數可以是變換域的殘差系數,即經變換的殘差系數;或者該殘差系數可以是畫素域的殘差系數,即殘差值),Qstep是量化步長,f是控制舍入的參數, ,sign表示符號函數,floor表示向下取整函數;c'是反量化後的值。
可以理解的是,QP值越大,Qstep值越大,則量化越粗糙,量化帶來的圖像失真越大,系數編碼的碼率越小。
表示量化死區,參數f與量化死區的長度有關,f越小,量化死區越長,量化後的水準值越靠近零點。當f=0.5時,上述量化和反量化公式相當於四捨五入,量化失真最小。當f<0.5時,f越小,量化失真越大,系數編碼的碼率越小。H.265中,對於I幀,選取f=1/3,對於B/P幀,選取f=1/6。
示例性的,均勻量化器其量化或反量化公式可以參考上述量化和反量化公式,參數f有以下取法:
取法一:f取為0.5或其他固定值。
取法二:f可根據QP值、預測模式以及是否做變換來自我調整確定。
S2034、解碼端根據待解碼塊反量化後的殘差值與預測值,對待解碼塊進行重建,得到圖像塊的重建塊。
基於上述實施例,在編碼端採用回退模式時,解碼端可以採用回退模式對待解碼塊進行解碼,可以基於碼流緩衝器的剩餘記憶體,避免出現碼流上溢或下溢的情況。進而避免待解碼塊的圖像資訊丟失。
在一些實施例中,本申請提供的圖像解碼過程還可以具體表述以下步驟:
第一步、首先判斷待解碼塊是否滿足條件1。若滿足條件1,則以回退模式解碼待解碼塊。
其中,上述條件1具體為待解碼塊的所有分量均採用原始值模式編碼得到的總碼長超出碼流緩衝器當前可容納的碼長。其中,碼流緩衝器當前可容納的碼長可以通過當前的設定上溢線所指示的記憶體容量減去當前碼流緩衝器中已經儲存的碼長所佔用的記憶體容量確定。
也即,若當前碼流緩衝區狀態無法滿足同時在所有分量上以原始值模式編碼,則基於回退模式解析待解碼塊,同時關閉原始值模式。
可選的,解碼端可以首先獲取當前碼流緩衝器中的已儲存碼長(CurrBits)。進而,解碼端可以確定一個待解碼塊的圖像尺寸為例如寬(CbWidth)為16,高(CbHeight)為2。確定採用原始值模式(FallbackFlag = 0)對待解碼塊的進行編碼所需的碼長。具體的,解析出待解碼塊各個分量的圖像格式(image_format)以及圖像尺寸(cbChromaSize),可以得到各個分量採用原始值模式進行編碼所需的碼長(modeBits)。
進一步地,解碼端可以計算採用原始值模式對待解碼塊的進行編碼所需的總碼長(BitDepth[0] × cbLumaSize + BitDepth[1] × cbChromaSize × 2 – (TargetBpp << 1) )。並確定該總碼長是否滿足條件1,若滿足條件1,則以回退模式解碼待解碼塊。最後,解碼端可以定位該解碼塊(CuPosX[0] 、CuPosY[0] )。從而,解析下一個圖像塊。
第二步、解碼端可以解析待解碼塊的複雜度與編碼模式。
可選的,解碼端可以以1bit (u(1))或3bit的固定碼長解析待解碼塊一個分量的複雜度(complexity_level_flag)。
進一步地,解碼端還可以解析待解碼塊的編碼模式。
解碼端可以首先確定預測模式,進而基於該預測模式,確定待解碼塊的解碼模式。若當前允許打開回退模式(allowfallback)並且為原始值模式,則首先將當前待解碼塊的預測模式賦值為塊預測模式(IBC_MODE),也即第一回退模式對應的預測模式。從而,解碼端以5bit (u(5))的固定碼長解析當前待解碼塊對應預測塊在搜索區域中的座標(abs_bvd_minus1[blkIdx])。
第三步、解碼端匯出一個定長碼碼長,使用定長碼解析每個量化後的系數值。
若為第一回退模式,系數值表示為量化後的殘差值,若為第二回退模式,此時沒有預測模式,系數值表示為量化後的原始值。
最後,經過反量化。若為第一回退模式,使用預測值加上殘差值得到重建值,若為第二回退模式,反量化後的值作為重建值。
上述過程具體可以實現為以下文本描述過程: coding_unit_data_substream0 (cuIdxX, cuIdxY) { BitsRecord = CurrBits CbWidth[0] = 16 CbHeight[0] = 2 FallbackFlag = 0 cbLumaSize = CbWidth[0] × CbHeight[0] if (image_format == ‘001’){  /* YUV400 */ cbChromaSize = 0 modeBits = 8 } else if (image_format == ‘001’) {  /* YUV420 */ cbChromaSize = cbLumaSize >> 2 modeBits = 15 } else if (image_format == ‘010’) {  /* YUV422 */ cbChromaSize = cbLumaSize >> 1 modeBits = 15 } else { cbChromaSize = cbLumaSize modeBits = 21 } allowfallback = modeBits + (BitDepth[0] × cbLumaSize + BitDepth[1] × cbChromaSize × 2 – (TargetBpp << 1)) >= MaxBufferSize – (CurrBits – OutBits) CuPosX[0] = cuIdxX << 4 CuPosY[0] = cuIdxY << 1 CurrBlocks++ complexity_level_flag[0]                                                            u(1) if (ComplexityLevelFlag[0] = 0) { delta_level[0]                                                                    u(2) if (delta_level[0] >= PrevComplexityLevel) { ComplexityLevel[0] = DeltaLevel[0] + 1 } else { ComplexityLevel[0] = DeltaLevel[0] } } else { ComplexityLevel[0] = PrevComplexityLevel } PrevComplexityLevel = ComplexityLevel[0] pred_mode[0]                                                                     ae(v) if (PredMode[0] == ORG_MODE && allowfallback) { FallbackFlag = 1                                                               u(1) fallback_type PredMode[0] == FallbackType == 1 ‘ORG_MODE’ : ‘IBC_MODE’ } if (PredMode[0] == ‘IBC_MODE’) { for (blkIdx=0; blkIdx<8; blkIdx++) { abs_bvd_minus1[blkIdx]                                                        u(5) } } if (PredMode[0] != POINT_MODE_1 && PredMode[0] != POINT_MODE_1 && PredMode[0] != ORG_MODE && !LosslessFlag && !FallbackFlag) { resi_skip[0]                                                                        u(1) } if (ResiSkip[0] != 1) { coeff_data(BitDepth[0], 0) }
}其中,在上述文本描述中,對於回退模式的類型採用二值變數的方法確定。若值為‘1’表示當前編碼單元採用的回退模式為原始值截斷模式,若值為‘0’表示當前編碼單元採用的回退模式為殘差截斷模式。FallbackType的值等於fallback_type的值。
在一些實施例中,解碼端獲取碼流中表示待解碼塊的定長碼的二進位資料,採用反二值化方法對其進行處理,以得到BPP的具體資料。
解碼端首先確定定長碼的二進位資料(org_data):
如果回退模式標識值(FallbackFlag)等於0,也即編碼時未採用回退模式,將當前通道的比特深度(BitDepth[component])的值作為定長碼的碼長(len),org_data的值等於表1中“synElVal”的值。
否則,解碼端將定長碼的值作為碼長len,org_data的值等於synElVal的值(參考下述表1)。
定長碼的具體匯出如下:
1)解碼端首先計算調整上溢線後的目標BPP(adjTargetBpp)的值:
如果(BitsRecord–((目標BPPTargetBpp<<1)×(下一個待解碼塊(CurrBlocks)–1)))大於最大設定上溢線(MaxBufferSize),adjTargetBpp等於(((Target_bpp<<1)–(BitsRecord–((TargetBpp<<1)×(CurrBlocks–1))–MaxBufferSize))>>5);
否則,adjTargetBpp等於(Target_bpp>>4)。
其中(Target_bpp>>4)指的是目標BPP。
2)解碼端根據adjTargetBpp確定每個分量上定長碼的碼長:
如果圖像格式等於YUV400時,定長碼等於(adjTargetBpp-2)。
否則,判斷當前分量是否等於亮度分量。
如果等於亮度分量,定長碼等於(adjTargetBpp-2)/3+(adjTargetBpp-2)/3。
否則,
如果圖像格式等於YUV420時,定長碼等於(adjTargetBpp-2)/3 <<2。
否則,如果圖像格式等於YUV422時,定長碼等於(adjTargetBpp-2)/3 <<1。
否則,定長碼等於(adjTargetBpp-2)/3。
表1
synElVal的值 二元符號串
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
2 len-4 1 1 0 0
2 len-3 1 1 1 0
2 len-2 1 1 1 0
2 len-1 1 1 1 1
binIndex 0 1 len-2 len-1
以下,說明本申請實施例提供的編碼裝置和解碼裝置。
在一個示例中,本申請實施例提供的任一種編碼裝置均可以是圖1中的編碼端10或編碼器100。在另一個示例中,以下提供的任一種解碼裝置均可以是圖1中的解碼端20或解碼器200。此處統一說明,下文不再贅述。
圖9為本申請提供的一種圖像編碼裝置900的結構示意圖,上述任一種編碼方法實施例都可以由該編碼裝置900執行。該圖像編碼裝置900包括確定模組901和編碼模組902。其中,確定模組901,用於獲取待編碼塊的最大碼長,最大碼長為基於碼流緩衝器的設定上溢線確定的碼流緩衝器中允許緩存的待編碼塊的最大碼流長度,設定上溢線用於指示碼流緩衝器中碼流允許佔用的最大儲存空間。編碼模組902,用於對所述待編碼塊進行預編碼,得到所述待編碼塊的第一碼長,所述第一碼長為所述待編碼塊編碼後得到的碼流的長度。編碼模組902,還用於若所述第一碼長大於或等於所述最大碼長,採用回退模式對所述待編碼塊進行編碼,其中,基於所述回退模式對所述待編碼塊進行編碼得到的碼長小於所述最大碼長,基於所述回退模式對所述待編碼塊進行編碼得到的碼流中包括第一碼字,所述第一碼字用於指示所述回退模式或原始值模式。
有關上述獲取模組901以及編碼模組902更詳細的描述、以及其中各技術特徵更詳細的描述,以及有益效果的描述等,均可以參考上述相應的方法實施例部分,此處不再贅述。
圖10為本申請提供的一種圖像解碼裝置1000的結構示意圖,上述任一種解碼方法實施例都可以由該解碼裝置1000執行。該圖像解碼裝置1000包括解析模組1001和確定模組1002。其中,解析模組1001,用於解析待解碼塊的碼流,若所述待解碼塊的碼流中包括第一碼字,則確定所述待解碼塊對應的圖像塊是否採用回退模式,其中,所述待解碼塊的碼長小於所述待解碼塊的最大碼長,所述最大碼長為基於碼流緩衝器的設定上溢線確定的碼流緩衝器中允許緩存的所述待解碼塊的最大碼流長度,所述設定上溢線用於指示所述碼流緩衝器中允許碼流佔用的最大儲存空間,所述第一碼字為用於指示所述回退模式或原始值模式。確定模組1002,在待解碼塊對應的圖像塊採用回退模式,且碼流緩衝器中已儲存的碼長超出設定上溢線的情況下,根據碼流緩衝器的超出碼長,確定待解碼塊的每個分量的固定碼長,其中,待解碼塊包括一個或多個分量,對於待解碼塊的第一分量,第一分量的固定碼長用於指示解析第一分量的單個畫素點時所需的碼長,碼流緩衝器的超出碼長為碼流緩衝器中的已儲存碼長超出當前的設定上溢線的碼長。解析模組1001,還用於基於每個分量的固定碼長,對每個分量的畫素點進行解析,以解碼待解碼塊。
有關上述解析模組1001和確定模組1002更詳細的描述、以及其中各技術特徵更詳細的描述,以及有益效果的描述等,均可以參考上述相應的方法實施例部分,此處不再贅述。
本申請還提供一種電子設備,用於執行上述任意圖像編碼/解碼方法的實施例。如圖11所示,圖11為本申請提供的一種電子設備的結構示意圖,電子設備1100包括處理器1101和通信介面1102。處理器1101和通信介面1102之間相互耦合。可以理解的是,通信介面1102可以為收發器或輸入輸出介面。
在一個示例中,電子設備1100還可以包括記憶體1103,用於儲存處理器1101執行的指令或儲存處理器1101運行指令所需要的輸入資料或儲存處理器1101運行指令後產生的資料。
本申請實施例中不限定上述通信介面1102、處理器1101以及記憶體1103之間的具體連接介質。本申請實施例在圖11中以通信介面1102、處理器1101以及記憶體1103之間通過匯流排1104連接,匯流排在圖11中以粗線表示,其它部件之間的連接方式,僅是進行示意性說明,並不引以為限。所述匯流排可以分為位址匯流排、資料匯流排、控制匯流排等。為便於表示,圖11中僅用一條粗線表示,但並不表示僅有一根匯流排或一種類型的匯流排。
記憶體1103可用於儲存軟體程式及模組,如本申請實施例所提供的圖像解碼方法或圖像編碼方法對應的程式指令/模組,處理器1101通過執行儲存在記憶體1103內的軟體程式及模組,從而執行各種功能應用以及資料處理,以實現上文提供的任一種圖像解碼方法或圖像編碼方法。該通信介面1102可用於與其他設備進行信令或資料的通信。在本申請中該電子設備1100可以具有多個通信介面1102。
可以理解的是,本申請的實施例中的處理器可以是中央處理單元(central processing Unit,CPU)、神經處理器(neural processing unit,NPU)或圖形處理器(graphic processing unit,GPU),還可以是其它通用處理器、數位訊號處理器(digital signal processor,DSP)、專用積體電路(application specific integrated circuit,ASIC)、現場可程式設計閘陣列(field programmable gate array,FPGA)或者其它可程式設計邏輯器件、電晶體邏輯器件,硬體部件或者其任意組合。通用處理器可以是微處理器,也可以是任何常規的處理器。
本申請的實施例中的方法步驟可以通過硬體的方式來實現,也可以由處理器執行軟體指令的方式來實現。軟體指令可以由相應的軟體模組組成,軟體模組可以被存放於隨機存取記憶體(random access memory,RAM)、快閃記憶體、唯讀記憶體(read-only memory,ROM)、可程式設計唯讀記憶體(programmable ROM,PROM)、可擦除可程式設計唯讀記憶體(erasable PROM,EPROM)、電可擦除可程式設計唯讀記憶體(electrically EPROM,EEPROM)、寄存器、硬碟、移動硬碟、CD-ROM或者本領域熟知的任何其它形式的儲存介質中。一種示例性的儲存介質耦合至處理器,從而使處理器能夠從該儲存介質讀取資訊,且可向該儲存介質寫入資訊。當然,儲存介質也可以是處理器的組成部分。處理器和儲存介質可以位於ASIC中。另外,該ASIC可以位於網路設備或終端設備中。當然,處理器和儲存介質也可以作為分立元件存在於網路設備或終端設備中。
本申請實施例還提供一種編解碼系統,包括編碼端和解碼端,該編碼端可以用於執行上文提供的任意一種圖像編碼方法,解碼端用於執行對應的圖像解碼方法。
在上述實施例中,可以全部或部分地通過軟體、硬體、固件或者其任意組合來實現。當使用軟體實現時,可以全部或部分地以電腦程式產品的形式實現。所述電腦程式產品包括一個或多個電腦程式或指令。在電腦上載入和執行所述電腦程式或指令時,全部或部分地執行本申請實施例所述的流程或功能。所述電腦可以是通用電腦、專用電腦、電腦網路、網路設備、使用者設備或者其它可程式設計裝置。所述電腦程式或指令可以儲存在電腦可讀儲存介質中,或者從一個電腦可讀儲存介質向另一個電腦可讀儲存介質傳輸,例如,所述電腦程式或指令可以從一個網站站點、電腦、伺服器或資料中心通過有線或無線方式向另一個網站站點、電腦、伺服器或資料中心進行傳輸。所述電腦可讀儲存介質可以是電腦能夠存取的任何可用介質或者是集成一個或多個可用介質的伺服器、資料中心等資料存放裝置。所述可用介質可以是磁性介質,例如,軟碟、硬碟、磁帶;也可以是光介質,例如,數位視訊光碟(digital video disc,DVD);還可以是半導體介質,例如,固態硬碟(solid state drive,SSD)。
在本申請的各個實施例中,如果沒有特殊說明以及邏輯衝突,不同的實施例之間的術語和/或描述具有一致性、且可以相互引用,不同的實施例中的技術特徵根據其內在的邏輯關係可以組合形成新的實施例。
可以理解的是,在本申請的實施例中涉及的各種數字編號僅為描述方便進行的區分,並不用來限制本申請的實施例的範圍。上述各過程的序號的大小並不意味著執行順序的先後,各過程的執行順序應以其功能和內在邏輯確定。
1:編解碼系統 10:編碼端 20:解碼端 30:鏈路 120:視訊源 100:編碼器 140:輸出介面 200:解碼器 220:顯示裝置 240:輸入介面 101:預測處理單元 102:殘差計算單元 103:殘差變換單元 104:量化單元 105:編碼單元 106:反量化單元 107:殘差逆變換單元 108:重構單元 109:濾波器單元 201:碼流解析單元 202:反量化單元 203:殘差逆變換單元 204:預測處理單元 205:重構單元 206:濾波器單元 900:圖像編碼裝置 901:確定模組 902:編碼模組 1000:圖像解碼裝置 1001:解析模組 1002:確定模組 1100:電子設備 1101:處理器 1102:通信介面 1103:記憶體 1104:匯流排 S101、S102、S103、S201、S202、S203、S2031、S2032、S2033、S2034:步驟
圖1為本申請實施例所應用的編解碼系統1的架構示意圖; 圖2為用於實現本申請實施例方法的編碼器100的實例的示意性框圖; 圖3為本申請實施例提供的一種圖像、並行編碼單元、獨立編碼單元和編碼單元之間的對應關係的示意圖; 圖4為用於實現本申請實施例方法的解碼器200的實例的示意性框圖; 圖5為本申請實施例提供的一種圖像編碼方法的流程示意圖; 圖6為本申請實施例提供的一種待編碼子塊的示意圖; 圖7為本申請實施例提供的一種圖像解碼方法的流程示意圖; 圖8為本申請實施例提供的另一種圖像解碼方法的流程示意圖; 圖9為本申請實施例提供的一種圖像編碼裝置900的結構示意圖; 圖10為本申請實施例提供的另一種圖像解碼裝置1000的結構示意圖; 圖11為本申請實施例提供的一種電子設備1100的結構示意圖。
S201、S202、S203:步驟

Claims (15)

  1. 一種圖像解碼方法,其中,應用於解碼端,所述方法包括: 解析待解碼塊的碼流,若所述待解碼塊的碼流中包括第一碼字,則確定所述待解碼塊對應的圖像塊是否採用回退模式,其中,所述待解碼塊的碼長小於所述待解碼塊的最大碼長,所述最大碼長為基於碼流緩衝器的設定上溢線確定的,所述設定上溢線用於指示所述碼流緩衝器中允許碼流佔用的最大儲存空間,所述第一碼字用於指示所述回退模式或原始值模式; 若所述待解碼塊對應的圖像塊採用回退模式,且所述碼流緩衝器中已儲存的碼長超出所述設定上溢線,則根據所述碼流緩衝器的超出碼長,確定待解碼塊的每個分量的固定碼長,其中,所述待解碼塊包括一個或多個分量,對於所述待解碼塊的第一分量,所述第一分量的固定碼長用於指示解析所述第一分量的單個畫素點時所需的碼長,所述碼流緩衝器的超出碼長為所述碼流緩衝器中的已儲存碼長超出所述設定上溢線的碼長; 基於所述每個分量的固定碼長,對所述每個分量的畫素點進行解析,以解碼所述待解碼塊。
  2. 如請求項1所述的方法,其中,所述確定所述待解碼塊對應的圖像塊是否採用回退模式,包括: 若所述待解碼塊對應的圖像塊基於原始值模式編碼的碼長大於或等於所述待解碼塊的最大碼長,則確定所述待解碼塊對應的圖像塊採用回退模式。
  3. 如請求項1所述的方法,其中,所述確定所述待解碼塊對應的圖像塊是否採用回退模式,包括: 若所述待解碼塊對應的圖像塊基於原始值模式編碼的碼長小於所述待解碼塊的最大碼長,則確定所述待解碼塊對應的圖像塊採用原始值模式。
  4. 如請求項1所述的方法,其中,所述根據所述碼流緩衝器的超出碼長,確定待解碼塊的每個分量的固定碼長包括: 根據所述碼流緩衝器的超出碼長、所述待解碼塊的目標總碼長和所述待解碼塊的圖像格式,確定所述待解碼塊的亮度分量的固定碼長和色度分量的固定碼長; 其中,所述亮度分量的固定碼長用於指示解析所述亮度分量的單個畫素點時所需的碼長,所述色度分量的固定碼長用於指示解析所述色度分量的單個畫素點時所需的碼長; 其中,所述目標總碼長為解碼所述待解碼塊時所需的總碼長。
  5. 如請求項4所述的方法,其中,所述根據所述碼流緩衝器的超出碼長、所述待解碼塊的目標總碼長和所述待解碼塊的圖像格式,確定所述待解碼塊的亮度分量的固定碼長和色度分量的固定碼長,包括: 獲取所述待解碼塊的頭資訊的碼長; 根據所述待解碼塊的目標總碼長、所述圖像格式、所述超出碼長以及所述頭資訊的碼長,確定所述亮度分量的固定碼長和所述色度分量的固定碼長。
  6. 如請求項4或5所述的方法,其中,所述亮度分量上所有畫素的固定碼長之和大於或等於所述色度分量上所有畫素的固定碼長之和。
  7. 如請求項5所述的方法,其中,所述亮度分量的固定碼長與所述色度分量的固定碼長之和小於或等於:所述待解碼塊的目標總碼長減去所述待解碼塊的頭資訊的碼長和所述碼流緩衝器的超出碼長。
  8. 如請求項1所述的方法,其中,所述基於所述每個分量的固定碼長,對所述每個分量的畫素點進行解析,包括: 基於亮度分量的固定碼長,對所述亮度分量的畫素點進行解析,基於色度分量的固定碼長,對所述色度分量的畫素點進行解析。
  9. 如請求項8所述的方法,其中,所述基於所述亮度分量的固定碼長,對所述亮度分量的畫素點進行解析,包括: 基於所述亮度分量的固定碼長,確定所述待解碼塊的亮度分量的殘差值; 獲取所述回退模式下所述待解碼塊的預測模式,根據所述預測模式預測所述待解碼塊對應的圖像塊,得到所述待解碼塊的預測值; 確定所述待解碼塊的量化參數,根據所述量化參數,對所述待解碼塊的亮度分量的殘差值進行反量化; 根據所述待解碼塊的亮度分量的反量化後的殘差值與所述預測值,對所述待解碼塊進行重建,得到所述圖像塊的亮度重建塊。
  10. 如請求項8所述的方法,其中,所述基於所述色度分量的固定碼長,對所述色度分量的畫素點進行解析,包括: 基於所述色度分量的固定碼長,確定所述待解碼塊的色度分量的殘差值; 獲取所述回退模式下所述待解碼塊的預測模式,根據所述預測模式預測所述待解碼塊對應的圖像塊,得到所述待解碼塊的預測值; 確定所述待解碼塊的量化參數,根據所述量化參數,對所述待解碼塊的色度分量的殘差值進行反量化; 根據所述待解碼塊的色度分量的反量化後的殘差值與所述預測值,對所述待解碼塊進行重建,得到所述圖像塊的色度重建塊。
  11. 如請求項9或10所述的方法,其中,所述獲取所述回退模式下所述待解碼塊的預測模式,包括: 所述待解碼塊的預測模式為所述回退模式對應的預測模式;或者,所述待解碼塊的預測模式為解碼端的多個預測模式中的一個。
  12. 一種圖像編碼方法,其中,應用於編碼端,所述方法包括: 獲取待編碼塊的最大碼長,所述最大碼長為基於碼流緩衝器的設定上溢線確定的,所述設定上溢線用於指示所述碼流緩衝器中允許碼流佔用的最大儲存空間; 對所述待編碼塊進行預編碼,得到所述待編碼塊的第一碼長,所述第一碼長為所述待編碼塊預編碼後得到的碼流的長度; 若所述第一碼長大於或等於所述最大碼長,採用回退模式對所述待編碼塊進行編碼,其中,基於所述回退模式對所述待編碼塊進行編碼得到的碼長小於所述最大碼長,基於所述回退模式對所述待編碼塊進行編碼得到的碼流中包括第一碼字,所述第一碼字用於指示所述回退模式或原始值模式。
  13. 如請求項12所述的方法,其中,所述方法還包括: 若所述碼流緩衝器中已儲存的碼長超出所述設定上溢線,則根據所述碼流緩衝器的超出碼長,確定所述待編碼塊的亮度分量的固定碼長和色度分量的固定碼長;其中,所述亮度分量的固定碼長用於指示編碼所述亮度分量的單個畫素點時所需的碼長,所述色度分量的固定碼長用於指示編碼所述色度分量的單個畫素點時所需的碼長,所述碼流緩衝器的超出碼長為所述碼流緩衝器中的已儲存碼長超出所述設定上溢線的碼長; 根據所述亮度分量的固定碼長和所述色度分量的固定碼長,對所述待編碼塊進行編碼。
  14. 一種圖像解碼裝置,其中,應用於解碼端,所述裝置包括: 解析模組,解析待解碼塊的碼流,若所述待解碼塊的碼流中包括第一碼字,則確定所述待解碼塊對應的圖像塊是否採用回退模式,其中,所述待解碼塊的碼長小於所述待解碼塊的最大碼長,所述最大碼長為基於碼流緩衝器的設定上溢線確定的,所述設定上溢線用於指示所述碼流緩衝器中允許碼流佔用的最大儲存空間,所述第一碼字用於指示所述回退模式或原始值模式; 確定模組,用於若所述待解碼塊對應的圖像塊採用回退模式,且所述碼流緩衝器中已儲存的碼長超出所述設定上溢線,則根據所述碼流緩衝器的超出碼長,確定待解碼塊的每個分量的固定碼長,其中,所述待解碼塊包括一個或多個分量,對於所述待解碼塊的第一分量,所述第一分量的固定碼長用於指示解析所述第一分量的單個畫素點時所需的碼長,所述碼流緩衝器的超出碼長為所述碼流緩衝器中的已儲存碼長超出所述設定上溢線的碼長; 所述解析模組,還用於基於所述每個分量的固定碼長,對所述每個分量的畫素點進行解析,以解碼所述待解碼塊。
  15. 一種圖像編碼裝置,其中,應用於編碼端,所述裝置包括: 確定模組,用於獲取待編碼塊的最大碼長,所述最大碼長為基於碼流緩衝器的設定上溢線確定的,所述設定上溢線用於指示所述碼流緩衝器中允許碼流佔用的最大儲存空間; 編碼模組,用於對所述待編碼塊進行預編碼,得到所述待編碼塊的第一碼長,所述第一碼長為所述待編碼塊預編碼後得到的碼流的長度; 所述編碼模組,還用於若所述第一碼長大於或等於所述最大碼長,採用回退模式對所述待編碼塊進行編碼,其中,基於所述回退模式對所述待編碼塊進行編碼得到的碼長小於所述最大碼長,基於所述回退模式對所述待編碼塊進行編碼得到的碼流中包括第一碼字,所述第一碼字用於指示所述回退模式或原始值模式。
TW112127921A 2022-07-27 2023-07-26 一種圖像編解碼方法及裝置 TW202406352A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022108942551 2022-07-27
CN202210894255.1A CN116074539A (zh) 2022-07-27 2022-07-27 一种图像编解码方法及装置

Publications (1)

Publication Number Publication Date
TW202406352A true TW202406352A (zh) 2024-02-01

Family

ID=86173731

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112127921A TW202406352A (zh) 2022-07-27 2023-07-26 一種圖像編解碼方法及裝置

Country Status (3)

Country Link
CN (2) CN116527942A (zh)
TW (1) TW202406352A (zh)
WO (1) WO2024022359A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116527942A (zh) * 2022-07-27 2023-08-01 杭州海康威视数字技术股份有限公司 一种图像编解码方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159447A (en) * 1991-05-23 1992-10-27 At&T Bell Laboratories Buffer control for variable bit-rate channel
KR100837410B1 (ko) * 2006-11-30 2008-06-12 삼성전자주식회사 주관적인 무손실 이미지 데이터 압축 방법 및 장치
US10244255B2 (en) * 2015-04-13 2019-03-26 Qualcomm Incorporated Rate-constrained fallback mode for display stream compression
CN107864379B (zh) * 2017-09-28 2021-07-02 珠海亿智电子科技有限公司 一种应用于视频编解码的压缩方法
CN116074516A (zh) * 2022-06-06 2023-05-05 杭州海康威视数字技术股份有限公司 一种图像编解码方法及装置
CN116527942A (zh) * 2022-07-27 2023-08-01 杭州海康威视数字技术股份有限公司 一种图像编解码方法及装置

Also Published As

Publication number Publication date
WO2024022359A1 (zh) 2024-02-01
CN116527942A (zh) 2023-08-01
CN116074539A (zh) 2023-05-05

Similar Documents

Publication Publication Date Title
US10666948B2 (en) Method, apparatus and system for encoding and decoding video data
JP6518701B2 (ja) ディスプレイストリーム圧縮(dsc)のためのエントロピーコーディング技法
TWI682661B (zh) 在計算設備中實現的方法
JP6710755B2 (ja) 非4:4:4クロマサブサンプリングのディスプレイストリーム圧縮(dsc)のためのエントロピーコーディング技法
JP6921873B2 (ja) ディスプレイストリーム圧縮のためのサブストリーム多重化
JP2018531556A6 (ja) 非4:4:4クロマサブサンプリングのディスプレイストリーム圧縮(dsc)のためのエントロピーコーディング技法
WO2023236936A1 (zh) 一种图像编解码方法及装置
WO2023231866A1 (zh) 一种视频译码方法、装置及存储介质
WO2024022359A1 (zh) 一种图像编解码方法及装置
TWI705693B (zh) 用於顯示串流壓縮之基於向量之熵寫碼的裝置及方法
WO2024061055A1 (zh) 图像编码方法和图像解码方法、装置及存储介质
WO2024022039A1 (zh) 一种视频图像解码方法、编码方法、装置及存储介质
WO2024022367A1 (zh) 图像解码方法、编码方法及装置
CN116156168A (zh) 一种图像编解码方法及装置
WO2023138532A1 (zh) 一种视频解码方法、装置、视频解码器及存储介质
TWI821013B (zh) 視頻編解碼方法及裝置
WO2023272533A1 (zh) 编解码方法、编码器、解码器以及存储介质
WO2023083245A1 (zh) 解码方法、编码方法及装置
WO2023138562A1 (zh) 图像解码方法、图像编码方法及相应的装置
TW202415067A (zh) 圖像編碼方法和圖像解碼方法、裝置及存儲介質