- 1. Prelucrarea imaginilor utilizând fereastra Editor MATLAB
- 2. Prelucrarea imaginilor cu MATLAB GUI
- Crearea interfeței grafice de utilizator MATLAB pentru procesarea imaginilor
- Codul GUI MATLAB pentru procesarea imaginilor
- Rulați codul GUI MATLAB pentru procesarea imaginilor
Imaginați-vă că vă îndreptați camera spre un obiect și camera vă spune numele acelui obiect, da, Google Lens în telefoanele inteligente Android face același lucru folosind Procesarea imaginilor. Acest lucru oferă computerului o viziune pentru a detecta și recunoaște lucrurile și a lua măsuri în consecință. Prelucrarea imaginilor are multe aplicații precum detectarea și recunoașterea feței, impresia degetului mare, realitatea augmentată, OCR, scanarea codurilor de bare și multe altele. Există o mulțime de software disponibile pentru procesarea imaginilor, printre care MATLAB este cel mai potrivit pentru început.
MATLAB poate efectua multe operații avansate de procesare a imaginilor, dar pentru Începerea procesării imaginilor în MATLAB, aici vom explica câteva operații de bază, cum ar fi RGB în gri, rotirea imaginii, conversia binară etc. Puteți face programe automatizate pentru eliminarea zgomotului, imaginea claritate, filtrare utilizând funcțiile explicate în acest tutorial.
Înainte de a continua, dacă sunteți nou în MATLAB, puteți consulta tutorialele noastre anterioare MATLAB pentru o mai bună apreciere:
- Noțiuni introductive despre MATLAB: o introducere rapidă
- Interfață Arduino cu MATLAB - LED intermitent
- Control motor DC folosind MATLAB și Arduino
- Controlul motorului pas cu pas folosind MATLAB și Arduino
- Cum se trasează graficul de temperatură în timp real folosind MATLAB
În MATLAB, ca întotdeauna, există două moduri de a efectua orice algoritm de procesare a imaginilor, una este prin introducerea directă a comenzii în fereastra editor / comandă și alta este prin crearea unei interfețe grafice pentru același lucru. Aici, vă vom arăta ambele metode pentru a efectua operațiuni de bază de procesare a imaginilor în MATLAB.
1. Prelucrarea imaginilor utilizând fereastra Editor MATLAB
Acum, vom scrie codul pentru efectuarea unor operații de bază de procesare a imaginii în fereastra editorului. Pentru a vă familiariza cu toată terminologia de bază utilizată în MATLAB, urmați linkul. Copiați și lipiți codul de mai jos în fereastra editorului, a = imread ('F: \ circuit digest \ procesare imagine folosind 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 = imadjust (b); subtrama (2,3,4); imshow (d); e = a; e = rgb2gray (e); subtrama (2,3,5); imhist (e); imfinfo ('F: \ circuit digest \ procesare imagine folosind matlab \ beard-man.jpg') = mărime (a) % colormap ('primăvară')
În variabila „a”, importăm imaginea folosind comanda imread („nume de fișier”) și apoi realizăm un grafic de rând „2” și coloană „3” folosind subplot (rând, coloană, poziție) și afișăm imaginea importată pe poziție 1 '. Pentru a afișa imaginea folosim comanda imshow („nume de fișier”) .
Mai jos sunt câteva comenzi pentru a efectua o prelucrare de bază a imaginii încărcate:
- În variabila „b”, convertim imaginea RGB în imagine cu intensitate în tonuri de gri utilizând comanda rgb2gray („nume de fișier”) și afișând-o în grafic pe poziția „2”.
- În variabila „c”, convertim imaginea în imagine binară sau puteți spune în formatul „0” (negru) și „1” (alb) folosind comanda im2bw („nume fișier”) și afișând-o în grafic pe poziția „3”.
- În variabila „d”, ajustăm sau mapăm valorile intensității imaginii în tonuri de gri utilizând comanda imadjust („nume de fișier”) și afișând-o în grafic pe poziția „4”.
- În variabila „e”, trasăm histograma imaginii în tonuri de gri utilizând comanda imhist („nume de fișier”) și afișând-o în grafic pe poziția „5”. Pentru graficarea histogramei trebuie întotdeauna să convertiți imaginea în tonuri de gri și apoi veți putea vedea histograma acelui fișier grafic.
- Comanda Imfinfo („nume de fișier cu locație”) este utilizată pentru a afișa informații despre fișierul grafic.
- Comanda = size ('nume fișier') este utilizată pentru a afișa dimensiunile și planurile de culoare ale unui anumit fișier grafic.
- colormap („arc”) este folosit pentru a schimba tipul de colormap al fișierului grafic. Aici, în codul meu, am setat această comandă drept comentariu, dar o puteți folosi eliminând semnul procentual. Există multe tipuri de culori în MATLAB, cum ar fi Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Cupru, Pink, Lines și primăvară.
La fel ca acestea, există un număr de comenzi în MATLAB care pot fi folosite pentru a efectua diferite sarcini, puteți verifica funcțiile de procesare a imaginii în MATLAB urmând linkul.
2. Prelucrarea imaginilor cu MATLAB GUI
Crearea interfeței grafice de utilizator MATLAB pentru procesarea imaginilor
Pentru a construi o interfață grafică (User Graphic User Interface) pentru procesarea imaginilor, lansați interfața grafică tastând comanda de mai jos în fereastra de comandă .
ghid
Se va deschide o fereastră pop-up, apoi selectați o nouă interfață grafică goală așa cum se arată în imaginea de mai jos,
Acum trebuie să alegem numărul de butoane (fiecare buton va efectua sarcini diferite) și o axă pentru a afișa imaginea.
Pentru a redimensiona sau a modifica forma butonului sau a axelor, trebuie doar să faceți clic pe acesta și veți putea trage colțurile butonului. Făcând dublu clic pe oricare dintre acestea, veți putea schimba culoarea, șirul, eticheta și alte opțiuni ale acelui buton. După personalizare, va arăta astfel
Puteți personaliza butoanele după alegerea dvs. Acum, când salvați acest lucru, un cod este generat în fereastra Editor a MATLAB. Editați codul generat pentru a seta sarcina pentru diferite butoane. Mai jos am editat codul MATLAB.
Codul GUI MATLAB pentru procesarea imaginilor
Codul complet MATLAB pentru procesarea imaginilor utilizând MATLAB GUI, este dat la sfârșitul acestui proiect. Mai departe, includem fișierul GUI (.fig) și fișierul de cod (.m) aici pentru descărcare, folosind care puteți personaliza butoanele sau dimensiunea axelor conform cerințelor dvs. Am editat codul generat așa cum se explică mai jos.
În funcția „uploadimage” , copiați și lipiți codul de mai jos pentru a insera fișierul de pe computer. Aici, comanda uigetfile („tip de extensie a imaginii”) este utilizată pentru importul imaginii în interfața grafică MATLAB. Citiți acel fișier folosind comanda imread () și apoi afișați-l cu comanda imshow () pe axes1 folosind axes (handles.axes1) . Acum, cu comanda setappdata (), stocați variabila în GUI, astfel încât variabila să fie accesibilă unei părți a GUI în cealaltă parte a GUI.
a = uigetfile ('. jpg') a = imread (a); axe (mânere.ax1); imshow (a); setappdata (0, 'a', a)
Acum, în fiecare funcție veți vedea comanda getappdata () care este utilizată pentru a prelua datele stocate folosind setappdata () în GUI.
Aici vom explica opt funcții utilizate în mod obișnuit în procesarea imaginilor
S. Nu |
Comanda |
Nume buton |
Sarcină de efectuat |
1. |
uigetfile () |
Incarca imaginea |
Faceți clic pentru a importa imaginea de pe disc |
2. |
rgb2gray () |
RGB către Gray |
Faceți clic pentru a converti imaginea RGB în tonuri de gri |
3. |
im2bw () |
Convertiți în imagine binară |
Faceți clic pentru a converti imaginea în binar |
4. |
- |
RESET |
Faceți clic pentru a reseta imaginea ca originală |
5. |
imhist () |
Histogramă |
Faceți clic pentru a vedea histograma imaginii |
6. |
imcomplement () |
Imagine de completare |
Faceți clic pentru a verifica imaginea complementului |
7. |
margine (nume de fișier, metodă) |
Detectarea muchiilor |
Faceți clic pentru a detecta marginile din imagine |
8. |
imrotează (numele fișierului, unghiul) |
Învârte în sensul acelor de ceasornic |
Faceți clic pentru a roti imaginea în sensul acelor de ceasornic |
9. |
imrotează (numele fișierului, unghiul) |
Rotiți în sens antiorar |
Faceți clic pentru a roti imaginea în direcția inversă acelor de ceasornic |
1. Convertiți imaginea RGB în tonuri de gri
În funcția „rgb2gray” , copiați și lipiți codul de mai jos pentru a converti imaginea RGB în tonuri de gri utilizând comanda rgb2gray () .
a = getappdata (0, 'a'); agray = rgb2gray (a); axe (mânere.ax1); imshow (agray);
2. Convertiți în imagine binară
În funcția „im2bw” , copiați și lipiți codul de mai jos pentru a converti imaginea în imagine binară sau puteți spune în formatul „0” (negru) și „1” (alb) folosind comanda im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); axe (mânere.ax1); imshow (abw);
3. Resetați la imaginea originală
În funcția „resetare” , copiați și lipiți codul de mai jos pentru a reseta imaginea editată în imaginea originală.
a = getappdata (0, 'a'); axe (mânere.ax1); imshow (a);
4. Complotați histograma imaginii
În funcția „histogramă” , copiați și lipiți codul de mai jos pentru a trasa histograma imaginii în tonuri de gri utilizând comanda imhist („nume de fișier”) și afișați-o pe axele1 . Pentru graficarea histogramei trebuie întotdeauna să convertiți imaginea în tonuri de gri și apoi veți putea vedea histograma acelui fișier grafic.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); axe (mânere.ax1); imhist (ahist);
5. Convertiți în imagine complementară
În funcția „complementimage” , copiați și lipiți codul de mai jos pentru a vedea complementul fișierului grafic inserat utilizând comanda imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); axe (mânere.ax1); imshow (acomp);
6. Detectarea muchiilor folosind metoda Canny
În funcția „margine” , copiați și lipiți codul de mai jos pentru a detecta și găsi marginile în imaginea în tonuri de gri utilizând marginea comenzii („nume de fișier”, „metodă”) . În locul metodei puteți alege dintre aceste trei, Canny, Prewitt și montaj . Folosim metoda Canny pentru detectarea muchiilor. De asemenea, nu puteți detecta marginea direct din imaginea originală, mai întâi trebuie să o convertiți în tonuri de gri și apoi puteți detecta marginile.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = muchie (aedge , 'Canny') ' axe (handles.axes1); imshow (aedge);
7. Rotiți imaginea în sensul acelor de ceasornic
În funcția „în sensul acelor de ceasornic” , copiați și lipiți codul de mai jos pentru a roti imaginea în direcția acelor de ceasornic folosind comanda imrotate (nume de fișier, „unghi”)
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 270); axe (mânere.ax1); imshow (aclock);
8. Rotiți imaginea în sens antiorar
În funcția „în sens invers acelor de ceasornic” , copiați și lipiți codul de mai jos pentru a roti imaginea în direcția inversă acelor de ceasornic folosind comanda imrotare (nume de fișier, „unghi”)
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 90); axe (mânere.ax1); imshow (aclock);
Rulați codul GUI MATLAB pentru procesarea imaginilor
Acum, faceți clic pe butonul „RUN” pentru a rula codul editat în fișierul.m
MATLAB poate dura câteva secunde pentru a răspunde, nu faceți clic pe niciun buton GUI până când MATLAB nu afișează mesajul ocupat în colțul din stânga jos, așa cum se arată mai jos,
Când totul este gata, importați imaginea de pe computer făcând clic pe butonul „Încărcați imaginea”. Acum, veți putea converti sau roti imaginea făcând clic pe orice buton corespunzător. Tabelul de mai jos vă va arăta sarcina pe care o îndeplinim făcând clic pe un anumit buton:
Rezultatul făcând clic pe fiecare buton va fi afișat mai jos,
Funcționarea completă a fiecărui buton este demonstrată în videoclipul de mai jos.
Puteți chiar să efectuați un nivel avansat de procesare a imaginii cu Cutia de instrumente de procesare a imaginilor pe care o puteți achiziționa de pe site-ul oficial MATHWORKS, unele dintre operațiunile de nivel avansat sunt enumerate mai jos:
- Operații geometrice
- Operații de blocare
- Filtrare liniară și design filtru
- Transformă
- Analiza și îmbunătățirea imaginii
- Operații de imagine binară