Home Programmazione Matlab, corso base Capitolo 10: Caricare un file. Caricare un file immagine. Salvare un file. Salvare un file immagine.

Page Rank Check    





Ultimi articoli

Capitolo 10: Caricare un file. Caricare un file immagine. Salvare un file. Salvare un file immagine.
Guide di programmazione - Matlab, corso base
Scritto da RedBaron85   
Sabato 30 Gennaio 2010 17:47

Guida a Matlab - Corso base - Capitolo 10: caricare un file. Caricare un file immagine. Salvare un file. Salvare un file immagine


Capitolo 10: Caricare un file. Caricare un file immagine. Salvare un file. Salvare un file immagine.

Matlab ci consente di caricare interi file nel Workspace, trattandoli mediante un'unica variabile (un handler, un gestore) che rappresenterà i dati sotto forma di matrici.

Le modifiche effettuate sull'handler non influenzeranno direttamente il file sorgente, in quanto l'handler sarà una copia in memoria dello stesso; dovremo, quindi, salvare le modifiche su file per avere una copia permanente del nostro lavoro.

 

 

Il file da caricare dovrà trovarsi nella Directory di lavoro di Matlab, ed è qui che verranno salvati (se inseriremo comandi di salvataggio su file, ovviamente).

 

Per caricare un file, Matlab mette a disposizione i metodi:

  • load('[nomeFile.estensione]');

alquanto "generico" e con delle restrizioni (ma anche parametri per impostarne il comportamento; si consulti, a tal proposito, l'help online);

 

  • imread('[nomeFileImmagine.estensione]');

per caricare file di immagini.

 

Una volta caricato un file immagine, ad esempio con (mettete un file 'prova.jpg' nella vostra directory di lavoro o cambiate il nome della variabile nello script che segue):

>> immagine = imread('prova.jpg');

Matlab tratterà il dato come una matrice di valori, per cui scrivendo:

>> length(immagine);

avremo il numero di colonne (la lunghezza di un vettore riga dell'immagine; corrisponde alla larghezza, in pixel, dell'immagine), mentre scrivendo:

>> size(immagine);

In genere, con size avremo tre valori: numero di righe (altezza dell'immagine), numero di colonne (larghezza dell'immagine), numero di livelli (ad esempio, per immagini a colori RGB, 3: uno per canale-colore).

 

ATTENZIONE --- In Matlab il 'sistema di riferimento' delle immagini come matrici parte dall'angolo in alto a sinistra, per cui la cella di indice 0,0 sarà quella in alto a sinistra nell'immagine.

Per conoscere, ad esempio, il valore di verde (secondo canale; in Matlab il primo indice di un array è 1).del pixel posto nella quarta colonna della terza riga, scrivere:

>> valorePixel = immagine(3, 4, 2) .

Il valore ottenuto dovrà essere trattato in base al tipo di dato che rappresenta l'immagine; se, ad esempio, si tratterà di un uint8, dovremo aspettarci valori nel range [0, 255].

 

Matlab supporta diversi formati di file immagine (altri possono essere trattati mediante toolbox opportune); tra questi, abbiamo ad esempio:

  • TIFF (.tif, .tiff);
  • JPEG (.jpg, .jpeg);
  • GIF (.gif);
  • BMP (.bmp);
  • PNG (.png);
  • XWD (.xwd).

 

Dopo aver lavorato su un'immagine, ad esempio applicandole un filtro (vd. prossime lezioni), la cosa più logica da fare è salvare il tutto su file, cosa che potete fare con:

>> imwrite(matriceImmagine, nomeFile, estensioneFile);

che salva, appunto, la MATRICE depositata nella variabile

E' possibile utilizzare una gran quantità di valori per i parametri di imwrite, per cui si rimanda all'help online di tale comando per una trattazione più approfondita.

 

Abbiamo detto che imwrite salva la matrice "convertendola" in immagine, per cui potremmo pensare di generare matrici mediante procedure o formule e salvarle come immagini su file...

... supposizione esatta ! La seguente porzione di codice (ottimizzabile !), ad esempio, genera una "scacchiera" (8x8 caselle, ciascuna di 16x16 pixel) e la salva nella current directory con nome "scacchiera.bmp":

>> % Alloco una matrice di zeri di dimensione 128x128

>> scacchiera = zeros(128,128);

>> % Una casella nera è una matrice di zeros 16x16

>> cN = zeros(16,16);

>> % Una casella bianca è una matrice di ones 16x16

>> cB = ones(16,16);

>> % La prima riga sarà:

>> primaRiga = [cB, cN, cB, cN, cB, cN, cB, cN];

>> % La seconda riga sarà:

>> secondaRiga = [cN, cB, cN, cB, cN, cB, cN, cB];

>> % La scacchiera sarà:

>> scacchiera = [primaRiga; secondaRiga; primaRiga; secondaRiga; primaRiga; secondaRiga; primaRiga; secondaRiga];

>> % Salvo su file tale matrice. Diverrà un'immagine.

>> imwrite(scacchiera, 'scacchiera.bmp', 'bmp');

Prima di salvare un'immagine, comunque, potreste volerla vedere a video in Matlab; utilizzando il comando (utilizzabile anche in combinazione con subplot, per vedere nella stessa finestra immagini e/o grafici):

>> imshow(nomeMatrice);

potrete vedere, nella finestra che apparirà a video, l'immagine rappresentata dalla matrice sulla quale state operando (provate, riprendendo lo script appena visto, ad eseguire imshow(scacchiera)).

 

Così come è possibile salvare immagini scrivendole su file, è possibile scrivere altri tipi di dati in maniera permanente.

La funzione SAVE serve a salvare TUTTO IL WORKSPACE in un file, digitando:

>> save [nomeFile];

Per limitare il salvataggio ad una o più variabili (es: salvare solo le variabili X e VALORE2), scrivere ad esempio:

>> save [nomeFile] [X] [VALORE2];

Esistono, ovviamente, molti parametri per save e, comunque, molte altre funzioni per gestire l'I/O da/su file; per una trattazione più approfondita, si rimanda all'help online di Matlab.

Tags:     programmazione      guide      manuali      corso      matlab      capitolo 10      caricare file      caricare immagini      salvare file      salvare immagini      imread      imwrite      save      load      imshow
Ultimo aggiornamento Domenica 22 Gennaio 2012 14:37
 

Ti è piaciuto questo articolo ? Condividilo !



RedBaron85.com Forum community banner

Non hai trovato quello che cercavi ?
Ricerca personalizzata
Copyright © 2012 RedBaron85.com: Informatica, CG 2D e 3D, Blender, Python, Java 2D e 3D, 3D Studio e altro ancora!. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.

Milanese Francesco - Partita IVA: 04950350878

AltroArticoliblog utentiBlueprintsContestenglishProgrammazioneModelliElencoNewsTexturesTutorialsVideotutorials