Quale algoritmo di ridimensionamento scegliere per i video?


21

Sto usando VirtualDub per la codifica con quelle impostazioni . algoritmi di ridimensionamento

Tuttavia, registro le mie cose in 1920x1080 e le ridimensiono fino a 1280x720. Ora la domanda: quale algoritmo dovrei scegliere quando devo prendere una qualità bilanciata rispetto alle dimensioni del file?

Sono sempre andato con Lanczos perché è quello che era preconfigurato. Quelle descrizioni non mi aiutano affatto nella mia domanda.

Risposte:


25

TL; DR

Durante il campionamento: utilizzare il filtro Lanczos o Spline.

Durante il campionamento: utilizzare il filtro Bicubic o Lanczos.

Questi sono basati sul materiale che ho letto negli anni e da quello che ho visto utilizzato nel settore. I consigli possono variare in base al tipo di contenuto e all'area dell'applicazione.

Perchè importa?

Si potrebbe obiettare che i filtri di ridimensionamento non contano molto quando si ridimensiona un video. Ancora più importante, hanno un impatto sulla qualità durante l'upscaling, perché è necessario generare dati in cui non ci sono in primo luogo.

Tutti questi filtri hanno solo un impatto marginale sulla dimensione del file. Pertanto non dovresti preoccuparti delle enormi differenze lì.

Il fatto è, come sempre quando si codifica il video, che il risultato dipende fortemente dal materiale sorgente. Non puoi sempre prevedere il risultato, ma vedi cosa funziona meglio per te.

Algoritmi diversi

Ad esempio, ecco l' interpolazione bicubica vs. bilineare :

     inserisci qui la descrizione dell'immagine

Vedi che l'interpolazione bicubica produce bordi più lisci? Questa è un'affermazione molto generale ... ma si possono trovare una panoramica degli algoritmi di scaling dell'immagine qui .

  • L'interpolazione bilineare utilizza un ambiente 2x2 di un pixel e quindi prende la media di questi pixel per interpolare il nuovo valore. Non è l'algoritmo migliore, ma piuttosto veloce.

  • L'interpolazione bicubica utilizza un ambiente 4x4 di un pixel, pesando i pixel più interni più in alto e quindi prende la media per interpolare il nuovo valore. È - per quanto mi riguarda - il più popolare.

  • La media dell'area utilizza una mappatura dei pixel di origine e di destinazione, calcolando la media dei pixel di origine rispetto alla frazione dei pixel di destinazione coperti. Secondo questa pagina , dovrebbe produrre risultati migliori durante il downsampling.

  • L' interpolazione spline e sinc utilizza polinomi di ordine superiore e pertanto è più difficile da calcolare dell'interpolazione bicubica. Non credo che valga la pena usarli per l'aumento complessivo dei tempi di elaborazione.

  • Il ricampionamento di Lanczos comporta anche un filtro sinc. È più costoso dal punto di vista computazionale ma di solito viene descritto come qualità molto elevata e può essere utilizzato per il campionamento in alto e in basso.

  • i filtri hqx e 2xSaI vengono utilizzati per il ridimensionamento della pixel art (ad es. emulatori di giochi). Non credo ci sia una buona ragione per usarli nel video.

Il confronto di Jeff Atwood

Si scopre che Jeff Atwood ha fatto un confronto tra gli algoritmi di interpolazione delle immagini . La sua regola empirica era quella di utilizzare l'interpolazione bicubica per il downsampling e l'interpolazione bilineare durante l'upsampling. Detto questo, questo non è ciò che è generalmente raccomandato per la codifica video - e alcuni commentatori hanno sollevato dubbi sull'esperienza di Atwood nel settore.

Tuttavia, ha anche detto che ...

Ridurre le immagini è un'operazione completamente sicura e razionale. Stai semplicemente riducendo la precisione e la risoluzione scartando le informazioni. Rendi l'immagine piccola quanto vuoi e hai la fedeltà completa, entro i limiti del numero di pixel che hai permesso. Otterrai buoni risultati, indipendentemente dall'algoritmo che scegli. (Beh, a meno che tu non scelga gli algoritmi Pixel Resize o Neighbor più vicino.)

Altri esempi

Ecco alcuni altri esempi di algoritmi di interpolazione di immagini , inclusi quelli che ho menzionato sopra.

Ho anche trovato documenti (regole di scena) della scena di codifica video che vietano esplicitamente il filtro bicubico per il downsampling. Al contrario, appoggiano il ricampionamento di Lanczos, Spline o "Blackman".


Usavo sempre "preciso bicubico A = 100". Su una reinstallazione del programma aggiornato era Lanczos predefinito, a molte persone piaceva. L'ho lasciato così per molto tempo. Alla fine mi giro a guardare le cose di Lanczos codificate in seguito, e ho pensato che non fosse buono, il prossimo set di codifiche, l'ho riportato di nuovo in bicubico. Inoltre, stavo sgretolando la compressione, penso che Lanczos sarebbe potuto sembrare migliore se non avessi cercato di ridurre così tanto la dimensione totale dei dati.
Psycogeek,

2
FWIW Non considererei Jeff Atwood un esperto di elaborazione delle immagini, e in quell'articolo non esamina nient'altro che bilineare, il vicino più vicino o (una particolare variante di) bicubico. La maggior parte delle persone concorderebbe sulla sua raccomandazione di usare il bilineare quando l'allargamento è negativo.
thomasrutter,

1
@thomasrutter Grazie. Sono d'accordo con te: quando ho scritto questo, probabilmente non sapevo molto sull'elaborazione delle immagini come faccio ora. Immagino che rimuoverò il riferimento a quell'articolo e troverò qualche altra fonte.
Slhck,

8

Ho trovato una buona immagine che documenta parte di questo.

inserisci qui la descrizione dell'immagine

Versione a grandezza naturale qui .

In generale, si desidera un leggero effetto di nitidezza quando si trasforma un'immagine più grande in un'immagine più piccola e un lieve effetto di sfocatura quando si trasforma un'immagine più piccola in un'immagine più grande. Il filtro MadVR imposta i valori predefiniti su Lanczos per l'upscaling e bicubic per il downscaling.


2

Stai convertendo pixel originali 3x3 in pixel target 2x2.

Se vuoi mantenere linee nitide, scegli Lanczos o qualcosa che utilizza più pixel circostanti per non sfocare linee nitide (come pellicce o riflessi)

Altrimenti sarebbe sufficiente una media dell'area ecc. (Anche bilineare / trilineare).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.