Parametri del filtro passa-basso per il downsampling delle immagini


11

Devo ridimensionare un'immagine in un fattore di orizzontale e verticale ( , < ).s y s x s y 1sxsysxsy1

Voglio usare un filtro passa basso finito prima del downsampling.n×m

Come devo determinare i parametri del filtro passa-basso ( gaussiano ) per ottenerlo in funzione di e ?σ s x s yn,mσsxsy

In particolare, sono interessante nel caso in cui .sx=sy=1/2


domanda relativa al [quello chiesto qui] [1] [1]: stackoverflow.com/questions/3149279/...
isrish

1
Grazie, ma questa domanda non riguarda come determinare i parametri del filtro in funzione del fattore di riduzione della scala.
Ben-Uri,

Quanto vuoi filtrare? Qual è il tuo obiettivo?

1
Voglio usare un filtro passa basso prima di sotto campionare per evitare l'aliasing. Voglio preservare quante più informazioni possibili senza aliasing.
Ben-Uri,

1
Devi guardare la trasformata di Fourier del filtro per sapere quanto taglierà le frequenze di aliasing mantenendo le frequenze al di sotto del limite di Nyquist del risultato campionato. La trasformazione di un gaussiano è un'altra gaussiana, il che significa che non c'è un netto taglio. C'è quasi sempre una scelta migliore.
Mark Ransom,

Risposte:


4

Devi pensare al cambiamento nella frequenza di Nyquist tra le due immagini. Se la frequenza di Nyquist dell'immagine originale è N, l'immagine sottocampionata avrà una frequenza di Nyquist più bassa, xN, dove x è correlato al rapporto di dimensioni tra l'immagine finale e quella iniziale. Dovresti rimuovere quelle frequenze spaziali che sono più alte di xN nell'immagine originale prima di ricampionarla.

Lo spettro di potenza di un gaussiano nello spazio dell'immagine, è anche un gaussiano nello spazio delle frequenze. Se ignoriamo per un momento la seconda dimensione, il gaussiano nello spazio dell'immagine è definito come exp (-x ^ 2 / s ^ 2), dove x rappresenta i pixel. Questo è mappato allo spazio di frequenza come exp (-w ^ 2 * s ^ 2), dove w è la frequenza. I parametri sigma mostrano che un ampio gaussiano nello spazio dell'immagine corrisponde a uno stretto gaussiano nello spazio delle frequenze.

Vorresti scegliere un parametro sigma che produce un valore molto basso nello spazio di frequenza alla frequenza corrispondente alla frequenza di Nyquist dell'immagine sotto campionata.


Giusto, ma come posso tradurlo in un kernel di convoluzione discreto? (questa era la domanda)
Ben-Uri,

vedere i pls di modifica ...
NoNameNo

Grazie, ma esiste ancora una formula per trovare il sigma in funzione della frequenza massima che dovrebbe essere nel risultato di uscita?
Ben-Uri,

non conosco alcuna formula.
NoNameNo

1

È già stato sottolineato che e devono essere scelti in base a .m σnmσ

Ho passato del tempo a pensare a come scegliere meglio. Ecco le mie considerazioni. tl; dr: Forse ho commesso un errore, ma sembra una buona scelta per il down-sampling per fattore 2.σ 23,37σσ23.37


0

Se stavi facendo un grande downsize (diciamo 2x, 3x, 4x) puoi fare la media dei pixel per ottenere un buon anti-aliasing. Ecco perché l'antialiasing utilizza molte CPU / GPU aggiuntive per rendere i videogiochi più nitidi.

Dato che stai passando da un'immagine 1000x1000 a un'immagine 707x707 (solo un esempio per il fattore di scala), hai ragione che l'aliasing potrebbe essere un problema.

Per fortuna questo è un problema che molte persone hanno già incontrato e fatto un bel po 'di lavoro per risolvere. In molti casi un'interpolazione bicubica è la strada da percorrere. Ci sono alcuni esempi di come appaiono i diversi metodi di interpolazione:

http://www.compuphase.com/graphic/scale.htm

Il ridimensionamento di OpenCV ha molti di questi metodi integrati:

http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html#cv-resize

Se hai già giocato con molti di questi metodi di interpolazione e non funzionano bene, pubblica una sorta di immagine sorgente di esempio e immagine di risultato di esempio che mostri il difetto. Ne avremo bisogno per diagnosticare il problema e provare a trovare una buona soluzione.


osserva che, sebbene sia veloce, la media dei pixel non è la soluzione ideale per la qualità. la media dei pixel applica efficacemente un filtro rettangolo. nello spazio delle frequenze, ciò equivale a moltiplicarsi per una funzione sinc che oscilla con zero incroci alle armoniche di Nyquist. ciò ha due problemi: 1. attenua l'alta frequenza ma non molto 2. inverte la fase su ogni altro lobo laterale. Sia (1) che (2) possono contribuire all'aliasing.
Grazie

0

Non ho davvero una buona risposta per te, ma qui ci sono 2 opzioni che potresti provare:

  • in Computer Vision, questo fattore di riscatto viene generalmente gestito applicando un filtro gaussiano di larghezza (in pixel) tra 5 e 9. È possibile trovare il corrispondente del gaussiano perché la larghezza del pixel è classicamente uguale a .3 σσ3σ
  • se sei disposto a fare calcoli di campionamento del segnale, allora perché non usare la trasformata di Fourier? Prendi la FFT della tua immagine, mantieni solo la sottoparte corrispondente alla tua dimensione target e inverti la trasformazione. Questo applicherà un filtro anti-aliasing sul tuo spettro. Se ci sono troppi artefatti (increspature, squilli) per te, applica sul tuo spettro del filtro gaussiano la cui larghezza corrisponde alla dimensione del bersaglio.

0

Per il caso , il kernel gaussiano classico in 2D ha la forma: [1,2,1]T[1,2,1]s=1/2

[1,2,1]T[1,2,1]

Tui hai torto. Hai dimenticato un fattore di scala di 0,25? ... e se è così, questa è una scelta comune per s = 1/2 non 1 / sqrt (0,5).
Ben-Uri,

Qualche commento sull'interpretazione di @ Ben-Uri? Il sistema sta contrassegnando questo post come di bassa qualità a causa della lunghezza. Si prega di considerare di rivederlo o rimuoverlo.
Peter K.

1
@PeterK. - Penso che Ben-Uri stia confondendo cons 2ss2
nbubis,

Pensavo che stessi usando per il fattore di scala (come ho usato nella mia domanda). Hai usato per il gaussiano ? Ho chiesto qual è il in funzione del fattore di riduzione ( ) e non vedo come la tua soluzione lo risolva. s σ σ s x , s yssσσsx,sy
Ben-Uri,
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.