# Divx Post processing

Il termine Post-Processing (o postproc in breve) è utilizzato nel campo video/film per il miglioramento della qualità di elaborazione digitale delle immagini dai metodi utilizzati in dispositivi di riproduzione video, (come i lettori DVD-Video), e lettori video e software di transcodifica software. Il video Post-Processing è il processo di miglioramento della qualità percepita di un video in riproduzione (effettuata dopo il processo di decodifica).

## Image Scaling

Un processo fondamentale del Post-Processing è l'Image scaling costituito da metodi quali l'interpolazione lineare, l'interpolazione bilineare o interpolazione cubica eseguite quando si aumentano le dimensioni dell'immagine. Questo comporta il sottocampionamento (riduzione o contrazione dell'immagine) o lo zoom (ingrandimento di un'immagine); ciò consente di ridurre o nascondere artefatti e difetti nel video originale. È importante comprendere che il Post-processing comporta sempre un compromesso tra velocità, morbidezza e nitidezza. L'Image scaling, il processo di ridimensionamento di un'immagine digitale, è da considerarsi per niente banale. Quando le dimensioni di un'immagine vengono ingrandite, i pixel che la compongono diventeranno sempre più visibili, facendola apparire “morbida” (soft). Al contrario riducendo le dimensioni dell'immagine essa tenderà a rafforzare la propria nitidezza apparente. L'uso dell'Image scaling deriva, oltre dalla necessità di un montaggio video in un'area di visualizzazione più piccola, dall'esigenza di ridurre le dimensioni dell'immagine al fine di produrre miniature. Allargare un'immagine (upsampling o interpolazione) è generalmente meno frequente, in quanto con lo zoom di un'immagine, non è possibile scoprirvi informazioni in più; inoltre la qualità dell'immagine ne risente inevitabilmente. Tuttavia, ci sono diversi modi di aumentare il numero di pixel che l'immagine contiene e che uniforma l'aspetto dei pixel originali.

### Metodi di Scaling

La dimensione di un'immagine può essere modificata in diversi modi.
Considerate la dimensione raddoppiata dell'immagine seguente:
Il metodo più semplice di raddoppiare le sue dimensioni è l'interpolazione prossimale che sostituisce ogni pixel con quattro pixel dello stesso colore:
L'immagine risultante è più grande dell'originale e conserva tutti i dettagli originali, ma presenta un'indesiderata scalettatura (aliasing). Le linee diagonali della “W” ad esempio, mostrano la caratteristica forma “a scala” Altri metodi di scaling permettono di preservare i contorni lisci dell'immagine. Per esempio l'interpolazione bilineare produce il seguente risultato.
L'interpolazione lineare o bilineare è in genere il migliore metodo per variare le dimensioni di un'immagine, ma causa qualche "ammorbidimento" indesiderato dei dettagli e può essere ancora frastagliato. Tra i migliori sistemi di Scaling è inclusa anche l'interpolazione bicubica:
In computer grafica per l'ingrandimento di immagini a bassa risoluzione o a pochi colori (di solito da 2 a 256), i migliori risultati saranno raggiunti dal filtro hq2x o da algoritmi di ingrandimento simili. Questi producono spigoli nitidi e netti, mantenendo un elevato livello di dettaglio:
Per le immagini in scala ( Raster Image con molti colori) un altro algoritmo di anti-aliasing utilizzato è il supersampling.

## I livelli del Post-Processing

Il Post-Processing però è un processo molto pesante per la CPU, e richiede spesso più risorse della decodifica stessa. È possibile non aver bisogno del Post-Processing, nel caso in cui non si desiderino ad esempio modificare le immagini, o se il proprio sistema non risulta sufficientemente potente per supportarlo. Sono presenti 6 livelli di Post-Processing. Al livello minimo (level 0), non viene usato alcun algoritmo di Post-Processing; al livello massimo (level 6), viene utilizzato ogni algoritmo intelligente per modificare l'apparenza dei propri video. Poiché l'occhio umano è meno sensibile ai componenti della crominanza di un segnale video (o componenti differenza, sono i fattori che definiscono la quantità di colore.), e più a quelli della luminanza (ovvero la luminosità del pixel, ciò che normalmente viene definito come chiaro o scuro), ai livelli più bassi di Post-Processing il decoder farà uso dei filtri basandosi solo sulla luminanza e man mano che il livello di Post-Processing viene aumentato, per ogni filtro il decoder attiverà in sequenza gli algoritmi che gestiscono la crominanza.

