Loading

Alison's New App is now available on iOS and Android! Download Now

Study Reminders
Support
Text Version

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Passando dall'ultima lezione, entriamo in Scale Space, Image, Pyramids e Filter Banks in questo. Se ricordate, uno dei limiti del Harris Corner Detector che abbiamo dichiarato l'ultima volta è stato che non è invariante di scala. Cioè quello che sarebbe stato un angolo in un'immagine potrebbe essere stato un bordo in un'altra immagine che è ingrandito. Proviamo a ricordare rapidamente questo prima di andare avanti. Ancora una volta un'applicazione in cui si vorrebbe rilevare punti chiave o angoli è quando si hanno due immagini diverse o ancora più numerose. Diciamo, se volete cucire queste immagini insieme, questa è tipicamente chiamata immagine mosaziata o questo edificio panorama. Quindi, diciamo che qui abbiamo queste due immagini, che corrispondono alla stessa scena di due diverse località. Non conosciamo davvero il movimento della fotocamera tra queste due immagini, ma vogliamo cuocere queste due immagini. Come si va a riguardo? (1.28) Tiriamo tipicamente punti chiave in ognuna di queste immagini in modo indipendente. Come facciamo a farlo? Un esempio sarebbe il Harris Corner Detector. Siamo sul Harris Corner Detector su immagine uno, eseguiamo il Harris Corner Detector su immagine due, e poi abbiniamo quale punto chiave o set di punti chiave nell'immagine uno corrisponde a quale set di punti chiave nell'immagine due. Come facciamo il matching? Ne parleremo un po' più tardi in questo corso, ma la nostra attenzione ora è trovare quei punti chiave. (2.04) E un metodo che abbiamo parlato per trovare quei punti chiave è il Harris Corner Detector. Abbiamo detto che in Harris Corner Detector costruiamo qualcosa chiamato matrice autocorrelazione e poi prendiamo eigen decomposizione della matrice di autocorrelazione. E poi abbiamo detto che quando λ e, che sono i due autovalori della tua matrice autocorrelazione a, sono piccoli, 1 λ2 poi significa che la regione è piatta, non c'è cambiamento. Quando uno degli autovalori è più grande dell'altro, diciamo che è un bordo e quando entrambi gli autovalori sono grandi, corrisponde che quella particolare patch ha un sacco di cambiamenti in più direzioni e chiamiamo un tale punto un angolo. Ed ecco qual è la nostra metodologia per arrivare con il Harris Corner Detector. (2.59) Ma alcune osservazioni che abbiamo fatto verso la fine è che il Harris Corner Detector è invariante di rotazione. (3.09) Ma il Harris Corner Detector non è necessariamente invariante di scala. Il che significa, quello che è un angolo in un'immagine non serve essere un angolo in un'altra immagine che è zoomata in dove potrebbe sembrare proprio come un bordo. (3.28) Quindi, siamo idealmente in cerca di un'ambientazione in cui poter analizzare sia questi artefatti di immagini in diverse scale sia in grado di abbinarli alla scala giusta e questo è il modo in cui renderemmo invariante la scala di Harris Corner Detector. (3.45) Prima di andare lì, cerchiamo di chiedere come possiamo selezionare in modo indipendente i punti di interesse in ogni immagine, tale che le rilevazioni siano ripetibili su diverse scale. Quindi, che significa, ci sono due immagini a diverse scale. Quando diciamo scalo, sono ingrandito in modo diverso, uno di loro è zoomato in molto, uno di loro si dice zoomato. Idealmente vogliamo essere in grado di rilevare un punto chiave sia in queste immagini. Ricordati che se prendi la dimensione della patch per essere la stessa in entrambi questi casi, in una di quelle immagini che è ingrandito, un punto chiave può sembrare solo uno spigolo quando si ingranza molto. Come facciamo a contrastare questo? Un approccio semplice potrebbe essere che estraiamo funzioni a una varietà di scale usando diciamo, più risoluzioni in una piramide e poi abbiniamo le funzioni allo stesso livello. Potrebbe essere una delle cose più semplici che possiamo fare. (4.44) Dove pensi che funzionerà davvero? Se pensasse attentamente, troverete che finché si abbinano caratteristiche allo stesso livello, le proprietà del rivelatore di Harris Corner Detector saranno confrontabili solo nella stessa scala, ma per essere invarianti di scala, dobbiamo idealmente confrontare la misura Harris Cornerness, richiamando la misura Harris Cornerness. In una scala diversa in un'immagine e la misura Harris Cornerness si misura in una scala diversa nella prossima immagine. Allora, come facciamo? (5.24) Quindi, quello che cerchiamo di fare ora è quello di estrarre caratteristiche che sono stabili sia in località che in scala e cercheremo di descrivere come faremo a farlo nei prossimi minuti. (5.39) Quindi, se avete due immagini, notate di nuovo che abbiamo due immagini ora, che decisamente differiscono in scala. In uno di loro, questo interno artefatto sono dipinti e uno di loro questo intuito è piuttosto piccolo e poi stiamo zoomando in quel manufatto sull'immagine giusta. Ora idealmente vogliamo trovare un angolo, che sia indicato dalla croce gialla lì. Vogliamo trovare lo stesso angolo in entrambe queste immagini indipendentemente dalle differenze di scala. Come andare avanti e farlo? Quindi, vogliamo trovare una funzione f che ti dia un massimo sia a x che a sigma, il sigma è denotato come la scala dell'immagine in questo contesto. (6.28) E il modo in cui andremo a farlo è, compendiamo la tua firma su scala, in questo caso potrebbe essere la misura di Harris Cornerness. In quel punto particolare per una particolare scala e diciamo che il punto particolare ha una particolare misura Harris Cornerness, che viene tracciata su un grafico. (6.50) Noi poi modifichiamo la scala. Nel nostro caso, un modo semplice per modificare la scala è semplicemente quello di prendere una patch più grande per la vostra finestra di autocorrelazione. Quindi, se prendi una patch più grande per la tua finestra di autocorrelazione e ora prendi la tua misura Harris Cornerness, ti viene da ottenere un valore leggermente diverso per la misura di Harris Cornerness. Quindi, ricordati nell'asse x, stiamo misurando la scala, quindi abbiamo cambiato la scala, che è la dimensione della tua finestra di autocorrelazione e ora otteniamo una misura Cornerness diversa. (7.23) E lo si fa per diverse scale. Quindi, il che significa che si prende di nuovo una dimensione di patch diversa, calcola la misura della Cornerness per quella dimensione della patch. Ricordati ancora, che da una definizione della nostra misura Harris Cornerness, la matrice di autocorrelazione cambierebbe se la dimensione delle tue patch cambia. Ricordate ancora, che abbiamo fatto una sommità con tutti i pixel e che cambieranno ora quando le dimensioni delle vostre patch cambiano. (7.50) Così, lo facciamo per più scale, più scale e si vede che si otterrà un tale grafico quando lo si fa per più scale. Dunque, il takeaway da questo grafico è che sembriamo ottenere la massima misura Cornerness o la massima risposta Cornerness in una determinata scala, che ci sarà importante. In quella particolare scala è quando la misura della Cornerness è la più alta per quel determinato punto chiave in quella data immagine. Allora, come facciamo a portare avanti questo? (8.27) Ora prendiamo un'altra immagine. Quindi, in questo caso, come ho detto, questo è il massimo, questo è quello che stiamo mostrando in questa particolare slide. (8.34) Ora, prendiamo un'altra immagine, che è quella sulla destra che è zoomata nella versione e forse c'è una leggera rotazione della prima immagine. E ora di nuovo alla prima scala, calcola la misura Cornerness. Alla seconda scala, calcola la misura Cornerness e ripetiamo questo processo per tutta la diversa scala che abbiamo considerato per la prima immagine. (9.02) E mentre continuiamo a fare questo, otterremo un altro grafico per la seconda immagine in cui il picco ora è in scala differente. (9.15) Il picco ora è in una scala diversa che è denotata da quel particolare valore. Quindi il che significa che ora abbiamo fatto qualche progresso. Siamo riusciti a trovare quella che sarebbe la misura Cornerness, la misura massima di Cornerness per un punto particolare, sia in località che in scala. Quindi, la location sarebbe la coordinata di quel centro di quella macchia e scala sarebbe la scala in cui abbiamo ottenuto la massima misura di capienza. Una domanda che ci poniamo ora è: c'è un modo migliore per implementarlo? (9.51) La risposta a questo è utilizzare quelle che sono note come piramidi d'immagine. Invece di modificare la tua dimensione di patch in ognuna delle tue immagini, aggiustate la dimensione della tua patch attraverso qualsiasi immagini che potrai incontrare, ma cambia la tua dimensione dell'immagine facendo una piramide gaussiana, richiamando la nostra discussione sulle piramidi gaussiane quando abbiamo parlato di interpolazione e frequenze. Ricordate che una piramide gaussiana è costruita prendendo un'immagine, Gaussian livellando l'immagine, poi sub campionando l'immagine e ripetendo di nuovo questo processo e ancora. Quindi, facciamo la stessa cosa ora e teniamo la patch size la stessa e costruiamo una piramide gaussiana. Tenete presente, che quando costruirete la vostra piramide gaussiana, non serve sempre ridursi di mezzo ogni volta, potete anche ridurre le vostre dimensioni dicendo tre quarti o per qualsiasi altra fazione utilizzando metodi di interpolazione. (10.54) Quando consideriamo una piramide di immagini, ci sono diversi tipi di piramidi che si possono costruire e utilizzare in pratica. Così, la piramide gaussiana è quello che abbiamo visto prima, che è quello che la parte superiore di questo diagramma mostra, che tratta di prendere l'immagine originale, chiamiamola G1. Poi si liscia l'immagine e poi si abbassa il campione e poi si ottiene un G2. Poi di nuovo liscio G2, giù campione, ottenete un G3 e continuate a ripetere questo processo. C'è anche un altro modo per ottenere un altro tipo di piramide chiamato piramide Laplaciano, che si ottiene da, prendi G1, che è la tua immagine originale. Una volta ottenuto il vostro G2, che è il vostro immagine di esempio sfumato e giù di seguito, si alzano di nuovo il campione G2 e di nuovo livellato. Ora, quando calcola G1 meno G2, questo ti dà una quantità chiamata L1. Il motivo per cui chiamiamo L1 una piramide Laplaciana è perché Laplaciano può essere scritto come una differenza di due Gaussiani. Perché così? Proviamo a vederla un po' illustrata in questo momento. Quindi, ricordati il filtro Laplaciano che abbiamo discusso nell'ultima lezione. Un Filtro Laplaciano potrebbe essere disegnato come una cosa del genere. Questo era un modo per disegnarlo. Ricordati che avremmo potuto disegnarlo anche in altro modo, dove ce l'hai come una cosa del genere. Quindi, entrambe sono piramidi Laplacie a seconda che il vostro valore centrale sia negativo o positivo. Se si vede puramente da una prospettiva grafica, si tratta di una 1D Laplaciano. Se si vedrà esclusivamente da una prospettiva grafica. Tale Laplacian può essere scritto come la differenza di un gaussiano, che si dice largo, chiamiamola Laplaciano qualche cursivo g1 e diciamo un altro Gaussiano, che è stretto, chiamiamolo Gaussiano G2. Quando si sottrae G2 da G1, si otterrà effettivamente una forma, che è simile al Laplaciano. Chiaramente dovrete scegliere la varianza per G1 e G2 adeguatamente per ottenere il tipo di Laplaciano che state cercando. E perché in questo particolare esempio, G1 meno la versione campione sfumata di G2 si scopre essere una differenza di Gaussians, è stato fatto in modo efficace per essere una specie di Laplaciano che è il motivo per cui la chiamiamo piramide Laplaciana. E ripetete il Laplaciano per ogni successiva rappresentazione di risoluzione inferiore nella vostra piramide gaussiana e ottenete più L2s e L3s così via e così via, per ottenere anche una piramide Laplaciana. Per diverse applicazioni, si può voler utilizzare una piramide gaussiana o una piramide Laplaciana. (14.02) Ma dove si usano le piramidi di immagini in pratica, in più applicazioni? Si potrebbe utilizzare per la compressione perché si potrebbe voler semplicemente trasmettere una versione a bassa risoluzione dell'immagine originale e inviare altre informazioni attraverso altri mezzi ed essere in grado di ricostruire un'alta risoluzione dall'immagine a bassa risoluzione. (14.21) Si potrebbe utilizzare una piramide di immagine per il rilevamento degli oggetti. Come e perché? Potresti usarlo facendo una ricerca su scala e poi fare alcune funzioni. Quello che intendiamo qui è che si potrebbe cercare un oggetto in primo luogo in una parte bassa risoluzione della piramide e una volta trovato la regione dell'immagine, dove si ottiene l'oggetto, poi si entra nella prossima alta risoluzione, cercare in quella regione un po' più attentamente, trovare dove si trova l'oggetto e poi, si può ripetere questo in alte risoluzioni. (14.55) Si può anche usare una piramide di immagine per punti di interesse stabili, che è quello di cui abbiamo discusso finora. (15.02) Un'altra applicazione delle piramidi di immagini potrebbe essere la registrazione. In registrazione, è il processo di allineamento dei punti chiave da due diverse immagini. Come si utilizzano le piramidi di immagine in registrazione? È possibile fare quello che è noto come grossolano alla fine registrazione delle immagini, dove si inizia costruendo una piramide per ogni immagine che si ha. Quindi, hai un livello grossolano, di medio livello e di buon livello. E prima di tutto compatte questa piramide gaussiana e poi allineate le funzioni al livello piramidale grossolano, proprio a questo livello da cui partire. Una volta che lo si fa, si continua poi ad allinearsi con le piramidi finali solo alla ricerca di intervalli più piccoli per quel match finale. (15.59) Spostati dalla piramide delle immagini, andremo al terzo argomento che stiamo coprendo in questa lezione, ovvero la nozione di texture, strettamente connessa e costruita sugli altri concetti che stiamo coprendo. Cosa sono le texture da cui partire? Le texture sono modelli regolari o stocastici che sono causati da botti, scanalature e marcature, il modo in cui le chiamiamo letteralmente texture. (16.32) Dunque, queste texture ci forniscono alcune informazioni sulla disposizione spaziale dei colori o delle intensità in un'immagine. Sul lato destro vedrete che le texture possono darvi un'idea di materiali, le texture possono darvi un'idea dell'orientamento. Le texture possono anche darvi un'idea della scala che si sta trattando. Quindi, le texture contengono informazioni significative per poter prendere decisioni di livello superiore o previsioni dalle immagini. (17.02) È anche importante tenere a mente che anche se si ha un'immagine unica. Diciamo che hai ottenuto una statistica di alto livello, come l'istogramma di un'immagine contenente 50% pixel bianchi e 50% pixel neri. In questo scenario potremmo avere immagini di più tipi, tre campioni di quello che vedete sullo scivolo. Potresti avere l'immagine per essere qualcosa del genere. Potresti avere l'immagine per essere qualcosa del genere, oppure potresti avere l'immagine per essere qualcosa del genere. In tutti questi tre casi l'istogramma contiene 50% bianco e 50% nero, ma le texture sono vastissime. Quindi, non è importante solo ottenere statistiche globali, è anche importante ottenere informazioni di tessitura locale per poter capire cosa c'è nelle immagini. (17.59) Quindi, come rappresentiamo effettivamente le texture? Lasciatemi pensare per un attimo. Finora abbiamo visto spigoli, abbiamo visto angoli, abbiamo visto angoli a diverse scale. Come rappresentare le texture? La risposta è che metti insieme quello che hai visto finora. E come li mettiamo insieme? (18.26) Noi compittiamo risposte di bari e spigoli a diversi orientamenti e scale e questo è un modo per ottenere texture. Quindi, il modo in cui elaboriamo un'immagine è la registrazione di semplici statistiche, come la deviazione media e standard delle risposte di filtro assoluto di un'immagine. E poi potremmo prendere i vettori di risposte filtrate a ogni pixel e ammassarle per poter rappresentare le vostre texture. Ci sono molteplici modi di fare questo, ma questo potrebbe essere il processo generale di cattura delle texture e delle immagini. Vedremo un paio di esempi di come la consistenza possa essere catturata in un'immagine. (19.11) Un modo semplice per farlo è da ciò che è noto come banche filtranti. Le banche filtranti sono come dice la parola, una banca di filtri. Non useremo solo un filtro Sobel o un rivelatore di Harris Corner Detector o Laplaciano a compimento dei blobi, utilizzeremo una serie di filtri diversi, una banca di filtri diversi. E cosa fanno ognuno di questi filtri? Ognuno di questi filtri può essere visualizzato come quelli che sono noti come filtri a passo di banda. Questo risale alla nostra discussione sull'estrazione di componenti a bassa frequenza e componenti ad alta frequenza nelle immagini. I filtri a passo banda sono filtri che permettono a una certa banda di frequenze di passare e di ottenere come output quando si convolge un filtro con l'immagine. Quindi, ricordate di aver visto esempi di filtri che estraggono componenti ad alta frequenza, rilevamento del bordo. Possiamo anche essere opposti per ottenere componenti a bassa frequenza facendo lisciare Gaussian. A questo punto, con i filtri a passo di banda, stiamo dicendo che vogliamo solo determinate serie di frequenze da passare, e utilizzeremo una banca di tali filtri per poter separare il segnale di ingresso in più componenti, ognuno che trasporta una certa sottobanda della tua immagine del segnale originale, e che può essere utilizzato per rappresentare la consistenza nella tua immagine. (20.40) Ecco un'illustrazione visiva. Quindi, si elabora un'immagine con filtri diversi. Così, vedete qui otto filtri diversi con cui si può arrivare. Questa è la tua immagine di input. Così, convolate ogni filtro sull'immagine con l'immagine e queste sono le risposte che si ottengono quando convolate ciascuno di quei filtri con l'immagine in ingresso. Come potete vedere, ognuno di questi output catturano aspetti diversi della consistenza o del contenuto in quella butterfly, e tutti messi insieme vi danno un senso di quella che è la consistenza nell'immagine. (21.23) parleremo di un esempio più concreto, che si conoscono come filtri Gabor. I filtri di Gabor sono una serie molto popolare di filtri a banda larga. A un certo livello sono noti per imitare o imitare come funziona il sistema visivo umano. Ma permettono a una certa banda di frequenze e rifiutano gli altri. (21.46) Il modo in cui i filtri Gabor funzionano è intuitivamente, possono essere visti come una combinazione di un filtro gaussiano e un filtro sinusoidale. Ecco quindi un esempio di filtro sinusoidale per un certo orientamento. Ecco un esempio di filtro gaussiano. Se convolate un filtro gaussiano e un filtro sinusoidale, otterreste una cosa del genere. Immagina superimponente il tuo sinusoide sul tuo gaussiano, otterresti una cosa del genere. (22.20) Mathematicamente parlando, un filtro 2D Gabor può essere scritto mentre hai una x, y, hai un λ, θ, ψ, σ e γ, parleremo di ognuno di loro in un attimo. Ed è dato da g (x, y, λ, θ, ψ, σ, γ) = e e − () 2 σ2 x + γ y " 2 2 " 2 i (2π + ψ) λ x ' parleremo di ognuna di quelle quantità, non andremo a ricavarlo in questo particolare corso, che potrebbe essere al di fuori dell'ambito. Ma in questa particolare formula, x ' = xcos (θ) + ysin (θ), parleremo di cosa sia la theta. θ è l'orientamento del normale alle strisce parallele del Gabor. Abbiamo visto che il sinusoide poteva essere orientato in una direzione particolare e che è dato dalla theta. Così, x '= xcos (θ) + ysin (θ), y' = − xsin (θ) + ycos (θ) (23.24) λ è la lunghezza d'onda della tua componente sinusoidale. Ricorda che il tuo sinusoide ha una lunghezza d'onda e una frequenza. Quindi, la tua lunghezza d'onda λ, ψ è lo scostamento di fase della tua funzione sinusoidale. Ancora una volta, richiamate la nostra discussione sulle frequenze di Mitch prima. σ è la deviazione standard della tua busta gaussiana. E γ è un rapporto di aspetto spaziale e specifica l'elettricità del supporto della vostra funzione Gabor. Quindi, se volete allungarlo, tutti possono essere controllati in questo particolare contesto. Invece di avere una gaussiana circolare, è possibile utilizzare il parametro gamma per poter controllare la natura ellittica della propria funzione di risposta Gabor. (24:15) Così, questo è un filtro 2D Gabor. Come potete vedere, vi dà un'idea di alcune texture. Quindi, ecco una banca di filtri di filtri Gabor. Quindi, questo ha 16 filtri Gabor ad un orientamento di 11,25, il che significa, se il vostro primo filtro ha un orientamento di 0, il vostro prossimo filtro sarà di 11,25, il filtro successivo sarà di 22,5, quindi avanti e così via. E si può vedere il filtro Gabor essere ruotato e ora si dispone di un'intera banca di filtri Gabor. (24:48) Si può ora prendere un'immagine e convolgere ciascuno di questi filtri con l'immagine e riceverete 16 diverse risposte dell'immagine a questi 16 filtri diversi. Come potete vedere qui, ognuna di queste risposte catturano un certo aspetto della vostra immagine originale. In caso di cerchio, sembra semplicemente evidenziare una prospettiva diversa rispetto al cerchio, ma quando si hanno texture più complesse, ognuna di queste risposte cattura una certa dimensione di quella consistenza. (25:24) E mettere insieme questi insieme ci dà una risposta complessiva dell'immagine a diverse serie di orientamenti e frequenze. C'è stato anche un altro popolare set di banche filtranti chiamate Steerable Filter Banks. I filtri Steerable sono una classe di filtri orientati che possono essere espressi come una combinazione lineare di una serie di filtri base. Ad esempio, se si dispone di un filtro gaussiano isotropico, e, è possibile definire uno Steerable − (x + y) 2 2 filtro come si ha G cos (θ) G peccato (θ), dove è il primo derivato di 1 θ 0 = G1 θ 0 + 1 θ 90 G1 θ 0 G ad un certo angolo θ. Ad esempio, se si dispone di un'immagine originale, è ora possibile considerare G1 lungo l'asse y essere il derivato in un determinato angolo. Si può considerare G1 di 15 gradi per essere il derivato ad un angolo diverso e così via. Così, ora puoi costruire combinazioni di questi due, di queste diverse immagini per costruire una risposta complessiva che hai. Quindi, ognuno di essi è un filtro Steerable dove è possibile controllare l'angolo in cui si sta ottenendo la risposta. Quindi, questa è un'altra, le banche del filtro Gabor sono state un esempio che potrebbe essere utilizzato per estrarre texture dalle immagini, le banche dei filtri Steerable sono un altro esempio che potrebbe essere utilizzato per estrarre texture dalle immagini. (27:07) Ecco un esempio, un'altra illustrazione di banche filtranti Steerable, dove si può prendere un filtro passa banda, B0. Come potete vedere questo filtro passa banda permette a una certa serie di frequenze di passare. Un altro filtro passa banda B1, B2, così via e così via. Si può avere un filtro a basso passaggio, quindi su e così via. Ora, è possibile combinare le risposte di un'immagine a tutti questi tipi di filtri e memorizzare alcune statistiche ad ogni pixel. Quindi ricordati che avrai un valore a ogni pixel, potrai memorizzare la deviazione media e standard, potrai raggruppare, puoi fare varie cose con quei valori che ottimici ad ogni pixel attraverso le banche filtranti, risposte alle banche di filtro e poter ottenere una rappresentazione per la tua consistenza. (27:53) Che conclude questa lezione. Si prega di continuare a leggere il capitolo 2 del libro di Szeliski. Alcune interessanti domande da portare via ora, che forse non avete proprio risposto, ma è qualcosa per cui pensare di essere; Dalle discussioni che abbiamo avuto in questa lezione, perché un abbigliamento camuffato è efficace? Pensati a riguardo. Ovviamente, si connette alla nostra lezione, quindi pensate con attenzione a ciò che abbiamo discusso e come si può estendere per capire come funziona un abbigliamento camuffato. Un'altra domanda da porre qui è: come è la texture diversa da dire un rumore di sale e pepe? Un rumore di sale e pepe potrebbe anche sembrare una texture. Allora, come è una texture diversa da un rumore di sale e pepe? Qualcosa per cui pensare e leggere per capire. E un'ultima domanda è che i filtri invarianti su scala saranno efficaci nelle foto corrispondenti, contenenti le bambole di Matryoshka o credo che abbiamo anche l'equivalenza in India. Le bambole di nidificazione, possono scalare i filtri invarianti essere in grado di abbinare immagini su queste bambole? Pensa a queste domande come tuo esercizio per questa lezione.