[go: up one dir, main page]

TW202406339A - 視訊圖像解碼方法、編碼方法、裝置及存儲介質 - Google Patents

視訊圖像解碼方法、編碼方法、裝置及存儲介質 Download PDF

Info

Publication number
TW202406339A
TW202406339A TW112127156A TW112127156A TW202406339A TW 202406339 A TW202406339 A TW 202406339A TW 112127156 A TW112127156 A TW 112127156A TW 112127156 A TW112127156 A TW 112127156A TW 202406339 A TW202406339 A TW 202406339A
Authority
TW
Taiwan
Prior art keywords
level
current block
bits
complexity
channel
Prior art date
Application number
TW112127156A
Other languages
English (en)
Other versions
TWI847806B (zh
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 TW202406339A publication Critical patent/TW202406339A/zh
Application granted granted Critical
Publication of TWI847806B publication Critical patent/TWI847806B/zh

Links

Classifications

    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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/17Methods 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 an image region, e.g. an object
    • H04N19/176Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申請實施例提供一種視訊圖像解碼方法、編碼方法、裝置及存儲介質,涉及視訊譯碼技術領域,有助於提升圖像品質。該方法包括:從碼流中獲取通道級複雜度等級,碼流為當前塊的編碼碼流,根據至少兩個通道級複雜度等級確定當前塊的塊級複雜度等級;通道級複雜度等級用於表徵所述當前塊的通道級紋理的複雜程度,通道級複雜度等級用於表徵當前塊的通道級紋理的複雜程度;根據碼控參數確定當前塊的目標位元數,碼控參數包括當前塊的塊級複雜度等級;基於目標位元數確定當前塊的量化參數;基於量化參數對當前塊進行解碼。

Description

視訊圖像解碼方法、編碼方法、裝置及存儲介質
本申請涉及視訊譯碼技術領域,尤其涉及一種視訊圖像解碼方法、編碼方法、裝置及存儲介質。
視訊譯碼技術在視訊處理領域發揮著重要的作用。視訊譯碼技術是一種通過對視訊進行編解碼減少視訊資料量的技術。其中,量化是上述視訊編解碼過程中的重要步驟,主要通過量化參數替代碼流中部分原始資料,實現減少碼流中原始資料的冗餘,用於進行量化的量化參數在視訊編碼階段寫入碼流,視訊解碼端通過解析碼流中的量化參數,實現解碼。但量化同時也會帶來圖像失真的風險,選擇適當的量化參數可以起到改善圖像品質的效果。因此,如何選擇量化參數也就成為了視訊譯碼技術的關鍵。
本申請實施例提供一種視訊圖像解碼方法、編碼方法、裝置及存儲介質,有助於提高視訊譯碼的圖像品質,改善視覺體驗。
為達到上述目的,本申請實施例採用如下技術方案:
第一方面,本申請實施例提供一種視訊圖像解碼方法、編碼方法,該方法應用於視訊編碼設備或視訊解碼設備或視訊編解碼設備的晶片中,該方法包括:從碼流中獲取通道級複雜度等級,所述碼流為當前塊的編碼碼流,根據至少兩個通道級複雜度等級確定所述當前塊的塊級複雜度等級;所述通道級複雜度等級用於表徵所述當前塊的通道級紋理的複雜程度;根據碼控參數確定所述當前塊的目標位元數,所述碼控參數包括所述當前塊的所述塊級複雜度等級;基於所述目標位元數確定所述當前塊的量化參數;基於所述量化參數對所述當前塊進行解碼。
上述量化參數在視訊編解碼過程中具有重要的作用。採用本申請提出的視訊圖像解碼方法、編碼方法,視訊譯碼裝置從碼流中獲取通道級複雜度等級,並根據至少兩個通道級複雜度等級確定當前塊的塊級複雜度等級,依據包括該塊級複雜度等級在內的碼控參數確定當前塊的目標位元數,進一步基於該目標位元數確定當前塊的量化參數。基於上述過程,本申請所提供的視訊圖像解碼方法、編碼方法可以優化量化參數的選擇,提高視訊譯碼的圖像品質,改善視覺體驗。
在一種可能的實現方式中,上述碼控參數包括同等級平均無損編碼位元數、平均無損編碼位元數以及碼流緩衝區滿度;
根據所述碼控參數確定當前塊的目標位元數,包括:確定同等級平均無損編碼位元數及平均無損編碼位元數;基於同等級平均無損編碼位元數及平均無損編碼位元數確定初始目標位元數;基於碼流緩衝區滿度,當前塊的塊級複雜度等級以及初始目標位元數確定當前塊的目標位元數;其中,上述同等級平均無損編碼位元數為當前塊與多個已譯碼圖像塊無損編碼時所需位元數預測值的平均值,且上述多個已譯碼圖像塊與當前塊的複雜度等級相同;平均無損編碼位元數為當前塊與所有已譯碼圖像塊無損編碼時所需的位元數預測值的平均值;碼流緩衝區滿度用於表徵緩衝區的滿度,上述緩衝區用於存儲待處理圖像的碼流。
該種可能的實現方式中,提供了一種確定當前塊的目標位元數的方法。通過引入同等級平均無損編碼位元數及平均無損編碼位元數確定初始目標位元數,並基於該初始目標位元數、碼流緩衝區滿度和塊級複雜度等級確定當前塊的目標位元數,可以使得量化參數的確定更加準確,進而達到在保證譯碼效率的同時改善圖像品質的效果。
在一種可能的實現方式中,確定同等級平均無損編碼位元數及平均無損編碼位元數,包括:確定當前塊的無損編碼位元數,無損編碼位元數為當前塊無損編碼時所需位元數的預測值;依據當前塊的無損編碼位元數以及多個歷史同等級平均無損編碼位元數更新當前塊的同等級平均無損編碼位元數;歷史同等級平均無損編碼位元數為與當前塊塊複雜度等級相同的已譯碼圖像塊的同等級平均無損位元數;依據當前塊的無損編碼位元數以及全部歷史平均無損編碼位元數更新當前塊的平均無損編碼位元數;歷史平均無損編碼位元數為已譯碼圖像塊的平均無損位元數。
該種可能的實現方式中,提供了一種通過當前塊的無損編碼位元數、歷史同等級平均無損編碼位元數及歷史平均無損編碼位元數確定上述同等級平均無損編碼位元數及平均無損編碼位元數的方法,有助於提升方案的可實施性。通過將同等級平均無損編碼位元數與塊級複雜度等級相對應,可以優化量化參數的選擇,進而得到改善圖像品質的效果。
在一種可能的實現方式中,上述當前塊為待處理圖像的首行塊,上述碼控參數包括首行品質提升參數;根據碼控參數確定當前塊的目標位元數還包括:依據首行品質提升參數調整當前塊的目標位元數,以調小當前塊的量化參數。
該種可能的實現方式中,提供了另一種確定當前塊目標位元數的方法,適用於當前塊為首行塊的場景。當前塊為首行塊時預測難度較大,因預測誤差具有傳遞性,本實現方式通過引入首行品質提升參數調小首行塊的量化參數來減少上述影響,以達到提高視訊譯碼的圖像品質的效果。
在一種可能的實現方式中,上述當前塊為待處理圖像的首列塊,上述碼控參數包括首列品質提升參數;根據碼控參數確定當前塊的目標位元數還包括:依據首行品質提升參數調整當前塊的目標位元數,以調小當前塊的量化參數。
該種可能的實現方式中,提供了另一種確定當前塊目標位元數的方法,適用於當前塊為首列塊的場景。當前塊為首列塊時預測難度較大,因預測誤差具有傳遞性,本實現方式通過引入首列品質提升參數調小首列塊的量化參數來減少上述影響,以達到提高視訊譯碼的圖像品質的效果。
在一種可能的實現方式中,從碼流中獲取通道級複雜度等級,包括:從碼流中獲取當前塊的複雜度訊息位,該複雜度訊息位用於表示當前塊的通道級複雜度等級;依據複雜度訊息位確定通道級複雜度等級。
該種可能的實現方式中,提供了一種解碼端獲取上述通道級複雜度等級的方法。通過解析已編碼碼流中用於表示當前塊通道級複雜度等級的訊息位獲取上述通道級複雜度等級。在一種可能的場景中,該複雜度訊息位可以為1比特位或3比特位,且該複雜度訊息位的第一位用於表示當前通道級複雜度等級與當前塊的前一個圖像塊的相同通道複雜度等級是否相同以及兩者之間的變化值。以YUV圖像為例,若當前通道級複雜度等級為當前塊的U通道的複雜度等級,則前一個圖像塊的相同通道複雜度表示在當前塊之前進行譯碼的圖像塊的U通道的複雜度等級。若根據第一位判斷相同,則複雜度訊息位為1位元;若不同,則複雜度訊息位為3位元,且後兩位表示當前塊的通道級複雜度與當前塊的前一個圖像塊的相同通道的複雜度等級的變化值,基於該變化值與前一個圖像塊的相同通道的通道複雜度等級可以確定當前所求的通道級複雜度等級。可以理解的是,上述場景只是示例性說明,該種可能的實現方式的保護範圍並不以此為限,且通過提出解碼端獲取通道級複雜度等級的具體方法提升了方案的可實施性。
第二方面,本申請實施例提供一種視訊圖像編碼方法,該方法應用於視訊編碼設備的晶片中,該方法包括:獲取當前塊的通道級紋理資訊,並基於通道級紋理資訊確定當前塊的通道級複雜度等級,根據至少兩個通道級複雜度等級確定當前塊的塊級複雜度等級;通道級複雜度等級用於表徵當前塊的通道級紋理的複雜程度;根據碼控參數確定當前塊的目標位元數,碼控參數包括當前塊的塊級複雜度等級;基於目標位元數確定當前塊的量化參數;基於量化參數對當前塊進行編碼。
該種可能的實現方式中,提供了獲取當前塊的通道級複雜度等級的方法。在編碼端,基於當前塊的通道級紋理資訊確定當前塊的通道級複雜度等級,在解碼端,從接收到的已編碼碼流中獲取當前塊的通道級複雜度等級。通過給出編解碼中獲取當前塊通道級複雜度等級的方法,提升了方案的可實施性,便於後續基於得到的通道級複雜度等級確定其他碼控參數及目標位元數,從而優化量化參數。
在一種可能的實現方式中,獲取當前塊的通道級紋理資訊,並基於通道級紋理資訊確定當前塊的通道級複雜度等級,包括:以當前塊中至少一個通道圖像塊為處理單元,將處理單元劃分為至少兩個子單元,並確定各子單元的紋理資訊;在處理單元中,基於各子單元的紋理資訊確定當前塊的塊級複雜度等級。
該種可能的實現方式中,提供了一種適用於編碼端的確定當前塊的通道級複雜度等級的方法,提升了方案的可實施性。其中,將當前塊的至少一個通道圖像塊作為一個處理單元,並進一步將各處理單元劃分為至少兩個子單元,有助於提升複雜度資訊的準確性。
在一種可能的實現方式中,確定各子單元的紋理資訊,包括:獲取子單元的原始圖元值、子單元的左側相鄰列的原始圖元值或重建值,以及子單元的上方相鄰行的重建值,並對應計算子單元的水平紋理資訊及垂直紋理資訊;在水平紋理資訊及垂直紋理資訊中選擇最小值作為對應子單元的紋理資訊。
該種可能的實現方式中,提供了一種確定子單元的紋理資訊的實現方式,提升了方案的可實施性。
在一種可能的實現方式中,在處理單元中,基於各子單元的紋理資訊確定當前塊的塊級複雜度等級,包括:在處理單元中,基於多個閾值將各子單元的紋理資訊劃分至對應的子單元複雜度等級,上述多個閾值是預先設定的;基於各子單元複雜度等級確定當前塊的塊複雜度等級。
該種可能的實現方式中,提出了通過設置多個閾值將各子單元的紋理資訊劃分至對應的子單元複雜度等級,並基於各子單元複雜度等級確定當前塊的塊複雜度等級,有助於提升方案的可實施性。
在一種可能的實現方式中,基於各子單元複雜度等級確定當前塊的塊複雜度等級,包括:依據預設規則將各子單元複雜度等級映射為對應的通道級複雜度等級;基於各通道級複雜度等級確定當前塊的塊級複雜度等級。
該種可能的實現方式中,提出了將各子單元的複雜度等級映射為對應的通道級複雜度等級,並進一步通過當前塊的通道級複雜度等級確定當前塊的塊級複雜度等級的方法,有助於提升方案的可實施性。
在一種可能的實現方式中,依據預設規則將各子單元複雜度等級映射為對應的通道級複雜度等級,包括:基於多個閾值以及各子單元複雜度等級之和確定通道級複雜度等級,上述多個閾值是預先設定的。
該種可能的實現方式中,提供了一種基於多個閾值以及各子單元複雜度等級之和確定通道級複雜度等級的方法,有助於提升方案的可實施性。
在一種可能的實現方式中,依據預設規則將各子單元複雜度等級映射為對應的通道級複雜度等級,包括:確定子單元複雜度等級的級別構成,並依據級別構成確定對應的通道級複雜度等級。
該種可能的實現方式中,提供了一種基於子單元複雜度等級的級別構成確定對應的通道級複雜度等級的方法,有助於提升方案的可實施性。
在一種可能的實現方式中,基於各通道級複雜度等級確定當前塊的塊級複雜度等級,包括:取各通道級複雜度等級的最大值、最小值或加權值作為當前塊的塊級複雜度等級;或者
基於多個閾值以及各通道級複雜度等級之和確定當前塊的塊級複雜度等級,上述多個閾值是預先設定的。
該種可能的實現方式中,提供了兩種基於各通道級複雜度等級確定當前塊的塊級複雜度等級的方法,有助於提升方案的可實施性。
在一種可能的實現方式中,上述當前塊為多通道圖像塊;該多通道圖像塊的各通道分量共同或獨立確定上述同等級無損編碼位元數與目標位元數。
該種可能的實現方式中,提出了多通道圖像塊的各通道分量共同或獨立確定上述同等級無損編碼位元數與目標位元數,有助於提升方案的可實施性。
在一種可能的實現方式中,上述當前塊為多通道圖像塊;該多通道圖像塊的各通道分量共同或獨立確定上述通道級複雜度等級。
該種可能的實現方式中,提出了多通道圖像塊的各通道分量共同或獨立確定上述通道級複雜度等級,有助於提升方案的可實施性。
第二方面,本申請實施例提供一種視訊譯碼裝置,該裝置具有實現上述第一方面中任一項的視訊圖像解碼方法、編碼方法的功能。該功能可以通過硬體實現,也可以通過硬體執行相應的軟體實現。該硬體或軟體包括一個或多個與上述功能相對應的模組。
第三方面,提供一種視訊編碼器,包括:處理器和記憶體;該記憶體用於存儲電腦執行指令,當該視訊編碼器運行時,該處理器執行該記憶體存儲的該電腦執行指令,以使該視訊編碼器執行如上述第一方面中任一項的視訊圖像解碼方法、編碼方法。
第四方面,提供一種視訊解碼器,包括:處理器和記憶體;該記憶體用於存儲電腦執行指令,當該視訊解碼器運行時,該處理器執行該記憶體存儲的該電腦執行指令,以使該視訊解碼器執行如上述第一方面中任一項的視訊圖像解碼方法、編碼方法。
第五方面,提供一種電腦可讀存儲介質,該電腦可讀存儲介質中存儲有指令,當其在電腦上運行時,使得電腦可以執行上述第一方面中任一項的視訊圖像解碼方法、編碼方法。
第六方面,提供一種包含指令的電腦程式產品,當其在電腦上運行時,使得電腦可以執行上述第一方面中任一項的視訊解譯方法。
第七方面,提供一種電子設備,電子設備包括視訊譯碼裝置,處理電路被配置為執行如上述第一方面中任一項的視訊圖像解碼方法、編碼方法。
第八方面,提供一種晶片,晶片包括處理器,處理器和記憶體耦合,記憶體存儲有程式指令,當記憶體存儲的程式指令被處理器執行時實現上述第一方面中任意一項的視訊圖像解碼方法、編碼方法。
第九方面,提供一種視訊編解碼系統,該系統包括視訊編碼器和視訊解碼器,視訊編碼器被配置為執行如上述第一方面中任一項的視訊圖像解碼方法、編碼方法,視訊解碼器被配置為執行如上述第一方面中任一項的視訊圖像解碼方法、編碼方法。
第二方面至第九方面中的任一種實現方式所帶來的技術效果可參見第一方面中對應實現方式所帶來的技術效果,此處不再贅述。
本申請要求於2022年7月26日申請的、申請號為202210887907.9的中國專利申請的優先權,其全部內容通過引用結合在本申請中。
在本申請的描述中,除非另有說明,“/”表示“或”的意思,例如,A/B可以表示A或B。本文中的“和/或”僅僅是一種描述關聯物件的關聯關係,表示可以存在三種關係,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。此外,“至少一個”是指一個或多個,“多個”是指兩個或兩個以上。“第一”、“第二”等字樣並不對數量和執行次序進行限定,並且“第一”、“第二”等字樣也並不限定一定不同。
需要說明的是,本申請中,“示例性的”或者“例如”等詞用於表示作例子、例證或說明。本申請中被描述為“示例性的”或者“例如”的任何實施例或設計方案不應被解釋為比其他實施例或設計方案更優選或更具優勢。確切而言,使用“示例性的”或者“例如”等詞旨在以具體方式呈現相關概念。
首先,對本申請實施例涉及的技術術語進行介紹:
1、視訊譯碼技術
視訊譯碼技術包括視訊編碼技術和視訊解碼技術,也可以統稱為視訊編解碼技術。
其中,視訊序列存在空間冗餘、時間冗餘、視覺冗餘、資訊熵冗餘、結構冗餘、知識冗餘、重要性冗餘等一系列的冗餘訊息。為了盡可能的去除視訊序列中的冗餘訊息,減少表徵視訊的數據量,提出了視訊編碼技術,以達到減小存儲空間和節省傳輸頻寬的效果。視訊編碼技術也稱為視訊壓縮技術。
為了獲取基於上述視訊壓縮技術的存儲或傳輸的數據,相應地,需要視訊解碼技術來實現。
在國際通用範圍內,視訊壓縮編碼標準用於規範視訊編解碼方法,例如:由動態影像專家組(Motion Picture Experts Group,MPEG)制定的MPEG-2和MPEG-4標準中第10部分的先進視訊編碼(Advanced Video Coding,AVC),由國際電信聯盟電信標準化部門(International Telecommunication Uion-Telecommunication Standardization Sector,ITU-T)制定的H.263、H.264和H.265(又稱高效率視訊編碼(High Efficiency Video Coding standard,HEVC))。
需要說明的是,在基於混合編碼架構的編碼演算法中,上述壓縮編碼方式可以被混合使用。
視訊編解碼過程中的基本處理單位是圖像塊,該圖像塊是編碼端將一幀/幅圖像進行劃分得到的。針對劃分後的圖像塊,通常採用逐行逐個的方式進行處理。其中,將正在處理的圖像塊稱為當前塊,已處理的圖像塊稱為已編碼圖像塊,或已譯碼圖像塊,或已譯碼圖像塊。以HEVC為例,HEVC定義了編碼樹單元(Coding Tree Unit,CTU)、編碼單元(Coding Unit,CU)、預測單元(Prediction Unit,PU)和變換單元(Transform Unit,TU)。CTU、CU、PU和TU均可作為劃分後得到的圖像塊。其中PU和TU均基於CU進行劃分。
2、視訊採樣
像素為視訊或圖像最小的完整採樣,因此,對圖像塊進行數據處理是以像素為單位。其中,每個像素記錄顏色訊息。一種採樣方式為通過RGB表示顏色,其中,包括三個圖像通道,R表示紅色red,G表示綠色green,B表示藍色blue。另一種採樣方式為通過YUV表示顏色,其中,包括三個圖像通道,Y表示亮度(luminance),U表示第一色度Cb,V表示第二色度Cr。由於人們對亮度的敏感程度強於對色度的敏感程度,因此,可以通過多存儲亮度,少存儲色度實現減少存儲空間。具體地,在視訊編解碼中,通常採用YUV格式進行視訊採樣,包括420採樣格式、422採樣格式等。該採樣格式基於亮度的取樣數量,確定兩個色度的取樣數量,例如,假設一個CU有4×2個像素,格式如下: [Y0,U0,V0] [Y1,U1,V1] [Y2,U2,V2] [Y3,U3,V3]; [Y4,U4,V4] [Y5,U5,V5] [Y6,U6,V6] [Y7,U7,V7];
420採樣格式表示YUV以4:2:0的格式進行採樣,即亮度與第一色度或第二色度以4:2的比例進行選取,其中第一色度與第二色度隔行選取。則上述CU採樣選取第一行的亮度Y0-Y3,以及第一色度U0和U2,選取第二行的亮度Y4-Y7,以及第二色度V4和V6。該CU經採樣由亮度編碼單元及色度編碼單元構成,其中,亮度編碼單元為: [Y0] [Y1] [Y2] [Y3]; [Y4] [Y5] [Y6] [Y7];
第一色度編碼單元為: [U0] [U2];
第二色度編碼單元為: [V4] [V6];
可以看出,經上述採樣格式採樣後的圖像塊大小發生了變化。其中亮度編碼單元塊大小不變,仍為4×2,而第一色度編碼單元塊大小變為2×1,第二色度編碼單元塊大小也變為2×1。因此,若假設CU大小為X×Y,則基於420採樣格式採樣後的色度編碼單元塊大小為
類似地,422採樣格式表示YUV以4:2:2的格式進行採樣,即亮度與第一色度和第二色度以4:2:2的比例進行選取。則上述CU經採樣的亮度編碼單元為: [Y0] [Y1] [Y2] [Y3]; [Y4] [Y5] [Y6] [Y7];
第一色度編碼單元為: [U0] [U2]; [U4] [U6];
第二色度編碼單元為: [V1] [V3]; [V5] [V7];
其中,亮度編碼單元塊大小不變,仍為4×2,而第一色度編碼單元塊大小變為2×2,第二色度編碼單元塊大小也變為2×2。因此,若假設CU大小為X×Y,則基於422採樣格式採樣後的色度編碼單元塊大小為
上述經採樣得到的亮度編碼單元、第一色度編碼單元和第二色度編碼單元作為後續針對當前塊進行處理的各通道的數據單元。
本申請提供的譯碼方法適用於視訊編解碼系統。該視訊編解碼系統也可以稱為視訊譯碼系統。圖1示出了視訊編解碼系統的結構。
如圖1所示,視訊編解碼系統包含源裝置10和目的裝置11。源裝置10產生經過編碼後的視訊數據,源裝置10也可以被稱為視訊編碼裝置或視訊編碼設備,目的裝置11可以對源裝置10產生的經過編碼後的視訊數據進行解碼,目的裝置11也可以被稱為視訊解碼裝置或視訊解碼設備。源裝置10和/或目的裝置11可包含至少一個處理器以及耦合到所述至少一個處理器的記憶體。所述記憶體可包含但不限於唯讀記憶體(Read-Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、電子抹除式可複寫唯讀記憶體(Electrically Erasable Programmable Read-Only Memory,EEPROM)、快閃記憶體或可用於以可由電腦存取的指令或數據結構的形式存儲所要的程式碼的任何其它媒體,本申請對此不作具體限定。
源裝置10和目的裝置11可以包括各種裝置,包含桌上型電腦、移動計算裝置、筆記本(例如,膝上型)電腦、平板電腦、機上盒、例如所謂的“智慧型”電話等電話手持機、電視機、相機、顯示裝置、數位媒體播放機、視訊遊戲控制台、車載電腦或其類似者等電子設備。
目的裝置11可經由鏈路12從源裝置10接收經編碼視訊數據。鏈路12可包括能夠將經編碼視訊數據從源裝置10移動到目的裝置11的一個或多個媒體和/或裝置。在一個實例中,鏈路12可包括使得源裝置10能夠即時地將編碼後的視訊數據直接發射到目的裝置11的一個或多個通信媒體。在此實例中,源裝置10可根據通信標準(例如:無線通訊協定)來調製編碼後的視訊數據,並且可以將調製後的視訊數據發射到目的裝置11。上述一個或多個通信媒體可包含無線和/或有線通信媒體,例如:射頻(Radio Frequency,RF)頻譜、一個或多個物理傳輸線。上述一個或多個通信媒體可形成基於分組的網路的一部分,基於分組的網路例如為區域網路、廣域網路或全球網路(例如,網際網路)等。上述一個或多個通信媒體可以包含路由器、交換器、基站,或者實現從源裝置10到目的裝置11的通信的其它設備。
在另一實例中,可將編碼後的視訊數據從輸出介面103輸出到存儲裝置13。類似地,可通過輸入介面113從存儲裝置13存取編碼後的視訊數據。存儲裝置13可包含多種本地存取式資料存儲媒體,例如藍光光碟、高密度數位視訊光碟(Digital Video Disc,DVD)、唯讀光碟(Compact Disc Read-Only Memory,CD-ROM)、快閃記憶體,或用於存儲經編碼視訊數據的其它合適數位存儲媒體。
在另一實例中,存儲裝置13可對應於檔案伺服器或存儲由源裝置10產生的編碼後的視訊數據的另一中間存儲裝置。在此實例中,目的裝置11可經由數據流或下載從存儲裝置13獲取其存儲的視訊數據。檔案伺服器可為任何類型的能夠存儲經編碼的視訊數據並且將經編碼的視訊數據發射到目的裝置11的伺服器。例如,檔案伺服器可以包含全球廣域網路(World Wide Web,Web)伺服器(例如,用於網站)、文件傳送協定(File Transfer Protocol,FTP)伺服器、網路附加存儲(Network Attached Storage,NAS)裝置以及本地磁碟機。
目的裝置11可通過任何標準資料連接(例如,網際網路連接)存取編碼後的視訊數據。資料連接的實例類型包含適合於存取存儲於檔案伺服器上的編碼後的視訊數據的無線通道、有線連接(例如,纜線數據機等),或兩者的組合。編碼後的視訊數據從檔案伺服器發射的方式可為數據流、下載傳輸或兩者的組合。
本申請的譯碼方法不限於無線應用場景,示例性的,本申請的譯碼方法可以應用於支援以下多種多媒體應用的視訊編解碼:空中電視廣播、有線電視發射、衛星電視發射、數據流視訊發射(例如,經由網際網路)、存儲於資料存儲媒體上的視訊數據的編碼、存儲於資料存儲媒體上的視訊數據的解碼,或其它應用。在一些實例中,視訊編解碼系統可經配置,以支援單向或雙向視訊發射,以支援例如視訊數據流、視訊播放、視訊廣播及/或視訊電話等應用。
需要說明的是,圖1示出的視訊編解碼系統僅僅是視訊編解碼系統的示例,並不是對本申請中視訊編解碼系統的限定。本申請提供的譯碼方法還可適用於編碼裝置與解碼裝置之間無資料通信的場景。在其它實例中,待編碼視訊數據或編碼後的視訊數據可以從本機存放區器檢索,也可以在網路上數據流等。視訊編碼裝置可對待編碼視訊數據進行編碼並且將編碼後的視訊數據存儲到記憶體,視訊解碼裝置也可從記憶體中獲取編碼後的視訊數據並且對該編碼後的視訊數據進行解碼。
在圖1中,源裝置10包含視訊源101、視訊編碼器102和輸出介面103。在一些實例中,輸出介面103可包含調製器/解調器(數據機)和/或發射器。視訊源101可包括視訊捕獲裝置(例如,攝像機)、含有先前捕獲的視訊數據的視訊存檔、用以從視訊內容提供者接收視訊數據的視訊輸入介面,和/或用於產生視訊數據的電腦圖形系統,或視訊數據的此些來源的組合。
視訊編碼器102可對來自視訊源101的視訊數據進行編碼。在一些實例中,源裝置10經由輸出介面103將編碼後的視訊數據直接發射到目的裝置11。在其它實例中,編碼後的視訊數據還可存儲到存儲裝置13上,供目的裝置11稍後存取來用於解碼和/或播放。
在圖1的實例中,目的裝置11包含顯示裝置111、視訊解碼器112以及輸入介面113。在一些實例中,輸入介面113包含接收器和/或數據機。輸入介面113可經由鏈路12和/或從存儲裝置13接收編碼後的視訊數據。顯示裝置111可與目的裝置11集成或可在目的裝置11外部。一般來說,顯示裝置111顯示解碼後的視訊數據。顯示裝置111可包括多種顯示裝置,例如,液晶顯示器、等離子顯示器、有機發光二極體顯示器或其它類型的顯示裝置。
可選的,視訊編碼器102和視訊解碼器112可各自與音訊編碼器和解碼器集成,且可包含適當的多工器-多路分用器單元或其它硬體和軟體,以處理共同數據流程或單獨數據流程中的音訊和視訊兩者的編碼。
視訊編碼器102和視訊解碼器112可以包括至少一個微處理器、數位訊號處理器(Digital Signal Processor,DSP)、特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)、場式可程式閘陣列(Field Programmable Gate Array,FPGA)、離散邏輯、硬體或其任何組合。若本申請提供的譯碼方法採用軟體實現,則可將用於軟體的指令存儲在合適的非揮發性電腦可讀存儲媒體中,且可使用至少一個處理器執行所述指令從而實施本申請。
本申請中的視訊編碼器102和視訊解碼器112可以根據視訊壓縮標準(例如HEVC)操作,也可根據其它業界標準操作,本申請對此不作具體限定。
圖2是本申請實施例中視訊編碼器102的一種示意性框圖。視訊編碼器102可以在預測模組21、變換模組22、量化模組23以及熵編碼模組24分別進行預測、變換、量化以及熵編碼的過程。視訊編碼器102中還包括預處理模組20和求和器202,其中預處理模組20包括分割模組和碼率控制模組。對於視訊塊重構建,視訊編碼器102也包括反量化模組25、反變換模組26、求和器201和參考圖像記憶體27。
如圖2中所展示,視訊編碼器102接收視訊數據,預處理模組20視訊數據的輸入參數。其中,該輸入參數包括該視訊數據中圖像的解析度、圖像的採樣格式、像素深度(bits per pixel,bpp)、位元寬等訊息。其中,bpp是指單位像素中一個像素分量所佔用的位元數。位元寬是指單位像素所佔用的位元數。例如,以RGB三個像素分量的值表示一個像素,若每個像素分量佔用8比特(bits),則該像素的像素深度為8,並且該像素的位元寬為3×8=24 bits。
預處理模組20中的分割模組將圖像分割成原始塊。此分割也可包含分割成條帶(slice)、圖像塊或其它較大單元,以及(例如)根據最大編碼單元(Largest Coding Unit,LCU)及CU的四叉樹結構進行視訊塊分割。示例性的,視訊編碼器102編碼在待編碼的視訊條帶內的視訊塊的元件。一般的,條帶可劃分成多個原始塊(且可能劃分成稱作圖像塊的原始塊的集合)。通常在分割模組中確定CU、PU以及TU的尺寸。此外,分割模組還用於確定碼率控制單元的尺寸。該碼率控制單元是指碼率控制模組中的基本處理單元,例如在碼率控制模組基於碼率控制單元,為當前塊計算複雜度訊息,再根據複雜度訊息計算當前塊的量化參數。其中,分割模組的分割策略可以是預設的,也可以是編碼過程中基於圖像不斷調整的。當分割策略是預設策略時,相應地,解碼端中也預設相同的分割策略,從而獲取相同的影像處理單元。該影像處理單元為上述任意一種圖像塊,且與編碼側一一對應。當分割策略在編碼過程中基於圖像不斷調整時,該分割策略可以直接或間接地編入碼流,相應地,解碼端從碼流中獲取相應參數,得到相同的分割策略,獲取相同的影像處理單元。
預處理模組20中的碼率控制模組用於生成量化參數以使得量化模組23和反量化模組25進行相關計算。其中,碼率控制模組在計算量化參數過程中,可以獲取當前塊的圖像訊息進行計算,例如上述輸入訊息;還可以獲取求和器201經重構得到的重建值進行計算,本申請對此不作限制。
預測模組21可將預測塊提供到求和器202以產生殘差塊,且將該預測塊提供到求和器201經重構得到重建塊,該重建塊用於後續進行預測的參考像素。其中,視訊編碼器102通過原始塊的像素值減去預測塊的像素值來形成像素差值,該像素差值即為殘差塊,該殘差塊中的數據可包含亮度差及色度差。求和器201表示執行此減法運算的一個或多個元件。預測模組21還可將相關的語法元素發送至熵編碼模組24用於合併至碼流。
變換模組22可將殘差塊劃分為一個或多個TU進行變換。變換模組22可將殘差塊從像素域轉換到變換域(例如,頻域)。例如,使用離散余弦變換(Discrete Cosine Transform,DCT)或離散正弦變換(Discrete Sine Transform,DST)將殘差塊經變換得到變換係數。變換模組32可將所得變換係數發送到量化模組23。
量化模組23可基於量化單元進行量化。其中,量化單元可以與上述CU、TU、PU相同,也可以在分割模組中進一步地劃分。量化模組23對變換係數進行量化以進一步減小碼率得到量化係數。其中,量化過程可減少與係數中的一些或全部相關聯的位元深度。可通過調整量化參數來修改量化的程度。在一些可行的實施方式中,量化模組23可接著執行包含經量化變換係數的矩陣的掃描。替代的,熵編碼模組24可執行掃描。
在量化之後,熵編碼模組24可熵編碼量化係數。例如,熵編碼模組24可執行上下文適應性變動長度編碼法(Context-Adaptive Variable-Length Coding,CAVLC)、上下文適應性二進位算術編碼(Context-based Adaptive Binary Arithmetic Coding,CABAC)、基於語法的上下文適應性二進位算術解碼(SBAC)、概率區間分割熵(PIPE)解碼或另一熵編碼方法或技術。在通過熵編碼模組24進行熵編碼之後得到碼流,可將碼流傳輸到視訊解碼器112或存檔以供稍後傳輸或由視訊解碼器112檢索。
反量化模組25及反變換模組26分別應用反量化與反變換,求和器201將反變換後的殘差塊得和預測的殘差塊相加以產生重建塊,該重建塊用作後續原始塊進行預測的參考像素。該重建塊存儲於參考圖像記憶體27中。
圖3是本申請實施例中視訊解碼器112的結構示意圖。如圖3所示,視訊解碼器112包含熵解碼模組30、預測模組31、反量化模組32、反變換模組33、求和器301和參考圖像記憶體34。其中,熵解碼模組30包括解析模組和碼率控制模組。在一些可行的實施方式中,視訊解碼器112可執行與關於來自圖2的視訊編碼器102描述的編碼流程的示例性地互逆的解碼流程。
在解碼過程期間,視訊解碼器112從視訊編碼器102接收經編碼的視訊的碼流。視訊解碼器112的熵解碼模組30中的解析模組對碼流進行熵解碼,以產生量化係數和語法元素。熵解碼模組30將語法元素轉遞到預測模組31。視訊解碼器112可在視訊條帶層級和/或視訊塊層級處接收語法元素。
熵解碼模組30中的碼率控制模組根據解析模組得到的待解碼圖像的訊息,生成量化參數以使得反量化模組32進行相關計算。碼率控制模組還可以根據求和器301經重構得到的重建塊,以計算量化參數。
反量化模組32對碼流中所提供且通過熵解碼模組30所解碼的量化係數以及所生成的量化參數進行反量化(例如,解量化)。反量化過程可包含使用通過視訊編碼器102針對視訊條帶中的每一視訊塊所計算的量化參數確定量化的程度,且同樣地確定應用的反量化的程度。反變換模組33將反變換(例如,DCT、DST等變換方法)應用於反量化後的變換係數,將反量化後的變換係數按照反變換單元在像素域中產生反變換後的殘差塊。其中,反變換單元的尺寸與TU的尺寸相同,反變換方法與變換方法採用同樣的變換方法中相應的正變換與反變換,例如,DCT、DST的反變換為反DCT、反DST或概念上類似的反變換過程。
預測模組31生成預測塊後,視訊解碼器112通過將來自反變換模組33的反變換後的殘差塊與通過與預測塊求和來形成經解碼視訊塊。求和器301表示執行此求和運算的一個或多個元件。在需要時,也可應用解塊濾波器來對經解碼塊進行濾波以便去除塊效應偽影。給定幀或圖像中的經解碼的圖像塊存儲於參考圖像記憶體34中,作為後續進行預測的參考像素。
本申請提供一種可能的視訊編/解碼實現方式,如圖4所示,圖4為本申請提供的一種視訊編/解碼的流程示意圖,該視訊編/解碼實現方式包括過程①至過程⑤,過程①至過程⑤可以由上述的源裝置10、視訊編碼器102、目的裝置11或視訊解碼器112中的任意一個或多個執行。
過程①:將一幀圖像分成一個或多個互相不重疊的並行編碼單元。該一個或多個並行編碼單元間無依賴關係,可完全並行/獨立編碼和解碼,如圖4所示出的並行編碼單元1和並行編碼單元2。
過程②:對於每個並行編碼單元,可再將其分成一個或多個互相不重疊的獨立編碼單元,各個獨立編碼單元間可相互不依賴,但可以共用一些並行編碼單元頭訊息。
獨立編碼單元既可以是包括亮度Y、第一色度Cb、第二色度Cr三個分量,或RGB三個分量,也可以僅包含其中的某一個分量。若獨立編碼單元包含三個分量,則這三個分量的尺寸可以完全一樣,也可以不一樣,具體與圖像的輸入格式相關。該獨立編碼單元也可以理解為每個並行編碼單元所包含N個通道形成的一個或多個處理單元。例如上述Y、Cb、Cr三個分量即為構成該並行編碼單元的三個通道,其分別可以為一個獨立編碼單元,或者Cb和Cr可以統稱為色度通道,則該並行編碼單元包括亮度通道構成的獨立編碼單元,以及色度通道構成的獨立編碼單元。
過程③:對於每個獨立編碼單元,可再將其分成一個或多個互相不重疊的編碼單元,獨立編碼單元內的各個編碼單元可相互依賴,如多個編碼單元可以進行相互參考預編解碼。
若編碼單元與獨立編碼單元尺寸相同(即獨立編碼單元僅分成一個編碼單元),則其尺寸可為過程②所述的所有尺寸。
編碼單元既可以是包括亮度Y、第一色度Cb、第二色度Cr三個分量(或RGB三分量),也可以僅包含其中的某一個分量。若包含三個分量,幾個分量的尺寸可以完全一樣,也可以不一樣,具體與圖像輸入格式相關。
值得注意的是,過程③是視訊編解碼方法中一個可選的步驟,視訊編/解碼器可以對過程②獲得的獨立編碼單元進行殘差係數(或殘差值)進行編/解碼。
過程④:對於編碼單元,可以將其可再將其分成一個或多個互相不重疊的預測組(Prediction Group,PG),PG也可簡稱為Group,各個PG按照選定預測模式進行編解碼,得到PG的預測值,組成整個編碼單元的預測值,基於預測值和編碼單元的原始值,獲得編碼單元的殘差值。
過程⑤:基於編碼單元的殘差值,對編碼單元進行分組,獲得一個或多個相不重疊的殘差小塊(residual block,RB),各個RB的殘差係數按照選定模式進行編解碼,形成殘差係數流。具體的,可分為對殘差係數進行變換和不進行變換兩類。
其中,過程⑤中殘差係數編解碼方法的選定模式可以包括,但不限於下述任一種:半定長編碼方式、指數哥倫布(Golomb)編碼方法、Golomb-Rice編碼方法、截斷一元碼編碼方法、遊程編碼方法、直接編碼原始殘差值等。
例如,視訊編碼器可直接對RB內的係數進行編碼。
又如,視訊編碼器也可對殘差塊進行變換,如DCT、DST、Hadamard變換等,再對變換後的係數進行編碼。
作為一種可能的示例,當RB較小時,視訊編碼器可直接對RB內的各個係數進行統一量化,再進行二值化編碼。若RB較大,可進一步劃分為多個係數組(coefficient group,CG),再對各個CG進行統一量化,再進行二值化編碼。在本申請的一些實施例中,係數組(CG)和量化組(QG)可以相同。
下面以半定長編碼方式對殘差係數編碼的部分進行示例性說明。首先,將一個RB塊內殘差絕對值的最大值定義為修整最大值(modified maximum,mm)。其次,確定該RB塊內殘差係數的編碼位元數(同一個RB塊內殘差係數的編碼位元數一致)。例如,若當前RB塊的關鍵限值(critical limit,CL)為2,當前殘差係數為1,則編碼殘差係數1需要2個比特,表示為01。若當前RB塊的CL為7,則表示編碼8-bit的殘差係數和1-bit的符號位元。CL的確定是去找滿足當前子塊所有殘差都在[-2^(M-1),2^(M-1)]範圍之內的最小M值。若同時存在-2^(M-1)和2^(M-1)兩個邊界值,則M應增加1,即需要M+1個比特編碼當前RB塊的所有殘差;若僅存在-2^(M-1)和2^(M-1)兩個邊界值中的一個,則需要編碼一個Trailing位元來確定該邊界值是-2^(M-1)還是2^(M-1);若所有殘差均不存在-2^(M-1)和2^(M-1)中的任何一個,則無需編碼該Trailing位元。
另外,對於某些特殊的情況,視訊編碼器也可以直接編碼圖像的原始值,而不是殘差值。
上述視訊編碼器102以及視訊解碼器112也可以通過另外一種實現形態來實現,例如,採用通用的數文書處理器系統實現,如圖5所示的編解碼裝置50,該編解碼裝置50可以為上述視訊編碼器102中的部分裝置,也可以為上述視訊解碼器112中的部分裝置。
該編解碼裝置50可以是應用於編碼側,也可以是應用於解碼側。編解碼裝置50包括處理器501以及記憶體502。所述處理器501與記憶體502相連接(如通過匯流排504相互連接)。可選的,編解碼裝置50還可包括通信介面503,通信介面503連接處理器501和記憶體502,用於接收/發送數據。
記憶體502可以為隨機存儲記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、可抹除可程式化唯讀記憶體(Erasable Programmable Read Only Memory,EPROM)或唯讀光碟(Compact Disc Read-Only Memory,CD-ROM)。該記憶體502用於存儲相關程式碼及視訊數據。
處理器501可以是一個或多個中央處理器(Central Processing Unit,CPU),例如圖5中所示的CPU 0和CPU 1。在處理器501是一個CPU的情況下,該CPU可以是單核CPU,也可以是多核CPU。
該處理器501用於讀取所記憶體502中存儲的程式碼,執行圖6所對應的任意一個實施方案及其各種可行的實施方式的操作。
以下,結合上述圖1示出的視訊編解碼系統、圖2示出的視訊編碼器102以及圖3示出的視訊解碼器112對本申請提供的譯碼方法進行詳細描述。
如圖6所示,為本申請提供的一種視訊圖像解碼方法、編碼方法的流程圖。該方法包括:
S601、獲取待處理圖像中當前塊的至少兩個通道級複雜度等級,根據至少兩個通道級複雜度等級確定當前塊的塊級複雜度等級;該通道級複雜度等級用於表徵當前塊的通道級紋理的複雜程度。
本申請所提供的視訊圖像解碼方法、編碼方法應用於對視訊資料的編解碼場景,視訊資料是由一幀幀圖像組成的,一幀是一幅靜態的圖像,將時間上連續的幀序列合成到一起便形成動態視訊。上述待處理圖像即為視訊資料中待譯碼的圖像。在視訊譯碼時,將該待處理圖像劃分為多個圖像塊,並將圖像塊作為基本處理單位,採用逐行逐個的方式進行處理。其中,將正在處理的圖像塊稱為當前塊。
在本示例實施方式中,上述待處理圖像可以為多通道圖像,上述獲取待處理圖像中當前塊的至少兩個通道級複雜度等級,根據至少兩個通道級複雜度等級確定當前塊的塊級複雜度等級,也即獲取當前多通道圖像塊的至少兩個通道的複雜度等級,並據此確定當前塊的塊級複雜度等級。例如,該待處理圖像可以為YUV格式的圖像,則可以獲取Y通道和U通道的複雜度等級,並據此確定當前塊的塊級複雜度等級。可以理解的是,獲取YV或UV或YUV的複雜度等級也可以確定當前塊的塊級複雜度等級。
本申請的多通道不限於前述的YUV三通道,也可以有更多通道,比如當圖像感測器為四通道感測器時,對應的待處理圖像包括四通道的圖像訊息,比如當圖像感測器為五通道感測器時,對應的待處理圖像包括五通道的圖像訊息。
本申請中的多個通道可以包括如下通道中的至少一種或幾種:Y通道、U通道、V通道、Co通道、Cg通道、R通道、G通道、B通道、alpha通道、IR通道、D通道、W通道。比如說,多個通道包括Y通道、U通道、V通道,或者,多個通道包括R通道、G通道、B通道,或者,多個通道包括、R通道、G通道、B通道、alpha通道,或者,多個通道可以包括R通道、G通道、B通道、IR通道,或者,多個通道包括R通道、G通道、B通道、W通道,或者,多個通道包括R通道、G通道、B通道、IR通道、W通道,或者,多個通道包括R通道、G通道、B通道、D通道,或者,多個通道可以包括R通道、G通道、B通道、D通道、W通道。其中,除了RGB彩色感光通道,也可能有IR通道(紅外或近紅外感光通道),D通道(暗光通道,主要通過紅外光或近紅外光),W通道(全色感光通道),針對不同的感測器有不同的通道,比如說,感測器類型可以是RGB感測器,RGBIR感測器,RGBW感測器,RGBIRW感測器,RGBD感測器,RGBDW感測器等。
紋理是一種反映圖像中同質現象的視覺特徵,用於表示物體表面的具有緩慢變化或者週期性變化的表面結構組織排列屬性,上述通道級複雜度等級即用於表徵當前塊的通道級別的紋理的複雜程度。當前塊的通道級紋理訊息越複雜,通道級複雜度等級越高。類似地,上述通道級紋理訊息越簡單,則通道級複雜度等級越低。
上述獲取待處理圖像中當前塊的至少兩個通道級複雜度等級,根據至少兩個通道級複雜度等級確定當前塊的塊級複雜度等級,在視訊譯碼的編碼端和解碼端有不同的實現方式,在一實施例中:
在編碼端,可實現如下:獲取當前塊的通道級紋理訊息,基於通道級紋理訊息確定當前塊的塊級複雜度等級。具體地,該過程可實現為:以當前塊中至少一個通道圖像塊為處理單元,並將各處理單元劃分為至少兩個子單元,確定各子單元的紋理訊息;在每個處理單元中,基於各子單元的紋理訊息確定當前塊的塊級複雜度等級。
其中,上述以當前塊中的至少一個通道圖像塊為處理單元,並將各處理單元劃分為至少兩個子單元。以待處理圖像為YUV圖像為例,在一種可能的場景中,該過程可實現為:將當前塊的Y通道作為一個處理單元,並將該處理單元進一步劃分為四個子單元。在另一種可能的場景中,該過程也可實現為:將Y通道和U通道這兩個通道作為一個處理單元,並將該處理單元進一步劃分為兩個子單元。可以理解的是,上述場景只是示例性說明,本示例實施方式的保護範疇並不以此為限,例如,也可將U通道、V通道、YU通道、YV通道、UV通道、YUV通道作為一個處理單元,上述子單元的數目也可以為大於等於二的任意整數。
在一種可能的實現方式中,上述確定各子單元的紋理訊息可實現如下:獲取子單元的原始像素值、子單元的左側相鄰列的原始像素值或重建值,以及子單元的上方相鄰行的重建值,並對應計算子單元的水平紋理訊息及垂直紋理訊息;在水平紋理訊息及垂直紋理訊息中選擇最小值作為對應子單元的紋理訊息。
具體地,上述紋理訊息可以為像素點訊息,以待處理圖像為YUV圖像,將Y、U、V通道分別作為一個處理單元為例,在將處理單元劃分為至少兩個子單元後,上述確定子單元紋理訊息可以為基於子單元的原始像素值、子單元的左側相鄰列的原始像素值或重建值,以及子單元的上方相鄰行的重建值計算子單元的水平複雜度及垂直複雜度,在水平複雜度和垂直複雜度中選擇最小值作為對應子單元的紋理訊息。上述水平複雜度及垂直複雜度可以基於子單元在水平方向和垂直方向上像素點的差異程度計算得到。可以理解的是,上述場景只是一種示例性說明,上述紋理訊息也可以由其他方式獲得,例如,可以通過像素點之外的圖像訊息確定,也可以選上述水平複雜度和垂直複雜度的加權值作為對應子單元的紋理訊息,還可以是其他可達到同樣效果的方式,本示例實施方式並不對此做特殊限定。
在一種可能的實現方式中,上述在每個處理單元中,基於各子單元的紋理訊息確定當前塊的塊級複雜度等級可通過以下方式實現:在上述處理單元中,基於多個閾值將各子單元的紋理訊息劃分至對應的子單元複雜度等級,上述多個閾值是預先設定的;基於各子單元複雜度等級確定當前塊的塊級複雜度等級。
具體地,上述過程可以為:設置閾值1和閾值2兩個閾值,基於所設置的閾值將子單元複雜度等級劃分為0至2三個等級。若確定得到的子單元的紋理訊息的複雜度小於等於閾值1,則將該子單元的紋理訊息劃分等級0;若確定得到的子單元的紋理訊息的複雜度大於閾值1小於閾值2,則將該子單元的紋理訊息劃分等級1;若確定得到的子單元的紋理訊息的複雜度大於等於閾值2,則將該子單元的紋理訊息劃分等級2。可以理解的是,上述場景只是一種示例性場景,本申請的保護範疇並不以此為限。
在一種可能的實現方式中,上述基於各子單元複雜度等級確定當前塊的塊級複雜度等級可實現如下:依據預設規則將各子單元複雜度等級映射為對應的通道級複雜度等級;基於各通道級複雜度等級確定當前塊的塊級複雜度等級。
上述依據預設規則將各子單元複雜度等級映射為對應的通道級複雜度等級可通過以下方式實現:
實現方式1:基於多個閾值以及各子單元複雜度等級之和確定通道級複雜度等級,上述多個閾值是預先設定的。
在一實施例中,上述過程可實現為:基於上述多個閾值確定多個通道級複雜度等級,將上述各子單元複雜度等級進行求和運算,並將求得的和劃分至對應的通道級複雜度等級。具體地,上述閾值可以為2,4,7三個閾值,這三個閾值可以將通道級複雜度等級劃分為等級0至等級4五個等級,上述計算得到的子單元複雜度等級為0至2三個級別,通過對各子單元複雜度等級求和,若子單元複雜度等級和小於2,則對應的通道級複雜度等級為0;若子單元複雜度等級和大於等於2小於4,則對應的通道等級為1;若子單元複雜度等級和等於4,則對應的通道級複雜度等級為2;若子單元複雜度等級和大於4小於7,則對應的通道級複雜度等級為3;若子單元複雜度等級和大於等於7,則對應的通道級複雜度等級為4。可以理解的是,上述場景只是一種示例性場景,本申請的保護範疇並不以此為限。
實現方式2:確定子單元複雜度等級的級別構成,並依據該級別構成確定對應的通道級複雜度等級。
在一實施例中,在一種具體場景中,上述過程可以實現如下:例如,上述子單元複雜度等級為多個級別,依據各子單元所屬的等級級別以及排列方式確定對應的通道級複雜度等級。例如,當上述處理單元被劃分為4個子單元,且4個子單元複雜度級別分別為1,2,2,2時,若預設規則包括決策方式:各子單元複雜度等級有3個2,則通道級複雜度等級為2,那麼對應的通道級複雜度等級為2。可以理解的是,上述場景只是一種示例性說明,其他子單元劃分方法以及決策方式也屬於本申請的保護範疇。
在一種可能的實現方式中,上述基於各通道級複雜度等級確定當前塊的塊級複雜度等級有多種方式,示例性地:
實現方式1:取各通道級複雜度等級的最大值、最小值或加權值作為當前塊的塊級複雜度等級。
實現方式2:基於多個閾值以及各通道級複雜度等級之和確定當前塊的塊級複雜度等級,上述多個閾值是預先設定的。
此外,在本申請中,上述多通道圖像塊,也即當前塊的各通道分量可共同或獨立確定通道級複雜度等級。例如,當待處理圖像為YUV圖像時,U通道和V通道可以共用一個通道級複雜度等級,也可分別確定各自的通道級複雜度等級。
在解碼端,可實現為:從碼流中獲取當前塊的通道級複雜度等級其中,上述碼流為當前塊的編碼碼流。具體地,解碼端可接收編碼端傳來的當前塊的已編碼碼流,該編碼碼流中有用於表示通道級複雜度等級的複雜度訊息位,基於該訊息位可以得到編碼端基於通道級的紋理訊息確定的通道級複雜度等級,並基於通道級複雜度等級確定塊級複雜度等級。其中,通過至少兩個通道級複雜度等級確定塊級複雜度等級的實現與編碼端相同,此處不再贅述。
上述通過複雜度訊息位確定通道級複雜度等級的實現可如下:從上述已編碼碼流中獲取上述當前塊的複雜度訊息位;依據複雜度訊息位確定通道級複雜度等級。其中,上述複雜度訊息位可以為1位元或3位元,且該複雜度訊息位的第一位用於表示當前通道級複雜度等級與當前塊的前一個圖像塊的相同通道複雜度等級是否相同以及兩者之間的變化值。以YUV圖像為例,若當前通道級複雜度等級為當前塊的U通道的複雜度等級,則前一個圖像塊的相同通道複雜度表示在當前塊之前進行譯碼的圖像塊的U通道的複雜度等級。若根據第一位判斷相同,則複雜度訊息位為1位元;若不同,則複雜度訊息位為3位元,且後兩位表示當前塊的通道級複雜度與當前塊的前一個圖像塊的相同通道的複雜度等級的變化值,基於該變化值與前一個圖像塊的相同通道的通道複雜度等級可以確定當前所求的通道級複雜度等級。可以理解的是,上述場景只是一種示例性說明,本申請的保護範疇並不以此為限。例如,上述複雜度訊息位也可以表示當前塊的U通道與當前塊的Y通道複雜度是否相同以及在不相同時的變化值,本申請對此不做特殊限定。
S602、根據碼控參數確定當前塊的目標位元數,該碼控參數包括當前塊的塊級複雜度等級。
在一種可能實現的方式中,碼控參數包括上述步驟S601計算得到的當前塊的塊級複雜度等級,用於確定當前塊的目標位元數,目標位元數為預測當前塊編碼所需的位元數。上述碼控參數還可包括以下參數中的至少一種:圖像位元寬bpc、目標每像素位元數bpp、圖像格式、同等級平均無損編碼位元數、平均無損編碼位元數、碼流緩衝區滿度、首行品質提升參數、首列品質提升參數,通過上述碼控參數中的一種或多種都可確定當前塊的目標位元數。
其中,上述同等級平均無損編碼位元數為當前塊與多個已譯碼圖像塊無損編碼時所需位元數預測值的平均值,且多個已譯碼圖像塊與當前塊的複雜度等級相同;上述平均無損編碼位元數為當前塊與所有已譯碼圖像塊無損編碼時所需的位元數預測值的平均值;上述碼流緩衝區滿度用於表徵緩衝區的滿度,上述緩衝區用於存儲待處理圖像的碼流;上述首行品質提升參數用於在當前塊為待處理圖像中的首行塊時,調低首行塊的量化參數,以減輕因首行塊預測難度較大且預測誤差具有傳遞性而帶來的影響。
在一種可能的實現方式中,上述碼控參數可包括同等級平均無損編碼位元數、平均無損編碼位元數以及碼流緩衝區滿度,根據碼控參數確定當前塊的目標位元數可實現為:確定上述同等級平均無損編碼位元數及平均無損編碼位元數;基於同等級平均無損編碼位元數及平均無損編碼位元數確定初始目標位元數;基於上述碼流緩衝區滿度,當前塊的塊級複雜度等級以及初始目標位元數確定當前塊的目標位元數。其中,上述碼流緩衝區滿度的計算會受到初始傳輸延遲機制的影響,該初始傳輸延遲機制指緩衝區在當前塊的編碼碼流存儲前存在的一些無效位對緩存區滿度的影響。
在一實施例中,上述確定同等級平均無損編碼位元數及平均編碼位元數可實現為:確定當前塊的無損編碼位元數,該無損編碼位元數為當前塊無損編碼時所需位元數的預測值;依據當前塊的無損編碼位元數以及多個歷史同等級平均無損編碼位元數更新當前塊的同等級平均無損編碼位元數;依據當前塊的無損編碼位元數以及全部歷史平均無損編碼位元數更新當前塊的平均無損編碼位元數。其中,上述歷史同等級平均無損編碼位元數為與當前塊塊複雜度等級相同的已譯碼圖像塊的同等級平均無損位元數,上述歷史平均無損編碼位元數為已譯碼圖像塊的平均無損位元數。
在一種可能的實現方式中,當前塊為待處理圖像中的首行塊時,上述碼控參數還包括首行品質提升參數,上述根據碼控參數確定當前塊的目標位元數可實現為:基於同等級平均無損編碼位元數及平均無損編碼位元數確定初始目標位元數;基於碼流緩衝區滿度,當前塊的塊級複雜度等級、首行品質提升參數以及初始目標位元數確定當前塊的目標位元數。其中,上述首行品質提升參數主要通過調小當前塊的量化參數來提升當前塊的圖像品質。
在一種可能的實現方式中,當前塊為待處理圖像中的首列塊時,上述碼控參數還包括首列品質提升參數,上述根據碼控參數確定當前塊的目標位元數可實現為:基於同等級平均無損編碼位元數及平均無損編碼位元數確定初始目標位元數;基於碼流緩衝區滿度,當前塊的塊級複雜度等級、首列品質提升參數以及初始目標位元數確定當前塊的目標位元數。其中,上述首列品質提升參數主要通過調小當前塊的量化參數來提升當前塊的圖像品質。
此外,在上述過程中,上述多通道圖像塊,也即當前塊的通道分量可共同或獨立確定上述同等級無損編碼位元數與目標位元數。
S603、基於目標位元數確定當前塊的量化參數。
在一種可能的實現方式中,上述基於目標位元數確定當前塊的量化參數可以實現為:基於上述同等級平均無損編碼位元數、目標位元數、上述待處理圖像的圖像格式對應的取樣速率計算得到當前塊的參考量化參數,進一步的還可基於該參考量化參數計算當前塊的各通道對應的各分量量化參數。
S604、基於量化參數對當前塊進行譯碼。
在該步驟中,視訊譯碼器基於當前塊的量化參數對當前塊進行譯碼。可選的,在編碼時,視訊編碼器將當前塊的通道級複雜度等級編入碼流,即上述複雜度訊息位。或者將當前塊的量化參數編入碼流。相應地,解碼端獲取碼流中的複雜度訊息位計算量化參數進行解碼,或者解碼端獲取碼流中的量化參數進行解碼。當然,視訊編碼器也可以將上述兩種訊息均編入碼流中。
接下來,以上述待處理圖像為YUV圖像為應用場景,結合如圖7所示的流程,通過一系列具體實施例對上述視訊圖像解碼方法、編碼方法進行詳細地闡述:
步驟S701、確定當前塊的塊級複雜度等級。
該步驟用於確定當前塊的複雜度等級,且在視訊編碼端與視訊解碼端的實施過程存在區別。
在視訊編碼端,該過程主要由如圖8所示的流程實現:
S801、確定當前塊的紋理訊息的複雜度。
該步驟可實現為:通過將當前塊中至少一個通道圖像塊作為處理單元,並將各處理單元劃分為至少兩個子單元,並確定各子單元的紋理訊息的複雜度。
具體地,以 YUV444格式為例,每個16x2的通道都可以劃分為4個4x2的子塊,如圖9所示。
上述當前塊的紋理訊息為當前塊的像素訊息。對於當前塊複雜度的計算需要用到如下三個部分的像素點,如圖9所示:(1)當前塊的原始像素值;(2)當前塊左邊一列,也即子塊1左側相鄰列的原始像素值,需注意的是,當獲取不到原始像素值時,也可使用重建值;(3)與當前塊相鄰的上一行的重建值,也即圖9中的灰色方格區域。
接下來,以圖9中的子塊1為例,解釋子塊複雜度的計算過程,也即上述確定各子單元的紋理訊息的過程,該通常可以通過計算各子塊的水平複雜度和垂直複雜度得到,可以實現如下:水平複雜度計算方式為:當前列的像素值和與其左側相鄰列的像素值絕對值之和;垂直複雜度計算方式為:當前行的像素值以及與其上側相鄰行的像素值的絕對值之和。
在一實施例中,當前塊為當前視訊切片的左邊界時,上述水平複雜度計算使用左邊界的填充值,該填充值為當前列的像素值;相應地,當前塊為當前視訊切片的上邊界時,上述垂直複雜度計算使用上邊界的填充值,該填充值為當前行的像素值。
具體地,上述過程可以實現為:
首先計算子塊1的水平複雜度sub_comp_hor。具體地,可通過構成子塊1的像素值、子塊1相鄰左側一列的像素值或重建值以及相鄰上方一行構成的集合ori_pix[i][j]來計算。其中,i,j代表像素值所處的行列,子塊1的第一行第一列的像素值表示為ori_pix[0][0],其他像素值的表示以此類推。子塊1的水平複雜度sub_comp_hor指子塊1在水平方向上像素點間的差異程度,具體計算如下:
sub_comp_hor 1+= ori_pix[0][-1] - ori_pix[0][0]
取上述運算式的絕對值,作為子塊1第一行第一列的像素值與其左側相鄰的像素值之間的水平複雜度。
sub_comp_hor 2+= ori_pix[0][i] - ori_pix[0][i + 1]
取上述運算式的絕對值,作為子塊1第一行各像素值之間的水平複雜度。
sub_comp_hor 3+= ori_pix[1][-1] - ori_pix[1][0]
取上述運算式的絕對值,作為子塊1第二行第一列的像素值與其左側相鄰的像素值之間的水平複雜度。
sub_comp_hor4 += ori_pix[1][i] - ori_pix[1][i + 1]
取上述運算式的絕對值,作為子塊1第二行各像素值之間的水平複雜度。
子塊1的垂直複雜度sub_comp_ver指子塊1在垂直方向上像素點間的差異程度,類似地,垂直複雜度sub_comp_ver可具體計算如下:
sub_comp_ver 1+= rec_pix[-1][i] - ori_pix[0][i]
取上述運算式的絕對值,作為子塊1第一行與上方相鄰行像素值之間的垂直複雜度。
sub_comp_hor 2+= ori_pix[0][i] - ori_pix[1][i]
取上述運算式的絕對值,作為子塊1第二行與第一行的像素值之間的垂直複雜度。
在得到子塊1的多個水平複雜度及多個垂直複雜度後,將其中的最小值作為子塊1的紋理訊息的複雜度comp ,也即子塊1的複雜度為:
sub_comp = min(sub_comp_hor, sub_comp_ver)
上述子塊2,3,4的紋理訊息的複雜度的計算方式與子塊1一致,且通道U與通道V紋理劃分為子塊並計算子塊紋理訊息複雜度的方式與通道Y相同,故在此均不再贅述。
此外,若多個通道需要合併一同計算複雜度,例如,當U通道及V通道需要合併計算複雜度時,可通過如下公式實現:
sub_comp = sub_comp1 * a + sub_comp2 * b,其中0<=a,b<=1,a+b = 1
步驟S802、基於各通道子塊紋理訊息的複雜度確定當前塊的塊級複雜度等級。
在一實施例中,該步驟可分三步實現為:
S8021:通過各通道子塊紋理訊息的複雜度確定各通道子塊的複雜度等級。
該過程可通過設置多個閾值實現,在一實施例中,具體實現可以如下:
實現方式1:設定thres1和thres2兩個閾值:
thres1 = 2 * (1 << (bpc – 8));thres2 = 6 * (1 << (bpc–8)),其中,bpc >= 8,bpc為圖像位元寬。
當bpc 小於 8 的時候,上述兩個閾值默認為 2 和 6。
通過上述兩個閾值將各子塊的紋理訊息複雜度sub_comp劃分為級別0、級別1和級別2三個複雜度等級,具體劃分為:
若sub_comp <= thres1,則sub_comp_level = 0;若thres1 < sub_comp < thres2,則sub_comp_level = 1;若sub_comp > = thres2,則sub_comp_level = 2。
實現方式2:設定thres1、thres2、thres3和thres4四個閾值:thres1 = 2 * (1 << (bpc – 8)),thres2 = 4 * (1 << (bpc – 8)),thres3 = 6 * (1 << (bpc – 8)),thres4 = 8 * (1 << (bpc – 8))。且其中bpc >= 8。
通過上述四個閾值,將各子塊的紋理訊息複雜度sub_comp_level劃分為0,1,2,3,4等級,具體劃分為:
若sub_comp <= thres1,則sub_comp_level = 0;若thres1 < sub_comp < thres2,則sub_comp_level = 1;若thres2 < sub_comp < thres3,則sub_comp_level = 2;若thres3 < sub_comp < thres4,則sub_comp_level = 3;若sub_comp > = thres4,則sub_comp_level = 4。
S8022:將各通道子塊的複雜度等級映射為通道級複雜度等級。
上述將各通道子塊的複雜度等級映射為通道級複雜度等級可通過預設多個閾值並基於閾值映射或者基於預設映射策略實現。在一實施例中,有以下3種實現方式:
實現方式1:設置多個閾值,在對應通道內計算各子塊的閾值之和sub_comp_level,並根據上述多個閾值將各子塊的紋理訊息複雜度映射為對應通道的通道級複雜度等級。以上述圖9所示的通道子塊為例,該過程具體可以如下:
設置三個閾值2,4,7,計算子塊1至子塊4的複雜度等級之和sum_sub_comp_level,依據上述三個閾值將4個3級別各子塊的紋理訊息複雜度sub_comp_level(0,1,2)映射為1個5級別通道級複雜度等級comp_level(0,1,2,3,4)。
上述根據閾值將各子塊的紋理訊息複雜度映射為得到通道級複雜度等級comp_level(0,1,2,3,4)的過程為:若sum_sub_comp_level < 2,則comp_level = 0;若2 <= sum_sub_comp_level < 4,則comp_level = 1;若sum_sub_comp_level == 4,則comp_level = 2;若4 < sum_sub_comp_level < 7,則comp_level = 3;若7 <= sum_sub_comp_level,則comp_level = 4。
實現方式2:預設4個閾值5、7、10、12,對所有sub_comp_level求和,然後根據上述4個閾值得到comp_level,其中comp_level可能的值為(0,1,2,3,4)。在該實現方式中,不同於實現方式1,可以將從4個5級別sub_comp_level映射為1個5級別comp_level。
實現方式3:根據預設的邏輯規則得到comp_level。在一實施例中,以當前塊的亮度通道為例,該邏輯規則的決策方式可以如下:
對於上述確定的4個子塊的sub_comp_level組成的複雜度等級的級別構成:
當複雜度等級的級別構成為包含2個0,或1個0和3個1時: 若有2個連續0且2的個數小於2,comp_level = 0;否則comp_level = 1。
當複雜度等級的級別構成為包含3個2,或有2個連續2時: 若有3個2,comp_level = 4;否則comp_level = 3。
在其他情況下,comp_level = 2。
以當前塊的16x2 色度通道為例,上述邏輯規則的決策方式可以為:
當複雜度等級的級別構成為包含2個0且2的個數小於2時: 若有3個0,或有2個連續0且0個2,comp_level = 0;否則comp_level = 1。
當複雜度等級的級別構成為包含2個2,或有1個2和3個1時: 若有3個2,或有2個連續2且0個0,comp_level = 4;否則comp_level = 3。
在其他情況下,comp_level = 2。
此外,在另一種可能的實現方式中,以當前塊的 8x2 或 8x1 色度通道為例,上述邏輯規則的決策方式也可以為:comp_level = sub_comp_level1 + sub_comp_level2,其中,sub_comp_level1、sub_comp_level2分別為色度通道的兩個子塊的複雜度等級。
S8023:基於各通道級複雜度等級確定當前塊的塊級複雜度等級。
以上述待處理圖像為YUV圖像為例,經過上述步驟S8021和步驟 S8022,可以確定Y、U、V三個通道的通道級複雜度等級,在一實施例中,上述基於各通道級複雜度等級確定當前塊的塊級複雜度等級的實現可以如下:
實現方式1:基於上述各通道級複雜度等級之和確定當前塊的塊級複雜度等級blk_comp_level: chroma_comp_level = (u_comp_level + v_comp_level) / 2 blk_comp_level = (luma_comp_level + chroma_comp_level * sample_rate) / (1 + sample_rate)
其中,sample_rate為待處理圖像的取樣速率,由待處理圖像的圖像格式確定。sample_rate的一種設置方式可以參見下表1:
表1:
圖像格式 YUV400 YUV420 YUV422 RGB444 YUV444
sample_rate 0 0.5 1 2 2
format_bias 0 8/9 2/3 1 4/9
在上表1中,sample_rate為待處理圖像的取樣速率,format_bias為計算量化參數時設置的偏置量。
在上述步驟S8021至步驟8023中,通道級複雜度等級可以被多個通道公用也可獨立。例如,若是YUV或者YCoCg格式圖像,亮度使用一個複雜度,色度公用一個複雜度,或三個通道單獨確定通道複雜度等級。
其中,當第一色度和第二色度共用一個複雜度等級時,則該複雜度等級計算方式為:
實現方式1:取兩個色度通道級複雜度等級的最小值、最大值或加權值。
實現方式2:取兩個色度通道紋理訊息複雜度的最小值、最大值或加權值作為色度的紋理複雜度,再根據上述步驟S8021至步驟8023的方法獲取色度的通道級複雜度等級。
在視訊解碼端,從經過編碼端編碼的碼流中獲取上述各通道級複雜度等級,可實現為:從上述已編碼碼流中獲取上述當前塊的複雜度訊息位;依據複雜度訊息位確定通道級複雜度等級。其中,上述複雜度訊息位可以為1位元或3位元,且該複雜度訊息位的第一位用於表示當前通道級複雜度等級與當前塊的前一個圖像塊的相同通道複雜度等級是否相同以及兩者之間的變化值。
具體地,以待處理圖像為YUV圖像為例,解碼端獲取通道級複雜度等級可實現為:若當前通道級複雜度等級為當前塊的U通道的複雜度等級,則前一個圖像塊的相同通道複雜度表示在當前塊之前進行譯碼的圖像塊的U通道的複雜度等級。若根據第一位判斷相同,則複雜度訊息位為1位元;若不同,則複雜度訊息位為3位元,且後兩位表示當前塊的通道級複雜度與當前塊的前一個圖像塊的相同通道的複雜度等級的變化值,基於該變化值與前一個圖像塊的相同通道的通道複雜度等級可以確定當前所求的通道級複雜度等級。可以理解的是,上述場景只是一種示例性說明,本申請的保護範疇並不以此為限。例如,上述複雜度訊息位也可以表示當前塊的U通道與當前塊的Y通道複雜度是否相同以及在不相同時的變化值。
步驟S702、確定當前塊的同等級平均無損編碼位元數與平均無損編碼位元數。
當上述YUV圖像的第一色度和第二色度共用一個通道級複雜度等級時,上述確定當前塊的同等級平均無損編碼位元數與平均無損編碼位元數的實現可以如下:
S7021、確定無損編碼位元數pred_lossless_bits。 pred_lossless_bits = (cu_bits/(width x height)+luma_qp/a+ sample_rate * chroma_qp / b) / (1 + sample_rate)
其中,cu_bits表示當前塊的實際編碼位元數,可基於已譯碼圖像的編碼位元數確定;width和height分別表示編碼塊的寬高,luma_qp表示已譯碼圖像的亮度通道的量化參數,chroam_qp表示已譯碼圖像的色度通道的量化參數;a和b為權重值,其設置與預測模式相關,預設值均為8:對於IBC模式,a,b >= 8;對於點預測模式,a,b >= 8;對於調色板模式、原始值模式以及殘差跳過模式,因量化參數失效,故a,b == 0。
此外,當緩衝區buffer過滿且為殘差跳過模式時: pred_lossless_bits = bpc + c
其中,參數c與圖像格式有關,且只有在RGB模式時為0.67,其它格式均為0。
S7022、確定同等級平均無損編碼位元數lossless_bits[blk_comp_level]。
同等級平均無損編碼位元數lossless_bits[blk_comp_level]與當前塊的塊級複雜度等級相對應,在當前塊的塊級複雜度等級與已譯碼圖像塊的塊級複雜度等級相同時,通過以下公式更新: lossless_bits[blk_comp_level] = lossless_bits[blk_comp_level] * (1– d) + pred_lossless_bits * d
其中,d為更新率,且0<=d<=1。
在一實施例中,上述更新率d的一種具體設置方式可以為:對於任意複雜度的前4個圖像塊,將更新率d分別設置為3/4,5/8,1/2,3/8,其餘情況均為1/4。
S7023、確定平均無損編碼位元數avg_lossless_bits。
不同於同等級平均無損編碼位元數,平均無損編碼位元數avg_lossless_bits在每個塊都會更新,具體更新方式可以為: avg_lossless_bits = avg_lossless_bits * (1 - e) + pred_lossless_bits * e 其中e是更新率,0<=e<=1。可選地,e的一種設置可以為e = 0.01。
步驟S703、確定當前塊的目標位元數。
在一實施例中,上述確定當前塊的目標位元數可以通過以下步驟實現:
S7031、確定初始目標位元數。
該初始目標位元數為不考慮緩衝區滿度時計算得到的目標位元數,可以通過以下方式計算得到:
(1)計算品質比率quality_ratio: quality_ratio = bpp / (ave_lossless_bits – comp_offset) * (1 + sample_rate)
其中,comp_offset是預設值,一種設置方式見參見下表2:
表2:
位寬 8位元 10位元 12位元
圖像格式 RGB444 其他 RGB444 其他 RGB444 其他
lossless_bits[0] 0.5 0.0 1.5 1.0 2.0 1.5
lossless_bits[1] 1.3 0.8 2.5 2.0 3.2 2.7
lossless_bits[2] 2.1 1.6 3.5 3.0 4.4 3.9
lossless_bits[3] 2.9 2.4 4.5 4.0 5.6 5.1
lossless_bits[4] 3.7 3.2 5.5 5.0 6.8 6.3
avg_lossless_bits 5.5 5.0 7.0 6.5 8.0 7.5
comp_offset 0.5 0.0 2.5 2.0 3.5 3.0
max_lossless_bits 8.2 7.2 9.0 8.5 10.0 9.5
上述bpp的計算方式為: bpp = target_bpp/16+ (end_target_fullness – (cur_total_bits – ((target_bpp << 1) × (cur_blocks – 1)))) / max(16, slice_width_in_cu × slice_height_in_cu – cur_blocks) / 32
其中,end_target_fullness為預設值,在一實施例中,end_target_fullness的一種具體設置值可以為 (delay_bits – 1533) * 3 / 4。
其中,delay_bits為預設值,與初始傳輸延遲機制有關,delay_bits是延遲bits數。
上述初始傳輸延遲機制的特徵包括:a)視訊切片slice在開始傳輸時,延遲delay_blks個圖像塊後再進行傳輸,且這些圖像塊不進行下溢處理。b)視訊切片結尾緩衝區的buffer狀態恒為delay_bits延遲位元數(若不足,則填零)。如圖10所示,圖10為初始傳輸延遲機制的示意圖,視訊切片中的一個或多個圖像塊在初始位置與第二位置之間,對應緩衝區的最大值基於所處位置在初始位置與第二位置而增加,且在切片的閾值位置與最終位置之間的位置的圖像塊,對應緩衝區的最大值基於所處位置在閾值位置與最終位置之間減少,在第二位置和閾值位置之間,圖像塊對應的緩衝區大小不變。
上述delay_bits可以通過以下計算確定:delay_bits = delay_blks * bpp * blk_size;其中,blk_size表示塊大小。delay_blks是預設值。
此外,若待處理圖像為YUV444或RGB圖像,上述quality_ratio需要限制取值範圍到0-0.6之間。
在一實施例中,在確定得到品質比率後,還可以通過計算之前所有圖像塊的平均複雜度等級ave_comp_level來更新品質比率,具體可實現如下: avg_comp_level = avg_comp_level * (1 - k) + blk_comp_level * k 如果avg_comp_level > blk_comp_level,quality_ratio -= 0.05; 如果avg_comp_level < blk_comp_level,quality_ratio += 0.05。
(2)確定初始目標位元數。
上述初始目標位元數pre_target_bits可以通過以下公式確定: pre_target_bits = quality_ratio * (lossless_bits[blk_comp_level] - comp_offset) * (1 + sample_rate);
其中,comp_offset為預設值,一種設置方式可以參見上表2,sample_rate可以參見上表1。
S7032、根據緩衝區狀態和當前塊的塊級複雜度等級對初始目標位元數進行限制,確定最終的當前塊的目標位元數,具體可實現如下:
(1)上述緩衝區狀態可由緩衝區滿度表示,緩衝區滿度fullness可基於以下公式確定: fullness = (cur_total_bits – ((target_bpp << 1) × (cur_blocks – 1)) / available_buffer_size
其中,cur_total_bits表示當前消耗的位元數,target_bpp表示目標每像素位元數bpp,cur_blocks表示當前處理的圖像塊的塊數,available_buffer_size表示可用緩衝區的大小。
此外,在上述過程中,確定available_buffer_size時,若考慮到初始傳輸延遲功能的影響,則依據當前塊在視訊切片中所處位置的不同,該available_buffer_size也不同,如圖10所示:
視訊切片開始的delay_blks個塊,也即初始位置到第二位置,上述available_buffer_size可從delay_bits線性增加到max_buffer_size。增加的步長start_step為:start_step = (max_buffer_size – delay_bits) / delay_blks;其中,max_buffer_size表示最大的可用緩衝區大小,是一個預設固定值。
第二位置到閾值位置available_buffer_size保持不變,且恒等於max_buffer_size。
閾值位置到最終位置available_buffer_size從max_buffer_size線性下降到delay_bits。降低的步長end_step為:end_step = -(max_buffer_size – delay_bits) / (end_blks – thres_blks);其中,end_blks表示最終位置的塊數目,thres_blks表示閾值位置的塊數目。
其中,上述delay_blks的計算在計算品質比率已詳細說明,故在此不再贅述。
(2)在確定緩衝區滿度後,進一步確定用於限制目標位元數的上界與下界,具體可實現如下:
計算下界min_bits: min_bits=max((1.5–10*fullness)*bpp,0.9*bpp/max_lossless_bits*min(lossless_bits[blk_comp_level], max_lossless_bits)) min_rate = max(min_rate, bpp - (1 + sample_rate) * k - 2 * (fullness - 0.85)))
其中,k=Clip3(0,2.5, max_lossless_bits–lossless_bits[blk_comp_level]);max_lossless_bits是預設值,一種具體設置方式請見表2。
計算上界max_bits: bpp_offset = min(max_bpp_offset – k, 14.29 * (0.85 - fullness)) bpp_offset = min(bpp_offset, -8.46 * fullness + 8.76 - (1 + sample_rate) * k) max_bits = max(bpp + bpp_offset, min_rate) 其中,max_bpp_offset = 12–bpp < 4 ? 4 : 12–bpp
若考慮到初始傳輸延遲機制,則上述確定上下界的過程也需考慮初始傳輸延遲機制對緩衝區滿度fullness的影響。
(3)基於確定的上下界對初始目標位元數進行限制,得到當前塊的目標位元數,具體可實現為:target_bits = Clip3(min_bits, max_bits, target_bits)。
此外,若當前塊為待處理圖像的首行塊,因首行塊的參數預測難度較大,且預測誤差具有傳遞性。因此,在當前塊為首行塊時,可通過引入首行品質提升參數來對當前塊的品質進行提升,該過程主要通過調小首行塊的量化參數來實現。
具體地,在上述確定目標位元數的過程中,可實現如下: 若當前塊為首行塊,則將bpp增加2。
對於待處理圖像中的全部首行塊,bpp參數的調整可實現為:設首行的圖像塊bpp增加的量為bpp_delta_row,首行從第一個塊到最後一個塊,bpp_delta_row從2.5逐漸降低為0.5。
當前塊為首行塊時,在根據緩衝區狀態和塊級複雜度等級對初始目標位元數進行限定,以確定目標位元數的過程中,可通過以下方式提升當前塊的圖像品質:在根據buffer狀態和複雜度對目標位元數進行限制之後,若當前塊是slice首行塊且target_bits < 7,其中,7為預設經驗閾值,則增大target_bits,且增大後的target_bits必須在給定範圍內。具體實現可為:target_bits += Clip3(0, 2, 7 - target_bits)。
當前塊為首行塊時,還可通過以下公式確定上界來提升當前塊品質: max_bits = max(bpp + bpp_offset, min_rate), bpp_offset = max(bpp_offset, -1),其中,1是預設經驗參數。
可以理解的是,上述當前塊為首行塊時,通過首行品質提升參數提升當前塊的品質也可在滿足一定條件時才執行。例如,當前塊的複雜度等級較低時才進行首行品質提升。
此外,當前塊為待處理圖像的首列塊時,也可通過引入首列品質提升參數來對當前塊的品質進行提升,該過程主要通過調小首列塊的量化參數來實現。
若當前塊為首列塊,則將bpp增加2。
對於待處理圖像中的全部首列塊,bpp參數的調整可實現為:設首列的圖像塊bpp增加的量為bpp_delta_col,首行從第一個塊到最後一個塊,bpp_delta_col從2.5逐漸降低為0.5。
當前塊為首列塊時,在根據緩衝區狀態和塊級複雜度等級對初始目標位元數進行限定,以確定目標位元數的過程中,可通過以下方式提升當前塊的圖像品質:在根據buffer狀態和複雜度對目標位元數進行限制之後,若當前塊是slice首列塊且target_bits < 7,其中,7為預設經驗閾值,則增大target_bits,且增大後的target_bits必須在給定範圍內。具體實現可為:target_bits += Clip3(0, 2, 7 - target_bits)。
當前塊為首列塊時,還可通過以下公式確定上界來提升當前塊品質: max_bits = max(bpp + bpp_offset, min_rate),bpp_offset = max(bpp_offset, -1),其中,1是預設經驗參數。
可以理解的是,上述當前塊為首列塊時,通過首列品質提升參數提升當前塊的品質也可在滿足一定條件時才執行。例如,當前塊的複雜度等級較高時才進行首行品質提升。
步驟S704、確定當前塊的量化參數。
在該步驟中,上述確定當前塊的量化參數實現如下:
(1)計算參考量化參數ref_qp: ref_qp = (lossless_bits[blk_comp_level]–target_bits / (1+ sample_rate)) * p
其中,p的預設值為8。
(2)計算各分量量化參數,以待處理圖像為YUV圖像為例,該過程為計算YUV各通道的量化參數,具體可實現為:
計算偏移量:bias = bias_init * format_bias;其中,bias_init和format_bias為預設值,其中bias_init參見下表3,format_bias見上表1。
計算亮度通道量化參數:luma_qp= Clip3(0, luma_max_qp, ref_qp–sample_rate * bias)
計算色度通道量化參數:chroma_qp = Clip3(0, chroma_max_qp, ref_qp + bias)
其中bias_init請見表3,format_bias請見表2。
表3:
comp_level[0] 0
comp_level[1] 0 1 2 3 4
bias_init 3.0 3.0 3.5 4.0 4.5
comp_level[0] 1
comp_level[1] 0 1 2 3 4
bias_init 3.0 3.0 3.0 3.5 4.0
comp_level[0] 2
comp_level[1] 0 1 2 3 4
bias_init 2.0 3.0 3.0 3.0 3.5
comp_level[0] 3
comp_level[1]
bias_init 1.0 2.0 3.0 3.0 3.0
comp_level[0] 4
comp_level[1] 0 1 2 3 4
bias_init 0.0 1.0 2.0 3.0 3.0
在上表3中,comp_level[0]表示亮度分量,comp_level[1]表示色度分量。
此外,對於YUV420格式圖像,兩張YUV420可以拼成1張YUV444的圖像進行處理。此時,上述亮度分量複雜度等級可由兩者的加權值確定: comp_level[0] = m * y1_comp_level + (1 - m) * y2_comp_level,其中,0<=m<=1。
可以理解的是,上述亮度分量複雜度等級也可以取兩者的最大值或最小值,本申請對此不做特殊限定。
步驟S705、基於量化參數對當前塊進行視訊譯碼。
在一實施例中,視訊譯碼器基於當前塊的量化參數對當前塊進行譯碼,可以理解的是,在編碼過時,視訊編碼器可將當前塊的通道級複雜度等級編入碼流,或者將當前塊的量化參數編入碼流。相應地,解碼端獲取碼流中的通道級複雜度等級計算量化參數進行解碼,或者解碼端獲取碼流中的量化參數進行解碼。當然,視訊編碼器也可以將上述兩種訊息均編入碼流中。
此外,在確定量化參數的過程中,當前塊的各通道分量也可獨立確定上述同等級平均無損編碼位元數、平均無損編碼位元數及目標位元數等參數,則上述過程可實現如下:
確定當前塊各通道分量的同等級平均無損編碼位元數及平均無損編碼位元數,具體地:
(1)確定當前塊各通道分量的無損編碼位元數pred_lossless_bits[i]: pred_lossless_bits[i] = (cu_bits[i] / (width[i] x height[i]) + qp[i] / a[i]
當緩衝區過滿且為殘差跳過模式時,pred_lossless_bits[i]= bpc[i] + c[i];
其中,i為當前塊的通道數目,表示當前通道的實際編碼位元數;width和height分別表示當前通道編碼單元的寬和高,qp表示當前通道的量化參數。
(2)確定各通道分量的同等級平均無損編碼位元數:lossless_bits[i][comp_level[i]]: lossless_bits[i][comp_level[i]]=lossless_bits[i][comp_level[i]] * (1–d[i]) + pred_lossless_bits[i] * d[i]
其中,lossless_bits[i][comp_level[i]]為與當前通道同複雜度等級的已編碼通道的同等級平均無損編碼位元數,d[i]為更新率。
(3)確定平均無損編碼位元數avg_lossless_bits: avg_lossless_bits[i] = avg_lossless_bits[i] * (1 – e[i]) + pred_lossless_bits[i] * e[i]
確定當前塊各通道分量的目標位元數,可通過以下方式實現:
(1)確定品質比率quality_ratio:
實現方式1:確定當前塊的各通道分量的品質比率quality_ratio[i]:
quality_ratio[i] = bpp[i] / (ave_lossless_bits[i] – comp_offset[i])
實現方式2:quality_ratio的計算仍採用cu(Coding Unit,編碼單元)級別,計算過程同上述步驟S7031,但需將上述ave_lossless_bits[i]合併成cu級別變數。
(2)確定目標位元數target_bits:
實現方式1:target_bits[i]=quality_ratio[i] * (lossless_bits[i][comp_level[i]] - comp_offset[i])
其中,為了後續步驟(3),需要將target_bits和lossless_bits從cb級別(通道級別)合成cu級別。
實現方式2,對應步驟(1)裡面的實現方式2,此時,目標位元數target_bits的計算方式和上述步驟S703中相同,得到的target_bits已是cu級別變數。為了後續步驟(3),同樣需要將cb級別的lossless_bits[i]合併成cu級別。
(3)根據buffer狀態和複雜度對目標位元數進行限制,同上述步驟S703,此處不再贅述。
確定當前塊的各通道分量的量化參數,可實現如下:
實現方式1:確定各通道分量的量化參數: qp[i] = (lossless_bits[i][comp_level[i]] – target_bits[i]) * p[i]
若步驟(3)生效,即上限和下限起了限制作用,target_bits的值被修改為上限或下限,則按照步驟(1)至(2)求得的target_bits[i]的比例,重新分配target_bits得到新的target_bits[i];若target_bits未被步驟(3)修改,此時target_bits[i]的值不會發生變化。
實現方式2:若之前未對target_bits進行分離,此時根據複雜度等級分離target_bits。
實現方式3:該步驟之前的所有變數都為cu級別,此時根據複雜度對參考量化參數ref_qp進行分離,分離後得到的qp作為最終的亮度和色度qp。
在上述過程中,設需要拆分的cu變數為temp,則從cu級別變數拆分為cb級別的實現可以為:
temp[i] 位元 = temp * k[i],其中0<=k[i]<=1且∑k[i] = 1。
其中,k的值和複雜度相關,k的一種實現方式為k[i] = comp_level[i] / ∑comp_level[i];另一種實現方式為預設表格,表格索引值為複雜度等級。
此外,還需要將cb級別變數合成為cu級別變數,設需要合併的cu變數為temp[i],則合併過程具體為,
temp =位元 (temp[0] + temp[1] * sample_rate) / (1 + sample_rate)
在本申請的另一個具體實施例中,還可對上述視訊圖像解碼方法、編碼方法的碼控參數定點化,具體可通過如下過程實現:
S1:碼控初始化
在解碼每個視訊切片前初始化碼控參數:WarmUp,EndControlLine,EndControlBlocks,EndControlBegin,EndTargetFullness以及MaxBufferSize,具體可初始化如下:
WarmUp[0] = WarmUp[1] = WarmUp[2] = WarmUp[3] = WarmUp[4] = 4
ComplexityShift = 7
InfoRatioShift = 7
BppShift = 7
FullnessShift = 7
AvgComplexityShift = 14
ChromaSampleRateShift = 1
K1Shift = 10
K2 = 160
K2Shift = 4
K3 = 32
K3Shift = 4
K4 = 1083
K4Shift = 7
BiasShift = 7
DelayBits = (TargetBpp << 1) × TransmissionDelayCu
EndDecreaseBits = RcBufferSize – DelayBits + 3 × MuxWordSize
EndControlBlocks = (EndDecreaseBits + (1<< DecreaseStepLog2) – 1) >> DecreaseStepLog2
EndControlBegin = SliceWidthInCu × SliceHeightInCu – EndControlBlocks
EndTargetFullness = (DelayBits – (3 × MuxWordSize – 1)) × 3 / 4
RemainBlksLog2 = SliceCuNumMaxBit
MaxBufferSize = RcBufferSize
上述參數均為碼控初始化過程的中間參數,用於實現碼控參數的定點化。其中WarmUp[i](0<=i<=4)表示開始若干個塊更新率參數,用於更新同等級無損編碼位元數AdjComplexity;ComplexityShift表示複雜度相關運算定點化進行的移位元位數;InfoRatioShift表示品質比率相關運算定點化進行的移位元位數;BppShift表示bpp相關運算定點化進行的移位元位數;FullnessShift表示滿度相關運算定點化進行的移位元位數;AvgComplexityShift表示平均無損編碼位元數相關運算定點化進行的移位元位數;ChromaSampleRateShift表示取樣速率相關運算定點化進行的移位元位數;K1Shift表示k1(見表4)相關運算定點化進行的移位元位數;K2Shift表示k2相關運算定點化進行的移位元位數;K3Shift表示k3相關運算定點化進行的移位元位數;K4Shift表示k4相關運算定點化進行的移位元位數;BiasShift表示Bias相關運算定點化進行的移位元位數;K2,K3,K4為碼控演算法中用到的固定經驗值;DelayBits表示延遲位元數;TargetBpp表示目標bpp,由外部配置;TransmissionDelayCu表示初始傳輸延遲的cu個數;EndDecreaseBits表示由於初始延遲功能slice結尾需要減少的位元數;RcBufferSize表示碼控所認為的緩衝區大小;MuxWordSize表示子流並行功能所需的頭訊息所占位元數;EndControlBlocks表示由於初始傳輸延遲slice結尾需要對緩衝區最大值操作的塊的數目;DecreaseStepLog2表示規定碼率控制模組使用的MaxBufferSize在slice結尾每個控制塊下降的步長的對數值,其值在碼流頭中;EndControlBegin表示slice結尾開始進行控制的塊的索引;SliceWidthInCu表示slice寬度中有多少個cu的寬度;SliceHeightInCu表示slice高度中有多少個cu的高度;EndTargetFullness表示slice結尾的目標滿度;RemainBlksLog2表示一個條帶中編碼單元總數量的二進位最高位元數;MaxBufferSize表示緩衝區的最大值。
根據BitDepth[0](表示Y通道的bpc),ImageFormat查表1得到AdjComplexity(同等級無損編碼位元數),AvgComplexity(平均無損編碼位元數),ComplexityOffset(複雜度計算的偏置值),MaxComp(最大無損編碼位元數)以及K1(經驗值)的初始化值。
表4:
BitDepth[0] 8bit 10bit 12bit 14bit 16bit
ImageFormat RGB444 其他 RGB444 其他 RGB444 其他 RGB444 其他 RGB444 其他
AdjComplexity[0] 64 0 192 128 256 192 320 256 320 320
AdjComplexity[1] 166 102 320 256 410 346 499 435 525 525
AdjComplexity[2] 269 205 448 384 563 499 678 614 730 730
AdjComplexity[3] 371 307 576 512 717 653 858 794 934 934
AdjComplexity[4] 574 510 704 640 870 806 1037 973 1139 1139
AvgComplexity 704 640 896 832 1024 960 1152 1088 1216 1216
ComplexityOffset 64 0 320 256 448 384 640 576 768 768
MaxComp 1050 922 1152 1088 1280 1216 1536 1472 1728 1728
K1 112 128 102 108 92 97 77 80 68 68
上表4表示AdjComplexity,AvgComplexity,ComplexityOffset,MaxComp以及K1與BitDepth[0],ImageFormat的對應關係
根據ImageFormat(圖像格式)可從下表5得到ChromaSampleRate(取樣速率),InvElem(去除和取樣速率有關除法需要的乘數),InvElemShift(去除和取樣速率有關除法需要的移位元數值)以及FormatBias(不同圖像格式對於qp的偏置值)的初始化值。
表5:
ImageFormat YUV400 YUV420 YUV422 RGB444 YUV444
ChromaSampleRate 0 1 2 4 4
InvElem 1 85 1 85 85
InvElemShift 0 7 1 8 8
FormatBias 0 114 85 128 57
上述表5表示 ChromaSampleRate,InvElem,InvElemShift以及FormatBias與ImageFormat的對應關係。
S2:確定量化參數,該步驟可實現如下:
S21:根據當前編碼單元的亮度複雜度等級ComplexityLevel[0]與色度複雜度等級ComplexityLevel[1]計算編碼單元的量化參數MasterQp。
S22:根據MasterQp計算當前編碼單元亮度編碼塊和色度編碼塊的量化參數Qp[0]和Qp[1]。
其中,上述根據當前編碼單元的亮度複雜度等級ComplexityLevel[0]與色度複雜度等級ComplexityLevel[1]計算編碼單元的量化參數MasterQp可實現如下:
bppAdj = (EndTargetFullness – (BitsRecord – ((TargetBpp << 1) × (CurrBlocks – 1)))) << BppShift
bppAdj = bppAdj >= 0 ? bppAdj >> (5 + RemainBlksLog2) : -((-bppAdj) >> (5 + RemainBlksLog2))
bppAdj = Clip3((-(4 << BppShift)), (12 << BppShift), bppAdj)
bpp = (bpp << BppShift >> 4) + bppAdj
maxComp = (MaxComp <<- ComplexityShift) >> 7
complexityOffset = (ComplexityOffset << ComplexityShift) >> 7
shiftCur = RcBufferSizeMaxBit – 5
tmp = (MaxBufferSize + (1 << shiftCur >> 1)) >> shiftCur
tmp = (BitsRecord – (TargetBpp << 1) × (CurrBlocks – 1)) × InverseTable[tmp – 1]
shiftCur = shiftCur + 10
fullness = (tmp + (1 << (shiftCur - FullnessShift – 1))) >> (shiftCur – FullnessShift)
complexityOffset = complexityOffset + ((341 << ComplexityShift) >> 7) – (((43 × bpp) >> 7) << ComplexityShift >> BppShift)
complexityOffset = max(complexityOffset, 0)
tmp = (AvgComplexity >> (AvgComplexity - ComplexityShift)) – complexityOffset
tmp = tmp >> (ComplexityShift – 2)
tmp = Clip3 (1, 32, (tmp + 1) >> 1)
infoRatio = bpp × InverseTable[tmp – 1]
shiftCur = BppShift + 9 – InfoRatioShift
infoRatio = (infoRatio + (1 << shiftCur >> 1)) >> shiftCur
if(ImageFormat == YUV444 || ImageFormat == RGB444){
infoRatio = Clip3(0, ((77 × (2 + ChromaSampleRate)) << InfoRatioShift) >> 7 >> ChromaSampleRateShift), infoRatio)
}
CuComplexityLevel = ((ComplexityLevel[0] + ComplexityLevel[1] × ChromaSampleRate) × InvElem + ((1 << InvElemShift) >> 1)) >> InvElemShift
B = AdjComplexity[CuComplexityLevel]
relativeComplexity = Clip3(0, ((320 << ComplexityShift) >> 7), maxComp – B)
minRate1 = (K1 × bpp + ((1 << K1Shift) >> 1)) >> K1Shift
minRate1 = (minRate1 × Min(maxComp, B) + ((1 << BppShift) >> 1)) >> BppShift
minRate2 = K2 × fullness
shiftCur = K2Shift + FullnessShift
minRate2 = ((minRate2 << 7) + ((1 << shiftCur) >> 1)) >> shiftCur
minRate2 = (192 – minRate2) × bpp
shiftCur = 7 + BppShift
minRate2 = (((minRate2 << ComplexityShift) + ((1 << shiftCur) >> 1)) >> shiftCur)
minRate3 = fullness – (109 << FullnessShift >> 7)
minRate3 = (minRate3 × K3 + ((1 << K3Shift) >> 1)) >> K3Shift
minRate3 = ((minRate3 << ComplexityShift) + ((1 << FullnessShift) >> 1)) >> FullnessShift
minRate3 = (((bpp << ComplexityShift) + ((1 << BppShift) >> 1)) >> BppShift) – minRate3
minRate3 = minRate3 – (relativeComplexity × ((1 << ChromaSampleRateShift) + ChromaSampleRate)) >> ChromaSampleRateShift
minRate = Max(minRate1, minRate2)
minRate = Max(minRate, minRate3)
bppOffset1 = K4 × fullness
shiftCur = K4Shift + FullnessShift
bppOffset1 = ((bppOffset1 << ComplexityShift) + ((1 << shiftCur) >> 1)) >> shiftCur
bppOffset1 = ((1121 << ComplexityShift) >> 7) – bppOffset1
tmp = ((1 << ChromaSampleRateShift) + ChromaSampleRate) × relativeComplexity
tmp = (tmp + ((1 << ChromaSampleRateShift) >> 1)) >> ChromaSampleRateShift
bppOffset1 = bppOffset1 – tmp
tmp = Max((12 << BppShift) – bpp, (4 << BppShift))
maxBppOffset = (tmp << ComplexityShift) >> BppShift
bppOffset2 = maxBppOffset – relativeComplexity
bppOffset3 = ((1554 << ComplexityShift) >> 7)
tmp = 457 × fullness
shiftCur = 5 + FullnessShift
tmp = ((tmp << ComplexityShift) + ((1 << shiftCur) >> 1)) >> shiftCur
bppOffset3 = bppOffset3 – tmp
bppOffset = Min(bppOffset1, bppOffset2)
bppOffset = Min(bppOffset, bppOffset3)
maxRate = Max (((bpp << ComplexityShift) >> BppShift) + bppOffset, minRate)
targetRate = infoRatio × Max(0, B – complexityOffset)
targetRate = (targetRate + ((1 << InfoRatioShift) >> 1)) >> InfoRatioShift
targetRate = Clip3(minRate, maxRate, targetRate)
tmp = (targetRate × InvElem + ((1 << InvElemShift) >> 1)) >> InvElemShift
MasterQp = (B – tmp) << 3
其中,bppAdj表示bpp的調整值;BitsRecord表示目前已譯碼的總位元數;CurrBlocks表示當前已譯碼的塊數目;maxComp表示MaxComp進行碼控定點化需要進行變換值;complexityOffset表示ComplexityOffset進行碼控定點化需要進行變換值;RcBufferSizeMaxBit表示碼流緩存大小。RcBufferSize的值等於rc_buffer_size的值,RcBufferSizeMaxBit的值表示RcBufferSize的二進位的最高位元數;shiftCur表示當前的移位數值;tmp表示進行碼控定點化過程中產生的中間變數;fullness表示滿度;infoRatio表示品質比率;relativeComplexity表示相對無損編碼位元數;minRate1和minRate2和minRate13表示計算minRate的中間變數;minRate表示targetRate的下限;targetRate表示目標位元數;bppOffset1和bppOffset2和bppOffset3計算bppOffset的中間變數;bppOffset表示bpp的偏置值;maxRate表示targetRate的上限;InverseTable是一個預設表格其的定義為:InverseTable = { 1024, 512, 341, 256, 205, 171, 146, 128, 114, 102, 93, 85, 79, 73, 68, 64, 60, 57, 54, 51, 49, 47, 45, 43, 41, 39, 38, 37, 35, 34, 33, 32 }。
上述根據MasterQp計算當前編碼單元亮度編碼塊和色度編碼塊的量化參數Qp[0]和Qp[1]可實現如下:
根據前編碼單元的亮度複雜度等級ComplexityLevel[0]與色度複雜度等級ComplexityLevel[1]從下查表6中得到BiasInit;
表6:BiasInit的定義
ComplexityLevel[0] 0
ComplexityLevel[1] 0 1 2 3 4
BiasInit 6 6 7 8 9
ComplexityLevel[0] 1
ComplexityLevel[1] 0 1 2 3 4
BiasInit 6 6 6 7 8
ComplexityLevel[0] 2
ComplexityLevel[1] 0 1 2 3 4
BiasInit 4 6 6 6 7
ComplexityLevel[0] 3
ComplexityLevel[1]
BiasInit 2 4 6 6 6
ComplexityLevel[0] 4
ComplexityLevel[1] 0 1 2 3 4
BiasInit 0 2 4 6 6
計算亮度量化參數Qp[0]以及色度量化參數Qp[1],Qp[2]可具體實現如下:
Bias = (BiasInit × FormatBias) >> (8 – BiasShift)
tmp = ChromaSampleRate × Bias
shiftCur = ChromaSampleRateShift + BiasShift
tmp = ((tmp << ComplexityShift) + ((1 << shiftCur) >> 1)) >> shiftCur
Qp[0] = Clip3(0, MaxQp[0], (MasterQp – tmp) >> ComplexityShift)
tmp = (Bias << ComplexityShift) >> BiasShift
Qp[1] = Clip3(0, MaxQp[1], (MasterQp + tmp) >> ComplexityShift)
Qp[2] = Qp[1]
S3:碼控參數更新
輸入當前編碼單元的實際位元數CuBits、亮度量化參數Qp[0]、色度量化參數Qp[1]和當前編碼單元複雜度CuComplexityLevel,根據實際編碼開銷和量化參數計算當前塊的實際無損編碼位元數compCur,可實現如下:
CuBitsAccum = CuBitsAccum + CuBits
SSHeaderNum = CuBitsAccum / 510
CuBitsAccum = CuBitsAccum % 510
CuBits = CuBits + (SSHeaderNum << 1)    /* 考慮子流索引的位元數 */
rateCur = (CuBits << ComplexityShift) >> 5
compCur = rateCur + ((Qp[0] << ComplexityShift) >> 3 + ((ChromaSampleRate × Qp[1]) << ComplexityShift) >> 3) >> ChromaSampleRateShift)
compCur = (compCur × InvElem + ((1 << InvElemShift) >> 1)) >> InvElemShift
根據當前塊的實際無損編碼位元數compCur更新碼控參數AvgComplexity,AdjComplexity,可實現如下:
AvgComplexity = AvgComplexity × 1014 + (compCur << AvgComplexityShift >>ComplexityShift) × 10
AvgComplexity = (AvgComplexity + 512) >> 10
updateRate = WarmUp[CuComplexityLevel] + 2
WarmUp[CuComplexityLevel] = WarmUp[CuComplexityLevel] > 0 ? WarmUp[CuComplexityLevel] – 1 : 0
AdjComplexity[CuComplexityLevel] = (AdjComplexity[CuComplexityLevel] × (8 – updateRate) + compCur × updateRate + 4) >> 3
更新碼控參數MaxBufferSize,可實現如下:
if (CurrBlocks >= EndControlBegin){
MaxBufferSize = MaxBufferSize – (1 << DecreaseStepLog2)
RemainBlksLog2 = (RemainBlksLog2 > 4 && !((SliceWidthInCu × SliceHeightInCu – CurrBlocks) & (1 << RemainBlksLog2))) ? RemainBlksLog2 – 1 : RemainBlksLog2
}
需要說明的是,上述方案中未進行特殊說明的方案,均可在解碼側或編碼側進行。
需要說明的是,在不衝突的情況下是,上文中任意多個實施例中的部分或全部內容可以構成新的實施例。
本申請實施例提供一種視訊譯碼裝置,該視訊譯碼裝置可以為視訊譯碼器或視訊編碼器或視訊解碼器。具體的,視訊譯碼裝置用於執行以上視訊圖像解碼方法、編碼方法中的視訊譯解碼器所執行的步驟。本申請實施例提供的視訊譯碼裝置可以包括相應步驟所對應的模組。
本申請實施例可以根據上述方法示例對視訊譯碼裝置進行功能模組的劃分,例如,可以對應各個功能劃分各個功能模組,也可以將兩個或兩個以上的功能集成在一個處理模組中。上述集成的模組既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。本申請實施例中對模組的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式。
在採用對應各個功能劃分各個功能模組的情況下,圖11示出上述實施例中所涉及的視訊譯碼裝置的一種可能的結構示意圖。如圖11所示,視訊譯碼裝置1100包括複雜度等級確定模組1101、碼控參數確定模組1102、量化參數確定模組1103及譯碼模組1104。
複雜度等級確定模組1101,用於獲取待處理圖像中當前塊的至少兩個通道級複雜度等級,根據至少兩個通道級複雜度等級確定當前塊的塊級複雜度等級;上述通道級複雜度等級用於表徵當前塊的通道級紋理的複雜程度。
碼控參數確定模組1102,用於根據碼控參數確定當前塊的目標位元數,上述碼控參數包括當前塊的塊級複雜度等級。
量化參數確定模組1103,用於基於目標位元數確定當前塊的量化參數。
譯碼模組1104,用於基於量化參數對當前塊進行譯碼。
在一種示例中,上述碼控參數包括同等級平均無損編碼位元數、平均無損編碼位元數以及碼流緩衝區滿度;上述碼控參數確定模組具體用於:確定同等級平均無損編碼位元數及平均無損編碼位元數;基於同等級平均無損編碼位元數及平均無損編碼位元數確定初始目標位元數;基於碼流緩衝區滿度,當前塊的塊級複雜度等級以及初始目標位元數確定當前塊的目標位元數;其中,上述同等級平均無損編碼位元數為當前塊與多個已譯碼圖像塊無損編碼時所需位元數預測值的平均值,且上述多個已譯碼圖像塊與當前塊的複雜度等級相同;平均無損編碼位元數為當前塊與所有已譯碼圖像塊無損編碼時所需的位元數預測值的平均值;碼流緩衝區滿度用於表徵緩衝區的滿度,上述緩衝區用於存儲待處理圖像的碼流。
在一種示例中,上述碼控參數確定模組具體用於確定同等級平均無損編碼位元數及平均無損編碼位元數:確定當前塊的無損編碼位元數,無損編碼位元數為當前塊無損編碼時所需位元數的預測值;依據當前塊的無損編碼位元數以及多個歷史同等級平均無損編碼位元數更新當前塊的同等級平均無損編碼位元數;歷史同等級平均無損編碼位元數為與當前塊塊複雜度等級相同的已譯碼圖像塊的同等級平均無損位元數;依據當前塊的無損編碼位元數以及全部歷史平均無損編碼位元數更新當前塊的平均無損編碼位元數;歷史平均無損編碼位元數為已譯碼圖像塊的平均無損位元數。
在一種可能的實現方式中,上述當前塊為待處理圖像的首行塊,上述碼控參數包括首行品質提升參數;上述碼控參數確定模組具體用於根據碼控參數確定當前塊的目標位元數還包括:依據首行品質提升參數調整當前塊的目標位元數,以調小當前塊的量化參數。
在一種可能的實現方式中,上述當前塊為待處理圖像的首列塊,上述碼控參數包括首列品質提升參數;上述碼控參數確定模組具體用於根據碼控參數確定當前塊的目標位元數還包括:依據首行品質提升參數調整當前塊的目標位元數,以調小當前塊的量化參數。
在一種示例中,上述複雜度等級確定模組具體用於:獲取待處理圖像中當前塊的至少兩個通道級複雜度等級,在編碼端,獲取當前塊的通道級紋理訊息,並基於通道級紋理訊息確定當前塊的通道級複雜度等級;或者在解碼端,從碼流中獲取通道級複雜度等級,上述碼流為當前塊的編碼碼流。
在一種示例中,上述複雜度等級確定模組具體用於從碼流中獲取通道級複雜度等級:從碼流中獲取當前塊的複雜度訊息位,該複雜度訊息位用於表示當前塊的通道級複雜度等級;依據複雜度訊息位確定通道級複雜度等級。
在一種示例中,上述複雜度等級確定模組具體用於獲取當前塊的通道級紋理訊息,並基於通道級紋理訊息確定當前塊的通道級複雜度等級:以當前塊中至少一個通道圖像塊為處理單元,將處理單元劃分為至少兩個子單元,並確定各子單元的紋理訊息;在處理單元中,基於各子單元的紋理訊息確定當前塊的塊級複雜度等級。
在一種示例中,上述複雜度等級確定模組具體用於確定各子單元的紋理訊息:獲取子單元的原始像素值、子單元的左側相鄰列的原始像素值或重建值,以及子單元的上方相鄰行的重建值,並對應計算子單元的水平紋理訊息及垂直紋理訊息;在水平紋理訊息及垂直紋理訊息中選擇最小值作為對應子單元的紋理訊息。
在一種示例中,上述複雜度等級確定模組具體用於在處理單元中,基於各子單元的紋理訊息確定當前塊的塊級複雜度等級:在處理單元中,基於多個閾值將各子單元的紋理訊息劃分至對應的子單元複雜度等級,上述多個閾值是預先設定的;基於各子單元複雜度等級確定當前塊的塊複雜度等級。
在一種示例中,上述複雜度等級確定模組具體用於基於各子單元複雜度等級確定當前塊的塊複雜度等級:依據預設規則將各子單元複雜度等級映射為對應的通道級複雜度等級;基於各通道級複雜度等級確定當前塊的塊級複雜度等級。
在一種示例中,上述複雜度等級確定模組具體用於依據預設規則將各子單元複雜度等級映射為對應的通道級複雜度等級:基於多個閾值以及各子單元複雜度等級之和確定通道級複雜度等級,上述多個閾值是預先設定的。
在一種示例中,上述複雜度等級確定模組具體用於依據預設規則將各子單元複雜度等級映射為對應的通道級複雜度等級:確定子單元複雜度等級的級別構成,並依據級別構成確定對應的通道級複雜度等級。
在一種示例中,上述複雜度等級確定模組具體用於基於各通道級複雜度等級確定當前塊的塊級複雜度等級:取各通道級複雜度等級的最大值、最小值或加權值作為當前塊的塊級複雜度等級;或者基於多個閾值以及各通道級複雜度等級之和確定當前塊的塊級複雜度等級,上述多個閾值是預先設定的。
其中,上述方法實施例涉及的各步驟的所有相關內容均可以援引到對應功能模組的功能描述,在此不再贅述。
當然,本申請實施例提供的視訊譯碼裝置包括但不限於上述模組,例如:視訊譯碼裝置還可以包括存儲模組。
存儲模組可以用於存儲該視訊譯碼裝置的程式碼和數據。
本申請實施例還提供了一種電子設備,該電子設備包括上述視訊譯碼裝置1100,該視訊譯碼裝置1100執行上文提供的任意一種視訊譯碼器所執行的方法。
本申請實施例還提供了一種電腦可讀存儲介質,該電腦可讀存儲介質上存儲有電腦程式,當該電腦程式在電腦上運行時,使得該電腦執行上文提供的任意一種視訊解碼器所執行的方法。
關於上述提供的任一種電腦可讀存儲介質中相關內容的解釋及有益效果的描述,均可以參考上述對應的實施例,此處不再贅述。
本申請實施例還提供了一種晶片。該晶片中集成了用於實現上述視訊譯碼裝置100的功能的控制電路和一個或者多個埠。可選的,該晶片支援的功能可以參考上文,此處不再贅述。本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可通過程式來指令相關的硬體完成。所述的程式可以存儲於一種電腦可讀存儲介質中。上述提到的存儲介質可以是唯讀記憶體,隨機接入記憶體等。上述處理單元或處理器可以是中央處理器,通用處理器、特定積體電路(application specific integrated circuit,ASIC)、微處理器(digital signal processor,DSP),現場可程式設計閘陣列(field programmable gate array,FPGA)或者其他可程式設計邏輯器件、電晶體邏輯器件、硬體部件或者其任意組合。
本申請實施例還提供了一種包含指令的電腦程式產品,當該指令在電腦上運行時,使得電腦執行上述實施例中的任意一種方法。該電腦程式產品包括一個或多個電腦指令。在電腦上載入和執行電腦程式指令時,全部或部分地產生按照本申請實施例的流程或功能。電腦可以是通用電腦、專用電腦、電腦網路、或者其他可程式設計裝置。電腦指令可以存儲在電腦可讀存儲介質中,或者從一個電腦可讀存儲介質向另一個電腦可讀存儲介質傳輸,例如,電腦指令可以從一個網站站點、電腦、伺服器或者數據中心通過有線(例如同軸電纜、光纖、數位用戶線路(digital subscriber line,DSL))或無線(例如紅外、無線、微波等)方式向另一個網站站點、電腦、伺服器或數據中心進行傳輸。電腦可讀存儲介質可以是電腦能夠存取的任何可用介質或者是包含一個或多個可以用介質集成的伺服器、數據中心等數據存放裝置。可用介質可以是磁性介質(例如,軟碟、硬碟、磁帶),光介質(例如,DVD)、或者半導體介質(例如SSD)等。
應注意,本申請實施例提供的上述用於存儲電腦指令或者電腦程式的器件,例如但不限於,上述記憶體、電腦可讀存儲介質和通信晶片等,均具有非揮發性(non-transitory)。
在上述實施例中,可以全部或部分地通過軟體、硬體、固件或者其任意組合來實現。當使用軟體程式實現時,可以全部或部分地以電腦程式產品的形式來實現。該電腦程式產品包括一個或多個電腦指令。在電腦上載入和執行電腦程式指令時,全部或部分地產生按照本申請實施例的流程或功能。電腦可以是通用電腦、專用電腦、電腦網路、或者其他可程式設計裝置。電腦指令可以存儲在電腦可讀存儲介質中,或者從一個電腦可讀存儲介質向另一個電腦可讀存儲介質傳輸,例如,電腦指令可以從一個網站站點、電腦、伺服器或者數據中心通過有線(例如同軸電纜、光纖、數位用戶線路(digital subscriber line,DSL))或無線(例如紅外、無線、微波等)方式向另一個網站站點、電腦、伺服器或數據中心進行傳輸。電腦可讀存儲介質可以是電腦能夠存取的任何可用介質或者是包含一個或多個可以用介質集成的伺服器、數據中心等數據存放裝置。可用介質可以是磁性介質(例如,軟碟、硬碟、磁帶),光介質(例如,DVD)、或者半導體介質(例如固態硬碟(solid state disk,SSD))等。
儘管在此結合各實施例對本申請進行了描述,然而,在實施所要求保護的本申請過程中,本領域技術人員通過查看附圖、公開內容、以及所附申請專利範圍,可理解並實現公開實施例的其他變化。在請求項中,“包括”(comprising)一詞不排除其他組成部分或步驟,“一”或“一個”不排除多個的情況。單個處理器或其他單元可以實現請求項中列舉的若干項功能。相互不同的附屬項中記載了某些措施,但這並不表示這些措施不能組合起來產生良好的效果。
儘管結合具體特徵及其實施例對本申請進行了描述,顯而易見的,在不脫離本申請的精神和範圍的情況下,可對其進行各種修改和組合。相應地,本說明書和附圖僅僅是所附申請專利範圍所界定的本申請的示例性說明,且視為已覆蓋本申請範圍內的任意和所有修改、變化、組合或等同物。顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和範圍。這樣,倘若本申請的這些修改和變型屬於本申請的請求項及其等同技術的範圍之內,則本申請也意圖包含這些改動和變型在內。
1:並行編碼單元 2:並行編碼單元 10:源裝置 101:視訊源 102:視訊編碼器 103:輸出介面 11:目的裝置 111:顯示裝置 112:視訊解碼器 113:輸入介面 12:鏈路 13:存儲裝置 20:預處理模組 201:求和器 202:求和器 21:預測模組 22:變換模組 23:量化模組 24:熵編碼模組 25:反量化模組 26:反變換模組 27:參考圖像記憶體 30:熵解碼模組 301:求和器 31:預測模組 32:反量化模組 33:反變換模組 34:參考圖像記憶體 50:編解碼裝置 501:處理器 502:記憶體 503:通信介面 504:匯流排 S601~S604,S701~S705,S801~S802:步驟 1100:視訊解碼裝置 1101:複雜度等級確定模組 1102:碼控參數確定模組 1103:量化參數確定模組 1104:解碼模組
圖1為本申請實施例提供的編解碼系統的系統架構圖; 圖2為本申請實施例提供的視訊編碼器的結構示意圖; 圖3為本申請實施例提供的視訊解碼器的結構示意圖; 圖4為本申請實施例提供的一種視訊解碼的流程示意圖; 圖5為本申請實施例提供的視訊解碼器結構示意圖; 圖6為本申請實施例提供的一種視訊圖像解碼方法、編碼方法的流程圖; 圖7為本申請實施例提供的一種視訊圖像解碼方法、編碼方法的具體實施例的流程圖; 圖8為本申請實施例提供的一種視訊圖像解碼方法、編碼方法確定塊級複雜度等級的流程圖; 圖9為本申請實施例提供的一種視訊圖像解碼方法、編碼方法的具體實施例的子塊紋理資訊示意圖; 圖10為本申請實施例提供的一種視訊圖像解碼方法、編碼方法中初始延遲傳輸機制的示意圖; 圖11為本申請實施例提供的一種視訊譯碼裝置的示意圖。
S601~S604:步驟

