TWI832449B - 視訊編解碼方法及裝置 - Google Patents

視訊編解碼方法及裝置 Download PDF

Info

Publication number
TWI832449B
TWI832449B TW111136540A TW111136540A TWI832449B TW I832449 B TWI832449 B TW I832449B TW 111136540 A TW111136540 A TW 111136540A TW 111136540 A TW111136540 A TW 111136540A TW I832449 B TWI832449 B TW I832449B
Authority
TW
Taiwan
Prior art keywords
block
blocks
filter
deblocking
pixel data
Prior art date
Application number
TW111136540A
Other languages
English (en)
Other versions
TW202315411A (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 TW202315411A publication Critical patent/TW202315411A/zh
Application granted granted Critical
Publication of TWI832449B publication Critical patent/TWI832449B/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/117Filters, e.g. for pre-processing or post-processing
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • 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
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Abstract

用於實現視訊編解碼的有效環路濾波的各種方案被描述,其表現在對於包括至少兩個濾波級的環路濾波器的低延遲和降低的硬體成本。一種裝置接收圖片的當前塊及該當前塊的一個或多個相鄰塊的像素資料,基於該像素資料,該裝置執行濾波操作並生成濾波塊,該濾波塊包括完全濾波的子塊和部分濾波的子塊。該裝置進一步輸出輸出塊,該輸出塊包括完全濾波的子塊,以及部分濾波的子塊中的每個子塊的相應部分,其中該相應部分與完全濾波的子塊之一相鄰。

Description

視訊編解碼方法及裝置
本公開總體上涉及視訊編解碼,更具體地,涉及用於提高視訊編碼器或解碼器內的環路濾波的操作效率的方法和裝置。
除非本文另有說明,否則本節中描述的方法不是下面列出的申請專利範圍的習知技術,並且不藉由包含在本節中而被承認為習知技術。
視訊編解碼通常涉及:藉由編碼器將視訊(即,原始視訊)編碼為位元流,將位元流傳輸到解碼器,以及藉由解碼器從位元流中解碼視訊並處理位元流以產生重構視訊。編碼器可以在對視訊進行編碼時採用各種編解碼模式或工具,除其他外,其目的是減少需要傳輸到解碼器的位元流的總大小,同時仍向解碼器提供關於原始視訊的足夠資訊,使得解碼器可以生成令人滿意地忠實於原始視訊的重構視訊。然而,各種編解碼工具在實現其各自的編解碼目的的同時,可能總是在編碼和解碼過程中引入視覺偽影。具體來說,很多編解碼工具都是基於塊的編解碼工具,這意味著要編解碼的圖片或幀被劃分為許多不重疊的矩形區域,被稱為“塊”。塊構成了編解碼工具處理的基本元素,如在視訊編解碼中使用的兩種主要技術幀內預測和幀間預測中經常看到的那樣。由於這些塊是彼此相對獨立地編解碼的,所以當將編解碼塊放在一起以重構圖片時,例如,在塊的邊緣,可能會出現視覺偽影。
環路濾波器可被應用於重構的圖片以處理或以其他方式減輕上 述視覺偽影,從而改善重構圖片的主觀品質。環路濾波器通常包括幾個單獨的濾波器,它們分別減輕不同的視覺偽影。例如,一個濾波器可被用來平滑塊邊緣,而另一個濾波器被用來減少圖片的某些區域的振鈴偽影(ringing artifacts)或樣本強度的變化。各個濾波器可以管線方式(pipeline fashion)同時操作,每個濾波器是管線的一個級別。也就是說,環路濾波器的第一濾波器可以處理重構圖片的第一塊,然後將結果傳遞到下一級,即環路濾波器的第二濾波器。當第二濾波器對從第一濾波器傳遞的結果(例如,像素資料)進行操作時,第一濾波器可以處理重構圖片的第二塊,等等。管線被稱為環路濾波器,因為它同時應用於視訊編碼器的編碼迴圈和視訊解碼器的解碼迴圈。具體來說,環路濾波器應用於逆量化(inverse quantization,簡稱IQ)之後但在將圖片存儲到解碼圖片緩衝器(decoded picture buffer,簡稱DPB)之前。在解碼端,重構圖片品質的提高為解碼過程提供了更理想的參考圖像,從而轉化為更高的壓縮效率。
由於環路濾波器用於編碼環路和解碼環路,它構成了視訊編碼器的重要部分。因此,環路濾波器的效率對整體編解碼效率(例如延遲和輸送量)有顯著影響。本發明中展示的各種技術可用於提高環路濾波器的效率,從而提高採用高效環路濾波器的視訊編碼器或解碼器的效率。
以下概述僅是說明性的並且不旨在以任何方式進行限制。即,提供以下概述以介紹本文所述的新穎且非顯而易見的技術的概念、亮點、益處和優點。選擇實現方式在下面的詳細描述中進一步描述。因此,以下概述並非旨在識別所要求保護的主題的基本特徵,也不旨在用於確定所要求保護的主題的範圍。
本公開的目的是提供與在使用基於塊的幀內或幀間預測來重構 圖片之後但在存儲在解碼圖片緩衝器(decoded picture buffer,簡稱DPB)之前的視訊圖片幀的環路濾波或後續處理有關的方案、概念、設計、技術、方法和設備。相信藉由本公開中的各種實施例,實現了包括改進的編解碼延遲、更高的編解碼輸送量和/或減少的硬體開銷的好處。
在一個方面,一種用於對圖片的當前塊執行濾波操作的方法被提出,而圖片可以是使用基於塊的幀內或幀間預測的視訊編碼器或視訊解碼器的重構圖片。該方法可以涉及:接收當前塊的像素資料,以及當前塊的一個或多個相鄰塊的像素資料。在一些實施例中,一個或多個相鄰塊可包括緊鄰當前塊上方的相鄰塊和緊鄰當前塊左側的相鄰塊。該方法還可以涉及藉由對當前塊執行濾波操作來生成濾波塊。濾波操作可以使用當前塊的像素資料和一個或多個相鄰塊的像素資料來執行。濾波塊可以包括一個或多個完全濾波的子塊和一個或多個部分濾波的子塊。最後,該方法還可以涉及輸出輸出塊。輸出塊可以包括一個或多個完全濾波的子塊和一個或多個部分濾波的子塊中的每一個子塊的相應部分,其中該相應部分與相應的一個或多個完全濾波的子塊邊緣相鄰(edge-adjacent)或角相鄰(corner-adjacent)。部分濾波的子塊的相應部分可以共同形成L形區域,其具有第一段和第二段。在一些實施例中,L形區域的第一段和第二段中的每一個段的寬度與在濾波操作中使用的濾波設置相關。例如,根據濾波設置,濾波操作可以涉及參考第一數量的像素和修改第二數量的像素。L形區域的寬度可以等於第一數量和第二數量之間的差值。在一些實施例中,濾波操作(例如,去塊操作)可以由第一濾波器執行,以及輸出塊可以被發送到第二濾波器以用於加性濾波操作(例如,去振鈴操作)。第一和第二濾波器被配置為以基於塊的管線方式處理圖片的塊。
在另一方面,一種裝置被提出,其包括輸入模組、相鄰塊緩衝器、去塊濾波器、濾波塊緩衝器和輸出模組。輸入模組用於接收圖片的當前塊。相 鄰塊緩衝器被配置為存儲當前塊的一個或多個相鄰塊的第一組像素資料。去塊濾波器被配置為對當前塊執行去塊操作,以及去塊操作可以使用當前塊的像素資料和一個或多個相鄰塊的第一組像素資料來執行。濾波塊緩衝器被配置為存儲一個或多個完全濾波的子塊和一個或多個部分濾波的子塊。此外,輸出模組被配置為基於去塊濾波器執行的去塊操作輸出輸出塊。具體地,輸出塊可以包括一個或多個完全濾波的子塊,以及一個或多個部分濾波的子塊中的每一個的相應部分。此外,相應部分中的每一個子塊可以與完全濾波的子塊中的對應一個子塊相鄰(例如,邊緣相鄰或角相鄰)。在一些實施例中,部分濾波的子塊的相應部分共同形成L形區域。L形區域可以由兩個矩形段形成,每個矩形段具有相應的寬度。段的寬度可以由與去塊操作一起使用的一個或多個濾波設置來確定。例如,去塊操作可以涉及參考第一數量的像素和修改第二數量的像素,以及L形區域的段的寬度可以等於第一數量和第二數量之間的差值。在一些實施例中,相鄰塊緩衝器還被配置為存儲一個或多個相鄰塊的第二組像素資料,以及該裝置還包括去振鈴(de-ringing)濾波器,其被配置為使用輸出塊的像素資料和一個或多個相鄰塊的第二組像素資料對一個或多個完全濾波的子塊執行去振鈴操作。去振鈴操作也可以使用特定的濾波設置來執行。例如,去振鈴操作可以涉及在左方向、右方向、上方向和下方向中的每個方向上參考與輸出塊的每個像素相鄰的特定數量的像素。然後去振鈴操作可以涉及基於參考修改輸出塊的相應像素。在一些實施例中,L形區域的段的寬度可以等於像素的具體數量。在一些實施例中,特定數量還等於去塊濾波器使用的濾波設置的第一數量和第二數量之間的差值。在去塊濾波器的濾波設置與去振鈴濾波器的濾波設置不同的情況下,即具體數量不同於第一數量和第二數量之差值時,L形區域可以被確定為特定數量(如在去振鈴操作中使用的)以及第一數量和第二數量之間的差值(如在去塊操作中使用的)兩者之間的較低值。
100:環路濾波器
103:幀間/幀內預測模組
105:資料匯流排
106:資料匯流排
110:去塊濾波器
115:資料匯流排
119:資料匯流排
120:SAO濾波器
125:資料匯流排
130:ALF
135:資料匯流排
139:資料匯流排
160:圖片或幀
162:塊
163:塊
164:塊
166:塊
167:塊
168:塊
180:記憶體
190:DPB
200:去塊濾波方案
210:去塊邊界
231、232、233、234、241、242、243、244、271、272、273、274、281、282、283、284:子塊
250:去塊邊界
258:去塊邊界
300:水平濾波方案
400:水平濾波方案
500:垂直濾波方案
600:去塊濾波方案
700:SAO濾波方案
710:塊
720:輸出塊
730:輸入塊
760、761、762、763、764、765、766、767、768:像素
800:SAO濾波方案
820:輸出塊
830:輸入塊
861、862、863、864、865、866、867、868、870、871、872、873、874、875、876:像素
900:資料方案
910:輸出塊
911:L形區域
930:塊
938:L形區域
950:去塊邊界
1000:資料方案
1010:塊
1011:L形區域
1030:塊
1038:L形區域
1110:掃描序列
1115:光柵掃描模式
1120:掃描序列
1125:光柵掃描模式
1150:圖片
1151:圖塊
1152:圖塊
1200:資料方案
1210:輸出塊
1211:矩形區域
1300:視訊編碼器
1305:視訊源
1308:減法器
1310:變換模組
1311:量化模組
1312:量化的變換係數
1313:預測像素資料
1314:逆量化模組
1315:逆變換模組
1316:變換係數
1317:重構的像素資料
1319:重構殘差
1320:幀內估計模組
1325:幀內預測模組
1330:運動補償模組
1335:運動估計模組
1340:幀間預測模組
1345:環路濾波器
1350:重構圖片緩衝器
1365:MV緩衝器
1375:MV預測模組
1390:熵編碼器
1400:視訊解碼器
1410:逆變換模組
1411:逆量化模組
1412:量化資料
1413:預測像素資料
1416:變換係數
1417:解碼的像素資料
1419:重構的殘差訊號
1425:幀內預測模組
1430:運動補償模組
1440:幀間預測模組
1445:環路濾波器
1450:解碼圖片緩衝器
1455:顯示裝置
1465:MV緩衝器
1475:MV預測模組
1490:解析器
1495:位元流
1500:裝置
1510:輸入模組
1520:相鄰塊緩衝器
1530:去塊濾波器
1540:去振鈴濾波器
1550:濾波塊緩衝器
1552:濾波塊緩衝器1550的第一部分
1554:濾波塊緩衝器1550的第二部分
1560:步驟
1600:處理
1610、1620、1630、1640:步驟
1700:處理
1710、1720、1730、1740、1750、1760:步驟
1800:電子系統
1805:匯流排
1810:處理單元
1815:GPU
1820:系統記憶體
1825:網路
1830:唯讀記憶體
1835:永久存放設備
1840:輸入設備
1845:輸出設備
附圖被包括以提供對本公開的進一步理解以及被併入並構成本公開的一部分。附圖說明了本公開的實施方式,以及與描述一起用於解釋本公開的原理。值得注意的是,附圖不一定是按比例繪製的,因為某些組件可能被顯示為與實際實施中的尺寸不成比例,以清楚地說明本公開的概念。
第1圖示出根據本發明實施例的示例設計的圖。
第2圖示出根據本發明實施例的示例設計的圖。
第3圖示出根據本發明實施例的示例設計的圖。
第4圖示出根據本發明實施例的示例設計的圖。
第5圖示出根據本發明實施例的示例設計的圖。
第6圖示出根據本發明實施例的示例設計的圖。
第7圖示出根據本發明實施例的示例設計的圖。
第8圖示出根據本發明實施例的示例設計的圖。
第9圖示出根據本發明實施例的示例設計的圖。
第10圖示出根據本發明實施例的示例設計的圖。
第11圖示出根據本發明實施例的示例設計的圖。
第12圖示出根據本發明實施例的示例設計的圖。
第13圖示出根據本發明實施例的示例視訊編碼器的圖。
第14圖示出根據本發明實施例的示例視訊解碼器的圖。
第15圖示出根據本發明實施例的示例環路濾波器的圖。
第16圖示出根據本發明實施例的示例處理的流程圖。
第17圖示出根據本發明實施例的示例處理的流程圖。
第18圖示出根據本公開的實施方式的示例電子系統的圖。
本文公開了要求保護的主題的詳細實施例和實施方式。然而,應當理解,所公開的實施例和實施方式僅是對可以以各種形式實施的要求保護的主題的說明。然而,本公開可以以許多不同的形式來實施並且不應被解釋為限於這裡闡述的示例性實施例和實施方式。相反,提供這些示例性實施例和實施方式是為了使本公開的描述透徹和完整,以及將向本領域之通常技術者充分傳達本公開的範圍。在下面的描述中,眾所周知的特徵和技術的細節可被省略以避免不必要地混淆所呈現的實施例和實現方式。
根據本公開的實施方式涉及與實現視訊編碼器或解碼器的高效環路濾波有關的各種技術、方法、方案和/或解決方案。根據本公開,多個可能的解決方案可以單獨或聯合實施。即,儘管這些可能的解決方案可以在下面單獨描述,但是這些可能的解決方案中的兩個或更多個可以以一種組合或另一種組合來實現。
一、基於塊的環路濾波
環路濾波器是視訊編碼器或解碼器的基本部分。第1圖示出根據本發明實施例的示例設計的圖,其中環路濾波器100連同其與視訊編碼器或解碼器的一些其他塊的關係一起被示出。如本文上面其他地方所述,環路濾波器可以包括若干濾波級,每個濾波級被配置為執行相應的濾波操作,該若干濾波級一起操作作為基於塊的濾波管線,用於處理由幀內或幀間預測生成的重構圖片以增強其主觀圖像品質。如第1圖所示,環路濾波器100包括:作為管線的第一級的去塊濾波器110、作為管線的第二級的樣本適應性偏移(sample adaptive offset,簡稱SAO)濾波器120,以及作為管線的第三級的適應性環路濾波器(adaptive loop filter,簡稱ALF)130。環路濾波器100可以處理由幀間或幀內預 測模組103生成的圖片或幀160。幀間/幀內預測模組103可以使用各種幀內預測技術和幀間預測技術從(例如,視訊圖片)原始資料重構圖片160,以分別去除原始資料中的空間和時間冗餘。圖片160因此通常被稱為“重構圖片”。幀間/幀內預測模組103可以以基於塊的方式處理原始資料。即,每個幀可以被劃分為多個塊,即,矩形的非重疊區域,以及幀間/幀內預測模組103可以藉由順序地處理這些塊來處理幀。
重構圖片160可以從幀間/幀內預測模組103經由資料匯流排109傳輸到環路濾波器100。具體地,資料匯流排109可以用於將重構圖片160傳輸到環路濾波器100的第一級,即去塊濾波器110。類似於幀間/幀內預測模組103,環路濾波器100也可以以基於塊的方式處理重構圖片160。然而,環路濾波器100使用的塊劃分可以與幀間/幀內預測模組103使用的塊劃分相同或不同。例如,環路濾波器100處理的非重疊塊可以是與幀間/幀內預測模組103處理的非重疊塊的大小不同。如第1圖所示,重構圖片160被劃分為16個相同大小的塊,包括塊166、與塊166相鄰的塊167,以及與塊167相鄰的塊168。環路濾波器100的濾波管線處理重構圖片160使得三個相鄰塊分別由環路濾波器100的三個級同時處理,而三個級中的每一個在三個連續管線週期中順序地處理三個相鄰塊。例如,在特定的管線週期期間,去塊濾波器110可以正在處理塊166。在下一個管線週期(即,緊接著特定管線週期的週期)期間,塊166的處理結果可以從去塊濾波器110藉由資料匯流排119傳送到SAO濾波器120,供SAO濾波器120處理,而去塊濾波器110處理下一個塊,即塊167。在接下來的管線週期期間(即,特定管線週期之後的兩個週期),塊166的處理結果可以藉由資料匯流排129從SAO濾波器120傳遞到ALF 130,以供ALF 130處理,以及塊167的處理結果可以藉由資料匯流排119從去塊濾波器110傳遞到SAO濾波器120,以供SAO濾波器120處理,而去塊濾波器110處理下一個塊,即塊168。如第1圖所示,在這個管線週期期間,濾波器110、 120和130分別處理塊168、167和166。從一個塊的角度來看,一個塊依次藉由環路濾波器100的各個級。例如,塊166在特定管線週期中由去塊濾波器110處理,然後在下一個管線週期中由SAO濾波器120處理,然後在下一個管線週期中由ALF 130處理。
在基於塊的管線過程中,每個單獨的濾波器(即,管線的每個級)可以使用當前塊的一些像素資料(即,從前一級緊接著傳遞的像素資料)以及來自與當前塊相鄰的一個或多個相鄰塊的一些像素資料執行相應的濾波功能。例如,當SAO濾波器120處理塊167時,SAO濾波器120可以參考藉由資料匯流排119從去塊濾波器110接收的塊167的像素資料。同時,SAO濾波器120也可以參考像素在管線處理中經由去塊濾波器110處理的少數相鄰塊的資料,例如塊162、163、164和166的像素資料。塊162、163、164和166中的每一個被認為是與塊167相鄰的相鄰塊,因為它與塊167相鄰(即,與塊167邊緣相鄰或角相鄰)。具體地,塊163和166與塊167邊緣相鄰,因為塊163和166中的每一個與塊167共用相應的塊邊緣。另一方面,塊162和164與塊167角相鄰,因為塊162和164中的每一個具有與塊167的相應塊角相鄰的塊角。對於去塊濾波器110和ALF 130也是如此。也就是說,環路濾波器100的每個濾波級可以參考從前一級(即,幀間/幀內預測模組103或SAO濾波器120)傳遞的緊鄰塊的像素資料,以及前一級之前處理過的相鄰塊的特定像素資料。濾波級當前正在處理的緊鄰塊(immediate block)可互換地稱為濾波級的“當前塊”。當前塊所屬的圖片或幀,即圖片160,被稱為“當前圖片”或“當前幀”。
對於環路濾波器的每個濾波級,緊鄰塊的像素資料從前面的濾波級傳遞,除了第一級(即,去塊濾波器110),對於第一級(即去塊濾波器110),緊鄰塊的像素資料可以從幀間/幀內預測模組103傳遞。另一方面,處理緊鄰塊所需的相鄰塊的像素資料將由各個濾波級從記憶體180獲取,因為這些塊已由各個 濾波級處理。例如,當SAO濾波器120正在處理塊167時,塊167的像素資料直接從去塊濾波器110傳遞。然而,SAO濾波器120還需要從記憶體180中獲取所需的特定相鄰塊像素資料以處理塊167。為了處理緊鄰塊167,SAO可以藉由資料匯流排125從記憶體180中獲取相鄰塊162、163、164和166的特定像素資料,而塊162、163、164和166的像素資料已經由去塊濾波器110在先前的管線週期中經由資料匯流排115存儲在記憶體180中(當去塊濾波器110分別處理塊162、163、164和166時)。類似地,去塊濾波器110和ALF 130中的每一個都可以從前一級(即,分別來自幀間/幀內預測模組103和SAO濾波器120)接收緊鄰塊的像素資料。同時,去塊濾波器110和ALF 130中的每一個可以分別經由資料匯流排115和資料匯流排135從記憶體180中獲取相應緊鄰塊的相鄰塊的像素資料。由去塊濾波器110獲取的相鄰塊像素資料已經由幀間/幀內預測模組103經由資料匯流排105存儲到記憶體180中,作為幀間/幀內預測模組103先前處理相鄰塊的結果。由ALF 130獲取的相鄰塊像素資料已經被SAO濾波器120經由資料匯流排125存儲到記憶體180中,作為SAO濾波器120先前處理相鄰塊的結果。
在藉由環路濾波器100的各個級之後,塊藉由資料匯流排139被存儲在解碼圖片緩衝器(decoded picture buffer,簡稱DPB)190中。幀間/幀內預測模組103可以藉由資料匯流排106來存取DPB 190,以獲取存儲在其中的濾波圖片,該濾波圖片用於執行後續的幀間和幀內預測操作。存儲在DPB 190中的圖片,因為它們已被環路濾波器100濾波以去除特定圖片偽影,然後將用作幀間/幀內預測模組103的更理想的參考圖片候選,從而增加所得到的編解碼效率以及由此產生的視訊的主觀品質。
並非第1圖中的所有資料匯流排在資料傳輸效率或速度方面相等。例如,資料匯流排119和129用於將塊資料(即,緊鄰塊的像素資料)從環路濾波器100的濾波管線中的濾波級直接傳遞或以其他方式傳送到下一級,以及 因此具有很高的傳送速率。即,在環路濾波器100內將塊資料從一個級傳送到下一個級幾乎沒有延遲。另一方面,在資料匯流排115、125和135中的每一個中存在更多的延遲(latency)。這是因為資料匯流排115、125和135連接到記憶體180,其通常使用相對低速的記憶體從物理上實現,例如動態隨機存取記憶體(dynamic random-access memory,簡稱DRAM)。此外,資料匯流排115、125和135中的每一個用於獲取多於一個相鄰塊(而不是僅僅一個塊)的像素資料,而從多個塊存取資料需要更長的存取時間。即,藉由資料匯流排115、125和135的資料存取延遲遠大於資料匯流排119和129的資料存取延遲。換句話說,從記憶體180存取像素資料的延遲成本遠高於直接在環路濾波器100的濾波級之間傳遞像素資料的延遲成本。因此,考慮到處理延遲,需要較少來自記憶體180的像素資料的資料存取方案被優先選擇。
二、去塊濾波器
第2圖示出根據本公開的實施方式的示例設計的圖,其中示出了去塊濾波方案200。當前正在由濾波級處理的塊被稱為該濾波級的“緊鄰塊”或“當前塊”。去塊濾波器110可以使用去塊濾波方案200來執行去塊操作以處理立即塊168。如第2圖所示,塊163、164、167和168中的每一個是16像素×16像素的塊,即寬度上具有十六個像素(即,在x方向)和高度上具有十六個像素的矩形區域(即,在y方向上)。塊163、164、167和168的每個像素在第2圖中由一個小方塊表示表示,該方塊使用唯一的(x,y)座標標識。例如,塊163的第一像素,即塊163左上角的像素,其座標為(-16,-16),而塊163的最後一個像素,即塊163右下角的像素,座標為(-1,-1)。類似地,去塊濾波器110當前正在處理的當前塊,即塊168,具有256個像素的總數,從(0,0)像素開始並以(15,15)像素結束。塊164也有256個像素,塊164四個角的像素的(x,y)座標分別是(0,-16),(15,-16),(0,-1)和(15,-1)。塊167也有256個像素,塊167四個角的像素的(x,y)座標 分別為(-16,0),(-1,0),(-16,15)和(-1,15)。
在本公開中,符號{左上角像素的座標(x,y),右下角像素的座標(x,y)}用於指代包含多個像素的矩形區域。按照這個符號,第2圖的塊167可以使用{(-16,0),(-1,15)}來表示,以及當前塊168可以使用{(0,0),(15,15)}來表示。類似地,塊163和164可以分別被稱為{(-16,-16),(-1,-1)}和{(0,-16),(15,-1)}。一列(column)或一行(row)像素可以使用相同的符號來表示。例如,塊164的最左列可以被稱為{(0,-16),(0,-1)},而塊163的最底行可以被稱為{(-16,-1),(-1,-1)}。
為了對當前塊執行去塊操作,去塊濾波器110可以沿著當前塊的一條或多條虛擬水平線和/或一條或多條虛擬垂直線處理當前塊的像素資料。如第2圖所示,去塊濾波器110可以沿著兩條虛擬垂直線210和218以及兩條虛擬水平線250和258對當前塊168執行去塊操作。線210、218、250和258是“虛擬的”,因為它們不包含塊168的任一實際像素。相反,線210、218、250和258中的每一個是用於分隔兩組像素的虛擬邊界。例如,線258將塊168分成兩個子塊,兩個子塊之一包含y座標為7或更低的像素,兩個子塊中的另一個包含y座標的為8或更高的像素。由於去塊操作沿著線210、218、250和258執行,因此它們也被稱為“去塊邊界”。
值得注意的是,一些去塊邊界也是當前塊的塊邊界或邊緣,而一些去塊邊界在當前塊的內部。例如,去塊邊界210和250恰好是塊168的左側和頂部塊邊界(即邊緣),而去塊邊界218和258位於塊168內,即內部去塊邊界。內部去塊邊界218和258共同將塊168分成四個象限,每個象限包含子塊281、282、283或284。塊163、164、167和168中的每一個可以被劃分為多個非重疊的子塊。如第2圖所示,塊168被去塊邊界218和258分成子塊281、282、283和284。同樣,塊163被分成子塊231、232、233和234。塊164被劃分為子塊241、242、 243和244,而塊167被劃分為子塊271、272、273和274。
去塊濾波器110沿著當前塊的垂直去塊邊界(例如,塊168的邊界210或218)對當前塊執行去塊操作,從而使用水平濾波操作順序地處理穿過垂直去塊邊界的每一行像素。此外,去塊濾波器110還沿著當前塊的水平去塊邊界(例如,塊168的邊界250或258)執行去塊操作,從而使用垂直濾波操作順序地處理穿過水平去塊邊界的每一列像素。例如,去塊濾波器110可以沿著去塊邊界210以逐行方式執行水平濾波操作,從y=0的行開始,然後是y=1的行,接著是y=2的行,以此類推,以處理y=15的行結束。
第3圖示出根據本公開的實施方式的示例設計的圖,其中當在去塊濾波器110沿著去塊邊界210執行去塊操作時,水平濾波方案300被示出用於處理y=0的行。如第3圖所示,水平濾波方案300涉及去塊邊界210兩側的像素。具體而言,水平濾波方案300涉及參考去塊邊界210兩側的前八個像素,以及相應地更新或修改去塊邊界210的兩側的前七個像素。去塊邊界的兩側可以稱為p側和q側,如第3圖所標記。根據水平濾波方案300,去塊濾波器110可以參考p側上的像素資料{(-8,0),(-1,0)}和q側上的像素資料{(0,0),(7,0)}。基於所參考的像素資料,即像素行{(-8,0),(7,0)},去塊濾波器110可以更新或以其他方式修改{(-7,0),(6,0)}的每個像素的像素值。即,在執行水平濾波操作時,去塊濾波器110可以參考p側和q側的每一個上的前八個像素,以及相應地改變p側和q側的每一個上的七個像素的值。在本公開中,術語“更新像素”和“修改像素”可互換地用於指代改變像素的像素值的動作。如第3圖所示,p側的前7個像素由p0、p1、p2、p3、p4、p5和p6的值分別修改為p0'、p1'、p2'、p3'、p4'、p5'和p6',而q側的前七個像素從值q0、q1、q2、q3、q4、q5和q6分別修改為q0'、q1'、q2'、q3'、q4'、q5'和q6'。每側的第八個像素,即像素(-8,0)和(7,0),被參考但未被修改。去塊邊界210處的顯著臺階(step),可能是由於由幀間/幀內預測 模組103執行的基於塊的預測而造成的偽影,現在藉由在行(row){(-8,0),(7,0)}的水平濾波操作被執行後將像素值{p6-p0,q0-q6}替換為{p6'-p0',q0'-q6'}來進行平滑。
水平濾波方案300示出(8、7)的去塊濾波器設置。濾波器設置的兩個參數分別表示參考的像素數量和更新的像素數量。第4圖示出根據本公開的實施方式的示例設計的圖,其中示出用於處理與第3圖所示相同的行的水平濾波方案400。水平濾波方案400採用(8,5)的去塊濾波器設置。也就是說,根據水平濾波方案400,去塊濾波器110將在去塊邊界的每一側參考前八個像素並相應地更新前五個像素。去塊濾波器110可以對圖片中的不同塊使用不同的濾波器設置。
對穿過去塊邊界210的每一行順序地執行使用濾波方案300的水平濾波操作。即,沿著去塊邊界210,去塊濾波器110可以藉由以下方式來執行水平濾波操作:參考{(-8,0),(7,0)}和修改{(-7,0),(6,0)},然後參考{(-8,1),(7,1)}和修改{(-7,1),(6,1)},然後參考{(-8,2),(7,2)}和修改{(-7,2),(6,2)}等等,直到去塊濾波器110處理穿過去塊邊界210的最後一行,即,參考{(-8,15),(7,15)}和修改{(-7,15),(6,15)}。
類似地,在採用水平濾波方案400而不是水平濾波方案300的情況下,去塊濾波器110可以對穿過去塊邊界210的每一行順序地執行水平濾波操作。即,沿著去塊邊界210,去塊濾波器110可以藉由以下方式來執行水平濾波操作:參考{(-8,0),(7,0)}和修改{(-5,0),(4,0)},然後參考{(-8,1),(7,1)}和修改{(-5,1),(4,1)},然後參考{(-8,2),(7,2)}和修改{(-5,2),(4,2)}等等,直到去塊濾波器110處理穿過去塊邊界210的最後一行,即參考{(8,15),(7,15)}和修改{(-5,15),(4,15)}。
去塊濾波器110可以使用除濾波方案300或400之外的濾波方案來 執行水平濾波操作。去塊濾波器110可以利用由兩個參數定義的水平濾波方案,第一參數用於定義,對於行,在垂直去塊邊界的每一側上有多少來自垂直去塊邊界的像素被參考,以及第二參數用於定義,對於該行,在垂直去塊邊界的每一側上有多少來自垂直去塊邊界的像素被相應地修改。這兩個參數構成了用於處理塊的濾波器設置。
去塊濾波器110可以應用相同或相似的濾波器設置以用於沿著塊168的一條或多條虛擬水平線(例如去塊邊界250和258)執行垂直濾波操作。第5圖示出根據本公開的實施方式的示例設計的圖,其中垂直濾波方案500和580被示出,垂直濾波方案500和580用於分別沿著去塊邊界250和258執行垂直濾波操作。類似于採用水平濾波方案300或400的水平濾波操作,在執行垂直濾波操作時,去塊濾波器110可以參考去塊邊界250或258的每一側上的第一數量的像素並相應地修改去塊邊界250或258的每一側上第二數量的像素,而第一數量和第二數量由濾波器設置中的兩個參數定義。例如,當去塊濾波器110使用濾波器設置(8,6)根據濾波方案500沿去塊邊界250對x=0列執行垂直濾波操作時,去塊濾波器110可以參考在p側的{(0,-8),(0,-1)}的中八個像素和q側的{(0,0),(0,7)}中的八個像素,然後相應地修改{(0,-6),(0,5)}中的十二個像素。同樣,去塊濾波器110可以使用濾波器設置(8,5)根據濾波方案580沿去塊邊界258對x=0列執行垂直濾波操作,其中去塊濾波器110可以參考p側的{(0,0),(0,7)}中的八個像素和q側的{(0,8),(0,15)}中的八個像素,然後相應地修改{(0,3),(0,12)}中的十個像素。去塊濾波器110可以對穿過去塊邊界250和258的每一列逐列沿著去塊邊界250和258分別執行垂直濾波操作。即,沿著去塊邊界250,去塊濾波器110可以藉由以下方式來執行垂直濾波操作:參考{(0,-8),(0,7)}和修改{(0,-6),(0,5)},然後參考{(1,-8),(1,7)}和修改{(1,-6),(1,5)},然後參考{(2,-8),(2,7)}和修改{(2,-6),(2,5)}等等,直到 去塊濾波器110處理穿過去塊邊界250的最後一列,即參考{(15,-8),(15,7)}和修改{(15,6),(15,5)}。同樣,沿著去塊邊界258,去塊濾波器110可以藉由以下方式來執行垂直濾波操作:參考{(0,0),(0,15)}和修改{(0,3),(0,12)},然後參考{(1,0),(1,15)}和修改{(1,3),(1,12)},然後參考{(2,0),(2,15)}和修改{(2,3),(2,12)}等等,直到去塊濾波器110處理穿過去塊邊界250的最後一列,即參考{(15,0),(15,15)}和修改{(15,3),(15,12)}。
值得注意的是,在沿著去塊邊界210執行水平濾波操作的過程中,去塊濾波器110可以對當前塊的子塊以及一個或多個相鄰塊的子塊進行操作。例如,在使用水平濾波方案300沿去塊邊界210對當前塊168執行水平濾波操作時,去塊濾波器110可以參考{(-8,0),(-1,15)}中的像素資料以及修改{(-7,0),(-1,15)}中的像素資料,這兩個區域都在相鄰塊167中。同時,去塊濾波器110可以參考{(0,0),(7,15)}中的像素資料以及修改{(0,0),(6,15)}中的像素資料,這兩個區域都在當前塊168中。
第6圖示出根據本公開的實施方式的示例設計的圖,其中根據去塊濾波方案600,去塊濾波器110僅執行水平濾波操作而不執行垂直濾波操作。根據去塊濾波方案600,去塊濾波器110首先沿著塊167的去塊邊界610和618,然後沿著塊168的去塊邊界210和218執行水平濾波操作。藉由該處理,子塊272和274中的像素資料被修改兩次,一次是在沿著去塊邊界618執行的水平濾波期間作為q側的子塊被修改,然後在沿著去塊邊界210執行的水平濾波期間作為p側的子塊再次被修改。即,當去塊濾波器110完成對塊167的處理時,子塊272和274僅被“部分濾波”。直到去塊濾波器110完成沿著去塊邊界210的水平濾波,子塊272和274才變為“完全濾波”。類似地,子塊281和283中的像素資料被修改兩次,一次是在沿著去塊邊界210執行的水平濾波期間作為q側的子塊被修改,然後在沿著去塊邊界218執行的水平濾波期間作為p側的子塊再次被修改。因此,當去塊 濾波器110完成沿去塊邊界210和218處理塊168時,子塊281和283被完全濾波,但是子塊282和284將保持部分濾波直到去塊濾波器110完成處理下一個塊(即,塊168右側緊鄰塊)。一般來說,在去塊濾波器110處理完一個塊之後,作為結果產生一個濾波塊,其包括一個或多個完全濾波的子塊和一個或多個部分濾波的子塊。例如,在去塊濾波器110處理完塊167之後,產生一個濾波塊,它由兩個完全濾波的子塊271和273以及兩個部分濾波的子塊272和274組成。同理,在去塊濾波器110完成對塊168的處理,產生一個濾波塊,它由兩個完全濾波的子塊281和283以及兩個部分濾波的子塊282和284組成。需要注意的是,當去塊濾波器110完成對塊168的處理,子塊272和274被完全濾波。去塊濾波器110可以將完全濾波的子塊272和274與完全濾波的子塊281和283一起作為輸出塊輸出到環路濾波管線100的下一個濾波級,例如SAO濾波器120。輸出塊可以作為下一個管線週期中將被SAO濾波器120處理的下一個當前塊。
儘管去塊濾波方案600展示了僅沿垂直去塊邊界執行水平濾波(即,沒有垂直濾波),但是其中僅沿水平去塊邊界執行垂直濾波操作(即,沒有水平濾波)的去塊濾波方案可以藉由交換第6圖中的行和列容易地從去塊濾波方案600導出。
當去塊濾波器110既執行水平濾波操作又執行垂直濾波操作時,存在類似的場景。再參考第2圖,其中去塊濾波器110對塊163、164、167和168中的每一個執行水平和垂直濾波操作。水平濾波操作沿著兩個垂直去塊邊界執行,例如,塊168的去塊邊界210和218。垂直濾波操作也沿著兩個水平去塊邊界執行,例如塊168的去塊邊界250和258。當去塊濾波器110完成對塊164的處理時,只有子塊241被完全濾波,而子塊242、243和244僅被部分濾波,因為當去塊濾波器110處理塊164的一些相鄰塊時,它們中的每一個子塊的像素資料可能會再次被修改。例如,當去塊濾波器110處理塊168並沿去塊邊界250執行垂直濾 波操作時,子塊243和244的像素值可以再次被修改。事實上,直到去塊濾波器110完成對塊168的處理,子塊243才被完全濾波。當去塊濾波器110完成對塊164的處理時,得到的濾波塊,包括一個完全濾波的子塊241和三個部分濾波的子塊242-244,藉由資料匯流排115被存儲在記憶體180中,使得去塊濾波器110可以在處理塊168時,例如,在沿著去塊邊界250執行垂直濾波操作時,至少獲取部分濾波的子塊243和244。同樣,在去塊濾波器110完成的時候處理塊167,得到的濾波塊,包括一個完全濾波的子塊271和三個部分濾波的子塊272-274,藉由資料匯流排115存儲在記憶體180中,使得去塊濾波器110可以在在處理塊168時,例如,當沿去塊邊界210執行水平濾波操作時,至少獲取部分濾波的子塊272和274。去塊濾波器110完成對塊168的處理,將得到的濾波塊,包括一個完全濾波的子塊281和三個部分濾波的子塊282-284,藉由資料匯流排115被存儲在記憶體180中,使得去塊濾波器110在處理塊168的相鄰塊時,例如,塊168右側緊鄰塊或塊168的下方緊鄰塊,可以獲取部分濾波的子塊282-284中的任一。
濾波塊可以包括與當前塊重疊的子塊,以及與當前塊的一個或多個相鄰塊重疊的子塊。例如,在去塊濾波器110使用去塊濾波方案200完成對當前塊168的處理之後,生成濾波塊。濾波塊可以包括一個或多個完全濾波的子塊,即子塊243、272和281。這些子塊被完全濾波,因為它們的像素值不會被去塊濾波器110再次修改以處理圖片的任一未來塊(future block)。在完全濾波的子塊中,子塊281與當前塊168重疊,而子塊243和272分別與相鄰塊164和167重疊。濾波塊還可以包括一個或多個部分濾波的子塊,即子塊244、274、282、283和284。這些子塊被部分濾波是因為它們的像素值可以被去塊濾波器110再次修改以處理圖片的未來塊。例如,當去塊濾波器110處理塊167的下方緊鄰塊時,子塊274的一些像素值可以被再次修改。作為另一示例,在去塊濾波器110處理塊168下方或右側緊鄰塊時,子塊284的一些像素值可以被再次修改。在部分濾波 的子塊中,子塊282-284與當前塊168重疊,而子塊244和274分別與相鄰塊164和167重疊。
此外,當去塊濾波器110完成對塊的處理時,輸出塊可以被傳遞到下一濾波級,其中輸出塊包括一個或多個完全濾波的子塊。例如,在去塊濾波器110完成對塊168的處理時,去塊濾波器110可以輸出輸出塊,輸出塊包括完全濾波的子塊234、243、272和281。輸出塊可以從去塊濾波器110藉由資料匯流排119傳送到SAO濾波器120,輸出塊是SAO濾波器120在下一個管線週期中要處理的下一個當前塊。
與第2圖-第6圖一起呈現的示例實施例基於去塊濾波器110是八抽頭濾波器,即,當沿著去塊邊界執行水平濾波操作和/或垂直濾波操作時,參考p側和q側的每一個上的八個像素。相同的方法可以應用於任意數量的抽頭的去塊濾波器。假設去塊濾波器110是N ref 抽頭濾波器,其中N ref 是正整數。根據本公開的設計,去塊濾波器110可以接收包圍圖片的{(-N,-N),(N-1,N-1)}的矩形區域的若干塊。{(-N,-N),(N-1,N-1)}的矩形區域可能包括當前塊{(0,0),(N-1,N-1)},以及三個當前塊的相鄰塊,即{(-N,-N),(-1,-1)},{(0,-N),(N-1,-1)}和{(-N,0),(-1,N-1)}。去塊濾波器110可以對當前塊執行水平和垂直濾波操作,從而生成濾波塊,該濾波塊包括一個完全濾波的子塊{(0,0)、(N ref -1,N ref -1)}以及三個部分濾波的子塊{(0,N ref ),(N ref -1,N-1)},{(N ref ,0),(N-1,N ref -1)}和{(N ref ,N ref ),(N-1,N-1)}。去塊濾波器110可以將輸出塊{(-N ref ,-N ref ),(N-N ref -1,N-N ref -1)}輸出到SAO濾波器120,該輸出塊包括四個完全濾波的子塊。在第2圖-第5圖所示的示例實施例中,N=16,N ref =8。
三、SAO濾波器
如上所述,從去塊濾波器110傳遞到SAO濾波器120的輸出塊成為在下一個管線週期中由SAO濾波器120處理的當前塊。第7圖示出根據本公開的 實施方式的示例設計的圖,其中示出了SAO濾波方案700,其用於經由SAO濾波器120處理當前塊710。當前塊710是來自去塊濾波器110的結果輸出塊,其包括完全濾波的子塊(從去塊濾波器110的角度來看)234、243、272和281。當前塊710已經藉由資料匯流排119從去塊濾波器110傳遞。SAO濾波器120根據一個參數的濾波器設置執行SAO濾波操作,其中該參數指定從當前塊中的像素在每個方向上參考了多少像素,基於該參數更新或以其他方式修改當前像素的像素值。即,SAO濾波操作是逐像素操作。如第7圖所示,SAO濾波方案700採用1像素的SAO濾波器設置。以當前塊710的像素760為例。在一些實施例中,SAO濾波器120可以參考像素760在左方向、右方向、上方向和下方向中的每一個方向上的1個相鄰像素,然後相應地修改像素760。也就是說,SAO濾波器120可以參考像素761、762、763和764,基於這些像素SAO濾波器120可以修改像素760的值。在一些實施例中,SAO濾波器120可以進一步參考每個像素中的像素760在左上方向、右上方向、左下方向和右下方向的每一個方向上的1個相鄰像素。也就是說,SAO濾波器120在SAO濾波操作期間可以進一步參考像素765、766、767和768。基於像素761-768的像素值,SAO濾波器120可以相應地修改像素760的值。SAO濾波操作可用於減少由幀間/幀內預測模組103執行的基於塊的幀間/幀內預測導致的振鈴偽影。因此,SAO濾波器120也可被稱為“去振鈴濾波器”。
由於環路濾波器100被設計成以管線方式操作,環路濾波器100的每一級優選地輸出相同大小的輸出塊。直接從去塊濾波器110接收的像素資料不足以使SAO濾波器120生成與去塊濾波器110的輸出塊大小相同的輸出塊,即當前塊710。為了生成與當前塊710大小相同的輸出塊,SAO濾波器120需要從塊168的一個或多個相鄰塊接收額外的像素資料。參照第7圖,為了生成與當前塊710大小相同的輸出塊720,SAO濾波器120需要接收由輸入塊730表示的像素資料,輸入塊730包括當前塊710和由{(-10,-10),(7,-9)}和{(-10,-8),(-9, 7)}組成的區域(即在輸入塊730內但在當前塊710之外L形區域)。當當前塊710藉由資料匯流排119從去塊濾波器110直接被傳遞到SAO濾波器120時,SAO濾波器120需要經由資料匯流排125從記憶體180中取出L形區域的像素資料。如上所述,從記憶體180獲取資料是一個緩慢的過程。即,SAO濾波器120需要從記憶體180獲取L形區域的像素資料,結果引入了延遲。SAO濾波器120需要從記憶體180獲取而不是從去塊濾波器110接收的像素資料越多,延遲越差。
例如,2個像素的SAO濾波器設置可能會加劇從記憶體180獲取像素資料而引入的延遲。第8圖示出根據本公開的實施方式的示例設計的圖,其中示出了SAO濾波方案800,其用於經由SAO濾波器120處理當前塊710。如第8圖所示,SAO濾波方案800採用兩個像素的SAO濾波器設置。即,SAO濾波器120基於相對於像素在每個方向上相鄰的兩個像素的像素值來修改像素。以當前塊710的像素760為例。如第8圖所示,2像素的SAO濾波器設置要求SAO濾波器120相對於像素760在每個方向上參考兩個相鄰像素,其共同表示為25個像素的方陣,其中像素760位於矩陣的中間並且24個像素圍繞像素760。矩陣的第一層包括緊鄰著像素760的8個像素,即像素761-768。矩陣的第二層,即圍繞第一層的下一個像素層,包括額外的16個像素,包括像素861-876。
與SAO濾波方案700類似,為了使用SAO濾波方案800生成與當前塊710大小相同的輸出塊,除了當前塊710之外,SAO濾波器120需要從塊168的一個或多個相鄰塊接收額外的像素資料。如第8圖所示,為了生成與當前塊710大小相同的輸出塊820,SAO濾波器120需要接收由輸入塊830表示的像素資料,輸入塊830包括當前塊710和由{(-12,-12),(7,-9)}和{(-12,-8),(-9,7)}組成的區域(即在輸入塊830內但在當前塊710之外的L形區域)。雖然當前塊710藉由資料匯流排119從去塊濾波器110直接傳遞到SAO濾波器120,但SAO濾波器120需要藉由資料匯流排125從記憶體180中取出L形區域的像素資料。第8圖的L 形區域大於第7圖的L形區域。預計SAO濾波方案800將引入比SAO濾波方案700更多的延遲。
值得注意的是,L形區域的像素資料,如上文針對每個SAO濾波方案700和800所描述的,是由去塊濾波器110先前執行的去塊處理產生的並隨後經由匯流排115保存在記憶體180中。然後SAO濾波器120經由匯流排125從記憶體180獲取像素資料,同時SAO濾波器120處理當前塊。然而,在一些可選實施例中,從記憶體180獲取的L形區域的像素資料可能已經由SAO濾波器120處理,如下文所述。
在SAO濾波方案700的一些實施例中,除了從記憶體180讀取或獲取像素資料以執行SAO濾波操作之外,SAO濾波器120還可寫入或存儲至少一部分產生的輸出塊的像素資料(例如,輸出塊720或820)到記憶體180以供將來參考,即,當SAO濾波器120將來處理其他塊時該像素資料可被SAO濾波器120獲取。在SAO濾波方案700中,在產生輸出塊720之後,SAO濾波器120可以藉由資料匯流排125將由輸出塊720的最右列和最底行以及當前塊710的最右列和最底行組成的L形區域存儲到記憶體180中。在處理未來塊時,SAO濾波器120可以藉由資料匯流排125存取記憶體180以獲取L形區域的特定像素資料。例如,當處理塊710的右側緊鄰塊時,SAO濾波器120可以獲取輸出塊720的最右列和當前塊710的最右列。當處理塊710的下方緊鄰塊時,SAO濾波器120可以獲取輸出塊720的最底行和當前塊710的最底行。
同樣,在SAO濾波方案800的一些實施例中,在生成輸出塊820之後,SAO濾波器120可以藉由資料匯流排125將由輸出塊820的兩個最右列和兩個最底行以及當前塊710的兩個最右列和兩個最底行組成的L形區域存儲到記憶體180中。即,L形區域由{(4,-12),(7,7)}和{(-12,4),(7,7)}的組合表示。SAO濾波器120可以在處理未來塊時藉由資料匯流排125訪問記憶體180以獲 取L形區域的特定像素資料。例如,SAO濾波器120可以在處理塊710的右側緊鄰塊時獲取{(4,-12),(7,7)}。SAO濾波器120可以在處理塊710的下方緊鄰塊時獲取{(-12,4),(7,7)}。L形區域有兩段,第一段是{(4,-12),(7,7)},第二段是{(-12,4),(7,7)}。這兩個段中的每一個都具有兩倍於所採用的SAO濾波器設置的寬度。對於SAO濾波方案800,SAO濾波器設置=2(即,兩個像素),因此L形區域的兩個段中的每個段具有4個像素的寬度。對於SAO濾波方案700,SAO濾波器設置=1(即,一個像素),因此L形區域的兩個段中的每一個都具有2個像素的寬度。
此外,SAO濾波器120可以將輸出塊720或820輸出到環路濾波管線100的下一個濾波級,例如,ALF 130。ALF 130可以使用輸出塊720或820作為下一個管線週期中要處理的下一個當前塊。
與第7圖和第8圖一起呈現的示例性實施例以SAO濾波器120分別是一抽頭濾波器(即濾波器設置=1像素)和雙抽頭濾波器(即濾波器設置=2像素)為基礎。一抽頭SAO濾波器藉由參考在所有方向上特定像素的最相鄰的一個像素來修改特定像素,即圍繞特定像素的第一層8個像素。雙抽頭SAO濾波器藉由參考所有方向上最相鄰的兩個像素來修改特定像素,即圍繞特定像素的第一層8個像素加上圍繞第一層的第二層16個像素。相同的方法可以應用於任意數量的抽頭的SAO濾波器。假設SAO濾波器120是N f2 抽頭濾波器(即,濾波器設置=N f2 個像素),其中N f2 是正整數。根據本公開的設計,SAO濾波器120可以接收去塊濾波器110的輸出塊,即塊{(-N ref ,-N ref),(N-N ref -1,N-N ref -1)},作為SAO濾波器120的當前塊710。SAO濾波器120可以進一步存取記憶體180以獲取輸入塊(例如,輸入塊730或830)的L形區域的像素資料,L形區域是{(-N ref -2N f2 ,-N ref -2N f2 ),(N-N ref -1,-N ref -1)}和{(-N ref -2N f2 ,-N ref ),(-N ref -1,N-N ref -1)}。SAO濾波器120可以執行SAO濾波操作,例如SAO濾波方案700或800,以及相應地輸 出濾波塊(例如,輸出塊720或820),即{(-N ref -N f2 ,-N ref -N f2),(N-N ref -1-N f2 ,N-N ref -1-N f2 )}。在一些實施例中,SAO濾波器120可以將由輸出塊的L形區域表示的像素資料存儲在記憶體180中以供SAO濾波器120處理未來塊,其中L形區域由{(N-N ref -2N f2 ,-N ref -2N f2 ),(N-N ref -1,N-N ref -1)}和{(-N ref -2N f2 ,N-N ref -2N f2 ),(N-N ref -1-2N f2 ,N-N ref -1)}。
四、低延遲資料方案
如上所述,SAO濾波方案700和800中的每一個都需要存取(例如,從記憶體180讀取像素資料和/或將像素資料寫入到)記憶體180。上面還描述了存取記憶體180是慢處理(slow process),這增加了SAO濾波器120的處理延遲。減少記憶體存取的措施為優選,以便可以減少延遲。例如,如果SAO濾波器120需要從記憶體180獲取較少的像素資料,則可以減少延遲。此外,如果SAO濾波器120需要將較少的像素資料存儲到記憶體180,也可以減少延遲。
第9圖示出了根據本公開的實施方式的示例設計,其中針對去塊濾波器110和SAO濾波器120的組合呈現資料方案900。在資料方案900中,去塊濾波器110採用濾波器設置(8,7),以及SAO濾波器120採用1像素的濾波器設置。去塊濾波器110已經對塊163、164、167和168執行了水平濾波和垂直濾波。例如,去塊濾波器110已經使用去塊濾波方案300沿著去塊邊界210和218對塊168執行了水平濾波。此外,去塊濾波器110還使用濾波設置(8,7)沿去塊邊界250和258對塊168執行垂直濾波。根據資料方案900,在去塊濾波器110之後完成塊168的處理後,去塊濾波器110可以向SAO濾波器120輸出輸出塊910,其不僅包括完全濾波的子塊234、243、272和281,還包括L形區域911。即,根據資料方案900的輸出塊910是附屬於輸出塊710的L形區域911。如下文別處所述,將L形區域911包括在輸出塊910中作為SAO濾波器120的下一個當前塊有助於減少SAO濾波器120需要從記憶體180獲取的像素資料量,從而減少引入SAO濾波器 120中的延遲。
L形區域911由部分濾波的子塊244、274、282、283和284中的每一個子塊的相應部分組成。具體地,L形區域911由以下組成:子塊274(即{(-8,8),(-1,8)})的一部分,子塊283(即{(0,8),(7,8)})的一部分,子塊284(即像素(8,8))的一部分,子塊282(即{(8,0),(8,7)})的一部分和子塊244(即{(8,-8),(8,-1)})的一部分。值得注意的是,每個部分都與完全濾波的子塊234、243、272和281之一相鄰。具體地,部分濾波的子塊274(即{(-8,8),(-1,8)})的一部分與完全濾波的子塊272邊緣相鄰;部分濾波的子塊283(即{(0,8),(7,8)})與的一部分完全濾波的子塊281邊緣相鄰;部分濾波的子塊284(即像素(8,8))的一部分與完全濾波的子塊281角相鄰;部分濾波的子塊282(即{(8,0),(8,7)})的一部分與完全濾波的子塊281邊緣相鄰;部分濾波的子塊244(即{(8,-8),(8,-1)})的一部分與完全濾波的子塊243邊緣相鄰。
值得注意的是,L形區域911的像素不期望從處理未來塊的去塊濾波器110修改或以其他方式更新,因為去塊濾波器設置=(8,7)被去塊濾波器110所採用。因此,即使L形區域911的像素屬於部分濾波的子塊,L形區域911的像素也準備好被SAO濾波器120使用。例如,即使L形區域911的像素{(0,8),(7,8)}屬於部分濾波的子塊283,這些像素也不會被沿著去塊邊界950的垂直去塊濾波操作進一步修改,因為像素{(0,8),(7,8)}中的每個像素是去塊邊界950的p側上的第8個像素,它們僅被參考而不會被沿去塊邊界950的垂直去塊濾波操作修改。
L形區域911包括兩個段,即具有{(-8,8),(8,8)}的像素的水平段和具有{(8,-8),(8,8)}的像素的垂直段。去塊濾波器設置的兩個參數之間的差值(即,8-7=1個像素)等於L形區域911的水平和垂直段中的每一個的 寬度。如果兩個不同的濾波器設置由去塊濾波器110分別用於執行垂直和水平濾波操作,L形區域911的水平段的寬度可以等於或小於垂直濾波操作所使用的濾波器設置的兩個參數之間的差值。而L形區域911的垂直段的寬度可以等於或小於水平濾波操作所使用的濾波器設置的兩個參數之間的差值。例如,去塊濾波器110可以採用水平濾波方案400(其具有去塊濾波器設置(8,5))以及垂直濾波方案500(其具有去塊濾波器設置(8,6))來處理塊163、164、167和168。由此可見,L形區域911的水平段最多可以具有8-6=2個像素的寬度,而L形區域911的垂直段最多可以具有8-5=3個像素的寬度。具體地,L形區域911的水平段可以與{(-8,8),(10,9)}的區域一樣寬,而L形區域911的垂直段可以與{(-8,8),(10,9)}的區域一樣寬。
在去塊濾波器110的輸出塊910中包含L形區域911,減少了SAO濾波器120需要從記憶體180獲取的像素資料。從記憶體180取出的像素數量的節省等於L形區域911中包含的像素數量。如第9圖所示,在輸出塊910(去塊效應濾波器110輸出的)中包含L形區域911使得SAO濾波器120能夠使用由輸入塊930(SAO濾波器120輸入的)表示的像素資料來生成輸出塊920(SAO濾波器120輸出的)。輸出塊920與完全濾波的子塊234、243、272和281的組合完全重疊,因此具有與輸出塊720或820相同的大小,儘管輸出塊920的位置從輸出塊720或820的位置偏移。輸入塊930由輸出塊910和由{(-9,-9),(-9,8)}和{(-9,-9),(8,-9)}組成的L形區域938組成。從SAO濾波器120的角度來看,SAO濾波器120藉由以下方式來接收輸入塊930:藉由資料匯流排119直接從去塊濾波器110接收輸出塊910(包括輸出塊710和L形區域911),以及接著藉由資料匯流排125從記憶體180接收L形區域938。與SAO濾波方案700相比,SAO濾波器120需要從記憶體180獲取L形區域{(-10,-10),(7,-9)}和{(-10,-8),(-9,7)}的像素資料,資料方案900只需要SAO濾波器120從記憶體180獲取L形區域938的像素資料,這 基本上減少了所獲取的像素資料量50%。獲取的像素資料量減少50%轉化為在SAO濾波器120中引入的延遲基本上減少了50%,從而大大提高了環路濾波器100的處理效率。
在一些實施例中,SAO濾波器120可以將從去塊濾波器110接收到的L形區域911的像素資料經由匯流排125存儲到記憶體180中,使得L形區域911的像素資料可由SAO濾波器120再次獲取以處理未來塊。也就是說,除了從去塊濾波器110接收L形區域911的像素資料並使用L形區域911的像素資料執行SAO濾波操作之外,SAO濾波器120可以進一步將L形區域911的像素資料存儲到記憶體180。然而,在一些可選實施例中,SAO濾波器120可以在將存儲像素資料存儲到記憶體180之前更新L形區域911的像素資料。也就是說,L形區域911的像素資料可以作為SAO濾波器120執行當前塊的SAO濾波操作的結果而被更新,然後被存儲到記憶體180以供將來使用。
第10圖示出了根據本公開的實施方式的示例設計,其中針對去塊濾波器110和SAO濾波器120的組合呈現資料方案1000。在資料方案1000中,去塊濾波器110採用濾波器設置(8,6),以及SAO濾波器120採用2像素的濾波器設置。去塊濾波器110已經對塊163、164、167和168執行了水平濾波和垂直濾波。例如,去塊濾波器110已經使用濾波設置(8,6)沿著去塊邊界210和218對塊168執行了水平濾波。此外,去塊濾波器110還使用濾波設置(8,6)沿去塊邊界250和258對塊168執行垂直濾波。根據資料方案1000,在去塊濾波器110完成處理塊168後,去塊濾波器110可以向SAO濾波器120輸出輸出塊1010,其不僅包括完全濾波的子塊234、243、272和281,而且包括L形區域1011。即,輸出塊1010根據資料方案1000是附屬於輸出塊710的L形區域1011。類似於資料方案900,將L形區域1011包含在輸出塊1010中,其用作SAO濾波器120的下一個當前塊,有助於減少SAO濾波器120需要從記憶體180獲取的像素資料量,從而減少SAO濾波器 120中引入的延遲。
類似於資料方案900,在資料方案1000中,從記憶體180獲取的像素數量的節省等於L形區域1011中包含的像素數量。如第10圖所示,在輸出塊1010(去塊效應濾波器110輸出的)中包含L形區域1011使得SAO濾波器120能夠使用由輸入塊1030(SAO濾波器120輸入的)表示的像素資料來生成輸出塊920(SAO濾波器120輸出的)。輸出塊920具有與輸出塊720或820相同的大小,儘管輸出塊920的位置從輸出塊720或820的位置偏移。輸入塊1030由以下組成:輸出塊1010和由{(-10,-10),(-9,9)}和{(-10,-10),(9,-9)}組成的L形區域1038。從SAO濾波器120的角度來看,SAO濾波器120藉由以下方式來接收輸入塊1030:藉由資料匯流排119直接從去塊濾波器110接收輸出塊1010(包括輸出塊710和L形區域1011),以及藉由資料匯流排125從記憶體180接收L形區域1038。與SAO濾波方案800相比,其中SAO濾波器120需要從記憶體180中獲取L形區域的像素資料{(-12,-12),(7,-9)}和{(-12,-8),(-9,7)},資料方案1000只需要SAO濾波器120從記憶體180獲取L形區域1038的像素資料,這比所獲取的像素資料量減少了50%以上。所獲取的像素資料量的減少轉化為在SAO濾波器120中引入的延遲基本上減少了50%,從而大大提高了環路濾波器100的處理效率。值得注意的是,在資料方案900和1000中,即使去塊濾波器110(例如,L形區域911或1011)輸出的額外像素資料量與SAO濾波器120需要從記憶體180中獲取的像素資料量減少大致相同,環路濾波器100的總延遲仍然藉由採用資料方案900或1000得到改善。這是因為從去塊效應濾波器110經由資料匯流排119傳輸資料到SAO濾波器120的速度遠快於SAO濾波器120和記憶體180之間經由資料匯流排125傳輸資料的速度。
由於資料方案900和1000涉及去塊濾波器110和SAO濾波器120,應當注意L形區域911和1011的大小不僅由去塊濾波器110所採用的濾波器設置 決定還由SAO濾波器120所採用的濾波器設置決定。具體地,L形區域911和1011的大小由去塊濾波器110所採用的濾波器設置和SAO濾波器120所採用的濾波器設置之間的更緊急或更嚴格的要求來規定。例如,在去塊濾波器110對水平和垂直濾波採用濾波器設置(8,6)並且SAO濾波器120採用1像素的濾波器設置的情況下,從去塊濾波器110經由資料匯流排119發送到SAO濾波器120的輸出塊將是塊910而不是塊1010。這是因為塊910已經包含SAO濾波器120需要從去塊濾波器110獲得的用於生成輸出塊920的所有像素資料,並且與塊910相比包含在塊1010中的額外資料將無論如何不會被用於SAO濾波器120。又例如,在去塊濾波器110對水平和垂直濾波採用濾波器設置(8,7)以及SAO濾波器120採用2像素的濾波器設置的情況下,從去塊濾波器110經由資料匯流排119發送到SAO濾波器120的輸出塊也將是塊910而不是塊1010。這是因為即使SAO濾波器120需要L形區域1011中的所有像素資料來生成輸出塊920,去塊濾波器110不能將L形區域1011中的至少一部分像素資料提供給SAO濾波器120。具體地,去塊濾波器110不能提供{(-8,9),(9,9)}或{(9,-8),(9,9)}區域的像素資料,因為這些區域中的像素值會由將處理未來塊的去塊濾波器110作進一步修改,例如,沿去塊邊界950執行垂直濾波操作。即,L形區域911或1011的水平和垂直段中的每一個的寬度可以表示為:W L =min(N f2 ,N ref -N rev ) (1)其中N ref 是去塊濾波器110的濾波器設置的第一參數,它定義了在去塊邊界的p側和q側的每一個上被參考的像素的數量,其中N rev 是去塊濾波器110的濾波器設置的第二參數,其定義了去塊邊界的p側和q側的每一個上被修改或更新的像素的數量,以及其中N f2 是SAO濾波器120的濾波器設置的參數,它定義了在每個方向上從相應像素被參考的像素的數量,用於修改相應像素的像素值。
如本文上面其他地方所述,L形區域911和1011各自包含在輸出塊 910和1010中減少了SAO濾波器120需要從記憶體180獲取的像素資料量。從記憶體180獲取的像素資料不僅轉化為如上所述的延遲改進,而且還轉化為硬體成本節省,這與環路濾波器100用於處理圖片的各種編解碼樹塊的掃描序列有關,如下所述。SAO濾波器120使用行緩衝器(line buffer)來存儲從記憶體180獲取的像素資料,直到不再需要像素資料為止。因此,從記憶體180獲取的像素資料的減少也轉化為臨時存儲像素資料所需的更小的行緩衝器大小。
在一些實施例中,SAO濾波器120可以將從去塊濾波器110接收的L形區域1011的像素資料經由匯流排125存儲到記憶體180中,使得L形區域1011的像素資料可被SAO濾波器120再次獲取以處理未來塊。也就是說,除了從去塊濾波器110接收L形區域1011的像素資料並使用L形區域1011的像素資料執行SAO濾波操作之外,SAO濾波器120還可以將L形區域1011的像素資料存儲到記憶體180中。然而,在一些可選實施例中,SAO濾波器120可以在將像素資料存儲到記憶體180之前更新L形區域1011的像素資料。即,L形區域1011的像素資料由於SAO濾波器120對當前塊執行SAO濾波操作而被更新,然後被存儲到記憶體180以供將來使用。
第11圖示出根據本公開的實施方式的示例設計,其中兩個掃描序列1110和1120被示出。圖片1150是由幀間/幀內預測模組103使用基於塊的幀內和/或幀間預測技術生成的重構圖片,以及圖片1150當前由環路濾波器100處理。圖片1150可以是包含亮度資訊的亮度圖片,也可以是包含色度資訊的色度圖片。如第11圖所示,圖片1150被劃分為十六個編解碼樹塊(coding tree block,簡稱CTB),每行(即,一個CTU行)中具有四個CTB。每個CTB可以進一步劃分為多個塊,這些塊由環路濾波器100執行的基於塊的濾波處理順序地處理,例如塊163、164、167和168。
在一些實施例中,環路濾波器100可以採用掃描序列1110以及按 照光柵掃描(raster scan)模式1115處理圖片1150的CTB。即,環路濾波器100在改變為沿正x方向處理下一個CTU行之前可以也沿正x方向處理CTU行的每個CTB,直到圖片1150的每個CTB都被處理。對於沿著圖片1150的x方向的每個像素位置,由SAO濾波器120從記憶體180獲取的像素資料被存儲在行緩衝器中,直到SAO濾波器120完成對當前CTU行的處理並開始處理下一個CTU。資料方案900或1000的採用減少了SAO濾波器120需要從記憶體180獲取的像素資料量,如本文上面其他地方所描述的,導致行緩衝器的大小減小。具體地,對於圖片1150沿著x方向的每個像素位置,資料方案900或1000使得行緩衝器能夠減少由參數N saved 表示的像素數量,其等於L形區域911或1011的水平段的寬度,即WL,如等式(1)所示。即,對於圖片1150沿著x方向的每個像素位置,N saved =W L =min(N f2 ,N ref -N rev )。考慮到整個圖片1150,受益於採用使用光柵掃描模式1115的資料方案900或1000,行緩衝器大小的總減少是:Line Buffer Size Saving=N saved ×W pic ×B (2)其中W pic 是圖片1150的寬度,以像素為單位進行測量,B是用於表示每個像素的位元數。
在一些實施例中,環路濾波器100可以採用掃描序列1120並且按照光柵掃描模式1125處理圖片1150的CTB。在掃描序列1120中,圖片1150的CTB被分成幾個圖塊(tile),例如圖塊1151和1152。環路濾波器100在改變為沿著正x方向處理圖塊中的下一個CTU行之前,也沿正x方向處理圖塊內的CTU行的每個CTB,然後,直到圖片1150的每個CTB都被處理。在按照光柵掃描模式1125處理完圖塊1151中的每個CTB之後,環路濾波器100可以從圖塊1151移動到圖塊1152以繼續處理其中的CTB,也遵循光柵掃描模式1125。因此,受益於採用使用光柵掃描模式1125的資料方案900或1000,行緩衝器大小的總減少是:Line Buffer Size Saving=N saved ×W tile ×B (3) 其中W tile 是圖塊1151和1152的寬度,以像素為單位測量,B是用於表示每個像素的位元數。在圖片1150的圖塊不具有相同寬度的情況下,等式(3)中的W tile 由圖片1150的所有圖塊的最大寬度確定。例如,如果圖塊1151的寬度大於圖塊1152的寬度,則圖塊1151的寬度作為等式(3)中的W tile
除了行緩衝器中的尺寸節省之外,資料方案900和1000可以藉由CTU高度緩衝器中的尺寸節省而使SAO濾波器120受益。CTU高度緩衝器提供與行緩衝器相似的功能,除了CTU高度緩衝器用於存儲由SAO濾波器120從記憶體180獲取的像素資料(對於該沿y方向的圖片1150的每個CTU行的每個像素位置)。因此,光柵掃描模式1115在CTU高度緩衝器中節省的大小為:CTU Height Buffer Size Saving=N saved ×H CTU ×B (4)其中H CTU 是圖片1150的每個CTB的高度,以像素為單位測量,B是用於表示每個像素的位元數。對於光柵掃描模式1125,其中存在垂直圖塊的,資料方案900和1000也導致垂直圖塊緩衝器中的尺寸節省。垂直圖塊緩衝器用於存儲當前垂直圖塊的最右行,以用於處理位於當前垂直圖塊的右側緊鄰垂直圖塊。因此,用於光柵掃描模式1125的垂直圖塊緩衝器中節省的大小為:Vertical Tile Buffer Size Saving=N saved ×H tile ×B (5)其中H tile 是圖片1150的垂直圖塊的最大高度,以像素為單位測量,以及可以與圖片1150的高度一樣高。
在資料方案900和1000中提出的關於去塊濾波器110向SAO濾波器120發送比塊710更多的像素資料的想法也適用於去塊濾波器110僅執行水平和垂直濾波操作之一的情況。例如,去塊濾波方案600可被修改,使得去塊濾波器110向SAO濾波器120輸出還包括一些部分濾波塊的部分的輸出塊。第12圖示出根據本公開的實施方式的示例設計,其中針對去塊濾波器110和SAO濾波器120的組合呈現資料方案1200。在資料方案1200中,去塊濾波器110採用濾波器 設置(8,6),以及SAO濾波器120採用2像素的濾波器設置。去塊濾波器110已經使用具有濾波器設置(8、6)的去塊濾波方案600執行了水平濾波,從而生成完全濾波的子塊272、274、281和283,以及部分濾波的子塊282和284。根據資料方案1200,在去塊濾波器110完成對塊168的處理之後,去塊濾波器110可以向SAO濾波器120輸出輸出塊1210,輸出塊1210不僅包括完全濾波的子塊272、274、281和283,還包括矩形區域1211。類似於資料方案900和1000,將矩形區域1211包含到輸出塊1210中作為SAO濾波器120的下一個當前塊,是有幫助的在減少SAO濾波器120需要從記憶體180獲取的像素資料量,從而減少引入SAO濾波器120中的延遲以及節省SAO濾波器120所需的行緩衝器和/或CTU高度緩衝器的大小。
如第12圖所示,矩形區域1211包含部分濾波的子塊282和284的相應部分(即,分別為{(8,0),(9,7)}和{(8,8),(9,15)}),其中相應部分與完全濾波的子塊之一(即,分別為子塊281和283)相鄰。此外,類似於L形區域911或1011的寬度,矩形區域1211的寬度由等式(1)確定。
在一些實施例中,SAO濾波器120可以將從去塊濾波器110接收的矩形區域1211的像素資料經由匯流排125存儲到記憶體180,從而矩形區域1211的像素資料可由SAO濾波器120再次獲取以處理未來塊。也就是說,除了從去塊濾波器110接收矩形區域1211的像素資料以及使用矩形區域1211的像素資料執行SAO濾波操作之外,SAO濾波器120還可以存儲矩形區域1211的像素資料到記憶體180。然而,在一些可選實施例中,SAO濾波器120可以在將像素資料存儲到記憶體180之前更新矩形區域1211的像素資料。也就是說,矩形區域1211的像素資料可以是由於SAO濾波器120執行當前塊的SAO濾波操作而被更新,然後被存儲到記憶體180以供將來使用。
儘管資料方案1200與僅執行水平濾波的去塊濾波器110一起使 用,但是藉由在第12圖中交換行和列可以容易地從資料方案1200中導出其中去塊濾波器110僅執行垂直濾波操作的資料方案。
在一些實施例中,SAO濾波器120可以由受約束的方向增強濾波器(constrained directional enhancement filter,簡稱CDEF)代替,其能夠執行類似於SAO濾波器120能夠執行的去振鈴操作。上述關於SAO濾波器120的每個特徵都可以直接應用於CDEF。
五、說明性實施方式
第13圖示出示例視訊編碼器1300,其中可以採用上文其他地方描述的各種實施例、濾波方案和資料方案。如圖所示,視訊編碼器1300從視訊源1305接收輸入視訊訊號並將訊號編碼成位元流1395。視訊編碼器1300具有若干組件或模組,用於對來自視訊源1305的訊號進行編碼,至少包括選自以下的一些組件:變換模組1310、量化模組1311、逆量化模組1314、逆變換模組1315、幀內估計模組1320、幀內預測模組1325、運動補償模組1330、運動估計模組1335、環路濾波器1345、重構圖片緩衝器1350、運動向量(motion vector,簡稱MV)緩衝器1365、MV預測模組1375和熵編碼器1390。運動補償模組1330和運動估計模組1335是幀間預測模組1340的一部分。幀間預測模組1340可以包括整數運動估計(integer motion estimation,簡稱IME)內核,被配置為執行整數像素搜索,以及分數運動估計(fractional motion estimation,簡稱FME)內核,被配置為執行分數像素搜索。整數像素搜索和小數像素搜索都是運動補償模組1330和運動估計模組1335的基本功能。
在一些實施例中,如上所列的模組1310-1390是由計算設備或電子裝置的一個或多個處理單元(例如,處理器)執行的軟體指令模組。在一些實施例中,模組1310-1390是由電子設備的一個或多個積體電路(integrated circuits,簡稱IC)實現的硬體電路模組。儘管模組1310-1390被示為單獨的模組, 但一些模組可以組合成單個模組。
視訊源1305提供原始視訊訊號,其呈現每個視訊幀的像素資料而不進行壓縮。也就是說,視訊源1305提供包括以時間序列呈現的相機圖片的視訊流。減法器1308計算來自視訊源1305的視訊資料與來自運動補償模組1330或幀內預測模組1325的預測像素資料1313之間的差值。變換模組1310轉換差值(或殘差像素資料或殘差訊號))1309轉換成變換係數1316(例如,藉由執行離散余弦變換或DCT)。量化模組1311將變換係數1316量化為量化資料(或量化係數)1312,其由熵編碼器1390編碼到位元流1395中。
逆量化模組1314對量化資料(或量化係數)1312進行去量化以獲得變換係數,以及逆變換模組1315對變換係數執行逆變換以產生重構殘差1319。重構殘差1319與預測的像素資料1313相加一起產生重構的像素資料1317。在一些實施例中,重構的像素資料1317被臨時存儲在行緩衝器(未示出)中用於幀內預測和空間MV預測。重構像素由環路濾波器1345濾波並存儲在重構圖片緩衝器1350中。在一些實施例中,重構圖片緩衝器1350是視訊編碼器1300外部的記憶體。在一些實施例中,重構圖片緩衝器1350是視訊編碼器1300內部的記憶體。
幀內估計模組1320基於重構的像素資料1317執行幀內預測以產生幀內預測資料。幀內預測資料被提供至熵編碼器1390以被編碼成位元流1395。幀內預測資料還被幀內預測模組1325用來產生預測像素資料1313。
運動估計模組1335藉由產生MV以參考存儲在重構圖片緩衝器1350中的先前解碼幀的像素資料來執行幀間預測。這些MV被提供至運動補償模組1330以產生預測像素資料。
視訊編碼器1300不是對位元流中的完整實際MV進行編碼,而是使用MV預測來生成預測的MV,以及用於運動補償的MV與預測的MV之間的差 值被編碼為殘差運動資料並存儲在位元流1395中。
MV預測模組1375基於參考MV生成預測的MV,參考MV為編碼先前視訊幀而生成,即,用於執行運動補償的運動補償MV。MV預測模組1375從MV緩衝器1365中獲取來自先前視訊幀的參考MV。視訊編碼器1300將對當前視訊幀生成的MV存儲在MV緩衝器1365中作為用於生成預測MV的參考MV。
MV預測模組1375使用參考MV來創建預測的MV。預測的MV可以藉由空間MV預測或時間MV預測來計算。預測的MV和當前幀的運動補償MV(MC MV)之間的差值(殘差運動資料)由熵編碼器1390編碼到位元流1395中。
熵編碼器1390藉由使用諸如上下文適應性二進位算術編解碼(context-adaptive binary arithmetic coding,簡稱CABAC)或霍夫曼編解碼的熵編碼技術將各種參數和資料編碼到位元流1395中。熵編碼器1390將各種報頭元素、標誌連同量化的變換係數1312和作為語法元素的殘差運動資料編碼到位元流1395中。位元流1395又存儲在存放裝置中或藉由網路等通訊媒介傳輸到解碼器。
環路濾波器1345對重構的像素資料1317執行濾波或平滑操作以減少編碼的偽影,特別是在區塊的邊界處。環路濾波器1345可以由環路濾波器100實施。在一些實施例中,執行的濾波操作包括可以由SAO濾波器120實施的樣本適應性偏移(sample adaptive offset,簡稱SAO)。在一些實施例中,濾波操作包括適應性環路濾波(adaptive loop filtering)操作,其可以由ALF 130實施。
第14圖示出了示例視訊解碼器1400。如圖所示,視訊解碼器1400是圖像解碼或視訊解碼電路,其接收位元流1495並將位元流1495的內容解碼為視訊幀的像素資料以供顯示。視訊解碼器1400具有用於解碼位元流1495的若干組件或模組,包括選自以下的一些組件:逆量化模組1411、逆變換模組1410、幀內預測模組1425、運動補償模組1430、環路濾波器1445、解碼圖片緩衝器 1450、MV緩衝器1465、MV預測模組1475和解析器1490。運動補償模組1430是幀間預測模組1440的一部分。
在一些實施例中,模組1410-1490是由計算設備的一個或多個處理單元(例如,處理器)執行的軟體指令模組。在一些實施例中,模組1410-1490是由電子設備的一個或多個積體電路(integrated circuit,簡稱IC)實現的硬體電路模組。儘管模組1410-1490被示為單獨的模組,但一些模組可以組合成單個模組。
解析器(例如,熵解碼器)1490接收位元流1495並根據由視訊編解碼或圖像編解碼標準定義的語法執行初始解析。解析的語法元素包括各種報頭元素、標誌以及量化資料(或量化係數)1412。解析器1490藉由使用熵編解碼技術(例如上下文適應性二進位算術編解碼(context-adaptive binary arithmetic coding,簡稱CABAC)或霍夫曼編解碼來解析各種語法元素。
逆量化模組1411對量化資料(或量化係數)1412進行去量化以獲得變換係數1416,以及逆變換模組1410對變換係數1416執行逆變換以產生重構的殘差訊號1419。重構的殘差訊號1419與來自幀內預測模組1425或運動補償模組1430的預測像素資料1413相加以產生解碼像素資料1417。解碼像素資料1417由環路濾波器1445濾波並存儲在解碼圖片緩衝器中1450。在一些實施例中,解碼圖片緩衝器1450是視訊解碼器1400外部的記憶體。在一些實施例中,解碼圖片緩衝器1450是視訊解碼器1400內部的記憶體。
幀內預測模組1425從位元流1495接收幀內預測資料,並且據此,從存儲在解碼圖片緩衝器1450中的解碼像素資料1417產生預測像素資料1413。在一些實施例中,解碼像素資料1417也被存儲在行緩衝器(未示出)中,用於幀內預測和空間MV預測。
在一些實施例中,解碼圖片緩衝器1450的內容用於顯示。顯示裝 置1455或者獲取解碼圖片緩衝器1450的內容用於直接顯示,或者獲取解碼圖片緩衝器1450的內容到顯示緩衝器。在一些實施例中,顯示裝置藉由像素傳輸(pixel transport)從解碼圖片緩衝器1450接收像素值。
運動補償模組1430根據運動補償MV(MC MV)從解碼圖片緩衝器1450中存儲的解碼像素資料1417產生預測像素資料1413。這些運動補償MV藉由將從位元流1495接收的殘差運動資料與從MV預測模組1475接收的預測MV相加來解碼。
MV預測模組1475基於為解碼先前視訊幀而生成的參考MV(例如,用於執行運動補償的運動補償MV)生成預測的MV。MV預測模組1475從MV緩衝器1465中獲取先前視訊幀的參考MV。視訊解碼器1400將為解碼當前視訊幀而生成的運動補償MV存儲在MV緩衝器1465中作為用於產生預測MV的參考MV。
環路濾波器1445對解碼的像素資料1417執行濾波或平滑操作以減少編解碼的偽影,特別是在區塊的邊界處。環路濾波器1445可以由環路濾波器100實施。在一些實施例中,執行的濾波操作包括可樣本適應性偏移(sample adaptive offset,簡稱SAO),其由SAO濾波器120實施。在一些實施例中,濾波操作包括適應性環路濾波器(adaptive loop filter,簡稱ALF),其可以由ALF 130實施。
第15圖示出濾波器1500,其可以實施視訊編碼器1300的環路濾波器1345或視訊解碼器1400的環路濾波器1445。濾波器1500還可以實施環路濾波器100或去塊濾波器110。濾波器1500可以使用基於塊的管線處理來處理圖片。濾波器1500具有若干組件或模組,包括選自以下的一些組件:輸入模組1510、相鄰塊緩衝器1520、去塊濾波器1530、去振鈴濾波器1540、濾波塊緩衝器1550和輸出模組1560。
輸入模組1510可以被配置為接收視訊圖片的當前塊,而當前塊是濾波器1500當前開始處理的塊。例如,輸入模組1510可以被配置為接收當前塊168。輸入模組1510還可以接收當前塊的一個或多個相鄰塊的第一組像素資料,以及隨後將第一組像素資料存儲於相鄰塊緩衝器1520。例如,第一組像素資料可以包括子塊243、244、272和274,子塊243、244、272和274屬於塊168的兩個相鄰塊(即,塊164和167)。
相鄰塊緩衝器1520可以被配置為存儲當前塊的一個或多個相鄰塊的第一組像素資料。在輸入模組1510接收到第一組像素資料之後,一個或多個相鄰塊的第一組像素資料由輸入模組1510存儲在相鄰塊緩衝器1520中。在一些實施例中,相鄰塊緩衝器1520可以另外存儲一個或多個相鄰塊的第二組像素資料。例如,相鄰塊緩衝器1520可以另外存儲L形區域938或1038的像素資料。去振鈴濾波器1540可以使用第二組像素資料來對輸出塊執行去振鈴操作。
去塊濾波器1530可以被配置為使用當前塊的像素資料和一個或多個相鄰塊的第一組像素資料對當前塊執行去塊操作。例如,去塊濾波器1530可以實施去塊濾波器110以及可以根據水平濾波方案300、水平濾波方案400、垂直濾波方案500或垂直濾波方案580來執行去塊操作。去塊濾波器1530可以使用塊168的像素資料以及子塊243和244的像素資料沿著去塊邊界250執行垂直濾波操作。可選地或額外地,去塊濾波器1530可以使用塊168的像素資料以及子塊272和274的像素資料沿著去塊邊界210執行水平濾波操作。
作為去塊操作的結果,去塊濾波器1530可以生成濾波器塊,該濾波器塊包括一個或多個完全濾波的子塊和一個或多個部分濾波的子塊。濾波塊緩衝器1550可以被配置為存儲濾波塊。例如,在去塊濾波器1530沿著去塊邊界210、218、250和258執行去塊操作之後,去塊濾波器1530可以生成濾波塊,該濾波器塊包含完全濾波的子塊243、272和281,以及部分濾波的子塊244、274、 282、283和284。完全濾波的子塊243、272和281可以存儲在濾波塊緩衝器1550的第一部分1552中,而部分濾波的子塊244、274、282、283和284可以存儲在濾波塊緩衝器1550的第二部分1554中。
輸出模組1560可以被配置為輸出輸出塊,該輸出塊包括一個或多個完全濾波的子塊以及一個或多個部分濾波子塊中的每一個的相應部分,該一個或多個完全濾波的子塊被存儲在濾波塊緩衝器1550的第一部分1552中,以及一個或多個部分濾波子塊中的每一個的相應部分被存儲在濾波塊緩衝器1550的第二部分1554中。例如,輸出模組1560可以被配置為輸出輸出塊910,該輸出塊910包括完全濾波的子塊234、243、272和281以及L形區域911。L形區域911與完全濾波的子塊243、272和281相鄰。如本文上面其他地方所述,L形區域911由部分濾波的子塊244、282、284、283和274的相應部分組成,其中該相應部分中的每一個與完全濾波的子塊234、243、272和281中的對應一個相鄰。
去振鈴濾波器1540可以被配置為使用輸出塊的像素資料和一個或多個相鄰塊的第二組像素資料對輸出塊執行去振鈴操作。例如,去振鈴濾波器1540可以實施SAO濾波器120以及可以使用塊930或塊1030的像素資料來執行去振鈴操作。塊930包括輸出塊910和L形區域938。塊1030包括輸出塊1010和L形區域1038。L形區域938和1038中的每一個包括來自塊163、164和167的像素資料,塊163、164和167是當前塊168的相鄰塊。
在一些實施例中,去振鈴濾波器1540可以在濾波器1500的外部,以及輸出模組1560可以將輸出塊輸出到去振鈴濾波器1540。在一些實施例中,濾波器1500可以包括去振鈴濾波器1540。去振鈴濾波器1540可以是SAO濾波器或受約束的方向增強濾波器(constrained directional enhancement filter,簡稱CDEF)。去振鈴濾波器1540可實施SAO濾波器120。
六、說明性處理
第16圖示出根據本公開的實施方式的示例處理1600。處理1600可以表示實現上述各種提出的設計、概念、方案、系統和方法的一個方面。更具體地,處理1600可以表示與實現根據本公開的有效環路濾波處理有關的所提出的概念和方案的一個方面。處理1600可以包括如塊1610、1620、1630和1640中的一個或多個所示的一個或多個操作、動作或功能。儘管被示為離散塊,但處理1600的各種塊可以被劃分成額外塊、組合成更少塊或被消除,這取決於期望的實現方式。此外,處理1600的塊/子塊可以按第16圖所示的循序執行,或者以不同的循序執行。此外,處理1600的一個或多個塊/子塊可以重複或反覆運算地執行。處理1600可以由裝置1500或在裝置1500及其任一變體中實現。僅出於說明性目的並不限制範圍,處理1600在下文中在裝置1500的上下文中進行描述。處理1600可以開始於塊1610。
在1610,處理1600可以涉及輸入模組1510接收當前塊的像素資料。例如,輸入模組1510可以從幀間/幀內預測模組103接收塊168的像素資料。處理1600可以從1610進行到1620。
在1620,處理1600可以涉及輸入模組1510接收當前塊的一個或多個相鄰塊的像素資料。例如,輸入模組1510可以從幀間/幀內預測模組103接收子塊243和244的像素資料以及子塊272和274的像素資料。子塊243和244屬於塊164,其是當前塊168的上方緊鄰的相鄰塊。子塊272和274屬於塊167,塊167是當前塊168的左側緊鄰的相鄰塊。處理1600還可以涉及輸入模組1510將一個或多個相鄰塊的像素資料存儲到相鄰塊緩衝器1520。處理1600可以從1620進行到1630。
在1630,處理1600可以涉及去塊濾波器1530藉由對當前塊執行濾波操作來生成濾波塊。濾波操作可以使用當前塊的像素資料和一個或多個相鄰塊的像素資料來執行。濾波塊可以包括一個或多個完全濾波的子塊和一個或多 個部分濾波的子塊。例如,去塊濾波器1530可以採用資料方案1200,以及使用去塊濾波器設置(8,6)沿著當前塊168的去塊邊界210和218來執行水平濾波操作。水平濾波操作可使用塊168的像素資料以及相鄰塊167的像素資料(特別是子塊272和274的像素資料)來執行。去塊濾波器1530可以相應地生成濾波塊,該濾波塊包括四個完全濾波的子塊272、274、281和283,以及兩個部分濾波的子塊282和284。處理1600可以從1630進行到1640。
在1640,處理1600可以涉及輸出模組1560輸出輸出塊,該輸出塊包括一個或多個完全濾波的子塊和一個或多個部分濾波的子塊中的每一個的相應部分,其中每個相應部分與完全濾波的子塊之一相鄰。例如,輸出模組1560可以採用資料方案1200並輸出輸出塊1210。輸出塊1210包括完全濾波的子塊272、274、281和283,以及矩形區域1211。矩形區域1211包括部分濾波的子塊282的一部分和部分濾波的子塊284的一部分。部分濾波的子塊282的一部分,即{(8,0),(9,7)},與完全濾波的子塊281相鄰。部分濾波的子塊284的一部分,即{(8,8),(9,15)},與完全濾波的子塊283相鄰。
第17圖示出根據本公開的實施方式的示例處理1700。處理1700可以表示實現上述各種提出的設計、概念、方案、系統和方法的一個方面。更具體地,處理1700可以表示與實現根據本公開的有效環路濾波處理有關的所提出概念和方案的一個方面。處理1700可以包括如塊1710、1720、1730、1740、1750和1760中的一個或多個所示的一個或多個操作、動作或功能。儘管被示為離散塊,但是處理1700的各個塊可以被劃分為額外的塊,組合成更少的塊,或被消除,取決於所需的實現方式。此外,處理1700的塊/子塊可以按第17圖所示的循序執行,或者以不同的循序執行。此外,處理1700的一個或多個塊/子塊可以重複或反覆運算地執行。處理1700可以由裝置1500或在裝置1500及其任一變體中實現。僅出於說明性目的並不限制範圍,處理1700在裝置1500的上下文中 描述如下。處理1700可以開始於塊1710。
在1710,處理1700可以涉及輸入模組1510接收當前塊的像素資料。例如,輸入模組1510可以從幀間/幀內預測模組103接收塊168的像素資料。處理1700可以從1710進行到1720。
在1720,處理1700可以涉及輸入模組1510接收當前塊的一個或多個相鄰塊的第一組像素資料。例如,輸入模組1510可以從幀間/幀內預測模組103接收子塊243和244的像素資料以及子塊272和274的像素資料。子塊243和244屬於塊164,其是當前塊168上方緊鄰的相鄰塊。子塊272和274屬於塊167,塊167是當前塊168左側緊鄰的相鄰塊。處理1700還可以涉及輸入模組1510將一個或多個相鄰塊的像素資料存儲到相鄰塊緩衝器1520中。處理1700可以從1720進行到1730。
在1730,處理1700可以涉及去塊濾波器1530藉由對當前塊執行濾波操作來生成濾波塊。濾波操作可以使用當前塊的像素資料和一個或多個相鄰塊的像素資料來執行。濾波塊可以包括一個或多個完全濾波的子塊和一個或多個部分濾波的子塊。例如,去塊濾波器1530可以採用資料方案1000,以及使用去塊濾波器設置(8,6)來執行水平濾波操作和垂直濾波操作。去塊濾波器1530可以沿著去塊邊界210和218執行水平濾波操作,以及沿著去塊邊界250和258執行垂直濾波操作。水平濾波操作可以使用塊168的像素資料以及相鄰塊167的像素資料(特別是子塊272和274的像素資料)來執行。垂直濾波操作可以使用塊168的像素資料以及相鄰塊164的像素資料(特別是子塊243和244的像素資料)來執行。去塊濾波器1530可以相應地生成濾波塊,該濾波塊包括三個完全濾波的子塊243、272和281以及五個部分濾波的子塊244、282、284、283和274。處理1700可以從1730進行到1740。
在1740,處理1700可以涉及輸出模組1560輸出輸出塊,該輸出塊 包括一個或多個完全濾波的子塊和一個或多個部分濾波的子塊中的每一個的相應部分,其中每個相應部分與完全濾波的子塊之一相鄰。例如,輸出模組1560可以採用資料方案1000並輸出輸出塊1010。輸出塊1010包括完全濾波的子塊234、243、272和281,以及L形區域1011。L形區域1011包括部分濾波的子塊244的一部分、部分濾波的子塊282的一部分、部分濾波的子塊284的一部分、部分濾波的子塊283的一部分和部分濾波的子塊274的一部分。部分濾波的子塊244的一部分,即{(8,-8),(9,-1)},與完全濾波的子塊243邊緣相鄰。部分濾波的子塊282的一部分,即{(8,0),(9,7)},與完全濾波的子塊281邊緣相鄰。部分濾波的子塊284的一部分,即{(8,8),(9,9)},與完全濾波的子塊281角相鄰。部分濾波的子塊283的一部分,即{(0,8),(7,9)}與完全濾波的子塊281邊緣相鄰。部分濾波的子塊274的一部分,即{(-8,8),(-1,9)},與完全濾波的子塊272邊緣相鄰。處理1700可以從1740進行到1750。
在1750,處理1700可以涉及輸入模組1510接收當前塊的一個或多個相鄰塊的第二組像素資料。例如,去振鈴濾波器1540可以採用資料方案1000,以及從幀間/幀內預測模組103接收L形區域1038的像素資料作為第二組像素資料。L形區域1038包括塊163、164和167的像素資料,塊163、164和167是當前塊168的相鄰塊。處理1700還可以涉及輸入模組1510將第二組像素資料存儲到相鄰塊緩衝器1520中。處理1700可以進一步涉及去振鈴濾波器1540從相鄰塊緩衝器1520接收第二組像素資料。處理1700可以從1750進行到1760。
在1760,處理1700可以涉及去振鈴濾波器1540使用輸出塊的像素資料、第二組像素資料或兩者對一個或多個完全濾波的子塊的每個像素執行第二濾波操作。例如,去振鈴濾波器1540可以使用2個像素的SAO濾波器設置對塊710的每個像素執行SAO濾波操作。去振鈴濾波器1540可以使用塊1030內的像素資料來執行SAO濾波操作,其包括塊1010和L形區域1038。對於塊710的每個像 素,去振鈴濾波器1540可以參考左方向、右方向、上方向和下方向中的每一個中的兩個像素並相應地修改相應像素的值。在一些實施例中,去振鈴濾波器1540還可在左上方向、右上方向、左下方向和右下方向中的每一個上從相應像素參考兩個像素,並相應地修改相應像素的值。
七、說明性電子系統
許多上述特徵和應用方式被實現為軟體過程,其被指定為記錄在電腦可讀存儲介質(也被稱為電腦可讀介質)上的一組指令。當這些指令由一個或多個計算或處理單元(例如,一個或多個處理器、處理器內核或其他處理單元)執行時,它們使處理單元執行指令中指示的動作。電腦可讀介質的示例包括但不限於唯讀光碟驅動器(compact disc read-only memory,簡稱CD-ROM)、快閃記憶體驅動器、隨機存取記憶體(random-access memory,簡稱RAM)晶片、硬碟驅動器、可擦除可程式設計唯讀記憶體(electrically erasable programmble read-only,簡稱EPROM)、電可擦除可程式設計唯讀記憶體(electrically erasable programmable read-only memory,簡稱EEPROM)等。電腦可讀介質不包括藉由無線或有線連接傳遞的載波和電子訊號。
在本說明書中,術語“軟體”意味著包括唯讀記憶體中的固件或者存儲在磁存儲裝置中的應用程式,該應用程式可以被讀入到記憶體中以用於處理器進行處理。同時,在一些實施例中,複數個軟體發明可以作為更大程式的子部分來實現,而保留不同的軟體發明。在一些實施例中,複數個軟體發明可以作為獨立的程式來實現。最後,一起實現本文所描述的軟體發明的獨立的程式的任何結合在本發明的範圍內。在一些實施例中,當軟體程式被安裝以在一個或者複數個電子系統上進行操作時,軟體程式定義了一個或者複數個特定的機器實現方式,該機器實現方式執行和實施該軟體程式的操作。
第18圖概念性地示出實現本公開的一些實施例的電子系統 1800。電子系統1800可以是電腦(例如,臺式電腦,個人電腦,平板電腦等),電話,個人數位助理(personal digital assistant,簡稱PDA)或任一其他種類的電子設備。這種電子系統包括各種類型的電腦可讀介質以及用於各種其他類型的電腦可讀介質的介面。電子系統1800包括匯流排1805,處理單元1810,圖形處理單元(graphics-processing unit,簡稱GPU)1815,系統記憶體1820,網路1825,唯讀記憶體1830,永久存放設備1835,輸入設備1840,以及輸出設備1845。
匯流排1805共同表示所有系統、週邊設備和晶片組匯流排,它們以通訊方式連接電子系統1800的眾多內部設備。例如,匯流排1805將處理單元1810與GPU1815,唯讀記憶體1830、系統記憶體1820和永久存放設備1835通訊連接。
從這些各種記憶體單元中,處理單元1810獲取要執行的指令和要處理的資料,以便執行本公開的處理。在不同的實施例中,處理單元可以是單個處理器或多核處理器。一些指令被傳遞到GPU 1815並由其執行。GPU 1815可以卸載各種計算或補充由處理單元1810提供的影像處理。
唯讀記憶體(ROM)1830存儲由處理單元1810和電子系統的其他模組使用的靜態資料和指令。另一方面,永久存放設備1835是讀寫存放裝置。該設備是即使在電子系統1800關閉時也存儲指令和資料的非易失性存儲單元。本公開的一些實施例使用大型存放區設備(例如磁片或光碟及其對應的磁碟機)作為永久存放設備1835。
其他實施例使用卸除式存放裝置設備(例如軟碟、快閃記憶體設備等,及其對應的磁碟機)作為永久存放裝置。與永久存放設備1835一樣,系統記憶體1820是讀寫記憶體設備。然而,與存放設備1835不同,系統記憶體1820是易失性讀寫記憶體,例如隨機存取記憶體。系統記憶體1820存儲處理器在運行時使用的一些指令和資料。在一些實施例中,根據本公開的處理被存儲在系 統記憶體1820、永久存放設備1835和/或唯讀記憶體1830中。例如,根據一些實施例,各種記憶體單元包括用於處理多媒體剪輯的指令。從這些各種記憶體單元中,處理單元1810獲取要執行的指令和要處理的資料,以便執行一些實施例的處理。
匯流排1805還連接到輸入和輸出設備1840和1845。輸入裝置1840使使用者能夠向電子系統傳達資訊和選擇命令。輸入裝置1840包括字母數位鍵盤和定點設備(也被稱為“游標控制設備”)、照相機(例如,網路攝像頭)、麥克風或用於接收語音命令的類似設備等。輸出設備1845顯示由電子系統生成的圖像或者輸出資料。輸出設備1845包括印表機和顯示裝置,例如陰極射線管(cathode ray tube,簡稱CRT)或液晶顯示器(liquid crystal display,簡稱LCD),以及揚聲器或類似的音訊輸出設備。一些實施例包括用作輸入和輸出設備的設備,例如觸控式螢幕。
最後,如第18圖所示,匯流排1805還藉由網路介面卡(未示出)將電子系統1800耦合到網路1825。電腦可以是電腦網路的一部分(例如局域網(local area network,簡稱LAN),廣域網路(wide area network,簡稱WAN)或內部網路),或多個網路中的一個網路,比如說網際網路。電子系統1800的任一或所有組件可以與本公開結合使用。
一些實施例包括電子組件,例如,微處理器、存儲裝置和記憶體,其將電腦程式指令存儲到機器可讀介質或者電腦可讀介質(可選地被稱為電腦可讀存儲介質、機器可讀介質或者機器可讀存儲介質)。電腦可讀介質的一些示例包括RAM、ROM、唯讀光碟(read-only compact disc,CD-ROM),可燒錄光碟(recordable compact disc,CD-R)、可讀寫光碟(rewritable compact disc,CD-RW)、唯讀數位通用光碟(read-only digital versatile disc)(例如,DVD-ROM,雙層DVD-ROM)、各種可記錄/可讀寫DVD(例如DVD RAM、DVD-RW、 DVD+RW等)、快閃記憶體(如SD卡、迷你SD卡,微SD卡等)、磁性和/或固態硬碟、唯讀和可燒錄藍光®(Blu-Ray®)盤、超高密度光碟和其他任何光學介質或磁介質,以及軟碟。電腦可讀介質可以存儲由至少一個處理單元執行的電腦程式,並且包括用於執行各種操作的指令集。電腦程式或電腦代碼的示例包括機器代碼,例如編譯器產生的機器代碼,以及包含由電腦、電子組件或微處理器使用注釋器(interpreter)而執行的高級代碼的文檔。
當以上討論主要是指執行軟體的微處理器或多核處理器時,很多上述的功能和應用程式由一個或複數個積體電路執行,如特定應用的積體電路(application specific integrated circuit,ASIC)或現場可程式設計閘陣列(field programmable gate array,FPGA)。在一些實施例中,這種積體電路執行存儲在該電路本身上的指令。此外,一些實施例執行存儲在可程式設計邏輯器件(programmable logic device,PLD),ROM或RAM裝置中的軟體。
如本發明的說明書和任一申請專利範圍所使用,術語“電腦”、“伺服器”、“處理器”和“記憶體”均指電子裝置或其他技術裝置。這些術語不包括人或群體。出於說明的目的,術語顯示或顯示裝置指在電子裝置上進行顯示。如本發明的說明書和任一申請專利範圍中所使用,術語“電腦可讀介質”、“電腦可讀媒質”和“機器可讀介質”完全局限於有形的、實體的物體,其以電腦可讀的形式存儲資訊。這些術語不包括任何無線訊號、有線下載訊號和其他任何短暫訊號。
在結合許多具體細節的情況下描述了本發明時,本領域之通常技術者將認識到,本發明可以以其他具體形式而被實施,而不脫離本發明的精神。
附加的說明
本文所描述的主題有時表示不同的組件,其包含在或者連接到其他不同的組件。可以理解的是,所描述的結構僅是示例,實際上可以由許多其 他結構來實施,以實現相同的功能,從概念上講,任何實現相同功能的組件的排列實際上是“相關聯的”,以便實現所需功能。因此,不論結構或中間部件,為實現特定的功能而組合的任何兩個組件被視為“相互關聯”,以實現所需的功能。同樣,任何兩個相關聯的組件被看作是相互“可操作連接”或“可操作耦接”,以實現特定功能。能相互關聯的任何兩個組件也被視為相互“可操作地耦接”,以實現特定功能。能相互關聯的任何兩個組件也被視為相互“可操作地耦合”以實現特定功能。可操作連接的具體例子包括但不限於物理可配對和/或物理上相互作用的組件,和/或無線可交互和/或無線上相互作用的組件,和/或邏輯上相互作用和/或邏輯上可交互的組件。
此外,關於基本上任何複數和/或單數術語的使用,本領域之通常技術者可以根據上下文和/或應用從複數變換為單數和/或從單數到複數。為清楚起見,本發明明確闡述了不同的單數/複數排列。
此外,本領域之通常技術者可以理解,通常,本發明所使用的術語特別是申請專利範圍中的,如申請專利範圍的主題,通常用作“開放”術語,例如,“包括”應解釋為“包括但不限於”,“有”應理解為“至少有”“包括”應解釋為“包括但不限於”等。本領域之通常技術者可以進一步理解,若計畫介紹特定數量的申請專利範圍內容,將在申請專利範圍內明確表示,並且,在沒有這類內容時將不顯示。例如,為幫助理解,下面申請專利範圍可能包含短語“至少一個”和“一個或複數個”,以介紹申請專利範圍的內容。然而,這些短語的使用不應理解為暗示使用不定冠詞“一個”或“一種”介紹申請專利範圍內容,而限制了任何特定神專利範圍。甚至當相同的申請專利範圍包括介紹性短語“一個或複數個”或“至少有一個”,不定冠詞,例如“一個”或“一種”,則應被解釋為表示至少一個或者更多,對於用於介紹申請專利範圍的明確描述的使用而言,同樣成立。此外,即使明確引用特定數量的介紹性內容,本領域之通常技術者可以認識到,這樣的 內容應被解釋為表示所引用的數量,例如,沒有其他修改的“兩個引用”,意味著至少兩個引用,或兩個或兩個以上的引用。此外,在使用類似於“A、B和C中的至少一個”的表述的情況下,通常如此表述是為了本領域之通常技術者可以理解該表述,例如,“系統包括A、B和C中的至少一個”將包括但不限於單獨具有A的系統,單獨具有B的系統,單獨具有C的系統,具有A和B的系統,具有A和C的系統,具有B和C的系統,和/或具有A、B和C的系統等。本領域之通常技術者進一步可理解,無論在說明書中,申請專利範圍中或者附圖中,由兩個或兩個以上的替代術語所表現的任何分隔的單詞和/或短語應理解為,包括這些術語中的一個,其中一個,或者這兩個術語的可能性。例如,“A或B”應理解為,“A”,或者“B”,或者“A和B”的可能性。
從前述可知,出於說明目的,本發明已描述了各種實施方案,並且在不偏離本發明的範圍和精神的情況下,可以進行各種變形。因此,此處所公開的各種實施方式不用於限制,真實的範圍和申請由申請專利範圍表示。
1600:處理
1610、1620、1630、1640:步驟

Claims (18)

  1. 一種視訊編解碼方法,用於處理一圖片的一當前塊,包括:接收該當前塊的像素資料;接收該當前塊的一個或多個相鄰塊的像素資料;藉由使用該當前塊的像素資料和該一個或多個相鄰塊的該像素資料對該當前塊執行一濾波操作來生成一濾波塊,該濾波塊包括一個或多個完全濾波的子塊和一個或多個部分濾波的子塊;以及輸出一輸出塊,該輸出塊包括該一個或多個完全濾波的子塊,以及該一個或多個部分濾波的子塊中的每一個子塊的一相應部分,該相應部分與該等完全濾波的子塊之一相鄰,其中,該濾波操作包括一去塊操作,該圖片包括使用基於塊的幀內或幀間預測的一重構圖片,該濾波操作的執行包括以下之一或兩者:沿著該當前塊的至少一個垂直去塊邊界執行一水平濾波操作,以及沿著該當前塊的至少一個水平去塊邊界執行一垂直濾波操作,該水平濾波操作包括在該至少一個垂直去塊邊界的兩側中的每一側上,參考一第一數量的多個像素以及修改一第二數量的多個像素,以及該垂直濾波操作包括在至少一個水平去塊邊界的兩側的每一側上,參考一第三數量的多個像素以及修改一第四數量的多個像素。
  2. 如請求項1所述之視訊編解碼方法,其中,該一個或多個相鄰塊包括緊鄰該當前塊上方的一第一相鄰塊和緊鄰該當前塊左側的一第二相鄰塊,該一個或多個部分濾波子塊包括與該當前塊重疊的三個部分濾波子塊,以及分別與該第一相鄰塊和該第二相鄰塊重疊的兩個部分濾波子塊,以及該等部分濾波的子塊的該等相應部分共同形成一L形區域。
  3. 如請求項1所述之視訊編解碼方法,其中, 該一個或多個相鄰塊包括緊鄰該當前塊左側的一相鄰塊,該一個或多個部分濾波的子塊包括與該當前塊重疊的一個部分濾波的子塊,以及該部分濾波的子塊的該相應部分包括一矩形區域。
  4. 如請求項1所述之視訊編解碼方法,其中,該濾波操作的執行包括執行該水平濾波操作,該相應部分包括具有一第五數量的多個像素的一水平尺寸的一矩形區域,以及該第五數量等於該第一數量和該第二個數量之間的一差值。
  5. 如請求項1所述之視訊編解碼方法,其中,該濾波操作的執行包括執行該垂直濾波操作,該相應部分包括具有一第六數量的多個像素的一垂直尺寸的一矩形區域,以及該第六數量等於該第三數量和該第四數量之間的一差值。
  6. 如請求項1所述之視訊編解碼方法,其中,執行該濾波操作包括執行該水平濾波操作和該垂直濾波操作;該等部分濾波的子塊的該等相應部分共同形成一L形區域,該L形區域包括一第一段和一第二段,該第一段具有一第五數量的多個像素的一寬度,以及該第二段具有一第六數量的多個像素的一寬度,該第五數量等於該第一數量和該第二數量之間的一差值,以及該第六數量等於該第三數量和該第四數量之間的一差值。
  7. 如請求項1所述之視訊編解碼方法,其中,該一個或多個相鄰塊的該像素資料包括一第一組像素資料,以及其中該濾波操作包括一第一濾波操作,該方法還包括: 接收該一個或多個相鄰塊的一第二組像素資料,使用該輸出塊的像素資料、該第二組像素資料或兩者對該一個或多個完全濾波的子塊的每個像素執行一第二濾波操作,其中該第二濾波操作包括:參考與該一個或多個完全濾波子塊的一相應像素在一左方向、一右方向、一上方向和一下方向中的每一個方向上相鄰的一第七數量的多個像素;以及基於該參考修改該一個或多個完全濾波的子塊的該相應像素。
  8. 如請求項7所述之視訊編解碼方法,其中,該等部分濾波的子塊的該等相應部分共同形成一L形區域,該L形區域包括一第一段和一第二段,該第一段具有一第五數量的多個像素的一寬度,以及該第二段具有一第六數量的多個數量的一寬度,該第二濾波操作進一步包括在一左上方向、一右上方向、一左下方向和一右下方向參考該第七數量的多個像素,該等像素與該一個或多個完全濾波的子塊的該相應像素相鄰,以及該第七數量等於該第五數量和該第六數量。
  9. 如請求項7所述之視訊編解碼方法,其中,該第一濾波操作包括由一第一濾波器執行的一去塊操作,該第二濾波操作包括由一第二濾波器執行的一去振鈴操作,該第二濾波器包括樣本適應性偏移濾波器或約束方向增強濾波器,以及該第一濾波器和該第二濾波器被配置為使用基於塊的管線處理來處理該圖片。
  10. 一種視訊編解碼裝置,包括:一輸入模組,被配置為接收一圖片的一當前塊;一相鄰塊緩衝器,被配置為存儲該當前塊的一個或多個相鄰塊的一第一組像素資料; 一去塊濾波器,被配置為使用該當前塊的像素資料以及該一個或多個相鄰塊的該第一組像素資料對該當前塊執行一去塊操作;一濾波塊緩衝器,被配置為存儲一個或多個完全濾波的子塊和一個或多個部分濾波的子塊;以及一輸出模組,被配置為輸出一輸出塊,該輸出塊包括該一個或多個完全濾波的子塊,以及該一個或多個部分濾波的子塊中的每一個子塊的一相應部分,該相應部分與該等完全濾波的子塊之一相鄰,其中,該去塊濾波器被配置為藉由參考一第一數量的多個像素以及在至少一個垂直或水平去塊邊界的兩側的每一側上修改一第二數量的多個像素,來執行沿著該當前塊的至少一個垂直或水平去塊邊界的該去塊操作。
  11. 如請求項10所述之視訊編解碼裝置,其中,該一個或多個相鄰塊包括緊鄰該當前塊上方的一第一相鄰塊和緊鄰該當前塊左側的一第二相鄰塊,該去塊操作包括一水平濾波操作和一垂直濾波操作,該一個或多個部分濾波子塊包括與該當前塊重疊的三個部分濾波子塊,以及分別與該第一相鄰塊和該第二相鄰塊重疊的兩個部分濾波子塊,以及該等部分濾波的子塊的該等相應部分共同形成一L形區域。
  12. 如請求項10所述之視訊編解碼裝置,其中,該一個或多個相鄰塊包括緊鄰該當前塊左側的一相鄰塊,該去塊操作包括一水平濾波操作,該一個或多個部分濾波的子塊包括與該當前塊重疊的一個部分濾波的子塊,以及該部分濾波的子塊的該相應部分包括一矩形區域。
  13. 如請求項10所述之視訊編解碼裝置,其中, 該相應部分包括一矩形區域,該矩形區域具有一第五數量的多個像素的寬度或長度,以及該第五數量等於該第一數量和該第二數量的一差值。
  14. 如請求項13所述之視訊編解碼裝置,其中,該等部分濾波的子塊的該等相應部分共同形成一L形區域,該L形區域包括一第一段和一第二段,其中該第一段和該第二段中每個段具有該第五數量的多個像素的一寬度。
  15. 如請求項10所述之視訊編解碼裝置,其中,該相鄰塊緩衝器還被配置為存儲該一個或多個相鄰塊的一第二組像素資料,該裝置還包括:一去振鈴濾波器,被配置為使用該輸出塊的像素資料以及該一個或多個相鄰塊的該第二組像素資料對該一個或多個完全濾波的子塊的每個像素執行一去振鈴操作。
  16. 如請求項15所述之視訊編解碼裝置,其中,該去振鈴濾波器被配置為藉由參考與在一左方向、一右方向、上方向以及下方向中的每一個方向上的該一個或多個完全濾波的子塊的每個像素相鄰的一第七數量的多個像素來執行該去振鈴操作,以及基於該參考修改該一個或多個完全濾波的子塊的該相應像素。
  17. 如請求項16所述之視訊編解碼裝置,其中,該去振鈴濾波器被配置為藉由進一步參考在左上方向、右上方向、左下方向和右下方向的每個方向上與該一個或多個完全濾波的子塊的該相應像素相鄰的該第七數量的多個像素來執行該去振鈴操作。
  18. 如請求項15所述之視訊編解碼裝置,其中,該去振鈴濾波器 包括一樣本適應性偏移濾波器或一約束方向增強濾波器,以及該去塊濾波器和該去振鈴濾波器被配置為使用基於塊的管線處理來處理該圖片。
TW111136540A 2021-09-29 2022-09-27 視訊編解碼方法及裝置 TWI832449B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163249633P 2021-09-29 2021-09-29
US63/249,633 2021-09-29
US17/844,034 US11917144B2 (en) 2021-09-29 2022-06-19 Efficient in-loop filtering for video coding
US17/844,034 2022-06-19

Publications (2)

Publication Number Publication Date
TW202315411A TW202315411A (zh) 2023-04-01
TWI832449B true TWI832449B (zh) 2024-02-11

Family

ID=85770096

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111136540A TWI832449B (zh) 2021-09-29 2022-09-27 視訊編解碼方法及裝置

Country Status (3)

Country Link
US (1) US11917144B2 (zh)
CN (1) CN115883852A (zh)
TW (1) TWI832449B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240040159A1 (en) * 2022-07-27 2024-02-01 Qualcomm Incorporated Systems and methods for video decoding with partial-block deblocking filtering for use by constrained directional enhancement filter

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201813381A (zh) * 2011-11-04 2018-04-01 新加坡商英孚布瑞智有限私人貿易公司 在圖框內預測中產生預測塊的方法
TW201828708A (zh) * 2016-12-22 2018-08-01 聯發科技股份有限公司 結合多個去雜訊化技術及並行分組圖像補塊的非局部適應性環路濾波器

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8576924B2 (en) * 2005-01-25 2013-11-05 Advanced Micro Devices, Inc. Piecewise processing of overlap smoothing and in-loop deblocking
TWI264951B (en) * 2005-05-19 2006-10-21 Cheertek Inc Deblock filter method for applying on video encoding/decoding and the apparatus thereof
EP2737704B1 (en) * 2011-09-13 2020-02-19 HFI Innovation Inc. Method and apparatus for reduction of deblocking filter
US9282344B2 (en) * 2011-11-04 2016-03-08 Qualcomm Incorporated Secondary boundary filtering for video coding
US9872044B2 (en) * 2013-05-15 2018-01-16 Texas Instruments Incorporated Optimized edge order for de-blocking filter
TW202344047A (zh) * 2017-04-06 2023-11-01 美商松下電器(美國)知識產權公司 解碼裝置、編碼裝置及電腦可讀取之非暫時性記憶媒體
CA3132582A1 (en) * 2019-03-07 2020-09-10 Digitalinsights Inc. Image encoding/decoding method and apparatus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201813381A (zh) * 2011-11-04 2018-04-01 新加坡商英孚布瑞智有限私人貿易公司 在圖框內預測中產生預測塊的方法
TW201828708A (zh) * 2016-12-22 2018-08-01 聯發科技股份有限公司 結合多個去雜訊化技術及並行分組圖像補塊的非局部適應性環路濾波器

Also Published As

Publication number Publication date
US20230412800A1 (en) 2023-12-21
US11917144B2 (en) 2024-02-27
TW202315411A (zh) 2023-04-01
CN115883852A (zh) 2023-03-31

Similar Documents

Publication Publication Date Title
US8576924B2 (en) Piecewise processing of overlap smoothing and in-loop deblocking
US7792385B2 (en) Scratch pad for storing intermediate loop filter data
WO2020253831A1 (zh) 一种编解码方法、装置及存储介质
TW202101979A (zh) 具有適應性參數集之適應性迴路濾波器
TWI527438B (zh) 圖像編碼方法、圖像解碼方法、圖像編碼裝置、圖像解碼裝置及其程式產品
US11778235B2 (en) Signaling coding of transform-skipped blocks
US20200014928A1 (en) Entropy Coding Of Coding Units In Image And Video Data
KR20220030991A (ko) 적응적 루프 필터링에서의 샘플 패딩
JP2023106592A (ja) 適応ループフィルタリングのためのサンプル決定
TW201313028A (zh) 在視訊寫碼中之係數掃描
JP7480303B2 (ja) ビデオ符号化のための方法並びに、その装置、及びコンピュータプログラム
CN113994670A (zh) 具有虚拟边界的跨分量自适应环路滤波的视频编解码方法及装置
JP2023090929A (ja) ビデオ復号化方法、ビデオ復号化装置及び記憶媒体
CA3105441A1 (en) Apparatus and method for filtering in video coding
WO2019179401A1 (zh) 图像滤波方法、装置及视频编解码器
TWI832449B (zh) 視訊編解碼方法及裝置
US20210152826A1 (en) Specifying Video Picture Information
KR20220100069A (ko) 비디오 필터링에서의 오프셋을 위한 방법 및 장치
JP2007258882A (ja) 画像復号装置
JP2010098633A (ja) 予測符号化装置および予測符号化方法
JP2014078891A (ja) 画像処理装置、画像処理方法
CN114430904A (zh) 利用环内子图像级可控噪声生成进行的视频压缩
TWI834269B (zh) 視訊處理方法及裝置
RU2815738C2 (ru) Определение режима кодирования цветности на основе внутрикадрового предсказания на основе матрицы
WO2023093863A1 (en) Local illumination compensation with coded parameters