- 1. Processament d'imatges mitjançant la finestra de l'editor MATLAB
- 2. Processament d'imatges amb MATLAB GUI
- Creació d’una interfície gràfica d’usuari MATLAB per al processament d’imatges
- Codi MATLAB GUI per al processament d'imatges
- Executeu el codi GUI MATLAB per al processament d'imatges
Imagineu-vos apuntant la càmera cap a algun objecte i la càmera us dirà el nom de l’objecte. Sí, Google Lens als telèfons intel·ligents Android fa el mateix amb el processament d’imatges. Això proporciona a l'ordinador una visió per detectar i reconèixer les coses i prendre accions en conseqüència. El processament d’imatges té moltes aplicacions com la detecció i reconeixement de cares, impressió de polze, realitat augmentada, OCR, escaneig de codis de barres i moltes més. Hi ha molts programes disponibles per al processament d’imatges, entre ells MATLAB és el més adequat per començar.
MATLAB pot realitzar moltes operacions avançades de processament d’imatges, però per a començar amb el processament d’imatges a MATLAB, aquí explicarem algunes operacions bàsiques com RGB a gris, girar la imatge, conversió binària, etc. claredat, filtrant mitjançant les funcions explicades en aquest tutorial.
Abans de continuar, si sou nou a MATLAB, podeu consultar els nostres tutorials anteriors de MATLAB per comprovar-ho millor:
- Introducció a MATLAB: una introducció ràpida
- Interfície d'Arduino amb MATLAB - LED parpellejant
- Control del motor de corrent continu mitjançant MATLAB i Arduino
- Control del pas a pas mitjançant MATLAB i Arduino
- Com es traça un gràfic de temperatura en temps real mitjançant MATLAB
A MATLAB, com sempre, hi ha dues maneres de realitzar qualsevol algorisme de processament d’imatges: una és introduint directament l’ordre a la finestra de l’editor / ordre i l’altra és creant una GUI per a la mateixa. Aquí us mostrarem els dos mètodes per realitzar operacions bàsiques de processament d’imatges a MATLAB.
1. Processament d'imatges mitjançant la finestra de l'editor MATLAB
Ara, escriurem el codi per realitzar algunes operacions bàsiques de processament d’imatges a la finestra de l’editor. Per familiaritzar-vos amb tota la terminologia bàsica utilitzada a MATLAB, seguiu l'enllaç. Copieu i enganxeu el codi següent a la finestra de l'editor, a = imread ('F: \ circuit digest \ processament d'imatges mitjançant matlab \ camerman.jpg'); subtrama (2,3,1); imshow (a); b = rgb2gray (a); subtrama (2,3,2); imshow (b); c = im2bw (a); subtrama (2,3,3); imshow (c); d = ajustar (b); subtrama (2,3,4); imshow (d); e = a; e = rgb2gray (e); subtrama (2,3,5); imhist (e); imfinfo ('F: \ circuit digest \ processament d'imatges mitjançant matlab \ beard-man.jpg') = mida (a) % colormap ('spring')

