In breve, la frequenza si riferisce al tasso di variazione. Più precisamente, la frequenza è l'inverso del periodo del cambiamento, ovvero la quantità di tempo necessaria per passare da una luminosità (o qualsiasi altra cosa) a una luminosità diversa e viceversa. Più velocemente cambia (ad esempio da chiaro a scuro), maggiore è la "frequenza" visiva richiesta per rappresentare quella parte dell'immagine.
In altre parole, puoi considerare la frequenza in un'immagine come il tasso di cambiamento. Parti dell'immagine che cambiano rapidamente da un colore a un altro (ad es. Spigoli vivi) contengono alte frequenze e parti che cambiano gradualmente (ad es. Grandi superfici con colori solidi) contengono solo frequenze basse.
Quando parliamo di DCT e FFT e altre trasformazioni simili, di solito le stiamo eseguendo su una porzione di un'immagine (ad esempio per la compressione JPEG, il rilevamento dei bordi e così via). Ha più senso parlare delle trasformazioni, quindi, nel contesto di un blocco di trasformazione di una determinata dimensione.
Immagina, se vuoi, un blocco di dati immagine di 32 pixel x 32 pixel. (Questo numero è arbitrario.) Supponi che l'immagine sia una semplice sfumatura bianca sul lato sinistro, nera al centro e bianca sul lato destro. Vorremmo dire che questo segnale ha un periodo che è all'incirca una lunghezza d'onda per 32 pixel di larghezza, perché passa di nuovo un ciclo completo dal bianco al nero al bianco ogni 32 pixel.
Potremmo chiamare arbitrariamente questa frequenza "1" - 1 ciclo per 32 pixel, cioè. Ricordo vagamente che questo è comunemente chiamato θ nei libri di testo trasformati, o forse θ / 2, ma potrei ricordare di aver sbagliato. Ad ogni modo, lo chiameremo 1 per ora, perché questo è veramente arbitrario in senso assoluto; ciò che conta è la relazione tra le frequenze in senso relativo. :-)
Supponiamo di avere una seconda immagine che è bianca su un bordo, quindi sbiadita due volte più rapidamente in modo da passare dal bianco al nero, al bianco, al nero e di nuovo al bianco sull'altro bordo. Vorremmo quindi chiamare quella frequenza "2" perché cambia due volte più spesso sulla larghezza di quel blocco di 32 pixel.
Se volessimo riprodurre quelle immagini semplici, potremmo letteralmente dire che ogni riga è costituita da un segnale con una frequenza di 1 o 2 e sapresti come appaiono le immagini. Se le immagini passassero dal nero al grigio al 50%, potresti fare la stessa cosa, ma dovresti dire che avevano una frequenza di 1 o 2 con un'intensità del 50%.
Le immagini del mondo reale, ovviamente, non sono solo una semplice sfumatura. L'immagine cambia frequentemente e non periodicamente durante la scansione da sinistra a destra. Tuttavia, all'interno di un blocco abbastanza piccolo (ad esempio 8 pixel, 16 pixel) è possibile approssimare quella riga di pixel come la somma di una serie di segnali, a partire dalla media dei valori dei pixel nella riga, seguita dalla quantità di " frequenza 0,5 "segnale (nero su un lato, dissolvenza in bianco) per fondersi (o con una quantità negativa, la quantità di quel segnale da sottrarre), seguita dalla quantità di frequenza 1, frequenza 2, frequenza 4 e così via .
Ora un'immagine è unica in quanto ha frequenza in entrambe le direzioni; può diventare più chiaro e più scuro quando si sposta sia in orizzontale che in verticale. Per questo motivo, utilizziamo trasformazioni 2D DCT o FFT anziché 1D. Ma il principio è sostanzialmente lo stesso. Puoi rappresentare con precisione un'immagine 8x8 con una griglia 8x8 di secchi di dimensioni simili.
Le immagini sono anche più complesse a causa dei colori, ma per ora lo ignoreremo e supponiamo che stiamo guardando solo una singola immagine in scala di grigi come potresti vedere guardando il canale rosso di una fotografia in isolamento.
Per quanto riguarda come leggere i risultati di una trasformazione, dipende dal fatto che tu stia guardando una trasformazione 1D o una trasformazione 2D. Per una trasformazione 1D, hai una serie di bin. Il primo è la media di tutti i valori di input. Il secondo è la quantità del segnale di frequenza 1 da aggiungere, il terzo è la quantità del segnale di frequenza 2 da aggiungere, ecc.
Per una trasformazione 2D, hai una griglia di valori n x n . La parte superiore sinistra è in genere quella media e, man mano che si procede in direzione orizzontale, ogni bucket contiene la quantità di segnale da miscelare con una frequenza orizzontale di 1, 2, 4, ecc. E mentre si procede in direzione verticale, essa è la quantità di segnale da miscelare con una frequenza verticale di 1, 2, 4, ecc.
Questa è, ovviamente, la storia completa se stai parlando di un DCT; al contrario, ogni cestino per una FFT contiene parti reali e immaginarie. La FFT si basa ancora sulla stessa idea di base (una sorta di), tranne per il fatto che il modo in cui le frequenze sono mappate sui bin è diverso e la matematica è più pelosa. :-)
Naturalmente, il motivo più comune per generare questo tipo di trasformazioni è quindi fare un passo avanti e gettare via alcuni dei dati. Ad esempio, il DCT viene utilizzato nella compressione JPEG. Leggendo i valori in un modello a zig-zag che inizia con la parte in alto a sinistra (la media) e si sposta verso la parte in basso a destra, i dati più importanti (le informazioni su media e bassa frequenza) vengono registrati per primi, seguiti da dati di frequenza progressivamente più alti. Ad un certo punto, in pratica dici "questo è abbastanza buono" e butti via i dati con la più alta frequenza. Questo essenzialmente leviga l'immagine eliminando i suoi dettagli precisi, ma ti dà ancora approssimativamente l'immagine corretta.
E IIRC, gli FFT vengono talvolta utilizzati anche per il rilevamento dei bordi, in cui si eliminano tutti i componenti ad alta frequenza tranne quelli per rilevare le aree ad alto contrasto con bordi taglienti.
National Instruments ha un bell'articolo che lo spiega con le immagini. :-)