DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Lab 5: 18 Maggio 2015
Marco D. Santambrogio – [email protected]
Gianluca Durelli – [email protected]
Ver. aggiornata al 17 Maggio 2015
Obiettivi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Esercitarsi sui costrutti visti a lezione
 Tutto il C visto fino a qui
 In particolare: File
2
Esercizi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Es0: Filtro 0
• Es1: Filtro 1
• Es2: Copia Immagine
• Es3: Canali Immagine
• Es4: Filtro Media Mobile
3
Exe 0: Filtro 0
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Scrivere un programma che
 legga da file un insieme di punti di un grafico (X,Y)
 scriva su di un altro file (nello stesso formato) tutti e soli i
punti con un valore di Y maggiore di una soglia impostata
dall'utente.
• File es0.txt : ogni riga contiene i dati in questo formato
(X,Y)
• Salvare inoltre i risultati in un file binario nel seguente
modo:
 All'inizio vi e' una variabile intera che dice quanti sono gli
elementi
 poi un array di elementi di questo tipo: struct punto{ float X;
float Y; }
4
Exe 0: Filtro 0
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
5
Exe 0: Filtro 0 – Leggi Txt
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
6
Exe 0: Filtro 0 – Scrivi Txt
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
7
Exe 0: Filtro 0 – Leggi Dat
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
8
Exe 0: Filtro 0 – Scrivi Dat
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
9
Exe 0: Filtro 0 – Stampa Dati
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
10
Exe 0: Filtro 0 – Filtro
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
11
Exe 1: Filtro 1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• A partire dal file es1.txt (formato:
tempo,valore) scrivere un programma
 filtri tutti i valori che appartengono ad un
dato intervallo di tempo
 Scrivere poi su di un file in uscita tutti i
valori trovati.
12
Exe 2 e 3: Immagini BMP
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Un immagine BMP e' un immagine con 3 canali di colore R, G, B (rosso,
verde, blue).
• Ogni pixel e' quindi rappresentato dalla terna RGB
• I tre canali possono assumere solo valori da 0 a 255 (sono quindi salvati
con dei char).
• I primi 54 bytes sono una specifica delle dimensioni, schema colore ed
altre informazioni dell'immagine (non codificano le informazioni di colore
sui pixel).
• I restanti bytes (NUMERO PIXELS * 3) rappresentano le informazioni sui
3 canali disponibili
• Usare solo fread ed fwrite per letture e scritture in quanto l'immagine non
e' un formato testuale. L'immagine in ingresso e' formata da 800*600
pixels.
13
Exe 2: Copia Immagine
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Scrivere un programma che legga l'immagine es2.bmp in
ingresso e la scriva in uscita nel file es2_result.bmp
• Per fare questo si proceda a:
 Leggere i primi 54 bytes e salvarli in un array HEADER
(char HEARDER[54])
 Leggere i successivi PIXEL * 3 bytes e salvarli in un
secondo array IMAGE (char IMAGE[PIXELS * 3])
 Scrivere sul file di uscita l'array HEADER
 Scrivere sul file di uscita l'array IMAGE
• Se le operazioni sono state effettuate correttamente
l'immagine di uscita risulta uguale a quella di ingresso.
14
Exe 3: Canali Immagine
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Se ai valori RGB di un pixel si sostituiscono i valori di un
singolo canale, si otterra' in uscita solo quel canale.
• Se si vuole il canale rosso si deve sostituire quindi ad ogni
pixel al posto di RGB, R 0 0 (ovvero il canale
corrisponedente al rosso viene mantenuto e gli altri
vengono posti a 0).
• Scrivere un programma che legga l'immagine es2.bmp e
crei 3 diverse immagini ognuna contenente uno dei 3
canali.
 Immagine dei rossi dove il valore corrispondente a B e G
sono messi a 0
 Immagine dei verdi dove il valore corrispondente a R e B
sono messi a 0
 Immagine dei blue dove il valore corrispondente a R e G
sono messi a 0
15
Exe 4: Filtro Media Mobile
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
•
A partire dal file es1.txt (formato: tempo,valore) scrivere un programma che:
 Legga la sequenza contenuta nel file
 La filtri con una media mobile
 Scriva il risultato in es4_result.txt
•
•
La media mobile e' una media effettuata su una determinata finestra temporale.
Fissando la dimensione della finestra ad un determinato numero di punti (scelto
dall’utente) della vostra sequenza, il punto in uscita corrisponde alla media dei punti
presenti nella finestra.
•
Supponendo che la finestra sia di 3 elementi (il valore segnato con O, viene sostituito
dalla media di quelli appartenenti alla finestra):
 Tempo : 1 2 3 4 5 6
 Valore: 10 20 30 40 20 30
 Passi : X O X
X O X
X O X
X O X
 Uscita: 10 20 30 30 30 30
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• BUON LAVORO!
17
Scarica

V0 - PPT