A la variable "a", estem important la imatge mitjançant l'ordre imread ("nom del fitxer") i, a continuació, fem un gràfic de la fila "2" i la columna "3" mitjançant la subtrama (fila, columna, posició) i mostrem la imatge importada a la posició 1 '. Per mostrar la imatge utilitzem l'ordre imshow ('nom del fitxer') .
A continuació es mostren algunes ordres per realitzar un processament bàsic de la imatge carregada:
- A la variable 'b', estem convertint la imatge RGB en imatge d'intensitat en escala de grisos mitjançant l'ordre rgb2gray ('nom del fitxer') i mostrant-la a la trama de la posició '2'.
- A la variable 'c', estem convertint la imatge en imatge binària o es pot dir en format '0' (negre) i '1' (blanc) mitjançant l'ordre im2bw ('nom_fitxer') i mostrar-la a la trama a posició '3'.
- A la variable "d", estem ajustant o mapejant els valors de la intensitat de la imatge en escala de grisos mitjançant l'ordre imadjust ("nom del fitxer") i el mostrem en un diagrama a la posició "4".
- A la variable 'e', estem traçant l'histograma de la imatge en escala de grisos mitjançant l'ordre imhist ('nom del fitxer') i la mostrem en el diagrama a la posició '5'. Per traçar l'histograma, sempre heu de convertir la imatge en escala de grisos i després podreu veure l'histograma d'aquest fitxer gràfic.
- L'ordre Imfinfo ('nom de fitxer amb ubicació') s'utilitza per mostrar informació sobre el fitxer gràfic.
- = mida ('nom del fitxer') s'utilitza per mostrar la mida i els plans de color d'un fitxer gràfic concret.
- colormap ('primavera') s'utilitza per canviar el tipus de mapa de colors del fitxer gràfic. Aquí, al meu codi, he establert aquesta ordre com a comentari, però podeu utilitzar-la eliminant el signe de percentatge. Hi ha molts tipus de colors a MATLAB com Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines i spring.
Com aquestes, hi ha un nombre d’ordres a MATLAB que es poden utilitzar per realitzar diferents tasques; podeu comprovar les funcions de processament d’imatges a MATLAB seguint l’enllaç.
2. Processament d'imatges amb MATLAB GUI
Creació d’una interfície gràfica d’usuari MATLAB per al processament d’imatges
Per crear una interfície gràfica d'usuari (interfície gràfica d'usuari) per al processament d'imatges, inicieu la interfície gràfica d'usuari escrivint l'ordre següent a la finestra d'ordres .
guia
S'obrirà una finestra emergent i, a continuació, seleccioneu una nova interfície gràfica en blanc com es mostra a la imatge següent.

Ara hem de triar el nombre de botons (cada botó realitzarà tasques diferents) i un eix per mostrar la imatge.
Per canviar la mida o per canviar la forma del polsador o dels eixos, només cal que hi feu clic i podreu arrossegar les cantonades del botó. En fer doble clic sobre qualsevol d’aquestes, podreu canviar el color, la cadena, l’etiqueta i altres opcions d’aquest botó en particular. Després de la personalització, quedarà així


Podeu personalitzar els botons segons la vostra elecció. Ara, quan el deseu, es genera un codi a la finestra Editor de MATLAB. Editeu el codi generat per configurar la tasca per a diferents botons. A continuació hem editat el codi MATLAB.
Codi MATLAB GUI per al processament d'imatges
Al final d'aquest projecte, es proporciona un codi complet MATLAB per al processament d'imatges mitjançant MATLAB GUI. A més, incloem el fitxer GUI (.fig) i el fitxer de codi (.m) aquí per descarregar, amb el qual podeu personalitzar els botons o la mida dels eixos segons el vostre requisit. Hem editat el codi generat tal com s’explica a continuació.
A la funció 'uploadimage' , copieu i enganxeu el codi següent per inserir el fitxer des del PC. Aquí, l'ordre uigetfile ('tipus d'extensió d'imatge') s'utilitza per importar imatge a la GUI de MATLAB. Llegir aquest fitxer fent servir la comanda imread () i després mostrar-ho amb la comanda imshow () a axes1 utilitzant eixos (handles.axes1) . Ara, amb l'ordre setappdata (), emmagatzemeu la variable a la GUI perquè la variable sigui accessible per una part de la GUI a l'altra part de la GUI.
a = uigetfile ('. jpg') a = imread (a); eixos (handles.axes1); imshow (a); setappdata (0, 'a', a)

Ara, en totes les funcions, veureu l'ordre getappdata () que s'utilitza per recuperar dades que s'emmagatzemen utilitzant setappdata () a la GUI.
Aquí explicarem vuit funcions d'ús habitual en el processament d'imatges
|
S. No. |
Comandament |
Nom del botó |
Tasca a realitzar |
|
1. |
uigetfile () |
Penja la imatge |
Feu clic per importar la imatge del disc |
|
2. |
rgb2gray () |
RGB a gris |
Feu clic per convertir la imatge RGB en escala de grisos |
|
3. |
im2bw () |
Converteix a imatge binària |
Feu clic per convertir la imatge en binari |
|
4. |
- |
RESTABLEIX |
Feu clic per restablir la imatge com a original |
|
5. |
imhist () |
Histograma |
Feu clic per veure l'histograma de la imatge |
|
6. |
imcomplement () |
Imatge de complement |
Feu clic per comprovar la imatge del complement |
|
7. |
vora (nom de fitxer, mètode) |
Detecció de vores |
Feu clic per detectar les vores de la imatge |
|
8. |
imrotació (nom del fitxer, angle) |
Gireu en sentit horari |
Feu clic per girar la imatge en sentit horari |
|
9. |
imrotació (nom del fitxer, angle) |
Gireu en sentit antihorari |
Feu clic per girar la imatge en sentit antihorari |

