Devi utilizzare un filtro passa-basso prima di ridimensionare un'immagine?


8

L'interpolazione pixel apparentemente bicubica è utile per ridimensionare o ridurre un'immagine (in tempo reale o meno).

Si consiglia di utilizzare un filtro passa-basso prima del ridimensionamento o il campionamento bicubico gestisce i problemi di aliasing?


1
Sono un po 'confuso riguardo alla tua premessa ... in che modo un filtro passa-basso è qualitativamente diverso dal downsampling? Voglio dire, capisco che gli algoritmi sono diversi e tutti ma entrambi raccolgono campioni da pixel vicini e sopprimono le alte frequenze. La grande differenza è la risoluzione dell'immagine risultante, altrimenti le due operazioni sono isomorfe. Sembra che l'applicazione di entrambi sia ridondante.
Jorge Rodriguez,

Bene, ecco cosa mi confonde. So che non puoi semplicemente sottocampionare un'immagine senza ottenere l'aliasing. Fare interpolazioni bicubiche di pixel quando si ingrandisce un'immagine funziona davvero bene e sembra bello. Fare lo stesso quando l'immagine SEEMS è più piccola per funzionare in modo decente, ma non ero sicuro che il risultato avrebbe probabilmente un aliasing di conseguenza. Mi chiedevo se tecnicamente, avresti bisogno di fare una sorta di filtro passa basso sull'immagine prima di eseguire il campionamento bicubico, o se il campionamento bicubico fosse abbastanza buono in pratica? Potrei vederlo come un filtro passa-basso per conto suo, forse.
Alan Wolfe,

1
Quel documento di Mitchell-Netravali che ho citato nell'altra domanda affronta questa idea in modo specifico: ha generalizzato i cubi e poi ha trovato i parametri che alias meno. Ciò non significa che non siano affatto alias, ma forse ti indirizzerebbe verso quale cubo usare per minimizzare l'aliasing.
Jorge Rodriguez,

Risposte:


7

Se il passaggio di downsampling è progettato correttamente, eseguirà efficacemente il filtro passa-basso come parte del downsampling. Non è necessario un funzionamento separato del filtro passa-basso.

In sostanza, quando si esegue il downsampionamento, si sta eseguendo un filtro sui pixel dell'immagine di origine (alta risoluzione), ma si sta valutando solo nelle posizioni dei pixel di destinazione (bassa risoluzione). L'impronta di questo filtro deve essere approssimativamente la spaziatura tra i pixel di destinazione, per evitare informazioni mancanti saltando tra i pixel di origine. Ciò significa che l'impronta del filtro avrà una larghezza di diversi pixel di origine, quindi passerà effettivamente in basso la sorgente.

Ad esempio, supponiamo di sottocampionare un'immagine esattamente di 10x su ciascun asse. Con un filtro riquadro (ad esempio,), imposteresti ciascun pixel di destinazione sulla media di un riquadro 10x10 di pixel di origine. Ciò spazzerebbe via qualsiasi funzionalità inferiore a 10px, quindi è effettivamente un filtro passa-basso.

Lei menziona l'interpolazione bicubica; dobbiamo fare una distinzione tra filtro e interpolazione qui. L'interpolazione è appropriata per il ricampionamento, non per il ricampionamento. L'interpolazione bicubica funziona adattando una patch spline bicubica a una vicinanza di pixel 4x4, quindi valutando la patch in punti interpolati. Sebbene possa funzionare abbastanza bene per il downsampling delle immagini di un piccolo fattore (fino a circa 2 volte), fallirà se vai molto oltre. Ad esempio, se si esegue il downsampling di 10 volte come nell'esempio precedente, è possibile notare che bicubic mancherà alla maggior parte dei pixel di origine e che il risultato potrebbe essere aliasato.

D'altra parte, il filtro bicubico è solo un filtro standard, usando un kernel che è una funzione bicubica (al contrario di un kernel box, triangolo, gaussiano, Lanczos, ecc.). Il kernel Mitchell-Netravali è il classico esempio di questo tipo. Se utilizzato per il downsampling, il kernel dovrebbe essere dimensionato in modo appropriato per la spaziatura dei pixel di destinazione, come discusso in precedenza, e si sommerebbe su tutti i pixel dell'impronta, non solo un 4x4 o un altro vicinato di dimensioni fisse.

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.