2014-07-14 4 views
5

Ich arbeite an einem Projekt zur Implementierung von HEVC Intra-Prediction mit MATLAB. Ich habe so viele Artikel gelesen, um die Codes in MATLAB zu schreiben, und endlich habe ich das getan. (eines der nützlichsten war dieser Artikel: Intra Coding of the HEVC Standard)HEVC (h.265) Intraprognose

Der Hauptzweck des Projektes ist ein Vergleich zwischen HEVC und AVC Intra-Vorhersage HEVC zu zeigen, geben eine bessere Qualität für das rekonstruierte Bild als AVC tut und Aus diesem Grund sollte die endgültige SAE (Summe der absoluten Fehler), die HEVC gibt, kleiner sein als die mit AVC. Im Gegensatz zu einem HEVC-Dekodierer/Kodierer mit einer dynamischen Blockaufteilung in Bezug auf die Menge an Details in jedem Bereich eines Bildes, muss ich laut meinem Vorgesetzten für jede Intra-Vorhersage-Implementierung auf einer eine spezifische Blockgröße auf einmal haben Bild, also einmal mit 64x64, einmal mit 32x32 und so weiter zu 4x4.

Jetzt habe ich ein großes Problem in meiner Arbeit, die SAE von HEVC ist bei weitem größer als AVC. Ich weiß nicht, warum ist es so?

Wenn es benötigt wird, lassen Sie mich wissen, um meine Codes später zu veröffentlichen.

Auch habe ich einige Zweifel und Fragen bei der Umsetzung HEVC Intraprädiktion:

1- Ist alles in der unten lineare Interpolation Funktion und die zugehörigen Parameter (nach dem zitierten Artikel) ändern sich mit der Blockgröße oder ist immer gleich für verschiedene Blockgrößen?

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

2- (>>) der Verschiebungsoperator, die Normalverteilung ist wie (zum Beispiel 5 bis >> Teilung einer vorzeichenbehaftete Zahl von 32 gleich ist) oder eine binäre Verschiebung einer vorzeichenbehaftete Zahl? (ich sagte vorzeichenbehaftete Zahl aufgrund der negativen Verschiebung in Bezug auf einige Winkelmodi. Auch ist es auffällig, dass bitweises Verschieben einer vorzeichenlosen Zahl ein völlig anderes Ergebnis ergibt als ein signiertes)

3- Für die Berechnung der Kosten von jedem Modus, ich habe SAE (Summe der absoluten Fehler) als Ersatz für die Vollkostenfunktion für die Vereinfachung verwendet.

Denken Sie, dass die Verwendung von SAE anstelle der HEVC-Kostenfunktion den Prozess der Wahl des besten Modus für jeden Block beeinflusst? Wenn es so ist, haben Sie eine andere genauere Methode als SAE als Ersatz für HEVC Kostenfunktion, um die beste Art der Vorhersage für jedes Pixel zu wählen?

4- Für Vergleichszwecke zwischen h.265 (HEVC) und h.264 (AVC) Intraprognose sollte die Gesamt-SAE eines rekonstruierten Bildes durch HEVC geringer sein als AVC. Dies ist jedoch in meinen Ergebnissen nicht der Fall, und die SAE von AVC ist geringer als die von HEVC. Ich kann den Grund nicht finden, der dieses Problem verursachte. Kann mir jemand helfen?

+0

Können Sie Ihren Matlab Hevc Code teilen? –

Antwort

4

1 - Eigentlich ist die Formel für die lineare Interpolation, die in dieser Veröffentlichung erwähnt wird, nicht ganz richtig. Nach Setion 8.4.4.2.3 „Filterprozess von benachbarten Proben“ des H.265-Standard, sollte es sein:

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

Blick auf den standard für weitere Informationen. In Bezug auf Ihre Frage zur Anpassung einiger Zahlen in Abhängigkeit von der Blockgröße: Diese so genannte "starke Filterung" sollte nur für Referenzpixel von 32x32 Intra-Blöcken angewendet werden. Für kleinere Blöcke kann nur die "Reference Sample Smoothing" aus Ihrem Artikel verwendet werden. Überprüfen Sie erneut den gleichen Abschnitt in der standard, wenn Sie Details wissen möchten.

2 - Der Shift-Operator bezeichnet in diesen Fällen eine Bitverschiebung des Absolutwerts. Seien Sie sich bewusst, dass Bitshifts in Matlab signierte Zahlen enthalten, manche Funktionen verschieben den absoluten Wert, andere verschieben das K2-Komplement mit Berücksichtigung des Vorzeichens.

3 - Da Ihr "Projekt ist ein Vergleich zwischen HEVC und AVC Intraprognose zu zeigen, HEVC wird bessere Qualität geben", ich denke, es ist sinnvoll, nur SAE oder die Summe der quadrierten Fehler (SSE) zu verwenden. Wenn Sie irgendeine Art von Qualitäts-/Bitratenbewertung wie in der HEVC-Kostenfunktion durchführen, müssten Sie Ihrem Projekt viel mehr hinzufügen als nur eine Intraprognose, um meiner Meinung nach beide Standards adäquat zu vergleichen.

4 - Sie haben Recht, das Ergebnis sollte umgekehrt sein. Überprüfen Sie Ihre Berechnung der SAE. Überprüfen Sie auch mit dem angegebenen Abschnitt in der Norm, ob Sie die Referenzmusterfilterung korrekt durchführen.

Andere Sachen: 1 - Während Sie 64 × 64 Inter Prädiktionsblöcke in HEVC haben können, können Sie nur bis zu 32x32 Intrablöcken haben. 2 - Vorsicht bei der Verwendung von Ganzzahlen in Matlab, dies hat auch einmal alle meine Berechnungen vermasselt. Überlegen Sie, ob die Anzahl der Bits der von Ihnen verwendeten Ganzzahlen ausreichend ist, oder wechseln Sie zu Doppelten. Wenn Sie ein Bild laden, sind die Werte standardmäßig 8-Bit-Ganzzahlen ohne Vorzeichen, Sie müssen sie für einige Berechnungen typisieren.