## I filtri del DivX Post–Processing

Il DivX Post-Processing è costituito dal filtro di Deblocking orizzontale e verticale e dal filtro di Deringing. Gli algoritmi del DivX Post-Processing vengono attivati nel seguente ordine: Deblocking sui piani di luminanza, Deblocking sui piani di crominanza, Deringing.

### Il filtro di Deblocking

Il filtro di Deblocking è utilizzato per migliorare l'aspetto delle immagini decodificate. Il cosiddetto "blocking", ovvero il quadrettamento dell'immagine, è utilizzato dal programma di compressione MPEG. Si nota in corrispondenza di sfumature di colori e particolarmente a bassi bitrate. Il filtro viene applicato a video decodificati per aumentare la qualità visiva e smussare gli spigoli che possono comparire tra i macroblocchi durante la codifica. Il blocking quindi è la presenza di imperfezioni visibili tra i limiti dei blocchi che compongono i singoli fotogrammi video. A differenza delle vecchie codifiche video mpeg-1/2/4 il filtro di deblocking dell'H.264 (codec usato a partire dalla versione 7 del formato DivX) non è una funzione opzionale supplementare nel decoder ma una caratteristica sia del processo di codifica che di decodifica, in modo che gli effetti in-loop del filtro vengono inseriti riferendosi a macroblocchi usati per migliorare le prestazioni del video in relazione alla macchina usata. Il filtro opera sulla luminanza e sulla crominanza di ogni immagine su blocchi 4x4 e 8x8, filtrando i macroblocchi causati dalla compressione del codec. I macroblocchi sono gli artefatti più evidenti, ed è per questo che il Deblocking è il primo filtro ad essere usato. Il limite di ogni piccolo blocco è assegnato ad un margine rafforzato, se è anche un limite di un macroblocco, se la codifica dei o tra i blocchi hanno riferimenti diversi o se si opera sulla luminanza o crominanza dei margini. Più efficaci livelli di filtraggio sono assegnati tramite questo schema dove è più probabile la presenza di distorsione. Il filtro può modificare fino a 3 campioni in ogni lato di ogni margine del blocco dato (nel caso in cui un limite è un limite di luminanza che si trova tra differenti macroblocchi e se uno di essi è codificato internamente). In molti casi possono essere modificati uno o due campioni in entrambi i margini (in base alla grandezza di quantizzazione, la scelta della potenza del filtro dal decodificatore, il risultato di un rilevamento di margine e altri fattori). L'uso di filtri di Deblocking come tecnica di Post Processing per migliorare la qualità della visualizzazione di immagini decodificate è al momento una tecnologia ben conosciuta. È particolarmente utilizzata nell'industria delle video conferenze, dove il basso bit-rate usato tende a visualizzare immagini di scarsa qualità che può essere migliorata sostanzialmente con l'utilizzo di questi filtri.

### Il filtro di Deringing

Il "ringing" è la presenza di bordi distorti attorno agli elementi di un'immagine video. Il filtro di De-ringing viene usato per eliminare questo "rumore" vicino ai bordi netti (chiamato anche "moschito"). Questo difetto è più evidente nelle animazioni, in corrispondenza dei bordi dei personaggi, normalmente neri. Si manifesta con una serie di punti colorati assolutamente non presenti nell'originale. Il filtro di Deringing è attivato al livello 5 di Post-Processing.

## Attivazione dei filtri in base al livello di Post–Processing

| Livello di Post-Processing | Deblocking orizzontale sui piani di luminanza | Deblocking verticale sui piani di luminanza | Deblocking orizzontale sui piani di crominanza | Deblocking verticale sui piani di crominanza | Deringing orizzontale | Deringing verticale |
| 1 | X | | | | | |
| 2 | X | X | | | | |
| 3 | X | X | X | | | |
| 4 | X | X | X | X | | |
| 5 | X | X | X | X | X | X |
| 6 | X | X | X | X | X | X |