- 1. Spracovanie obrazu pomocou okna editora MATLAB
- 2. Spracovanie obrazu s MATLAB GUI
- Vytvorenie grafického užívateľského rozhrania MATLAB pre spracovanie obrazu
- Kód MATLAB GUI na spracovanie obrazu
- Spustite MATLAB GUI kód pre spracovanie obrazu
Predstavte si, že nasmerujete svoj fotoaparát na nejaký objekt a fotoaparát vám povie názov tohto objektu. Áno, Google Lens v smartfónoch s Androidom robí to isté pomocou nástroja Image Processing. Toto dáva počítaču víziu detekovať a rozpoznávať veci a robiť podľa toho príslušné kroky. Spracovanie obrazu má veľa aplikácií ako detekcia a rozpoznávanie tváre, odtlačok palca, rozšírená realita, OCR, skenovanie čiarových kódov a mnoho ďalších. Na spracovanie obrazu je k dispozícii množstvo softvérov, medzi nimi je na začiatok najvhodnejší MATLAB.
MATLAB môže vykonávať mnoho pokročilých operácií spracovania obrazu, ale v časti Začíname so spracovaním obrazu v MATLABe vám vysvetlíme niektoré základné operácie ako RGB až sivá, otáčanie obrazu, binárna konverzia atď. Ďalej môžete vytvárať automatizované programy na odstránenie šumu, obrazu prehľadnosť, filtrovanie pomocou funkcií vysvetlených v tomto návode.
Predtým, ako budete pokračovať, ak ste v MATLABe nováčikom, môžete si prečítať naše predchádzajúce návody pre MATLAB, aby ste lepšie porozumeli:
- Začíname s MATLABom: Stručný úvod
- Prepojenie Arduina s MATLAB - blikajúca LED
- Ovládanie jednosmerného motora pomocou MATLAB a Arduino
- Ovládanie krokového motora pomocou MATLAB a Arduino
- Ako vykresliť graf teploty v reálnom čase pomocou programu MATLAB
V MATLABe existujú ako vždy dva spôsoby, ako vykonať akýkoľvek algoritmus spracovania obrazu, jedným je priamym zadaním príkazu v okne editora / príkazu a druhým je vytvorenie rovnakého grafického používateľského rozhrania. Tu vám ukážeme obe metódy vykonávania základných operácií spracovania obrazu v MATLABe.
1. Spracovanie obrazu pomocou okna editora MATLAB
Teraz v okne editora napíšeme kód na vykonávanie niektorých základných operácií spracovania obrazu. Ak sa chcete oboznámiť so základnou terminológiou používanou v systéme MATLAB, kliknite na odkaz. Skopírujte a vložte nasledujúci kód do okna editora, a = imread ('F: \ circuit digest \ spracovanie obrazu pomocou programu matlab \ camerman.jpg'); subplot (2,3,1); imshow (a); b = rgb2gray (a); subplot (2,3,2); imshow (b); c = im2bw (a); subplot (2,3,3); imshow (c); d = neprispôsobiť (b); subplot (2,3,4); imshow (d); e = a; e = rgb2gray (e); subplot (2,3,5); imhist (e); imfinfo ('F: \ circuit digest \ spracovanie obrazu pomocou matlab \ beard-man.jpg') = veľkosť (a) % colormap ('spring')
V premennej „a“ importujeme obrázok pomocou príkazu imread („názov súboru“) a potom urobíme vykreslenie riadku „2“ a stĺpca „3“ pomocou subplotu (riadok, stĺpec, poloha) a zobrazenie importovaného obrázka na pozícii „ 1 '. Na zobrazenie obrázku použijeme príkaz imshow („názov súboru“) .
Ďalej uvádzame niekoľko príkazov na vykonanie základného spracovania nahraného obrázka:
- V premennej „b“ prevádzame obraz RGB na obrázok s intenzitou šedej pomocou príkazu rgb2gray („názov súboru“) a jeho zobrazenie v grafe na pozícii „2“.
- V premennej „c“ prevádzame obraz na binárny alebo môžete povedať vo formáte „0“ (čierny) a „1“ (biely) pomocou príkazu im2bw („názov súboru“) a jeho zobrazenie v grafe na pozícia „3“.
- V premennej „d“ upravujeme alebo mapujeme hodnoty intenzity obrazu v stupňoch šedej pomocou príkazu imadjust („názov súboru“) a zobrazujeme ich v grafe na pozícii „4“.
- V premennej „e“ vykresľujeme histogram obrazu v odtieňoch sivej pomocou príkazu imhist („názov súboru“) a zobrazujeme ho v grafe na pozícii „5“. Pri vykresľovaní histogramu musíte vždy previesť obrázok do stupňov šedej a potom uvidíte histogram daného grafického súboru.
- Príkaz Imfinfo („názov súboru s umiestnením“) sa používa na zobrazenie informácií o grafickom súbore.
- Príkaz = size ('názov súboru') sa používa na zobrazenie veľkosti a farebných rovín konkrétneho grafického súboru.
- colormap ('spring') sa používa na zmenu typu colormap grafického súboru. Tu v mojom kóde som nastavil tento príkaz ako komentár, ale môžete ho použiť odstránením znaku percenta. V programe MATLAB je veľa druhov farieb, ako sú Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines a jar.
Rovnako ako tieto, aj v systéme MATLAB existuje množstvo príkazov, pomocou ktorých je možné vykonávať rôzne úlohy. Funkcie spracovania obrázkov v systéme MATLAB môžete skontrolovať kliknutím na odkaz.
2. Spracovanie obrazu s MATLAB GUI
Vytvorenie grafického užívateľského rozhrania MATLAB pre spracovanie obrazu
Ak chcete vytvoriť grafické používateľské rozhranie (Graphical User Interface) na spracovanie obrazu, spustite grafické používateľské rozhranie zadaním nasledujúceho príkazu do príkazového okna .
sprievodca
Otvorí sa vyskakovacie okno a potom vyberte nové prázdne grafické používateľské rozhranie, ako je to znázornené na obrázku nižšie,
Teraz musíme zvoliť počet tlačidiel (každé tlačidlo bude plniť inú úlohu) a jednu os pre zobrazenie obrazu.
Ak chcete zmeniť veľkosť alebo zmeniť tvar tlačidla alebo osí, jednoducho na ne kliknite a budete môcť ťahať za rohy tlačidla. Dvojitým kliknutím na ktorékoľvek z nich budete môcť zmeniť farbu, reťazec, značku a ďalšie možnosti daného tlačidla. Po prispôsobení to bude vyzerať takto
Tlačidlá môžete prispôsobiť podľa vlastného výberu. Keď to uložíte, vygeneruje sa kód v okne editora MATLABu. Upravte vygenerovaný kód a nastavte úlohu pre rôzne tlačidlá. Ďalej sme upravili kód MATLAB.
Kód MATLAB GUI na spracovanie obrazu
Kompletný kód MATLAB na spracovanie obrazu pomocou grafického používateľského rozhrania MATLAB je uvedený na konci tohto projektu. Ďalej tu zahrňujeme súbor GUI (.fig) a kódový súbor (.m) na stiahnutie, pomocou ktorého môžete prispôsobiť tlačidlá alebo veľkosť osí podľa vašich požiadaviek. Vygenerovaný kód sme upravili, ako je vysvetlené nižšie.
Vo funkcii „uploadimage“ skopírujte a vložte nasledujúci kód a vložte súbor z počítača. Tu sa používa príkaz uigetfile ('typ rozšírenia obrázka') na import obrázka v grafickom rozhraní MATLAB. Prečítajte si tento súbor pomocou príkazu imread () a potom ho zobrazte pomocou príkazu imshow () na osiach 1 pomocou osí (handles.axes1) . Teraz pomocou príkazu setappdata () uložte premennú do grafického používateľského rozhrania, aby bola premenná prístupná pre jednu časť grafického používateľského rozhrania a pre druhú časť grafického používateľského rozhrania.
a = uigetfile ('. jpg') a = imread (a); osi (handle.axes1); imshow (a); setappdata (0, 'a', a)
Teraz v každej funkcii uvidíte príkaz getappdata (), ktorý sa používa na načítanie údajov, ktoré sú uložené pomocou setappdata () v grafickom používateľskom rozhraní.
Tu si vysvetlíme osem bežne používaných funkcií pri spracovaní obrazu
S. č. |
Velenie |
Názov tlačidla |
Úloha, ktorá sa má vykonať |
1. |
uigetfile () |
Nahrať obrázok |
Kliknite a importujte obrázok z disku |
2. |
rgb2gray () |
RGB až sivá |
Kliknite, aby ste konvertovali obraz RGB na stupne sivej |
3. |
im2bw () |
Konvertovať na binárny obraz |
Kliknite, aby ste obrázok previedli na binárny |
4. |
- |
RESETOVAŤ |
Kliknutím obnovíte pôvodný obrázok |
5. |
imhist () |
Histogram |
Kliknutím zobrazíte histogram obrázka |
6. |
imcomplement () |
Doplnkový obrázok |
Kliknutím skontrolujte obrázok doplnku |
7. |
edge (názov súboru, metóda) |
Detekcia hrany |
Kliknutím zistíte okraje na obrázku |
8. |
imrotovať (názov súboru, uhol) |
Otočiť po smere hodinových ručičiek |
Kliknutím otočíte obrázok v smere hodinových ručičiek |
9. |
imrotovať (názov súboru, uhol) |
Otočiť proti smeru hodinových ručičiek |
Kliknutím otočíte obrázok proti smeru hodinových ručičiek |
1. Preveďte obraz RGB na stupne šedej
Vo funkcii „rgb2gray“ skopírujte a vložte nasledujúci kód a pomocou príkazu rgb2gray () preveďte obrázok RGB na stupne šedej.
a = getappdata (0, 'a'); agray = rgb2gray (a); osi (handle.axes1); imshow (agray);
2. Preveďte na binárny obrázok
Vo funkcii „im2bw“ skopírujte a vložte nasledujúci kód, pomocou ktorého môžete previesť obrázok na binárny obrázok, alebo pomocou príkazu im2bw () vo formáte „0“ (čierna) a „1“ (biela ) .
a = getappdata (0, 'a'); abw = im2bw (a); osi (handle.axes1); imshow (abw);
3. Obnovte pôvodný obrázok
Vo funkcii „resetovať“ skopírujte a vložte nasledujúci kód, čím upravený obrázok obnovíte na pôvodný obrázok.
a = getappdata (0, 'a'); osi (handle.axes1); imshow (a);
4. Zostrojte histogram obrázka
Vo funkcii „histogram“ skopírujte a vložte nasledujúci kód, aby ste pomocou príkazu imhist („názov súboru“) vykreslili histogram obrázka v odtieňoch sivej a zobrazili ho na osi1 . Pri vykresľovaní histogramu musíte vždy previesť obrázok do stupňov šedej a potom uvidíte histogram daného grafického súboru.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); osi (handle.axes1); imhist (ahist);
5. Konvertujte na doplnkový obrázok
Vo funkcii „ plementimage “ skopírujte a vložte nasledujúci kód, aby ste pomocou príkazu imcomplement () videli doplnok vloženého grafického súboru.
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); osi (handle.axes1); imshow (acomp);
6. Detekcia okraja pomocou Cannyho metódy
Vo funkcii „hrana“ skopírujte a vložte nasledujúci kód, aby ste pomocou príkazového okraja („názov súboru“, „metóda“) detegovali a našli okraje v obrázkoch v odtieňoch sivej. Namiesto metódy si môžete vybrať z týchto troch možností: Canny, Prewitt a montage . Na detekciu hrán používame Cannyho metódu. Tiež nemôžete zistiť hranu priamo z pôvodného obrázka, najskôr ju musíte previesť na stupne šedej a potom môžete zistiť hrany.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = hrana (aedge , 'Canny') ' osi (handles.axes1); imshow (aedge);
7. Otočiť obrázok v smere hodinových ručičiek
Vo funkcii „v smere hodinových ručičiek“ skopírujte a vložte nasledujúci kód a pomocou príkazu imrotate (názov súboru, „uhol“) otočíte obrázok v smere hodinových ručičiek.
a = getappdata (0, 'a'); aclock = a; aclock = imrotovať (aclock, 270); osi (handle.axes1); imshow (aclock);
8. Otočte obrázok proti smeru hodinových ručičiek
Vo funkcii „proti smeru hodinových ručičiek“ skopírujte a vložte nasledujúci kód a pomocou príkazu imrotate (názov súboru, „uhol“) otočíte obrázok proti smeru hodinových ručičiek.
a = getappdata (0, 'a'); aclock = a; aclock = imrotovať (aclock, 90); osi (handle.axes1); imshow (aclock);
Spustite MATLAB GUI kód pre spracovanie obrazu
Teraz kliknite na tlačidlo „RUN“, aby ste spustili upravený kód v súbore.m
MATLABu môže trvať niekoľko sekúnd, kým odpovie, neklikajte na žiadne tlačidlá grafického používateľského rozhrania, kým MATLAB neukáže zaneprázdnenú správu v ľavom dolnom rohu, ako je to zobrazené nižšie,
Keď je všetko pripravené, importujte obrázok z počítača kliknutím na tlačidlo „Nahrať obrázok“. Teraz budete môcť previesť alebo otočiť obrázok kliknutím na príslušné tlačidlo. Nasledujúca tabuľka vám ukáže úlohu, ktorú vykonávame po kliknutí na konkrétne tlačidlo:
Výsledok po kliknutí na každé tlačidlo bude uvedený nižšie,
Kompletné fungovanie každého tlačidla je znázornené na videu nižšie.
S nástrojom Image Processing Toolbox, ktorý si môžete kúpiť na oficiálnych stránkach spoločnosti MATHWORKS, môžete dokonca vykonať pokročilú úroveň spracovania obrázkov, niektoré operácie s úrovňou vopred sú uvedené nižšie:
- Geometrické operácie
- Blokovať operácie
- Lineárne filtrovanie a dizajn filtra
- Premeny
- Analýza a vylepšenie obrazu
- Operácie s binárnym obrazom