Home Tutorials Matlab Funzioni Matlab per la manipolazione e l'elaborazione delle immagini digitali: le basi.

Google Translator

 

Effettua una donazione

 

 

 

 

 

Page Rank Check    

 

 

Ultimi articoli

Funzioni Matlab per la manipolazione e l'elaborazione delle immagini digitali: le basi.
Tutorials - Matlab
Scritto da RedBaron85   
Sabato 30 Gennaio 2010 13:41

Funzioni Matlab per la manipolazione e l'elaborazione delle immagini digitali: le basi.


Questo articolo vuole essere un'introduzione ai comandi di base per manipolare delle immagini mediante Matlab.

Per caricare un'immagine presa dal disco nell'area di lavoro di Matlab, bisogna utilizzare la funzione:

imread('nomefile.estensione');   .

Ovviamente, così facendo non depositeremo l'immagine da nessuna parte, per cui è necessario creare una variabile, ad esempio 'immagine', e scrivere:

immagine = imread('nomefile.estensione'); .

Ebook, videocorsi e tutorials di RedBaron85 su Blender, Java3D e altro su effe12.com


'immagine' diverrà quindi una matrice (potete averne conferma, e leggere alcuni dati, consultando il Workspace), di dimensioni mxn, con m numero di righe (ossia: l'altezza, in pixel, dell'immagine) ed n di colonne (la larghezza, in pixel, dell'immagine). Ogni cella della matrice, richiamabile con:

immagine(x,y)

(con x e y coordinate del pixel nell'immagine) conterrà il valore associato a quel pixel, utile soprattutto se la vostra immagine è in scala di grigi in bianco e nero; le immagini a colori (RGB) o con alpha (RGBA) vengono memorizzate come matrici MxNxd, dove d è il numero di livelli: 3 se RGB, 4 se RGB con Alpha.

Scrivendo:

immagine(x,y,2)

otterrete il valore dell'intensità DEL COLORE VERDE (canale 2, cioè G, verde), espresso generalmente con un valore uint8 (cioè unsigned int 8 bit: da 0 a 255, per intenderci), del pixel di posizione x (coordinata verticale), y (coordinata orizzontale).

 

Per memorizzare i valori di altezza e larghezza dell'immagine nelle variabili M ed N rispettivamente, potete utilizzare il comando:

[M, N] = size(immagine) ; .


Scrivendo semplicemente M o N nella finestra dei comandi, e premendo invio, vi verrà mostrato a video il valore dell'altezza o della larghezza in pixel dell'immagine.


Potete creare una nuova variabile-immagine a partire da un'altra, ad esempio per effettuare test diversi senza dover ricaricare il file, semplicemente con =  :

immagine2 = immagine;    .


A questo punto, per effettuare 'operazioni puntuali' (pixel per pixel, per intenderci) sull'immagine, potete 'scorrere' la stessa con, ad esempio, uno o più cicli for, per elaborare tutta l'immagine o parti di essa, o ancora tutti i canali o solo un canale-colore.


La porzione di script seguente illustra, ad esempio, come rendere tutta l'immagine interamente bianca:

for m=1:M
for n=1:N
immagine2(m,n) = 255;
end;
end;             .

E per visualizzare quanto fatto?  Utilizzate il comando:

imshow([nomeVariabileImmagine]);

imshow(immagine2).

Per salvare l'immagine così prodotta  su disco, utilizzate la funzione:

imwrite(variabile, '[nomeDelFile]', '[formatoDelFile]');

imwrite(immagine2, 'immagine2.jpg', 'jpg');           .

che salverà l'immagine nella directory dell'area di lavoro di Matlab. Attenzione: Matlab non vi chiederà il permesso di sovrascrivere eventuali file omonimi, ma lo farà e basta, senza avvertirvi nè prima nè dopo averlo fatto!


Potete anche salvare parti o parti di canali dell'immagine, semplicemente depositando queste sezioni in una nuova variabile e salvando quest'ultima su disco, utilizzando ad esempio uno script del genere, che ricopia un quadrato di dimensioni 30x30 pixel preso a partire dal vertice (101,301) (con 101 coordinata verticale) di immagine, METTENDO PERO' A ZERO (cioè annullandolo) IL CONTRIBUTO DEL CANALE VERDE (2) DELL'IMMAGINE ORIGINALE:

porzione = ones(30,30,3); % Crea una matrice di dimensioni 30x30x3
porzione = uint8(porzione); % Rende la matrice una matrice di uint8 (il tipo di dati di default di una matrice-immagine)
for m=101:130
for n=301:330
porzione(m-100,n-300,1) = immagine(m,n,1);
porzione(m-100,n-300,2) = 0;
porzione(m-100,n-300,3) = immagine(m,n,3);
end;
end;
imwrite(porzione, 'porzione.jpg', 'jpg');

(ovviamente, per poter utilizzare questo script così come l'ho scritto, la vostra immagine dovrà essere più larga di 330 pixel e più alta di 130 pixel).


Questi sono solo alcuni (pochissimi, per la verità!) dei comandi utilizzabili in Matlab per l'elaborazione delle immagini digitali; ne troverete altri negli articoli che pubblicherò in futuro e, ovviamente, nella documentazione del programma. Vi ricordo che per ottenere ulteriori informazioni su di un comando è sufficiente digitare:

help nomecomando;

help imwrite;    .

nella Command View di Matlab.

A presto!


Risorse consigliate su Matlab:


                 

 

Tags:     tutorial      matlab      script      scripting      funzioni      manipolazione      elaborazione      immagini digitali
Ultimo aggiornamento Martedì 05 Febbraio 2013 22:56
 

 

Ricerca personalizzata

 

Milanese Francesco - Partita IVA: 04950350878

Copyright © 2013 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.
AltroArticoliblog utentiBlueprintsContestenglishProgrammazioneModelliElencoNewsTexturesTutorialsVideotutorials