Claims (24)

  1. 一種視訊圖像解碼方法,包括: 從碼流中獲取通道級複雜度等級,所述碼流為當前塊的編碼碼流,根據至少兩個通道級複雜度等級確定所述當前塊的塊級複雜度等級;所述通道級複雜度等級用於表徵所述當前塊的通道級紋理的複雜程度; 根據碼控參數確定所述當前塊的目標位元數,所述碼控參數包括所述當前塊的所述塊級複雜度等級; 基於所述目標位元數確定所述當前塊的量化參數; 基於所述量化參數對所述當前塊進行解碼。
  2. 如請求項1所述的視訊圖像解碼方法,其中,所述碼控參數包括同等級平均無損編碼位元數、平均無損編碼位元數以及碼流緩衝區滿度; 所述根據碼控參數確定所述當前塊的目標位元數,包括: 確定所述同等級平均無損編碼位元數及所述平均無損編碼位元數; 基於所述同等級平均無損編碼位元數及所述平均無損編碼位元數確定初始目標位元數; 基於所述碼流緩衝區滿度,所述當前塊的所述塊級複雜度等級以及所述初始目標位元數確定所述當前塊的目標位元數; 其中,所述同等級平均無損編碼位元數為所述當前塊與多個已譯碼圖像塊無損編碼時所需位元數預測值的平均值,且所述多個已譯碼圖像塊與所述當前塊的複雜度等級相同;所述平均無損編碼位元數為所述當前塊與所有已譯碼圖像塊無損編碼時所需的位元數預測值的平均值;所述碼流緩衝區滿度用於表徵緩衝區的滿度,所述緩衝區用於存儲待處理圖像的碼流。
  3. 如請求項2所述的視訊圖像解碼方法,其中,所述確定所述同等級平均無損編碼位元數及所述平均無損編碼位元數,包括: 確定所述當前塊的無損編碼位元數,所述無損編碼位元數為所述當前塊無損編碼時所需位元數的預測值; 依據所述當前塊的所述無損編碼位元數以及多個歷史同等級平均無損編碼位元數更新所述當前塊的所述同等級平均無損編碼位元數;所述歷史同等級平均無損編碼位元數為與所述當前塊塊複雜度等級相同的已譯碼圖像塊的同等級平均無損位元數; 依據所述當前塊的所述無損編碼位元數以及全部歷史平均無損編碼位元數更新所述當前塊的所述平均無損編碼位元數;所述歷史平均無損編碼位元數為已譯碼圖像塊的平均無損位元數。
  4. 如請求項1至3任一項所述的視訊圖像解碼方法,其中,所述當前塊為待處理圖像的首行塊,所述碼控參數包括首行品質提升參數; 在所述根據碼控參數確定所述當前塊的目標位元數時,所述方法還包括: 依據所述首行品質提升參數調整所述當前塊的所述目標位元數,以調小所述當前塊的量化參數。
  5. 如請求項1至3任一項所述的視訊圖像解碼方法,其中,所述當前塊為待處理圖像的首列塊,所述碼控參數包括首列品質提升參數; 在所述根據碼控參數確定所述當前塊的目標位元數時,所述方法還包括: 依據所述首列品質提升參數調整所述當前塊的所述目標位元數,以調小所述當前塊的量化參數。
  6. 如請求項1至5任一項所述的視訊圖像解碼方法,其中,所述從碼流中獲取通道級複雜度等級包括: 從碼流中獲取當前塊的複雜度訊息位,所述複雜度訊息位用於表示所述當前塊的通道級複雜度等級;依據所述複雜度訊息位確定所述通道級複雜度等級。
  7. 如請求項6所述的視訊圖像解碼方法,其中,所述複雜度訊息位的第一位用於表示當前通道級複雜度等級與當前塊的前一個圖像塊的相同通道複雜度等級是否相同以及兩者之間的變化值;若相同,則複雜度訊息位為1位元;若不同,則複雜度訊息位為3位元。
  8. 一種視訊圖像編碼方法,包括: 獲取當前塊的通道級紋理資訊,並基於所述通道級紋理資訊確定所述當前塊的通道級複雜度等級,根據至少兩個通道級複雜度等級確定所述當前塊的塊級複雜度等級;所述通道級複雜度等級用於表徵所述當前塊的通道級紋理的複雜程度; 根據碼控參數確定所述當前塊的目標位元數,所述碼控參數包括所述當前塊的所述塊級複雜度等級; 基於所述目標位元數確定所述當前塊的量化參數; 基於所述量化參數對所述當前塊進行編碼。
  9. 如請求項8所述的視訊圖像編碼方法,其中,所述獲取所述當前塊的通道級紋理資訊,並基於所述通道級紋理資訊確定所述當前塊的所述通道級複雜度等級,包括: 以所述當前塊中至少一個通道圖像塊為處理單元,將所述處理單元劃分為至少兩個子單元,並確定各所述子單元的紋理資訊; 在所述處理單元中,基於各所述子單元的紋理資訊確定所述當前塊的所述塊級複雜度等級。
  10. 如請求項9所述的視訊圖像編碼方法,其中,所述確定各所述子單元的紋理資訊,包括: 獲取所述子單元的原始圖元值、所述子單元的左側相鄰列的原始圖元值或重建值,以及所述子單元的上方相鄰行的重建值,並對應計算所述子單元的水平紋理資訊及垂直紋理資訊; 在所述水平紋理資訊及所述垂直紋理資訊中選擇最小值作為對應的所述子單元的所述紋理資訊。
  11. 如請求項9所述的視訊圖像編碼方法,其中,所述在所述處理單元中,基於各所述子單元的紋理資訊確定所述當前塊的塊級複雜度等級,包括: 在所述處理單元中,基於多個閾值將各所述子單元的紋理資訊劃分至對應的子單元複雜度等級,所述多個閾值是預先設定的; 基於各所述子單元複雜度等級確定所述當前塊的所述塊級複雜度等級。
  12. 如請求項11所述的視訊圖像編碼方法,其中,所述基於各所述子單元複雜度等級確定所述當前塊的塊複雜度等級,包括: 依據預設規則將各所述子單元複雜度等級映射為對應的所述通道級複雜度等級; 基於各所述通道級複雜度等級確定所述當前塊的所述塊級複雜度等級。
  13. 如請求項12所述的視訊圖像編碼方法,其中,所述依據預設規則將各所述子單元複雜度等級映射為對應的所述通道級複雜度等級,包括: 基於多個閾值以及各所述子單元複雜度等級之和確定通道級複雜度等級,所述多個閾值是預先設定的。
  14. 如請求項12所述的視訊圖像編碼方法,其中,所述依據預設規則將各所述子單元複雜度等級映射為對應的所述通道級複雜度等級,包括: 確定所述子單元複雜度等級的級別構成,並依據所述級別構成確定對應的所述通道級複雜度等級。
  15. 如請求項8所述的視訊圖像編碼方法,其中,所述碼控參數包括同等級平均無損編碼位元數、平均無損編碼位元數以及碼流緩衝區滿度; 所述根據碼控參數確定所述當前塊的目標位元數,包括: 確定所述同等級平均無損編碼位元數及所述平均無損編碼位元數; 基於所述同等級平均無損編碼位元數及所述平均無損編碼位元數確定初始目標位元數; 基於所述碼流緩衝區滿度,所述當前塊的所述塊級複雜度等級以及所述初始目標位元數確定所述當前塊的目標位元數; 其中,所述同等級平均無損編碼位元數為所述當前塊與多個已譯碼圖像塊無損編碼時所需位元數預測值的平均值,且所述多個已譯碼圖像塊與所述當前塊的複雜度等級相同;所述平均無損編碼位元數為所述當前塊與所有已譯碼圖像塊無損編碼時所需的位元數預測值的平均值;所述碼流緩衝區滿度用於表徵緩衝區的滿度,所述緩衝區用於存儲所述待處理圖像的碼流。
  16. 如請求項15所述的視訊圖像編碼方法,其中,所述確定所述同等級平均無損編碼位元數及所述平均無損編碼位元數,包括: 確定所述當前塊的無損編碼位元數,所述無損編碼位元數為所述當前塊無損編碼時所需位元數的預測值; 依據所述當前塊的所述無損編碼位元數以及多個歷史同等級平均無損編碼位元數更新所述當前塊的所述同等級平均無損編碼位元數;所述歷史同等級平均無損編碼位元數為與所述當前塊塊複雜度等級相同的已譯碼圖像塊的同等級平均無損位元數; 依據所述當前塊的所述無損編碼位元數以及全部歷史平均無損編碼位元數更新所述當前塊的所述平均無損編碼位元數;所述歷史平均無損編碼位元數為已譯碼圖像塊的平均無損位元數。
  17. 如請求項8所述的視訊圖像編碼方法,其中,所述當前塊為所述待處理圖像的首行塊,所述碼控參數包括首行品質提升參數; 在所述根據碼控參數確定所述當前塊的目標位元數時,所述方法還包括: 依據所述首行品質提升參數調整所述當前塊的所述目標位元數,以調小所述當前塊的量化參數。
  18. 如請求項8所述的視訊圖像編碼方法,其中,所述當前塊為所述待處理圖像的首列塊,所述碼控參數包括首列品質提升參數; 在所述根據碼控參數確定所述當前塊的目標位元數時,所述方法還包括: 依據所述首列品質提升參數調整所述當前塊的所述目標位元數,以調小所述當前塊的量化參數。
  19. 一種視訊圖像解碼裝置,包括: 複雜度等級確定模組,用於從碼流中獲取通道級複雜度等級,所述碼流為當前塊的編碼碼流,根據至少兩個通道級複雜度等級確定所述當前塊的塊級複雜度等級;所述通道級複雜度等級用於表徵所述當前塊的通道級紋理的複雜程度; 碼控參數確定模組,用於根據碼控參數確定所述當前塊的目標位元數,上述碼控參數包括所述當前塊的塊級複雜度等級; 量化參數確定模組,用於基於所述目標位元數確定所述當前塊的量化參數; 譯碼模組,用於基於所述量化參數對所述當前塊進行解碼。
  20. 一種視訊圖像編碼裝置,包括: 複雜度等級確定模組,用於獲取當前塊的通道級紋理資訊,並基於所述通道級紋理資訊確定所述當前塊的通道級複雜度等級,根據至少兩個通道級複雜度等級確定所述當前塊的塊級複雜度等級;所述通道級複雜度等級用於表徵所述當前塊的通道級紋理的複雜程度; 碼控參數確定模組,用於根據碼控參數確定所述當前塊的目標位元數,所述碼控參數包括所述當前塊的所述塊級複雜度等級; 量化參數確定模組,用於基於所述目標位元數確定所述當前塊的量化參數; 譯碼模組,用於基於所述量化參數對所述當前塊進行編碼。
  21. 一種解碼器,其中,所述解碼器用於執行如請求項1至7中任一項所述的方法。
  22. 一種編碼器,其中,所述編碼器用於執行如請求項8至18中任一項所述的方法。
  23. 一種視訊編解碼系統,其中,包括視訊編碼器和/或視訊解碼器,所述視訊編碼器用於執行如請求項8至18任一項所述的方法,所述視訊解碼器用於執行如請求項1至7任一項所述的方法。
  24. 一種電腦可讀存儲介質,其中,所述電腦可讀存儲介質中存儲有程式,當所述程式在所述電腦上運行時,使得所述電腦執行如請求項1至18中任一項所述的方法。
