簡體   English   中英

HEVC(h.265)幀內預測

[英]HEVC (h.265) intra-prediction

我正在使用MATLAB實現HEVC幀內預測的項目。 我讀了很多文章以在MATLAB中編寫代碼,最后我做到了。 (最有用的文章之一是: HEVC標准的幀內編碼

該項目的主要目的是比較HEVC和AVC幀內預測,​​以顯示HEVC將為重建圖像提供比AVC更好的質量,因此,HEVC給出的最終SAE(絕對誤差之和)應小於與AVC。 根據主管的說法,與HEVC解碼器/編碼器相對於圖像每個區域中的細節量具有動態塊划分的方法不同,對於圖像上的每個幀內預測實現,我必須一次具有特定的塊大小,即一次使用64x64,一次使用32x32,依此類推,直到4x4。

現在我的工作中有一個大問題,那就是HEVC的SAE遠遠大於AVC。 我不知道為什么會這樣?

如果需要,請告訴我以后再發布代碼。

我在實施HEVC幀內預測時也有一些疑問和疑問:

1-下面的線性插值函數及其相關參數(根據引用的文章)是否隨塊大小而變化,或者對於不同的塊大小始終相同?

Px,y = ((32 − wy )· Ri,0 + wy · Ri+1,0 + 16 ) >> 5
cy = (y · d) >> 5
wy = (y · d) &31

2-(>>)移位運算符,就像普通的除法運算(例如>> 5等於有符號數除以32)還是帶符號數的二進制移位? (我說帶符號的數字是由於與某些角度模式相關的負位移而引起的。同樣值得注意的是,無符號數字的按位移位與帶符號的數字產生的結果完全不同)

3-為了計算每種模式的成本,我使用SAE(絕對誤差之和)代替了簡化的全部成本函數。

C = DHad + λ · Rmode (HEVC cost function)

您是否認為使用SAE而非HEVC成本函數會影響為每個模塊選擇最佳模式的過程? 如果是這樣,除了SAE之外,您還有其他更准確的方法來代替HEVC成本函數為每個像素選擇最佳的預測模式嗎?

4-為了在h.265(HEVC)和h.264(AVC)幀內預測之間進行比較,HEVC重建的圖片的總SAE應小於AVC。 但是,我的結果並非如此,AVC的SAE小於HEVC。 我找不到導致此問題的原因。 有人可以幫我嗎?

1-實際上,此出版物中提到的線性插值公式不太正確。 根據H.265標准的第8.4.4.2.3節“相鄰樣本的過濾過程”,應為:

Px,y = ((63 − wy )· Ri,0 + wy · Ri+1,0 + 32 ) >> 6

請查看標准以獲取更多信息。 關於您要根據塊大小調整一些數字的問題:所謂的“強濾波”應僅應用於32x32內塊的參考像素。 對於較小的塊,只能使用文章中的“參考樣本平滑”。 再次,如果您想了解詳細信息,請檢查標准中的同一部分。

2-在這些情況下,移位運算符表示絕對值的位移。 要知道在matlab中將帶符號的數字移位,有些函數會移位絕對值,有些會考慮符號而移位K2補碼。

3-由於您的“項目是HEVC與AVC幀內預測之間的比較,以顯示HEVC將提供更好的質量”,我想僅使用SAE或平方誤差總和(SSE)是有意義的。 我認為,如果您像在HEVC成本函數中那樣進行某種質量/比特率評估,則需要向您的項目中添加不僅僅是幀內預測的內容,以便充分比較這兩種標准。

4-是的,結果應該相反。 檢查您的SAE計算。 還要檢查標准中的規定部分,是否正確進行了參考樣品過濾。

其他內容:1-雖然HEVC中可以有64x64幀間預測塊,但最多只能有32x32幀內塊。 2-在matlab中使用整數時要小心,這也會搞砸我所有的計算。 考慮一下您使用的整數位數是否足夠,還是切換為雙精度。 加載圖像時,默認情況下,這些值是8位無符號整數,您必須對它們進行類型轉換以進行某些計算。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM