Estratto del documento

Elaborazioni elementari delle immagini

L. Verdoliva, M. Cagnazzo

08.03.07

In questa prima lezione affrontiamo il problema della rappresentazione delle immagini digitali in Matlab e presentiamo le principali elaborazioni nel dominio spaziale, tra cui alcune di quelle che permettono di migliorare l’aspetto di un’immagine per renderla più adatta ad una specifica applicazione (Image Enhancement).

1 Rappresentazione delle immagini in Matlab

Un’immagine digitale (monocromatica) può essere rappresentata in Matlab con una matrice bidimensionale il cui generico campione è chiamato (picture element) e varia nel range [0, K − 1]. Le immagini pixelX(m,n) sono quindi rappresentate con K livelli di grigio, e ogni pixel è codificato con log K bit.2

Scriviamo i comandi Matlab per leggere da file un’immagine in formato JPEG, e che ci consentono perciò di memorizzarne i valori in una matrice:

X = imread(’nome_file.jpg’); % leggiamo il file
[M,N] = size(X); % memorizziamo le dimensioni in M e N
whos; % cosa abbiamo adesso in memoria?

Attraverso il comando imread è possibile leggere immagini con formato standard come jpeg, tiff, gif, bmp ed altri. Con il comando help imread potete verificare esattamente quali sono i formati supportati dalla versione di Matlab che state utilizzando. Se l’immagine è in formato (cioè il file non ha un header), grezzo, le dimensioni sono M × N e il tipo di dato è intero senza segno su 8 bit, la lettura avviene con i seguenti comandi:

fid = fopen(’house.y’,’r’); % apertura del file in lettura
X = fread(fid,[N,M],’uint8’); % lettura dei dati
X = X’; % immagine trasposta
fclose(fid); % rilascio del file
whos X; % quali sono le caratteristiche di X?

Matlab legge per colonne quindi X va trasposta per una corretta visualizzazione. Fate attenzione al fatto che le immagini che volete leggere devono trovarsi nella directory corrente o nel path; in alternativa potete dare il percorso completo. Notate (con whos) come il comando imread memorizzi i valori come interi senza segno su 8 bit, mentre fread li converte in double (64 bit). Quando si usa imread conviene poi effettuare una conversione in double, perché molte operazioni non sono definite sul tipo uint8. La conversione si ottiene facilmente col comando X=double(X).

Una volta in memoria l’immagine può essere visualizzata nel modo seguente:

1

Anteprima
Vedrai una selezione di 1 pagina su 1
Elaborazione dei segnali multimediali - Esercitazione Pag. 1
1 su 1
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/03 Telecomunicazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Fra.M di informazioni apprese con la frequenza delle lezioni di Elaborazione dei segnali multimediali e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Verdoliva Luisa.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community