TW112127156A 2022-07-26 2023-07-20 視訊圖像解碼方法、編碼方法、裝置及存儲介質 TWI847806B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210887907.9A CN116095319B (zh) 2022-07-26 2022-07-26 一种视频图像解码方法、编码方法、装置及存储介质
CN2022108879079 2022-07-26

Publications (2)

Publication Number Publication Date
TW202406339A true TW202406339A (zh) 2024-02-01
TWI847806B TWI847806B (zh) 2024-07-01

Family

ID=86210844

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112127156A TWI847806B (zh) 2022-07-26 2023-07-20 視訊圖像解碼方法、編碼方法、裝置及存儲介質

Country Status (5)

Country Link
EP (1) EP4564812A1 (zh)
KR (1) KR20250029968A (zh)
CN (2) CN116095319B (zh)
TW (1) TWI847806B (zh)
WO (1) WO2024022039A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116095319B (zh) * 2022-07-26 2024-09-24 杭州海康威视数字技术股份有限公司 一种视频图像解码方法、编码方法、装置及存储介质
CN118694947A (zh) * 2024-06-24 2024-09-24 南京思杭能技术开发有限公司 用于帧间编码的云计算分析系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7864840B2 (en) * 2005-04-15 2011-01-04 Inlet Technologies, Inc. Scene-by-scene digital video processing
CN101534436B (zh) * 2008-03-11 2011-02-02 深圳市融创天下科技发展有限公司 一种视频图像宏块级自适应码率分配方法
CN106331703B (zh) * 2015-07-03 2020-09-08 华为技术有限公司 视频编码和解码方法、视频编码和解码装置
CN110495174B (zh) * 2018-04-04 2021-12-03 深圳市大疆创新科技有限公司 编码方法、装置、图像处理系统和计算机可读存储介质
CN110740324B (zh) * 2019-09-11 2023-03-31 浙江大华技术股份有限公司 编码控制方法及相关装置
CN111866504B (zh) * 2020-07-17 2022-06-21 Oppo广东移动通信有限公司 一种编码方法、编码器及计算机可读存储介质
CN113099067B (zh) * 2021-03-18 2022-02-22 西安交通大学 基于像素值排序预测与菱形预测的可逆信息隐藏方法及系统
CN113784126B (zh) * 2021-09-17 2025-05-16 Oppo广东移动通信有限公司 图像编码方法、装置、设备及存储介质
CN114466189B (zh) * 2021-12-27 2024-05-28 浙江大华技术股份有限公司 码率控制方法、电子设备及存储介质
CN116095319B (zh) * 2022-07-26 2024-09-24 杭州海康威视数字技术股份有限公司 一种视频图像解码方法、编码方法、装置及存储介质

Also Published As

Publication number Publication date
CN116366847B (zh) 2024-10-18
EP4564812A1 (en) 2025-06-04
WO2024022039A1 (zh) 2024-02-01
TWI847806B (zh) 2024-07-01
CN116366847A (zh) 2023-06-30
CN116095319A (zh) 2023-05-09
CN116095319B (zh) 2024-09-24
KR20250029968A (ko) 2025-03-05

Similar Documents

Publication Publication Date Title
TWI864785B (zh) 視頻解碼方法、視頻編碼方法、視頻解碼裝置、視頻編碼裝置、視頻解碼器、視頻編碼器、視頻編解碼系統、電腦可讀儲存媒體及電腦程式產品
TWI847806B (zh) 視訊圖像解碼方法、編碼方法、裝置及存儲介質
TWI870108B (zh) 圖像編解碼方法、裝置及存儲介質
US12368851B2 (en) Picture decoding method, picture coding method and corresponding apparatus
CN117221564B (zh) 一种视频解码方法、装置及存储介质
TWI821013B (zh) 視頻編解碼方法及裝置
JP2025525001A (ja) ビデオ画像復号方法、ビデオ画像符号化方法、装置および記憶媒体