- 1. Zpracování obrazu pomocí okna editoru MATLAB
- 2. Zpracování obrazu s MATLAB GUI
- Vytvoření grafického uživatelského rozhraní MATLAB pro zpracování obrazu
- Kód MATLAB GUI pro zpracování obrazu
- Spusťte MATLAB GUI kód pro zpracování obrazu
Představte si, že nasměrujete kameru na nějaký objekt a kamera vám řekne název tohoto objektu, ano, Google Lens v chytrých telefonech Android dělá to samé pomocí zpracování obrazu. To dává počítači vizi detekovat a rozpoznávat věci a podle toho přijímat opatření. Zpracování obrazu má mnoho aplikací, jako je detekce a rozpoznávání tváře, otisk palce, rozšířená realita, OCR, skenování čárových kódů a mnoho dalších. Pro zpracování obrazu je k dispozici spousta softwaru, mezi nimi je pro začátek nejvhodnější MATLAB.
MATLAB může provádět mnoho pokročilých operací zpracování obrazu, ale pro Začínáme se zpracováním obrazu v MATLABu zde vysvětlíme některé základní operace jako RGB na Gray, otočení obrazu, binární převod atd. Dále můžete vytvářet automatizované programy pro odstranění šumu, obrazu jasnost, filtrování pomocí funkcí vysvětlených v tomto kurzu.
Než budete pokračovat, pokud jste v MATLABu noví, můžete si prohlédnout naše předchozí výukové programy MATLAB pro lepší porozumění:
- Začínáme s MATLAB: Rychlý úvod
- Propojení Arduina s MATLAB - blikající LED
- Řízení stejnosměrného motoru pomocí MATLAB a Arduino
- Ovládání krokového motoru pomocí MATLAB a Arduino
- Jak vykreslit graf teploty v reálném čase pomocí MATLABu
V MATLABu, jako vždy, existují dva způsoby, jak provést jakýkoli algoritmus zpracování obrazu, jeden je přímým zadáním příkazu v okně editoru / příkazu a druhým je vytvoření GUI pro stejný. Zde vám ukážeme obě metody provádění základních operací zpracování obrazu v MATLABu.
1. Zpracování obrazu pomocí okna editoru MATLAB
Nyní napíšeme kód pro provádění některých základních operací zpracování obrazu v okně editoru. Chcete-li se seznámit se všemi základními terminologiemi používanými v MATLABu, klikněte na odkaz. Zkopírujte a vložte níže uvedený kód do okna editoru, a = imread ('F: \ circuit digest \ image processing using 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 = upravit (b); subplot (2,3,4); imshow (d); e = a; e = rgb2gray (e); subplot (2,3,5); imhist (e); imfinfo ('F: \ circuit digest \ image processing using matlab \ beard-man.jpg') = size (a) % colormap ('spring')
V proměnné 'a' importujeme obrázek pomocí příkazu imread ('název souboru') a poté vytvoříme graf '2' řádku a '3' sloupce pomocí subplotu (řádek, sloupec, poloha) a zobrazení importovaného obrázku na pozici ' 1 '. K zobrazení obrázku používáme příkaz imshow ('název souboru') .
Níže uvádíme několik příkazů k provedení základního zpracování nahraného obrázku:
- V proměnné 'b' převádíme obraz RGB do obrazu intenzity šedi pomocí příkazu rgb2gray ('název souboru') a zobrazujeme jej v grafu na pozici '2'.
- V proměnné 'c' převádíme obraz na binární nebo můžete říci ve formátu '0' (černý) a '1' (bílý) pomocí příkazu im2bw ('název souboru') a jeho zobrazení v grafu na pozice '3'.
- V proměnné „d“ upravujeme nebo mapujeme hodnoty intenzity obrazu ve stupních šedi pomocí příkazu imadjust („název souboru“) a zobrazujeme jej v grafu na pozici „4“.
- V proměnné 'e' vykreslujeme histogram obrazu ve stupních šedi pomocí příkazu imhist ('název souboru') a zobrazujeme jej v grafu na pozici '5'. Pro vykreslení histogramu musíte vždy převést obrázek na stupně šedi a poté uvidíte histogram daného grafického souboru.
- Příkaz Imfinfo ('název souboru s umístěním') se používá k zobrazení informací o grafickém souboru.
- Příkaz = size ('název souboru') se používá k zobrazení velikosti a barevných rovin konkrétního grafického souboru.
- colormap ('spring') se používá ke změně typu colormap grafického souboru. Tady v mém kódu jsem nastavil tento příkaz jako komentář, ale můžete jej použít odstraněním znaku procenta. V MATLABu existuje mnoho druhů barev, jako Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines a jaro.
Podobně jako v MATLABu existuje řada příkazů, které lze použít k provádění různých úkolů, funkce zpracování obrazu v MATLABu můžete zkontrolovat pomocí odkazu.
2. Zpracování obrazu s MATLAB GUI
Vytvoření grafického uživatelského rozhraní MATLAB pro zpracování obrazu
Chcete-li vytvořit grafické uživatelské rozhraní (Graphical User Interface) pro zpracování obrazu, spusťte grafické uživatelské rozhraní zadáním následujícího příkazu do příkazového okna .
průvodce
Otevře se vyskakovací okno a poté vyberte nové prázdné grafické uživatelské rozhraní, jak je znázorněno na následujícím obrázku,
Nyní musíme zvolit počet tlačítek (každé tlačítko bude plnit různé úkoly) a jednu osu pro zobrazení obrazu.
Chcete-li změnit velikost nebo změnit tvar tlačítka nebo os, jednoduše na něj klikněte a budete moci přetáhnout rohy tlačítka. Poklepáním na kteroukoli z těchto možností budete moci změnit barvu, řetězec, značku a další možnosti daného tlačítka. Po přizpůsobení to bude vypadat takto
Tlačítka můžete upravit podle svého výběru. Když to nyní uložíte, vygeneruje se kód v okně editoru MATLABu. Upravte vygenerovaný kód a nastavte úkol pro různá tlačítka. Níže jsme upravili kód MATLAB.
Kód MATLAB GUI pro zpracování obrazu
Kompletní kód MATLAB pro zpracování obrazu pomocí grafického uživatelského rozhraní MATLAB je uveden na konci tohoto projektu. Dále zde uvádíme soubor GUI (.fig) a soubor kódu (.m) ke stažení, pomocí kterého můžete přizpůsobit velikost tlačítek nebo os podle vašich požadavků. Vygenerovaný kód jsme upravili, jak je vysvětleno níže.
Ve funkci „uploadimage“ zkopírujte a vložte níže uvedený kód a vložte soubor z počítače. Zde se pro import obrazu v grafickém uživatelském rozhraní MATLAB používá příkaz uigetfile ('typ rozšíření obrazu') . Přečtěte si tento soubor pomocí příkazu imread () a poté jej zobrazte pomocí příkazu imshow () na osách 1 pomocí os (handles.axes1) . Nyní pomocí příkazu setappdata () uložte proměnnou do grafického uživatelského rozhraní, aby byla proměnná přístupná pro jednu část grafického uživatelského rozhraní pro druhou část grafického uživatelského rozhraní.
a = uigetfile ('. jpg') a = imread (a); osy (handles.axes1); imshow (a); setappdata (0, 'a', a)
Nyní v každé funkci uvidíte příkaz getappdata (), který se používá k načtení dat uložených pomocí setappdata () v grafickém uživatelském rozhraní.
Zde vysvětlíme osm běžně používaných funkcí při zpracování obrazu
S. č. |
Příkaz |
Název tlačítka |
Úkol, který má být proveden |
1. |
uigetfile () |
Nahrát obrázek |
Kliknutím importujete obrázek z disku |
2. |
rgb2gray () |
RGB až šedá |
Kliknutím převedete obrázek RGB na stupně šedi |
3. |
im2bw () |
Převést na binární obrázek |
Kliknutím převedete obrázek na binární |
4. |
- |
RESETOVAT |
Klepnutím obnovíte původní obrázek |
5. |
imhist () |
Histogram |
Kliknutím zobrazíte histogram obrázku |
6. |
imcomplement () |
Doplňte obrázek |
Kliknutím zkontrolujete obrázek doplňku |
7. |
edge (název souboru, metoda) |
Detekce hrany |
Klepnutím zjistíte okraje v obrázku |
8. |
imrotovat (název souboru, úhel) |
Otáčet po směru hodinových ručiček |
Kliknutím otočíte obrázek ve směru hodinových ručiček |
9. |
imrotovat (název souboru, úhel) |
Otočit proti směru hodinových ručiček |
Kliknutím otočíte obrázek proti směru hodinových ručiček |
1. Převeďte obrázek RGB na stupně šedi
Ve funkci 'rgb2gray' zkopírujte a vložte níže uvedený kód a pomocí příkazu rgb2gray () převeďte obrázek RGB na stupně šedi.
a = getappdata (0, 'a'); agray = rgb2gray (a); osy (handles.axes1); imshow (agray);
2. Převést na binární obrázek
Ve funkci 'im2bw' zkopírujte a vložte níže uvedený kód pro převedení obrázku na binární obrázek nebo můžete říci ve formátu '0' (černý) a '1' (bílý) pomocí příkazu im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); osy (handles.axes1); imshow (abw);
3. Obnovte původní obrázek
Ve funkci „reset“ zkopírujte a vložte níže uvedený kód, abyste upravený obrázek resetovali na původní obrázek.
a = getappdata (0, 'a'); osy (handles.axes1); imshow (a);
4. Vykreslete histogram obrázku
Ve funkci 'histogram' zkopírujte a vložte níže uvedený kód, abyste pomocí příkazu imhist ('název souboru') vykreslili histogram obrazu ve stupních šedi a zobrazili jej na osách1 . Pro vykreslení histogramu musíte vždy převést obrázek na stupně šedi a poté uvidíte histogram daného grafického souboru.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); osy (handles.axes1); imhist (ahist);
5. Převést na doplňkový obrázek
Ve funkci „plementimage “ zkopírujte a vložte níže uvedený kód, abyste viděli doplněk vloženého grafického souboru pomocí příkazu imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); osy (handles.axes1); imshow (acomp);
6. Detekce hran pomocí Canny metody
Ve funkci 'edge' zkopírujte a vložte níže uvedený kód, abyste detekovali a našli hrany v obrazu ve stupních šedi pomocí hrany příkazu ('název souboru', 'metoda') . V místě metody si můžete vybrat mezi těmito třemi, Canny, Prewitt a montage . Pro detekci hran používáme Cannyho metodu. Také nemůžete detekovat hranu přímo z původního obrázku, nejprve ji musíte převést na stupně šedi a poté můžete detekovat hrany.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = hrany (aedge , 'Canny') ' osy (handles.axes1); imshow (aedge);
7. Otočit obrázek ve směru hodinových ručiček
Ve funkci 've směru hodinových ručiček' zkopírujte a vložte níže uvedený kód a pomocí příkazu imrotate (název souboru, 'úhel') otočíte obrázek ve směru hodinových ručiček.
a = getappdata (0, 'a'); aclock = a; aclock = imrotovat (aclock, 270); osy (handles.axes1); imshow (aclock);
8. Otočit obrázek proti směru hodinových ručiček
Ve funkci „proti směru hodinových ručiček“ zkopírujte a vložte níže uvedený kód a pomocí příkazu imrotate (název souboru, „úhel“) otočíte obrázek proti směru hodinových ručiček.
a = getappdata (0, 'a'); aclock = a; aclock = imrotovat (aclock, 90); osy (handles.axes1); imshow (aclock);
Spusťte MATLAB GUI kód pro zpracování obrazu
Nyní klikněte na tlačítko 'RUN' pro spuštění upraveného kódu v souboru.m
MATLABu může trvat několik sekund, než odpoví, neklikejte na žádná tlačítka grafického uživatelského rozhraní, dokud MATLAB neukáže obsazenou zprávu v levém dolním rohu, jak je znázorněno níže,
Když je vše připraveno, importujte obrázek z počítače kliknutím na tlačítko „Nahrát obrázek“. Nyní budete moci obrázek převést nebo otočit kliknutím na libovolné tlačítko. Níže uvedená tabulka vám ukáže úkol, který provádíme po kliknutí na konkrétní tlačítko:
Výsledek po kliknutí na každé tlačítko bude uveden níže,
Kompletní fungování každého tlačítka je ukázáno na videu níže.
Dokonce můžete provést pokročilou úroveň zpracování obrazu pomocí nástroje Image Processing Toolbox, který si můžete zakoupit na oficiálních stránkách MATHWORKS, některé operace s pokročilou úrovní jsou uvedeny níže:
- Geometrické operace
- Blokovat operace
- Lineární filtrování a design filtru
- Transformace
- Analýza a vylepšení obrazu
- Operace s binárním obrazem