DOMANDE PROF Flashcards
ALGORITMO DI CANNY
L’algoritmo di Canny comprende diversi passaggi principali:
-Riduzione del rumore: L’immagine di input viene sottoposta a un processo di filtraggio per ridurre il rumore, che può interferire con l’individuazione dei contorni. Spesso viene utilizzato un filtro Gaussiano per questo scopo.
-Calcolo del gradiente: Viene calcolato il gradiente dell’immagine, che misura le variazioni di intensità dei pixel nell’immagine. Il gradiente fornisce informazioni sulla direzione e l’intensità dei cambiamenti di intensità dei pixel e aiuta a individuare i bordi.
-Suppressione dei non-maximum: Viene applicata la soppressione dei non-maximum per restringere i contorni ai punti di massima risposta del gradiente lungo la direzione del bordo. Questo passaggio elimina i punti che non sono localmente massimi nel gradiente.
-Isteresi della soglia: Questo è un passaggio critico nell’algoritmo di Canny. L’immagine viene suddivisa in pixel di bordo deboli e forti utilizzando una soglia. I pixel con una forte risposta al gradiente vengono considerati come pixel di bordo sicuri, mentre i pixel con una risposta al gradiente inferiore ma ancora sopra una soglia inferiore vengono considerati come pixel di bordo deboli. I pixel di bordo deboli vengono mantenuti solo se sono collegati a un pixel di bordo sicuro, altrimenti vengono eliminati. Questo processo aiuta a connettere i segmenti di bordo interrotti e a ottenere contorni più completi.
L’algoritmo di Canny produce come output un’immagine binaria in cui i pixel di bordo sono evidenziati come bianchi e il resto dell’immagine è nero.
L’algoritmo di Canny è noto per la sua capacità di individuare con precisione i contorni, ridurre al minimo il rumore e produrre contorni sottili. È ampiamente utilizzato in diverse applicazioni di elaborazione delle immagini, come il riconoscimento di oggetti, la segmentazione delle immagini e l’estrazione di caratteristiche
Cos’è il gradiente?
Nel contesto dell’elaborazione delle immagini, il gradiente rappresenta le variazioni di intensità dei pixel all’interno di un’immagine.
Viene calcolato per identificare i cambiamenti significativi di intensità che corrispondono ai contorni o ai bordi presenti nell’immagine.
Per calcolare la direzione e la magnitudo del gradiente di un’immagine, è necessario calcolare la derivata della funzione di immagine rispetto alla posizione in due direzioni, come ad esempio lungo l’asse x e lungo l’asse y. La direzione del gradiente è quindi l’angolo tra l’asse x e il vettore gradiente. La magnitudo del gradiente è la lunghezza del vettore gradiente.
FORMULE
Il risultato del calcolo del gradiente è costituito da due componenti principali: la direzione del gradiente e la sua intensità. La direzione del gradiente indica la direzione lungo la quale avviene il cambiamento di intensità massimo, mentre l’intensità del gradiente rappresenta la quantità di variazione di intensità in quella direzione.
Come funziona il filtro spaziale-media?
Tale filtro non differisce dal concetto di media aritmetica. Quindi ogni pixel dell’immagine destinazione
viene sostituito con la media dei pixel appartenenti ad un’area ben definita dell’immagine. Piuttosto
che prendere soltanto il pixel (x, y) nell’immagine input, viene preso la media di tutti i pixel connessi
con il pixel (x, y). Effettuando la media (con la divisione per 9) ottenendo il filtro di destinazione
viene effettuato per eliminare rumore prodotto da un determinato motivo e per ricondurre l’immagine ad una qualità migliore.
Come funziona il filtro spaziale-media adattiva?
La media adattiva va a risolvere varie problematiche della media, come la confusione dei contorni.
Ogni qual volta essa viene utilizzata effettua un confronto tra il pixel (x, y) e tutti quanti i pixel che sono nel suo intorno. In presenza di piccole variazioni si applica la media, ma in presenza di grandi variazioni (in base ad una soglia T) si lasciano invariati i pixel di riferimento. Essa lavora sui bordi.
Applicando un filtro media sempre più grande, l’immagine tende a sfocarsi e perdere rumore, ma anche dettagli.
Come funziona il filtro spaziale-mediana?
Esso corrisponde esattamente al concetto di mediana statistica per il quale si considerano i pixel di una regione, li si ordina in maniera crescente e poi ci si posiziona sul valore centrale.
La mediana è proprio tale valore centrale. Rispetto alla media, la mediana non viene influenzata dalle
code, ovvero il valore centrale non viene condizionato particolarmente dalla presenza di significativi
cambiamenti agli estremi, cosa che avviene nella media
La Media presenta una eccessiva velatura (Blurring) al crescere della maschera e delle iterazioni con conseguente perdita dei dettagli, essa però preserva, con la versione adattive, le forme (scalini).
La Mediana ha una riduzione del rumore (noise reduction) senza eccessiva perdita di dettagli
(Blurring limitato), ma non preserva le forme (scalini).
Come funziona il filtro gaussiano?
Il funzionamento del Filtro Gaussiano è simile a quello del filtro mediana con la differenza che il contributo di ciascun pixel limitrofo ha un peso diverso, definito dalla distribuzione spaziale della gaussiana
Si parte dal presupposto che i pixel in prossimità della zona centrale, sono quelli più importanti.
Quindi se si vuol posizionare la maschera su un pixel (x, y), non si deve assegnare poi lo stesso peso a tutti gli altri pixel ma si cerca di concentrare la maggior parte del peso in prossimità del pixel (x, y), e progressivamente diminuire il peso dei pixel man mano che ci si allontana dal centro.
La somma di tutti i pesi sarà sempre uguale a uno. In prossimità del pixel di riferimento, si assegnerà un valore maggiore, in quanto c’è più probabilità che essi appartengono al pixel kernel.
Quindi possono essere costruiti nuovi filtri che sono dei Filtri Media pesati.
Mentre prima il peso assegnato dalla media era uguale per tutti quanti, ora si adopera una selezione, più ci si è vicini alla posizione (x, y) maggiore sarà il peso in quanto maggiore sarà la probabilità che quel pixel appartenga alla regione di interesse, più ci si allontana dal pixel (x, y) maggiore sarà la probabilità di non appartenere alla regione di interesse e quindi si cerca di contaminare il meno possibile la trasformazione.
Con un Filtro gaussiano si riesce ad eliminare le zone di rumore e a preservare gli scalini, proprio perché in prossimità di essi i pixel otterranno una distribuzione di pesi differenziata.
Come funziona il filtro SUSAN?
permane l’idea di Filtro Gaussiano dove però i pesi nonvengono stabiliti a priori, come fatto in precedenza, ma in questo caso i pesi vengono calcolati run-time.
Quindi viene applicata la maschera all’immagine e si va a controllare quali pixel ricadono nella stessa area del pixel centrale. Si assegneranno pesi alti a tutti i pixel che appartengono all’aerea del pixel centrale e si tenderà a dare peso minore ai pixel che si trovano più in lontananza rispetto al centro.
Questo calcolo lo si effettua per mezzo della formula seguente:
FORMULA
in cui I(r) è il valore di intensità dei pixel all’interno della maschera, I(r0) quello del nucleo, t è un valore di soglia sull’intensità (fattore di normalizzazione) e c(r, r0) rappresenta il peso che il pixel in esame ha nel calcolo della media. Più i pixel sono diversi, più il peso va verso 0.
Oltre al peso dovuto alla funzione c(r, r0), per effettuare il filtraggio del rumore, si utilizza una funzione di tipo gaussiano. Se l’area dell’USAN è nulla il valore dell’intensità del pixel in esame è calcolato applicando il filtro mediano descritto precedentemente. Quindi si avrà ancora un filtro gaussiano, ma sarà una maschera in cui i pesi saranno calcolati di volta in volta sulla base dell’immagine. Il vantaggio di questo filtro è che i pesi dipenderanno dall’immagine e quindi non sarà un filtro statico costruito in partenza. Il contro di questo filtro è l’onerosità in termini computazionali
Cos’è il Laplaciano?
Il Laplaciano è una rappresentazione (implementazione) della derivata seconda, che a differenza del gradiente, è caratterizzato dall’avere un pixel centrale positivo, le direzioni principali con valori negativi, e gli altri posti uguali a zero.
il Laplaciano è un operatore che viene utilizzato per rilevare i dettagli di alta frequenza o i bordi nelle immagini. Viene spesso applicato per migliorare la nitidezza delle immagini o per evidenziare le discontinuità di intensità.
L’operatore Laplaciano di una funzione bidimensionale f(x, y) viene definito come la somma delle seconde derivate parziali rispetto a x e y. In un sistema di coordinate cartesiane, il Laplaciano di f(x, y) è espresso come:
Δf = ∂²f/∂x² + ∂²f/∂y²
Nel contesto dell’elaborazione delle immagini, l’operatore Laplaciano può essere applicato direttamente all’immagine per ottenere una nuova immagine chiamata “mappa del Laplaciano”. Questa mappa evidenzia le regioni dell’immagine in cui l’intensità varia rapidamente o dove sono presenti bordi.
. Per calcolare il Laplaciano, prendiamo ogni pixel dell’immagine e sommiamo i valori dei pixel che lo circondano (sopra, sotto, a sinistra e a destra). Moltiplichiamo il valore del pixel centrale per 4 e sottraiamo la somma dei pixel circostanti.
Il risultato che otteniamo ci indica quanto l’intensità dei pixel cambia in quella posizione. Se il valore del Laplaciano è alto, significa che c’è un bordo o un dettaglio significativo in quella zona.
Quindi, applicando questo calcolo a tutti i pixel dell’immagine, otteniamo una mappa che evidenzia i bordi o i dettagli importanti. Questo può aiutarci a migliorare la nitidezza dell’immagine o a individuare parti rilevanti
Cos’è la trasformata di Fourier? + FORMULE
a
La trasformata di Fourier è uno strumento matematico che permette di analizzare un segnale nel dominio delle frequenze anziché nel dominio del tempo. In altre parole, permette di scomporre un segnale complesso in una combinazione di sinusoidi di diverse frequenze.
Immagina di avere un segnale nel dominio del tempo, come ad esempio una forma d’onda audio. Questo segnale può essere rappresentato come una combinazione di diverse frequenze. La trasformata di Fourier ci consente di identificare queste frequenze e determinare l’ampiezza e la fase di ciascuna di esse.
Il processo di trasformata di Fourier può essere diviso in due parti: la trasformata diretta e la trasformata inversa. La trasformata diretta converte un segnale dal dominio del tempo al dominio delle frequenze, mentre la trasformata inversa fa il contrario, cioè converte il segnale dal dominio delle frequenze al dominio del tempo
FORMULA SLIDE
La formula della trasformata di Fourier dipende dalla convenzione che si utilizza, ma la formulazione più comune è la seguente:
Data una funzione nel dominio del tempo f(t), la sua trasformata di Fourier F(ω) nel dominio delle frequenze è data dalla seguente equazione:
F(ω) = ∫[da] f(t) * e^(-iωt)
F(ω) rappresenta la funzione nel dominio delle frequenze, che dipende dalla variabile ω (omega), che rappresenta la frequenza.
f(t) è la funzione originale nel dominio del tempo, che dipende dalla variabile t, che rappresenta il tempo.
∫[da] indica l’integrazione rispetto alla variabile di integrazione a, che può essere sostituita con t nel contesto della trasformata di Fourier.
e^(-iωt) rappresenta la funzione esponenziale complessa, dove e è il numero di Nepero (2.71828…) ed i è l’unità immaginaria (√(-1)).
Cosa dice il teorema di convoluzione? + Formule
Il teorema di convoluzione stabilisce che quando abbiamo due domini in relazione, ovvero dominio spazio-tempo e frequenze, una moltiplicazione tra due funzioni in un dominio implica una convoluzione nell’altro dominio, e viceversa. Questo permette di stabilire una relazione tra le operazioni nei diversi domini
Nel dominio del tempo:
Se abbiamo due funzioni nel dominio del tempo, chiamate g(t) e h(t), il loro prodotto di convoluzione è definito come:
(g * h)(t) = ∫[da] g(a) * h(t - a)
Dove ∫[da] rappresenta l’integrale rispetto alla variabile a( una variabile di integrazione). Questa formula rappresenta il risultato di convolvere g(t) e h(t) in un certo istante di tempo t.
Nel dominio delle frequenze:
Se applichiamo la trasformata di Fourier sia a g(t) che a h(t), ottenendo rispettivamente G(ω) e H(ω) nel dominio delle frequenze, allora il prodotto di convoluzione nel dominio del tempo corrisponde a una semplice moltiplicazione nel dominio delle frequenze:
Fourier{(g * h)(t)} = G(ω) * H(ω)
Dove * rappresenta l’operazione di moltiplicazione nel dominio delle frequenze.
Questo significa che, per calcolare il prodotto di convoluzione di due funzioni nel dominio del tempo, possiamo semplicemente prendere le loro trasformate di Fourier, moltiplicare i loro spettri di frequenza e quindi applicare la trasformata inversa di Fourier per ottenere il risultato nel dominio del tempo.
Perchè usare un dominio invece di un altro?
L’utilizzo di un dominio specifico, come il dominio del tempo o il dominio delle frequenze, dipende dal tipo di analisi o elaborazione che si desidera effettuare sui dati o sui segnali. Ogni dominio offre vantaggi e strumenti specifici per affrontare determinati problemi.
Ecco alcune ragioni per cui si preferisce utilizzare un dominio rispetto a un altro:
Dominio del tempo:
Il dominio del tempo è spesso utilizzato per l’analisi e la rappresentazione di segnali nel loro aspetto temporale. È utile per valutare l’evoluzione di un segnale nel corso del tempo, rilevare eventi transitori e valutare la forma d’onda in relazione al tempo.
Nel dominio del tempo, è più facile comprendere l’andamento temporale di un segnale e valutare la relazione causa-effetto tra diverse componenti del segnale.
Ad esempio, l’analisi del dominio del tempo è comune nell’elaborazione audio per valutare l’ampiezza, la durata e la forma d’onda di un suono.
Dominio delle frequenze:
Il dominio delle frequenze è utile per analizzare le componenti di un segnale in termini di frequenze e ampiezze. Questo dominio offre informazioni sulle diverse componenti di un segnale e sulla loro distribuzione spettrale.
Nel dominio delle frequenze, è possibile identificare le frequenze dominanti, le armoniche e le caratteristiche spettrali di un segnale.
L’analisi nel dominio delle frequenze è spesso utilizzata nell’elaborazione dei segnali per applicare filtri, rilevare modulazioni, comprimere i dati e valutare la presenza di rumore o interferenze.
La scelta del dominio dipende dalle specifiche esigenze dell’applicazione. Ad esempio, se si desidera eliminare il rumore da un segnale audio, potrebbe essere più efficace utilizzare tecniche di filtraggio nel dominio delle frequenze. D’altra parte, se si desidera analizzare l’andamento temporale di un segnale, il dominio del tempo potrebbe essere più appropriato.
In molti casi, l’analisi viene effettuata in entrambi i domini, poiché combinare le informazioni provenienti dai due domini può fornire una visione più completa e dettagliata del segnale o dei dati in esame
Cos’è il campionamento?(FOURIER)
il campionamento si riferisce alla conversione di un segnale continuo nel dominio del tempo in una sequenza discreta di valori, ciascuno rappresentante il valore del segnale in un preciso istante di tempo.
Durante il campionamento, il segnale analogico viene campionato ad una frequenza costante, chiamata frequenza di campionamento. Questa frequenza determina quanti campioni vengono presi al secondo e influenza la fedeltà con cui il segnale originale può essere rappresentato. La frequenza di campionamento viene espressa in unità di Hertz (Hz) e comunemente indicata come “samples per second” o “sampling rate”.
Il processo di campionamento può essere compreso meglio con un esempio pratico. Immaginiamo di avere un segnale audio analogico, come una voce umana. Per digitalizzare questo segnale, è necessario campionarlo. Ad esempio, se utilizziamo una frequenza di campionamento di 44.1 kHz (44.100 campioni al secondo), prenderemo un campione del segnale ogni 1/44.100 secondi, corrispondente a circa 22.7 microsecondi. Ogni campione rappresenterà il valore del segnale audio in quel preciso istante di tempo.
È importante notare che il teorema del campionamento di Nyquist-Shannon stabilisce che la frequenza di campionamento deve essere almeno il doppio della frequenza massima del segnale per evitare la perdita di informazioni o l’effetto dell’aliasing. Questo è noto come il criterio di Nyquist e assicura che il segnale originale possa essere correttamente ricostruito dal suo campionamento discreto.
Cos’è il teorema del campionamento?
Il teorema del campionamento, noto anche come teorema di Nyquist-Shannon, è un principio fondamentale nell’elaborazione dei segnali che stabilisce una condizione necessaria per evitare l’aliasing e consentire la corretta ricostruzione di un segnale analogico a partire dai suoi campioni discreti.
Il teorema afferma che per evitare l’aliasing, la frequenza di campionamento deve essere almeno il doppio della frequenza massima presente nel segnale analogico. In altre parole, la frequenza di campionamento deve essere superiore al doppio della massima frequenza del segnale che si desidera catturare
aliasing(è il fenomeno per il quale due segnali analogici diversi possono diventare indistinguibili una volta campionati)
Algoritmo Viola-Jones
L’algoritmo di Viola-Jones è un popolare algoritmo utilizzato per il rilevamento di oggetti, in particolare per il rilevamento dei volti.
L’algoritmo di Viola-Jones utilizza una tecnica chiamata “AdaBoost” per selezionare in modo efficiente e accurato le caratteristiche rilevanti nelle immagini.
Preparazione del training set: Per addestrare l’algoritmo, è necessario un set di immagini etichettate che contengono gli oggetti che si desidera rilevare, ad esempio volti. Questo set di immagini viene utilizzato per addestrare il classificatore.
Creazione delle feature integrali: Le immagini vengono convertite in una rappresentazione più compatta chiamata “feature integrali”. Le feature integrali semplificano il calcolo delle caratteristiche nelle immagini e riducono il tempo computazionale complessivo.
Selezione delle caratteristiche: Viene applicata una serie di caratteristiche ad ogni finestra dell’immagine per determinare se la caratteristica è rilevante o meno per il riconoscimento dell’oggetto desiderato. Le caratteristiche possono essere rettangolari e comprendono ad esempio differenze di intensità tra le regioni di un’immagine.
Addestramento del classificatore: Utilizzando l’algoritmo di AdaBoost, il classificatore viene addestrato iterativamente. Durante ogni iterazione, vengono selezionate le caratteristiche più informative per il rilevamento dell’oggetto. Successivamente, il classificatore viene allenato per assegnare un peso maggiore agli esempi di addestramento classificati erroneamente e un peso minore agli esempi classificati correttamente.
Creazione del classificatore forte: Dopo un numero specificato di iterazioni, viene creato un “classificatore forte” combinando un insieme di “classificatori deboli”. Ogni classificatore debole ha una precisione leggermente superiore al caso casuale, ma insieme formano un classificatore molto più potente.
Rilevamento dell’oggetto: Una volta creato il classificatore forte, viene utilizzato per scansionare l’immagine di input alla ricerca dell’oggetto desiderato, ad esempio un volto. L’immagine viene analizzata utilizzando finestre di diverse dimensioni per coprire diverse scale e posizioni dell’oggetto all’interno dell’immagine. Le caratteristiche rilevanti vengono calcolate utilizzando le feature integrali e passate al classificatore per determinare se la finestra contiene l’oggetto o meno.
Selezione dei risultati: Dopo il rilevamento degli oggetti, vengono applicate tecniche di post-elaborazione per selezionare i risultati rilevanti e ridurre i falsi positivi.
L’algoritmo di Viola-Jones è stato ampiamente utilizzato per il rilevamento dei volti, ma può essere adattato anche per il rilevamento di altri oggetti come occhi, mani, veicoli, ecc. La sua efficacia deriva dalla combinazione di caratteristiche efficienti, algoritmi di apprendimento automatico e ottimizzazioni che consentono un rilevamento rapido e accurato degli oggetti in tempo reale.
O(MNT) dove M sono i filtri, N esempi e T threshold
Cos’è una immagine integrale?
Un’immagine integrale è una rappresentazione compatta di un’immagine utilizzata per calcolare rapidamente la somma dei valori dei pixel all’interno di una determinata regione rettangolare. Questa rappresentazione è ampiamente utilizzata in diversi algoritmi di elaborazione delle immagini, come il riconoscimento facciale utilizzando l’algoritmo di Viola-Jones.
L’idea alla base dell’immagine integrale è quella di calcolare la somma cumulativa dei valori dei pixel partendo dall’angolo in alto a sinistra dell’immagine e procedendo verso il basso e verso destra. Ogni elemento dell’immagine integrale corrisponde alla somma di tutti i valori dei pixel sopra di esso e a sinistra di esso, inclusi.
L’utilizzo dell’immagine integrale consente di ridurre il tempo di calcolo necessario per eseguire operazioni come la convoluzione, la correzione del contrasto e la ricerca di caratteristiche all’interno di una regione specifica, migliorando l’efficienza degli algoritmi di elaborazione delle immagini.