1. Converteix la imatge RGB en escala de grisos
A la funció 'rgb2gray' , copieu i enganxeu el codi següent per convertir la imatge RGB en escala de grisos mitjançant l'ordre rgb2gray () .
a = getappdata (0, 'a'); agray = rgb2gray (a); eixos (handles.axes1); imshow (agray);

2. Converteix a imatge binària
A la funció 'im2bw' , copieu i enganxeu el codi següent per convertir la imatge en imatge binària o podeu dir en format '0' (negre) i '1' (blanc) mitjançant l'ordre im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); eixos (handles.axes1); imshow (abw);

3. Restableix a la imatge original
A la funció de "restabliment" , copieu i enganxeu el codi següent per restablir la imatge editada a la imatge original.
a = getappdata (0, 'a'); eixos (handles.axes1); imshow (a);

4. Representar l'histograma de la imatge
A la funció 'histograma' , copieu i enganxeu el codi següent per representar l'histograma de la imatge en escala de grisos mitjançant l'ordre imhist ('nom de fitxer') i mostrar-lo als eixos1 . Per traçar l'histograma, sempre heu de convertir la imatge en escala de grisos i després podreu veure l'histograma d'aquest fitxer gràfic.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); eixos (handles.axes1); imhist (ahist);

5. Converteix en imatge complementària
A la funció 'complementimatge' , copieu i enganxeu el codi següent per veure el complement del fitxer gràfic inserit mitjançant l'ordre imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); eixos (handles.axes1); imshow (acomp);

6. Detecció de vores mitjançant el mètode Canny
A la funció "vora" , copieu i enganxeu el codi següent per detectar i trobar vores a la imatge en escala de grisos mitjançant la vora d' ordres ("nom de fitxer", "mètode") . Al lloc del mètode , podeu triar entre aquests tres: Canny, Prewitt i muntatge . Estem utilitzant el mètode Canny per a la detecció de vores. Tampoc no podeu detectar la vora directament de la imatge original, primer la heu de convertir en escala de grisos i després podeu detectar les vores.
a = getappdata (0, 'a'); edat = a; aedge = rgb2gray (edat); aedge = edge (aedge , 'Canny') ' eixos (handles.axes1); imshow (edat);

7. Gireu la imatge en sentit horari
A la funció "en sentit horari" , copieu i enganxeu el codi següent per girar la imatge en el sentit de les agulles del rellotge mitjançant l'ordre imrotate (nom de fitxer, "angle")
a = getappdata (0, 'a'); aclock = a; aclock = imrotar (aclock, 270); eixos (handles.axes1); imshow (aclock);

8. Gireu la imatge en sentit antihorari
A la funció "antihorari" , copieu i enganxeu el codi següent per girar la imatge en sentit antihorari mitjançant l'ordre imrotate (nom de fitxer, "angle")
a = getappdata (0, 'a'); aclock = a; aclock = imrotar (aclock, 90); eixos (handles.axes1); imshow (aclock);

Executeu el codi GUI MATLAB per al processament d'imatges
Ara, feu clic al botó "RUN" per executar el codi editat al fitxer.m

MATLAB pot trigar uns quants segons a respondre; no feu clic a cap botó GUI fins que MATLAB no mostri el missatge ocupat a la cantonada inferior esquerra, tal com es mostra a continuació.

Quan tot estigui a punt, importeu la imatge des del PC fent clic al botó "Carrega imatge". Ara, podreu convertir o girar la imatge fent clic a qualsevol botó en conseqüència. A la taula següent es mostrarà la tasca que estem realitzant amb el clic d'un botó en particular:

El resultat en fer clic a cada botó es mostrarà a continuació,

El funcionament complet de cada botó es mostra al vídeo següent.
Fins i tot podeu fer un nivell avançat de processament d’imatges amb la caixa d’eines de processament d’imatges que podeu adquirir al lloc oficial de MATHWORKS. A continuació, es detallen algunes de les operacions de nivell avançat:
- Operacions geomètriques
- Operacions de bloqueig
- Filtrat lineal i disseny de filtres
- Transformacions
- Anàlisi i millora d’imatges
- Operacions d'imatges binàries
