2014-07-14 16 views
5

Sto lavorando a un progetto per implementare l'intra-predizione HEVC con MATLAB. Ho letto tanti articoli per scrivere i codici in MATLAB e finalmente l'ho fatto. (uno dei più utile è stato questo articolo: Intra Coding of the HEVC Standard)HEVC (h.265) intra-predizione

Lo scopo principale del progetto è un confronto tra HEVC e AVC intra-predizione per mostrare HEVC darà una migliore qualità per l'immagine ricostruita di AVC fa e per questo motivo il SAE finale (somma degli errori assoluti) che HEVC fornisce dovrebbe essere inferiore a quello con AVC. A differenza di un decodificatore/codificatore HEVC con una divisione di blocchi dinamica rispetto alla quantità di dettagli in ciascuna area di un'immagine, secondo il mio supervisore, devo avere una dimensione di blocco specifica alla volta per ogni implementazione di intra-predizione su un immagine, cioè una volta con 64x64, una volta con 32x32 e così via su 4x4.

Ora ho un grosso problema nel mio lavoro che è il SAE di HEVC è di gran lunga più grande di AVC. Non so perché è così?

Se è necessario fammi sapere per postare i miei codici più tardi.

Inoltre ho qualche dubbio e domande nell'attuazione HEVC intra-predizione:

1- fa niente nella funzione interpolazione lineare sottoriportate ed i relativi parametri (secondo l'articolo citato) variazione con la dimensione del blocco o è sempre lo stesso per diverse dimensioni di blocco?

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

2- (>>) l'operatore di spostamento, è come una divisione normale (ad esempio >> 5 è pari alla divisione di un numero con segno del 32) oppure è una traslazione binaria di un numero con segno? (Ho detto numero firmato a causa dello spostamento negativo relativo ad alcuni modi angolari.è anche evidente che lo spostamento bit-saggio di un numero senza segno dà un risultato totalmente diverso da quello firmato)

3- Per calcolare il costo di ogni modalità, ho usato SAE (somma degli errori assoluti) come sostituzione per la funzione di costo completo per la semplificazione.

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

Pensi usando SAE invece di funzione di costo HEVC influenzerà il processo di scelta modalità migliore per ogni blocco? Se è così, hai qualche altro metodo più accurato di SAE come sostituto della funzione di costo HEVC per scegliere la migliore modalità di previsione per ciascun pixel?

4- Per scopi di confronto tra intra-previsione h.265 (HEVC) e h.264 (AVC), il valore SAE totale di un'immagine ricostruita da HEVC deve essere inferiore a AVC. Tuttavia, non è il caso dei miei risultati e il SAE di AVC è inferiore a HEVC. Non riesco a trovare il motivo che ha causato questo problema. qualcuno può aiutarmi?

+0

Puoi condividere il codice matlab hevc? –

risposta

4

1 - In realtà, la formula per l'interpolazione lineare menzionata in questa pubblicazione non è del tutto corretta. Secondo Setion 8.4.4.2.3 "processo di filtraggio di campioni vicini" dello standard H.265, che dovrebbe essere:

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

sguardo al standard per ulteriori informazioni. Per quanto riguarda la tua domanda sull'adattamento di alcuni numeri a seconda della dimensione del blocco: questo cosiddetto "filtro forte" dovrebbe essere applicato solo per i pixel di riferimento di 32x32 intra blocchi. Per i blocchi più piccoli, può essere utilizzato solo il "Reference Sample Smoothing" del tuo articolo. di nuovo, controlla la stessa sezione nello standard se vuoi conoscere i dettagli.

2 - L'operatore di spostamento denota un cambio di bit del valore assoluto in questi casi. Si noti che con i numeri firmati bitshifting in MATLAB, alcune funzioni spostano il valore assoluto, alcuni spostano il complemento K2 considerando il segno.

3 - Dal momento che "il tuo progetto è un confronto tra HEVC e AVC intra-previsione per mostrare che HEVC fornirà una qualità migliore", penso che abbia senso usare solo SAE o la somma degli errori al quadrato (SSE). Se si esegue una valutazione della qualità/bitrate come nella funzione di costo HEVC, è necessario aggiungere molto più della semplice previsione intra al progetto per confrontare adeguatamente entrambi gli standard, a mio parere.

4 - Hai ragione, il risultato dovrebbe essere il contrario. Controlla il tuo calcolo del SAE. Verificare anche con la sezione indicata nello standard se si esegue correttamente il filtraggio del campione di riferimento.

Altre cose: 1 - Mentre in HEVC è possibile avere blocchi di interfunzione 64x64, è possibile avere solo blocchi intra 32x32. 2 - Fai attenzione quando usi gli interi in MATLAB, anche questo ha rovinato tutti i miei calcoli. Pensa se il numero di bit degli interi che usi sono sufficienti o passa al doppio. Quando carichi un'immagine, i valori sono per default numeri interi a 8 bit senza segno, devi tipizzarli per alcuni calcoli.