- 1. Elaborazione delle immagini utilizzando la finestra dell'editor di MATLAB
- 2. Elaborazione delle immagini con MATLAB GUI
- Creazione dell'interfaccia utente grafica MATLAB per l'elaborazione delle immagini
- Codice MATLAB GUI per l'elaborazione delle immagini
- Esegui il codice della GUI MATLAB per l'elaborazione delle immagini
Immagina di puntare la fotocamera su un oggetto e la fotocamera ti dice il nome di quell'oggetto, sì, Google Lens negli smartphone Android sta facendo la stessa cosa utilizzando l'elaborazione delle immagini. Questo dà al computer una visione per rilevare e riconoscere le cose e agire di conseguenza. L'elaborazione delle immagini ha molte applicazioni come il rilevamento e il riconoscimento dei volti, l'impressione del pollice, la realtà aumentata, l'OCR, la scansione di codici a barre e molte altre. Sono disponibili molti software per l'elaborazione delle immagini, tra cui MATLAB è il più adatto per iniziare.
MATLAB può eseguire molte operazioni avanzate di elaborazione delle immagini, ma per iniziare con l'elaborazione delle immagini in MATLAB, qui spiegheremo alcune operazioni di base come RGB in grigio, rotazione dell'immagine, conversione binaria ecc. Puoi inoltre creare programmi automatizzati per la rimozione del rumore, immagine chiarezza, filtrando utilizzando le funzioni spiegate in questo tutorial.
Prima di procedere oltre, se sei nuovo in MATLAB puoi controllare i nostri precedenti tutorial MATLAB per capire meglio:
- Iniziare con MATLAB: una rapida introduzione
- Interfacciamento di Arduino con MATLAB - LED lampeggiante
- Controllo motore CC tramite MATLAB e Arduino
- Controllo del motore passo-passo utilizzando MATLAB e Arduino
- Come tracciare il grafico della temperatura in tempo reale utilizzando MATLAB
In MATLAB, come sempre, ci sono due modi per eseguire qualsiasi algoritmo di elaborazione delle immagini, uno è immettendo direttamente il comando nell'editor / finestra di comando e l'altro è creando una GUI per lo stesso. Qui, ti mostreremo entrambi i metodi per eseguire le operazioni di base dell'elaborazione delle immagini in MATLAB.
1. Elaborazione delle immagini utilizzando la finestra dell'editor di MATLAB
Ora scriveremo il codice per eseguire alcune operazioni di base di elaborazione delle immagini nella finestra dell'editor. Per familiarizzare con tutta la terminologia di base utilizzata in MATLAB, segui il link. Copia e incolla il codice seguente nella finestra dell'editor, a = imread ('F: \ circuit digest \ image processing using matlab \ camerman.jpg'); sottotrama (2,3,1); imshow (a); b = rgb2gray (a); sottotrama (2,3,2); imshow (b); c = im2bw (a); sottotrama (2,3,3); imshow (c); d = imadjust (b); sottotrama (2,3,4); imshow (d); e = a; e = rgb2gray (e); sottotrama (2,3,5); imhist (e); imfinfo ('F: \ circuit digest \ image processing using matlab \ beard-man.jpg') = size (a) % colormap ('spring')
Nella variabile 'a', stiamo importando l'immagine usando il comando imread ('nomefile') e poi creiamo un grafico della riga '2' e della colonna '3' usando la sottotrama (riga, colonna, posizione) e visualizzando l'immagine importata in posizione ' 1 '. Per mostrare l'immagine usiamo il comando imshow ('filename') .
Di seguito sono riportati alcuni comandi per eseguire alcune elaborazioni di base sull'immagine caricata:
- Nella variabile "b", stiamo convertendo l'immagine RGB in un'immagine di intensità in scala di grigi utilizzando il comando rgb2gray ("nomefile") e visualizzandola nella trama sulla posizione "2".
- Nella variabile 'c', stiamo convertendo l'immagine in un'immagine binaria oppure puoi dire in formato '0' (nero) e '1' (bianco) usando il comando im2bw ('nomefile') e visualizzandolo nella trama su posizione "3".
- Nella variabile "d", stiamo regolando o mappando i valori di intensità dell'immagine in scala di grigi utilizzando il comando imadjust ("nomefile") e visualizzandolo nella trama sulla posizione "4".
- Nella variabile "e", stiamo tracciando l'istogramma dell'immagine in scala di grigi utilizzando il comando imhist ("nomefile") e visualizzandolo nel grafico nella posizione "5". Per tracciare l'istogramma devi sempre convertire l'immagine in scala di grigi e poi sarai in grado di vedere l'istogramma di quel file grafico.
- Il comando Imfinfo ('filename with location') viene utilizzato per visualizzare le informazioni sul file grafico.
- = Il comando size ('filename') viene utilizzato per visualizzare le dimensioni e i piani di colore di un particolare file grafico.
- colormap ('spring') è usato per cambiare il tipo di colormap del file grafico. Ecco, nel mio codice ho impostato questo comando come commento ma puoi usarlo rimuovendo il segno di percentuale. Ci sono molti tipi di colore in MATLAB come Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines e Spring.
Come questi, ci sono numerosi comandi in MATLAB che possono essere usati per eseguire diverse attività, puoi controllare le funzioni di elaborazione delle immagini in MATLAB seguendo il link.
2. Elaborazione delle immagini con MATLAB GUI
Creazione dell'interfaccia utente grafica MATLAB per l'elaborazione delle immagini
Per creare una GUI (Graphical User Interface) per l'elaborazione delle immagini, avviare la GUI digitando il comando seguente nella finestra di comando .
guida
Si aprirà una finestra popup, quindi selezionare una nuova GUI vuota come mostrato nell'immagine sottostante,
Ora dobbiamo scegliere il numero di pulsanti (ogni pulsante eseguirà un'attività diversa) e un asse per visualizzare l'immagine.
Per ridimensionare o modificare la forma del pulsante o degli assi, è sufficiente fare clic su di esso e sarà possibile trascinare gli angoli del pulsante. Facendo doppio clic su uno di questi, sarà possibile modificare il colore, la stringa, il tag e altre opzioni di quel particolare pulsante. Dopo la personalizzazione apparirà così
Puoi personalizzare i pulsanti secondo la tua scelta. Ora, quando lo salvi, viene generato un codice nella finestra Editor di MATLAB. Modificare il codice generato per impostare l'attività per diversi pulsanti. Di seguito abbiamo modificato il codice MATLAB.
Codice MATLAB GUI per l'elaborazione delle immagini
Alla fine di questo progetto viene fornito il codice MATLAB completo per l'elaborazione delle immagini utilizzando la GUI MATLAB. Inoltre includiamo il file della GUI (.fig) e il file di codice (.m) qui per il download, utilizzando il quale è possibile personalizzare i pulsanti o le dimensioni degli assi secondo le proprie esigenze. Abbiamo modificato il codice generato come spiegato di seguito.
Nella funzione 'uploadimage' , copia e incolla il codice sottostante per inserire il file dal PC. Qui, il comando uigetfile ('image extension type') viene utilizzato per importare l'immagine nella GUI MATLAB. Leggi quel file usando il comando imread () e poi visualizzalo con il comando imshow () sugli assi1 usando gli assi (handle.axes1) . Ora, con il comando setappdata (), memorizzare la variabile nella GUI così la variabile sarà accessibile da una parte della GUI all'altra parte della GUI.
a = uigetfile ('. jpg') a = imread (a); assi (handle.axes1); imshow (a); setappdata (0, 'a', a)
Ora, in ogni funzione vedrai il comando getappdata () che viene utilizzato per recuperare i dati che vengono memorizzati utilizzando setappdata () nella GUI.
Qui spiegheremo otto funzioni comunemente utilizzate nell'elaborazione delle immagini
S. No. |
Comando |
Nome pulsante |
Compito da eseguire |
1. |
uigetfile () |
Carica immagine |
Fare clic per importare l'immagine dal disco |
2. |
rgb2gray () |
Da RGB a grigio |
Fare clic per convertire l'immagine RGB in scala di grigi |
3. |
im2bw () |
Converti in immagine binaria |
Fare clic per convertire l'immagine in binario |
4. |
- |
RIPRISTINA |
Fare clic per ripristinare l'immagine come originale |
5. |
imhist () |
Istogramma |
Fare clic per vedere l'istogramma dell'immagine |
6. |
implementazione () |
Immagine complementare |
Fare clic per controllare l'immagine del complemento |
7. |
edge (nome file, metodo) |
Rilevamento dei bordi |
Fare clic per rilevare i bordi nell'immagine |
8. |
imrotate (nome file, angolo) |
Ruotare in senso orario |
Fare clic per ruotare l'immagine in senso orario |
9. |
imrotate (nome file, angolo) |
Ruota in senso antiorario |
Fare clic per ruotare l'immagine in senso antiorario |
1. Converti l'immagine RGB in scala di grigi
Nella funzione 'rgb2gray' , copia e incolla il codice seguente per convertire l'immagine RGB in scala di grigi usando il comando rgb2gray () .
a = getappdata (0, 'a'); agray = rgb2gray (a); assi (handle.axes1); imshow (agray);
2. Converti in immagine binaria
Nella funzione "im2bw" , copia e incolla il codice seguente per convertire l'immagine in un'immagine binaria oppure puoi pronunciare il formato "0" (nero) e "1" (bianco) utilizzando il comando im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); assi (handle.axes1); imshow (abw);
3. Ripristina immagine originale
Nella funzione "ripristina" , copia e incolla il codice seguente per ripristinare l'immagine modificata nell'immagine originale.
a = getappdata (0, 'a'); assi (handle.axes1); imshow (a);
4. Traccia istogramma immagine
Nella funzione 'istogramma' , copia e incolla il codice seguente per tracciare l'istogramma dell'immagine in scala di grigi usando il comando imhist ('nomefile') e visualizzalo su assi1 . Per tracciare l'istogramma devi sempre convertire l'immagine in scala di grigi e poi sarai in grado di vedere l'istogramma di quel file grafico.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); assi (handle.axes1); imhist (ahist);
5. Converti in immagine complementare
Nella funzione 'complementimage' , copia e incolla il codice sottostante per vedere il complemento del file grafico inserito usando il comando imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); assi (handle.axes1); imshow (acomp);
6. Rilevamento dei bordi utilizzando il metodo Canny
Nella funzione "edge" , copia e incolla il codice seguente per rilevare e trovare i bordi in un'immagine in scala di grigi utilizzando il comando edge ("filename", "method") . Al posto del metodo puoi scegliere tra questi tre, Canny, Prewitt e montage . Stiamo usando il metodo Canny per il rilevamento dei bordi. Inoltre non è possibile rilevare il bordo direttamente dall'immagine originale, prima devi convertirlo in scala di grigi e poi puoi rilevare i bordi.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = edge (aedge , 'Canny') ' assi (handle.axes1); imshow (aedge);
7. Ruota l'immagine in senso orario
Nella funzione "senso orario" , copia e incolla il codice seguente per ruotare l'immagine in senso orario utilizzando il comando imrotate (nome file, "angolo")
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 270); assi (handle.axes1); imshow (aclock);
8. Ruota l'immagine in senso antiorario
Nella funzione "antiorario" , copia e incolla il codice sottostante per ruotare l'immagine in senso antiorario utilizzando il comando imrotate (nome file, "angolo")
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 90); assi (handle.axes1); imshow (aclock);
Esegui il codice della GUI MATLAB per l'elaborazione delle immagini
Ora, fai clic sul pulsante "ESEGUI" per eseguire il codice modificato nel file.m
MATLAB potrebbe impiegare alcuni secondi per rispondere, non fare clic su alcun pulsante della GUI finché MATLAB non mostra il messaggio di occupato nell'angolo in basso a sinistra come mostrato di seguito,
Quando tutto è pronto, importa l'immagine dal PC cliccando sul pulsante "Carica immagine". Ora sarai in grado di convertire o ruotare l'immagine facendo clic su qualsiasi pulsante di conseguenza. La tabella sottostante ti mostrerà l'attività che stiamo eseguendo con il clic di un pulsante in particolare:
Il risultato al clic di ciascun pulsante darà mostrato di seguito,
Il funzionamento completo di ciascun pulsante è illustrato nel video sottostante.
Puoi persino eseguire un livello avanzato di elaborazione delle immagini con Image Processing Toolbox che puoi acquistare dal sito ufficiale di MATHWORKS, alcune delle operazioni di livello avanzato sono elencate di seguito:
- Operazioni geometriche
- Blocca le operazioni
- Filtraggio lineare e progettazione del filtro
- Trasforma
- Analisi e miglioramento delle immagini
- Operazioni su immagini binarie