本文來(lái)自Xiph.org的創(chuàng)始人Christopher Montgomery在Mozilla博客上的分享,他也是Mozilla Daala的貢獻(xiàn)者。Christopher Montgomery是多媒體圈的傳奇人物,Xiph.org于2000年推出Ogg Vorbis,2013年加入Mozilla,有興趣的同學(xué)可以去Google他的Wiki頁(yè)面。本文由LiveVideoStack摘譯,并由專業(yè)的多媒體工程師進(jìn)行審校。時(shí)間倉(cāng)促,如有錯(cuò)誤請(qǐng)?jiān)诹粞灾兄赋觥?/p>
AV1是由開放媒體聯(lián)盟(AOM)開發(fā)的新一代通用視頻編解碼器。該聯(lián)盟是使用谷歌的VPx編解碼器,思科的Thor編解碼器和Mozilla的Xiph.Org的Daala編解碼器作為起點(diǎn)來(lái)開發(fā)新的編解碼器。AV1的性能超越了VP9和HEVC,使得其成為下一代編解碼器。AV1編解碼器擁有開源FOSS許可證,并且永遠(yuǎn)是免版稅的。
作為探索AV1及首次應(yīng)用于產(chǎn)品化編碼器系列文章的第二篇。系列的第一篇?jiǎng)t發(fā)表于Xiph.org網(wǎng)站,研究了從亮度特征預(yù)測(cè)色度的技術(shù)。今天,我們將介紹約束定向增強(qiáng)濾波器技術(shù)。如果你一直想知道為什么要編寫一個(gè)編解碼器,那么請(qǐng)正襟危坐,仔細(xì)閱讀!
AV1中的濾波操作
實(shí)際上,所有的視頻編解碼器都使用增強(qiáng)濾波器來(lái)改善主觀輸出質(zhì)量。
“增強(qiáng)濾波器”是指不需要編碼圖像信息或提高客觀編碼效率,而是使輸出在某種程度上看起來(lái)更好的技術(shù)。增強(qiáng)濾波器的使用必須非常小心,因?yàn)樗鼈兺鶗?huì)丟失一部分信息。因此它們偶爾會(huì)被視為欺騙性作弊,以使得輸出質(zhì)量看起來(lái)比實(shí)際更好。
但這是不公平的。增強(qiáng)濾波器旨在減輕或消除客觀指標(biāo)盲目的,但對(duì)人眼來(lái)說(shuō)是顯而易見的特定偽像。因此,即使濾波是作弊的一種形式,一個(gè)好的視頻編解碼器也需要它可以利用所有的實(shí)用有效的作弊手段。
濾波器可分為多個(gè)類別。首先,濾波器可以是規(guī)范的或非規(guī)范的。規(guī)范濾波器是編解碼器的必要部分;如果沒(méi)有它,就無(wú)法正確地解碼視頻。而非規(guī)范濾波器則為可選項(xiàng)。
其次,可根據(jù)濾波器的應(yīng)用位置進(jìn)行劃分。如:在編碼開始之前就應(yīng)用于輸入的預(yù)處理濾波器,在解碼完成之后應(yīng)用于輸出的后處理濾波器,以及在編碼循環(huán)中作為編碼處理的集成部分的環(huán)路濾波器。預(yù)處理和后處理濾波器通常是非規(guī)范的,位于編解碼器之外。根據(jù)定義來(lái)看,環(huán)路濾波器應(yīng)該是規(guī)范的,它也是編解碼器本身的一部分;它們用于編碼優(yōu)化過(guò)程,并應(yīng)用于存儲(chǔ)的參考幀或幀間編碼。
AV1在編碼循環(huán)中使用了三個(gè)標(biāo)準(zhǔn)增強(qiáng)濾波器。第一個(gè)是去塊效應(yīng)濾波器,它的功能就是其字面意思:消除編碼塊邊緣明顯的邊界偽影。盡管DCT相對(duì)非常適合于壓縮自然圖像中的相鄰像素的空間冗余,但它往往將誤差集中在塊邊緣處。請(qǐng)記住,消除這種塊效應(yīng)傾向是Daala使用重疊變換的主要原因,但AV1是一種具有硬塊邊緣的更傳統(tǒng)的編解碼器。因此,它需要一個(gè)傳統(tǒng)的去塊效應(yīng)濾波器來(lái)平滑塊邊緣的塊斑現(xiàn)象。
傳統(tǒng)的基于DCT塊的編解碼器中塊效應(yīng)示例。塊邊緣的誤差因形成硬邊緣而特別明顯。更糟糕的是,DCT(以及DCT系列中的其他變換)傾向于將誤差集中在塊邊緣,從而使得問(wèn)題變得更為復(fù)雜。
三個(gè)過(guò)濾器中的最后一個(gè)是環(huán)路恢復(fù)濾波器。它是由兩個(gè)可配置與可開關(guān)的濾波器,Wiener濾波器和Self-Guided濾波器組成。兩者均是卷積濾波器,通過(guò)構(gòu)建卷積核以恢復(fù)原始輸入圖像的某些質(zhì)量損失,并且通常用于去噪和/或邊緣增強(qiáng)。對(duì)AV1來(lái)說(shuō),它們是有效的通用去噪濾波器,通過(guò)可配置的模糊量來(lái)消除DCT 基礎(chǔ)噪聲。
這里,位于二者之間的過(guò)濾器,即約束定向增強(qiáng)濾波器(CDEF)是我們感興趣的并將重點(diǎn)介紹的濾波器;與環(huán)路恢復(fù)濾波器相同的是,它可以消除尖銳邊緣周圍的振鈴和基礎(chǔ)噪聲;但與環(huán)路恢復(fù)濾波器不同的是,它具有方向性。它可以順著邊緣,而不是像大多數(shù)濾波器那樣在所有方向上盲目濾波,這使得CDEF特別神奇;它也是視頻編碼中應(yīng)用的第一個(gè)可實(shí)現(xiàn)且有用的方向?yàn)V波器。
CDEF漫長(zhǎng)而曲折的道路
CDEF的故事并不是一帆風(fēng)順的;它是漫長(zhǎng)的,充滿了回溯、離題和死胡同。
CDEF將多個(gè)研究路徑結(jié)合在一起,每個(gè)路徑都為AV1中最終定稿的約束定向增強(qiáng)濾波器提供了一個(gè)想法或靈感。CDEF的“方向性”方面在實(shí)施中特別新穎,卻是從幾個(gè)不同的地方汲取了想法和靈感。
使用DCT變換或類DCT變換是要使用更少的數(shù)字來(lái)表示該像素塊。DCT非常擅長(zhǎng)壓縮大多數(shù)視覺(jué)圖像中的能量,也就是說(shuō),它傾向于將分散的像素圖案集中至幾個(gè)重要的輸出系數(shù)中。
但DCT的壓縮效率也有例外。舉兩個(gè)最常見的例子,DCT并不能很好地表示方向邊緣或模式。如果我們繪制陡峭的斜邊緣的DCT輸出,會(huì)發(fā)現(xiàn)輸出系數(shù)也形成陡峭的斜邊!轉(zhuǎn)換后的邊緣是不同的,但它仍然存在,并且通常比它轉(zhuǎn)換前的更復(fù)雜—即壓縮失敗了!
如果有的話,銳利特征是基于DCT的編解碼器的傳統(tǒng)問(wèn)題,因?yàn)樗鼈儾荒芎芎玫貕嚎s。在這里,我們看到一個(gè)尖銳的邊緣(左)及其DCT變換系數(shù)(右)。原始邊緣的能量以定向波紋圖案通過(guò)DCT輸出來(lái)傳播。
在過(guò)去的二十年中,視頻編解碼器研究越來(lái)越多地關(guān)注本質(zhì)上帶有方向性的變換,濾波和預(yù)測(cè)方法,以便更好地表示方向性的邊緣和模式,并糾正DCT的這一基本限制。
經(jīng)典定向預(yù)測(cè)器
定向幀內(nèi)預(yù)測(cè)是現(xiàn)代視頻編解碼器中使用的最著名的定向技術(shù)之一。我們都熟悉H.264和VP9的方向性預(yù)測(cè)模式,編解碼器會(huì)基于已解碼塊周圍的像素來(lái)預(yù)測(cè)方向模式。目的是在變換之前去除(或大大減少)方向性邊緣中包含的能量。通過(guò)預(yù)測(cè)或去除無(wú)法壓縮的特征,我們可以提高編解碼器的整體效率。
AVC / H.264中, 4×4塊可使用的9種預(yù)測(cè)模式圖示:8種方向性預(yù)測(cè),加簡(jiǎn)單的DC預(yù)測(cè)。
運(yùn)動(dòng)補(bǔ)償,也可以算作一種方向預(yù)測(cè)。它是在特定方向上移動(dòng)塊,也是在DCT之前預(yù)測(cè)消除冗余。塊的匹配是指向性的并在濾波之后完成。和幀內(nèi)方向預(yù)測(cè)一樣,當(dāng)匹配位置不是整像素時(shí),會(huì)用到插值濾波器。
定向?yàn)V波器
如前面所提到的,視頻編解碼器大量使用濾波操作來(lái)消除塊效應(yīng)和基底噪聲。盡管濾波器是用于二維平面,但濾波器本身往往可分解為水平濾波和垂直濾波兩步。
定向?yàn)V波技術(shù)嘗試在非水平或垂直的方向上進(jìn)行濾波。該技術(shù)在圖像處理中已經(jīng)很常見,其中噪聲消除和特殊效果濾波器通常是邊緣和方向感知的。然而,這些定向?yàn)V波器通常是基于對(duì)定向變換的輸出進(jìn)行濾波。例如,我之前基于雙樹復(fù)數(shù)小波變換編寫的圖像去噪濾波器。
在視頻編碼領(lǐng)域我們最感興趣的定向?yàn)V波器是沿著一個(gè)方向來(lái)直接處理像素的,而不是對(duì)定向變換的頻域輸出結(jié)果進(jìn)行濾波操作。如果你嘗試設(shè)計(jì)這樣一個(gè)怪異的濾波器,你很快就會(huì)遇到第一個(gè)關(guān)鍵的設(shè)計(jì)問(wèn)題:當(dāng)你的濾波器抽頭位置不再橫平豎直地坐落在網(wǎng)格排列的像素上時(shí),你如何“沿”水平和垂直以外的方向呢?
一種可能是在高質(zhì)量圖像處理中使用的經(jīng)典方法:變換濾波器的內(nèi)核并根據(jù)需要對(duì)像素空間重新采樣。有人甚至認(rèn)為這是唯一的“正確”或“完善”的答案。這個(gè)方法用于亞像素運(yùn)動(dòng)補(bǔ)償和經(jīng)常使用快速逼近的定向預(yù)測(cè),但在沒(méi)有適當(dāng)?shù)闹夭蓸拥那闆r下往往無(wú)法取得很好的結(jié)果。
也就是說(shuō),即使是快速逼近法其代價(jià)也很高,因?yàn)槟阍静⒉恍枰@么做。因此如果可能的話,盡量避免重新采樣步驟是值得的。速度方面的代價(jià)是視頻編碼中很少使用定向?yàn)V波的原因之一。
定向變換
定向變換試圖在其自身變換過(guò)程中解決DCT變換的邊緣壓縮問(wèn)題。
實(shí)驗(yàn)性的定向變換分為兩類。使用固有方向基的變換,例如定向小波。這類變換往往是過(guò)采樣/過(guò)完備,也就是說(shuō),它們產(chǎn)生的輸出數(shù)據(jù)多于輸入數(shù)據(jù)—而且通常是多很多。這看起來(lái)可能像是違背了初衷:原本你是想減少數(shù)據(jù)量,而不是增加!但是這些變換仍然能夠聚集能量,并且編碼器仍然選擇一些小的輸出子集進(jìn)行編碼,因此它與普通的有損DCT編碼沒(méi)有什么不同。也就是說(shuō),過(guò)度完備的變換在內(nèi)存和計(jì)算方面往往代價(jià)高昂。因此,它們并未在主流視頻編碼中占據(jù)一席之地。
第二類定向變換采用常規(guī)的非定向變換,如DCT,并通過(guò)改變輸入或輸出來(lái)修改它。改變可以是重采樣的形式,矩陣乘法(可以被視為重采樣的特殊形式)或者是改變輸入數(shù)據(jù)順序的技巧。
顯然,第二種變換是性能最強(qiáng)的,因?yàn)樗俣群芸?。重新排列?shù)字并不需要數(shù)學(xué)運(yùn)算。
使用像素和系數(shù)重新排列而非重采樣濾波器在不同方向上實(shí)現(xiàn)定向變換的兩個(gè)示例。
示例來(lái)自于論文An Overview of Directional Transforms in Image Coding,
(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.187.640&rep=rep1&type=pdf) by Xu, Zeng, and Wu。
一些實(shí)際的復(fù)雜性使得實(shí)現(xiàn)變得棘手。重排列以使對(duì)角線邊緣[大多數(shù)]成為垂直或水平線,使得輸入變?yōu)榉欠叫尉仃嚒母拍钌现v,這不是問(wèn)題;二維DCT變換是可分解的,而且因?yàn)槲覀兛梢元?dú)立地運(yùn)行行和列變換,所以我們可以簡(jiǎn)單地為每個(gè)長(zhǎng)度的行和列使用不同大小的一維DCT變換,如上圖所示。實(shí)際上,這意味著我們需要針對(duì)每種可能的列長(zhǎng)度進(jìn)行不同的DCT分解,這使得硬件團(tuán)隊(duì)在實(shí)現(xiàn)時(shí)非常頭疼。
還有其他方法可以處理重新排列的非方形區(qū)域,或者提出重新采樣方案,以保持輸入方形或僅對(duì)輸出進(jìn)行操作。下面提到的大多數(shù)定向變換論文討論了各種解決方案。
但是現(xiàn)在,定向變換的故事大多結(jié)束了。一旦你解決了方向變換的各種復(fù)雜問(wèn)題并部署了一些實(shí)用的東西,出乎意料的原因使得它們?cè)诂F(xiàn)代編解碼器中并不能應(yīng)用—即定向變換技術(shù)與變塊尺寸技術(shù)競(jìng)爭(zhēng)獲得收益。也就是說(shuō),在具有固定的塊大小的編解碼器中,單獨(dú)添加定向變換技術(shù)可以獲得不錯(cuò)的性能提升。而單獨(dú)添加可變塊尺寸大小技術(shù)則可以獲得更好的收益。但聯(lián)合使用可變塊尺寸技術(shù)和定向變換技術(shù)相對(duì)單獨(dú)采用可變塊大小技術(shù)卻沒(méi)有任何收益??勺儔K大小技術(shù)已經(jīng)有效地消除了方向變換所利用的同類冗余,至少是我們目前知道的并且已經(jīng)處理地很成熟的那些冗余。
在Daala研究期間,Nathan Egge和我都進(jìn)行了廣泛的定向變換實(shí)驗(yàn)。我從輸入和輸出端考慮問(wèn)題,使用稀疏矩陣乘法將對(duì)角線邊緣的輸出轉(zhuǎn)換為垂直/水平排列。Nathan通過(guò)重新排列的輸入對(duì)主流定向方法進(jìn)行了測(cè)試。我們得出了相同的結(jié)論:額外的復(fù)雜度并沒(méi)有帶來(lái)客觀或主觀的收益。
Daala(以及其他編解碼器)中的定向變換可能是失敗的,但這一研究恰好回答了之前提出的問(wèn)題:如何在沒(méi)有高昂代價(jià)的重采樣步驟的情況下快速沿邊緣濾波?答案是:不重新采樣。通過(guò)沿最近的整像素移動(dòng)來(lái)估算角度。通過(guò)字面或概念上重新排列像素來(lái)估算轉(zhuǎn)換后的內(nèi)核。這種方法會(huì)引入一些混疊,但它很有效,而且速度足夠快。
定向預(yù)測(cè)器,第2部分:Daala編年史
Daala方面關(guān)于CDEF的工作則是嘗試做一些完全不同的事情:常規(guī)的,枯燥的,定向的幀內(nèi)預(yù)測(cè)?;蛘咧辽僭贒aala編解碼器中變成了常規(guī)。
在剛剛開始研究的時(shí)候,我寫了Daala的頻域幀內(nèi)預(yù)測(cè)方案。這個(gè)方案背后的數(shù)學(xué)是有效的,對(duì)此沒(méi)有任何的擔(dān)憂。然而,一個(gè)簡(jiǎn)單的實(shí)現(xiàn)需要巨大的矩陣乘法,這對(duì)于產(chǎn)品化的編解碼器來(lái)說(shuō)太昂貴了。我們希望稀疏化——消除對(duì)預(yù)測(cè)沒(méi)有太大貢獻(xiàn)的矩陣元素——這樣就可以將計(jì)算代價(jià)降低到完整乘法的百分之幾。
稀疏化并未如預(yù)期的那樣發(fā)揮作用。至少在我們實(shí)現(xiàn)的過(guò)程中,為使技術(shù)變得切實(shí)可行,稀疏化丟失了太多的信息。
當(dāng)然,Daala仍然需要某種形式的幀內(nèi)預(yù)測(cè),Jean-Marc Valin想到了一個(gè)方法:一個(gè)獨(dú)立的在空間域工作的預(yù)測(cè)編解碼器,然后再映射到頻域Daala編解碼器上。作為一種與Daala編解碼器協(xié)同工作但不依賴于Daala編解碼器的共生體,它不受Daala的搭接和頻域要求的限制。這就是Intra Paint。
應(yīng)用于照片Sydney Harbor的Intra Paint預(yù)測(cè)算法的示例。視覺(jué)輸出方向明確,并且很好地遵循原始圖像中的邊緣和特征,邊緣清晰的同時(shí)產(chǎn)生令人愉悅(可能有些奇怪)的結(jié)果。
Intra paint的工作方式也很新穎;它僅沿著塊的邊緣編碼一維向量,然后沿所選方向掃描圖案。這就像噴出一系列彩色油漆點(diǎn),然后在開放區(qū)域向不同方向大范圍延伸油漆。
Intra paint很有前景,并且自身會(huì)產(chǎn)生了一些非常漂亮的結(jié)果,但因效率不足以作為標(biāo)準(zhǔn)的內(nèi)部預(yù)測(cè)器。它根本沒(méi)有獲得足夠的比特位來(lái)編碼它自己的信息。
原始悉尼港照片與Intra Paint結(jié)果之間的殘差。盡管Intra Paint的視覺(jué)效果令人滿意,但我們發(fā)現(xiàn)它不是一個(gè)客觀上準(zhǔn)確的預(yù)測(cè)器。原始照片和Intra Paint結(jié)果之間的差異相當(dāng)大,即使是沿著它看起來(lái)重現(xiàn)良好的許多邊緣也是如此。
Intra paint的“失敗”再次播下了不同想法的種子;盡管Intra paint對(duì)于預(yù)測(cè)器來(lái)說(shuō)可能不夠客觀精確,但其大部分輸出主觀上看起來(lái)都很好。也許paint技術(shù)可以用作后處理濾波器器來(lái)改善主觀視覺(jué)質(zhì)量?Intra paint很好地遵循尖銳邊緣,因此可能用于消除沿最強(qiáng)邊緣趨于最強(qiáng)的基礎(chǔ)噪聲。這是Daala原始paint-deringing濾波器背后的思路,最終演化為CDEF。
關(guān)于方向預(yù)測(cè)的主題還有一個(gè)有趣的提及,盡管它目前也是視頻編碼的死胡同。David Schleef實(shí)現(xiàn)了一個(gè)有趣的邊緣/方向感知重采樣濾波器,稱為邊緣定向插值(EDI)。其他編解碼器(例如VPx系列和AV1)已經(jīng)嘗試了下采樣參考幀,傳送下采樣的參考幀以節(jié)省編碼比特,然后對(duì)參考幀進(jìn)行上采樣以便以全分辨率使用。我們希望EDI提供的改進(jìn)的上采樣/插值可以將該技術(shù)提高到可用的程度。我們還希望使用EDI作為運(yùn)動(dòng)補(bǔ)償中改進(jìn)的亞像素插值濾波器。遺憾的是,這些想法均尚未實(shí)現(xiàn)。
縮小差距,合并思路
在這一點(diǎn)上,我已經(jīng)描述了完成CDEF所需的所有主要背景,但按時(shí)間順序,這個(gè)故事涉及到更多長(zhǎng)期的摸索。Intra paint產(chǎn)生了原始的Daala paint-dering濾波器,其重新實(shí)現(xiàn)了intra-paint算法以執(zhí)行作為后濾波器的去除操作。事實(shí)證明,Paint-dering在生產(chǎn)中使用速度太慢了。
結(jié)果是,我們整理了從Intra paint學(xué)到的經(jīng)驗(yàn)教訓(xùn),最后放棄了實(shí)驗(yàn)。Daala引入了Thor的CLPF一段時(shí)間,然后Jean-Marc基于Intra paint邊緣方向搜索(速度快且效果很好)和條件替換濾波器(CRF)構(gòu)建了第二個(gè)更快的Daala去振鈴濾波器。CRF在某種程度上受到中值濾波器的啟發(fā),產(chǎn)生類似于雙邊濾波器的結(jié)果,但本質(zhì)上是高度可矢量化的,因此速度更快。
7抽頭線性濾波器vs受約束的替換濾波器的演示,應(yīng)用于有噪聲的一維信號(hào),其中噪聲旨在模擬量化對(duì)原始信號(hào)的影響。
最終的Daala去振鈴濾波器使用了兩個(gè)一維CRF濾波器,一個(gè)沿邊緣方向運(yùn)行的7抽頭濾波器,以及一個(gè)較弱的5抽頭濾波器。兩個(gè)濾波器僅對(duì)整像素進(jìn)行操作,不執(zhí)行重采樣。那時(shí),Daala 的去振鈴過(guò)濾器看起來(lái)很像我們現(xiàn)在所知的CDEF。
最近我們將Daala作為輸入編解碼器提交給AOM,這個(gè)中間濾波器促成了AV1 daala_dering實(shí)驗(yàn)。思科也提交了自己的去振鈴濾波器,即Thor編解碼器中的約束低通濾波器(CLPF)。 有一段時(shí)間,兩個(gè)去振鈴濾波器共存于AV1實(shí)驗(yàn)代碼庫(kù)中,它們可以單獨(dú)啟用,甚至可以一起運(yùn)行。這使得在操作中能注意到在它們的操作中有效的協(xié)同作用,以及在濾波器各個(gè)階段中的其他相似之處。
因此,我們最終獲得了CDEF:將Cisco的CLPF濾波器和第二版本的Daala去振鈴濾波器合并為一個(gè)高性能,方向感知的去振鈴濾波器。
現(xiàn)代CDEF
CDEF濾波器很簡(jiǎn)單,與我們之前的濾波器非常相似。它由我們之前使用過(guò)的三個(gè)部分(定向搜索,約束替換/低通濾波器和整像素抽頭放置)構(gòu)成??紤]到這一點(diǎn)冗長(zhǎng)的背景序言,你幾乎可以看看完成的CDEF并思考,“是嗎?其余部分在哪里?”CDEF是通過(guò)使濾波器的細(xì)節(jié)完全正確而不是僅僅使其變得越來(lái)越復(fù)雜而獲得的增益的示例。簡(jiǎn)單有效才是目的。
方向搜索
CDEF在特定方向上運(yùn)行,因此有必要確定該方向。使用的搜索算法與intra paint和paint-dering相同,并且有八個(gè)可能的方向。
當(dāng)前CDEF濾波器的八個(gè)可能的濾波方向。每個(gè)方向塊中的編號(hào)行對(duì)應(yīng)于方向搜索中的參數(shù)“k”。
我們通過(guò)計(jì)算輸入塊的“方向”變量來(lái)確定濾波器方向,每個(gè)方向一個(gè)數(shù)值,沿著所選方向的線上的所有像素被強(qiáng)制轉(zhuǎn)換為相同的值。然后我們選擇結(jié)果與原始?jí)K最匹配的方向。方法是,對(duì)于每個(gè)方向d,我們首先找到每條線k中的像素的平均值,然后沿每條線求給定像素值與該線上像素的平均值之間的平方差的和。
選擇與輸入塊最佳匹配的方向d的示例過(guò)程。首先,我們確定每個(gè)方向的每個(gè)操作線k的平均像素值。如上圖所示,每條線k的每個(gè)像素設(shè)置為該平均值。然后,逐像素按平均預(yù)測(cè)值減去輸入值,再對(duì)殘差求和。選擇具有最低誤差/方差的方向作為最佳方向。
這給出了總平方誤差,最小總平方誤差即是我們選擇的方向。雖然上面的圖例也是如此,但沒(méi)有理由將平方誤差轉(zhuǎn)換為方差;每個(gè)方向都考慮相同的像素?cái)?shù),因此兩者都會(huì)選擇相同的答案。這就節(jié)省額外的除法操作!
這是計(jì)算方向誤差直觀,長(zhǎng)期的方法。 我們可以將此機(jī)械過(guò)程簡(jiǎn)化為以下等式:
在該等式中,E是誤差,p是像素,x_p是像素的值,k是上面方向圖中的編號(hào)行之一,N_(d,k)是方向d的編號(hào)行k的基數(shù)(像素?cái)?shù))。 這個(gè)等式在實(shí)踐中可以簡(jiǎn)化; 例如,對(duì)于每個(gè)給定的d,第一項(xiàng)是相同的。最后,CDEF的AV1實(shí)現(xiàn)目前需要每像素5.875個(gè)加法和1.9375次乘法,并且可以進(jìn)行深度矢量化,使得計(jì)算量小于8×8 DCT變換操作。
濾波器抽頭
CDEF濾波器在整個(gè)塊上逐個(gè)像素地工作。方向d選擇要使用的特定方向?yàn)V波器,每個(gè)濾波器由一組濾波器抽頭(即輸入像素位置)和抽頭權(quán)重組成。
CDEF從概念上構(gòu)建了由兩個(gè)一維濾波器組成的方向?yàn)V波器。主濾波器沿選定的方向運(yùn)行,就像Daala去環(huán)過(guò)濾器一樣。二級(jí)濾波器以交叉模式運(yùn)行兩次,與主濾波器成45°角,就像Thor的CLPF一樣。
相對(duì)于所選方向d的主要和次要一維濾波器方向性的圖示。主濾波器沿選定的濾波器方向運(yùn)行,二級(jí)濾波器以45°角穿過(guò)所選方向。塊中的每個(gè)像素都被相同地濾波。
濾波器以通常在像素之間放置理想抽頭位置的角度運(yùn)行。我們選擇最接近的精確像素位置,注意構(gòu)建對(duì)稱濾波器內(nèi)核,而不是重新采樣。
濾波器中的每個(gè)抽頭也具有固定權(quán)重。濾波過(guò)程采用每個(gè)抽頭的輸入值,應(yīng)用約束函數(shù),將結(jié)果乘以抽頭的固定權(quán)重,然后將此輸出值加至被濾波的像素。
主要的和次要的抽頭位置以及濾波器方向的固定權(quán)重(w)。對(duì)于主要抽頭,偶數(shù)強(qiáng)度a = 2,b = 4,而對(duì)于奇數(shù)強(qiáng)度a = 3,b = 3。過(guò)濾后的像素以灰色顯示。
實(shí)踐中,主濾波器和二級(jí)濾波器并不是單獨(dú)運(yùn)行的,而是組合成一步運(yùn)行的單個(gè)濾波器內(nèi)核。
約束函數(shù)
CDEF使用約束低通濾波器,其中每個(gè)濾波器抽頭的值首先用約束函數(shù)來(lái)處理(公式見下),參數(shù)如下:抽頭系數(shù)和被濾波的像素的殘差d,濾波器強(qiáng)度S和濾波器阻尼參數(shù)D:
約束函數(shù)會(huì)弱化或者完全排除那些與被濾波像素差異過(guò)大的像素。若抽頭系數(shù)與中心像素值(由強(qiáng)度參數(shù)S定義)的差值落在某一范圍,則被完整考慮;若差值落在強(qiáng)度和阻尼參數(shù)之間,則被約束。最終,超出阻尼參數(shù)的抽頭系數(shù)差值被忽略了。
約束函數(shù)的圖示。在兩個(gè)圖中,x軸表示中心像素和抽頭像素之間的差值(d),y軸表示約束函數(shù)的輸出值。左圖顯示了改變強(qiáng)度(S)的效果。右圖顯示了改變阻尼(D)的效果。
然后將約束函數(shù)的輸出值乘以與相對(duì)于中心像素的每個(gè)抽頭位置相關(guān)聯(lián)的固定權(quán)重。最后,將得到的值(每個(gè)抽頭對(duì)應(yīng)一個(gè)值)加到中心濾波像素,得到最終的濾波像素值??偨Y(jié)為:
引入的(p)和(s)參數(shù)分別表示主要和次要抽頭組的值。
還有一些不難理解的實(shí)現(xiàn)細(xì)節(jié),如四舍五入與修剪函數(shù),都可以在完整的CDEF文件中找到。
結(jié)果
CDEF旨在圖像的硬邊緣附近消除或減少基礎(chǔ)噪聲和振鈴效應(yīng),同時(shí)也不模糊或損壞該邊緣。正如現(xiàn)在AV1中所使用的,效果細(xì)微但一致。將來(lái)有可能會(huì)更加依賴于CDEF。
圖像Fruits的編碼中減少振鈴/基礎(chǔ)噪聲的例子。第一個(gè)插圖特寫顯示未經(jīng)CDEF處理的區(qū)域,第二個(gè)插圖顯示經(jīng)CDEF處理后的相同區(qū)域。
增強(qiáng)濾波器的數(shù)值必須通過(guò)主觀測(cè)試來(lái)確定。更好的客觀指標(biāo)數(shù)字產(chǎn)生的效果也不一定令人震驚,但是推動(dòng)CDEF的視覺(jué)改進(jìn)大多是在原始客觀測(cè)試工具(如PSNR或SSIM)的評(píng)估能力之外。
因此,我們進(jìn)行了多輪主觀測(cè)試。首先是在CDEF的開發(fā)過(guò)程中(當(dāng)時(shí)Daala dering和Thor CLPF仍然是技術(shù)競(jìng)爭(zhēng)對(duì)手),然后對(duì)合并的CDEF濾波器進(jìn)行更廣泛的測(cè)試。由于CDEF是前幾代編解碼器中從未出現(xiàn)過(guò)的新的濾波器,因此測(cè)試主要包括啟用了CDEF的AV1和不啟用CDEF的AV1。
對(duì)于高延遲配置,CDEF與no CDEF的主觀A-B比較結(jié)果。
主觀結(jié)果顯示,6個(gè)截?cái)嘀杏?個(gè)具有統(tǒng)計(jì)學(xué)意義(p <.05)。這通常對(duì)應(yīng)于編碼效率5-10%的提升,對(duì)于添加到其他成熟編解碼器的單個(gè)工具而言,這是一個(gè)相當(dāng)大的獲益。
正如預(yù)期的那樣,客觀測(cè)試顯示了約1%的適度改進(jìn),但客觀測(cè)試僅在與主觀結(jié)果一致的情況下才有用。主觀測(cè)試是金牌標(biāo)準(zhǔn),且主觀結(jié)果清晰明了。
測(cè)試還表明,在使用較少的編解碼器“工具”進(jìn)行編碼時(shí),CDEF的性能會(huì)更好;與定向變換一樣,CDEF正在與AV1中其他更復(fù)雜的技術(shù)競(jìng)爭(zhēng)來(lái)獲得編碼收益。由于CDEF簡(jiǎn)單,小巧,快速,因此可以提供未來(lái)降低AV1編碼器復(fù)雜度的方法。就解碼器復(fù)雜度而言,CDEF體現(xiàn)了AV1解碼器復(fù)雜度的3%~10%,具體將取決于該編解碼的配置。
-
解碼器
+關(guān)注
關(guān)注
9文章
1128瀏覽量
40595 -
濾波器
+關(guān)注
關(guān)注
159文章
7674瀏覽量
177252
原文標(biāo)題:AV1:下一代視頻標(biāo)準(zhǔn)—約束定向增強(qiáng)濾波器
文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論