- 1. Beeldverwerking met behulp van MATLAB Editor-venster
- 2. Beeldverwerking met MATLAB GUI
- MATLAB grafische gebruikersinterface maken voor beeldverwerking
- MATLAB GUI-code voor beeldverwerking
- Voer MATLAB GUI-code uit voor beeldverwerking
Stel je voor dat je je camera op een object richt en de camera vertelt je de naam van dat object, ja, Google Lens in Android-smartphones doet hetzelfde met behulp van beeldverwerking. Dit geeft de computer een visie om de dingen te detecteren en te herkennen en dienovereenkomstig actie te ondernemen. Beeldverwerking heeft veel toepassingen zoals gezichtsherkenning en -herkenning, duimafdruk, augmented reality, OCR, streepjescodescan en nog veel meer. Er is veel software beschikbaar voor beeldverwerking, waaronder MATLAB is het meest geschikt om mee te beginnen.
MATLAB kan veel geavanceerde bewerkingen voor beeldverwerking uitvoeren, maar om aan de slag te gaan met beeldverwerking in MATLAB, zullen we hier enkele basisbewerkingen uitleggen, zoals RGB naar grijs, de afbeelding roteren, binaire conversie enz. U kunt verder geautomatiseerde programma's maken voor het verwijderen van ruis, duidelijkheid, filteren met behulp van de functies die in deze tutorial worden uitgelegd.
Voordat u verder gaat, als u nieuw bent bij MATLAB, kunt u onze eerdere MATLAB-tutorials bekijken voor een beter begrip:
- Aan de slag met MATLAB: een korte introductie
- Koppeling tussen Arduino en MATLAB - Knipperende LED
- DC-motorbesturing met MATLAB en Arduino
- Stappenmotorbesturing met MATLAB en Arduino
- Hoe u een realtime temperatuurgrafiek kunt plotten met MATLAB
In MATLAB zijn er, zoals altijd, twee manieren om een beeldverwerkingsalgoritme uit te voeren, een is door de opdracht rechtstreeks in het editor- / opdrachtvenster in te voeren en de andere is door een GUI voor hetzelfde te maken. Hier laten we u beide methoden zien om basisbewerkingen van beeldverwerking in MATLAB uit te voeren.
1. Beeldverwerking met behulp van MATLAB Editor-venster
Nu zullen we de code schrijven voor het uitvoeren van enkele basisbewerkingen van beeldverwerking in het editorvenster. Volg de link om vertrouwd te raken met alle basisterminologie die in MATLAB wordt gebruikt. Kopieer en plak de onderstaande code in het editorvenster, a = imread ('F: \ circuit digest \ beeldverwerking met 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 = imadjust (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')
In variabele 'a' importeren we een afbeelding met het commando imread ('bestandsnaam') en maken we vervolgens een plot van '2' rij en '3' kolom met behulp van subplot (rij, kolom, positie) en tonen we de geïmporteerde afbeelding op positie ' 1 '. Om de afbeelding weer te geven gebruiken we het commando imshow ('filename') .
Hieronder staan enkele opdrachten om een aantal basisbewerkingen uit te voeren op de geüploade afbeelding:
- In variabele 'b' zetten we het RGB-beeld om in een afbeelding met grijswaardenintensiteit door het commando rgb2gray ('bestandsnaam') te gebruiken en het in plot op positie '2' weer te geven.
- In variabele 'c' converteren we de afbeelding naar een binaire afbeelding of je kunt zeggen in de indeling '0' (zwart) en '1' (wit) door het commando im2bw ('bestandsnaam') te gebruiken en het in plot op positie '3'.
- In variabele 'd' passen we de intensiteitswaarden van de grijswaardenafbeelding aan of brengen ze in kaart door het commando imadjust ('filename') te gebruiken en deze in plot op positie '4' weer te geven.
- In variabele 'e' plotten we het histogram van het grijswaardenbeeld door het commando imhist ('filename') te gebruiken en het in plot weer te geven op positie '5'. Voor het plotten van het histogram moet je de afbeelding altijd omzetten in grijstinten en dan kun je het histogram van dat grafische bestand zien.
- De opdracht Imfinfo ('bestandsnaam met locatie') wordt gebruikt om informatie over het grafische bestand weer te geven.
- = size ('filename') commando wordt gebruikt om de grootte en kleurvlakken van een bepaald grafisch bestand weer te geven.
- colormap ('spring') wordt gebruikt om het type kleurenkaart van grafisch bestand te wijzigen. Hier, in mijn code, heb ik dit commando als commentaar ingesteld, maar je kunt het gebruiken door het procentteken te verwijderen. Er zijn veel soorten kleuren in MATLAB zoals Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines en spring.
Net als deze zijn er een aantal opdrachten in MATLAB die kunnen worden gebruikt om verschillende taken uit te voeren. U kunt de beeldverwerkingsfuncties in MATLAB controleren door de link te volgen.
2. Beeldverwerking met MATLAB GUI
MATLAB grafische gebruikersinterface maken voor beeldverwerking
Om een GUI (Graphical User Interface) voor beeldverwerking te bouwen, start u de GUI door de onderstaande opdracht in het opdrachtvenster te typen.
gids
Er wordt een pop-upvenster geopend en selecteer vervolgens een nieuwe lege GUI zoals weergegeven in de onderstaande afbeelding,
Nu moeten we het aantal drukknoppen kiezen (elke drukknop zal een andere taak uitvoeren) en een as om het beeld weer te geven.
Om het formaat te wijzigen of om de vorm van de drukknop of assen te wijzigen, klikt u erop en kunt u de hoeken van de knop slepen. Door op een van deze te dubbelklikken, kunt u de kleur, tekenreeks, tag en andere opties van die specifieke knop wijzigen. Na maatwerk ziet het er zo uit
U kunt de knoppen naar eigen keuze aanpassen. Als je dit nu opslaat, wordt er een code gegenereerd in het Editor-venster van MATLAB. Bewerk de gegenereerde code om de taak voor verschillende drukknoppen in te stellen. Hieronder hebben we de MATLAB-code bewerkt.
MATLAB GUI-code voor beeldverwerking
Volledige MATLAB-code voor beeldverwerking met behulp van MATLAB GUI, wordt gegeven aan het einde van dit project. Verder voegen we hier het GUI-bestand (.fig) en het codebestand (.m) toe om te downloaden, waarmee u de knoppen of asgrootte naar wens kunt aanpassen. We hebben de gegenereerde code bewerkt zoals hieronder wordt uitgelegd.
In de 'uploadimage' functie, kopieer en plak de code hieronder om het bestand van de PC te plaatsen. Hier wordt het commando uigetfile ('type afbeeldingsextensie') gebruikt voor het importeren van afbeeldingen in de MATLAB GUI. Lees dat bestand met het commando imread () en geef het vervolgens weer met het commando imshow () op axes1 met behulp van axes (handles.axes1) . Sla nu met het commando setappdata () de variabele op in de GUI zodat de variabele toegankelijk is voor het ene deel van de GUI voor het andere deel van de GUI.
a = uigetfile ('. jpg') a = imread (a); assen (handles.axes1); imshow (a); setappdata (0, 'a', a)
Nu ziet u in elke functie het commando getappdata () dat wordt gebruikt om gegevens op te halen die zijn opgeslagen met behulp van de setappdata () in de GUI.
Hier zullen we acht veelgebruikte functies bij beeldverwerking uitleggen
S. Nee. |
Opdracht |
Knopnaam |
Uit te voeren taak |
1. |
uigetfile () |
Afbeelding uploaden |
Klik om afbeelding van schijf te importeren |
2. |
rgb2grijs () |
RGB naar grijs |
Klik om een RGB-afbeelding om te zetten in grijstinten |
3. |
im2bw () |
Converteren naar binaire afbeelding |
Klik om de afbeelding naar binair te converteren |
4. |
- |
RESET |
Klik om de afbeelding opnieuw in te stellen als origineel |
5. |
imhist () |
Histogram |
Klik om het histogram van de afbeelding te zien |
6. |
implementeren () |
Afbeelding aanvullen |
Klik om de complement-afbeelding te bekijken |
7. |
edge (bestandsnaam, methode) |
Rand detectie |
Klik om de randen in de afbeelding te detecteren |
8. |
imrotate (bestandsnaam, hoek) |
Met de klok mee draaien |
Klik om de afbeelding met de klok mee te draaien |
9. |
imrotate (bestandsnaam, hoek) |
Draai tegen de klok in |
Klik om de afbeelding tegen de klok in te draaien |
1. Converteer RGB-afbeelding naar grijswaarden
In de 'rgb2gray' functie, kopieer en plak de code hieronder om de RGB-afbeelding te converteren naar grijswaarden met de opdracht rgb2gray () .
a = getappdata (0, 'a'); agray = rgb2gray (a); assen (handles.axes1); imshow (agray);
2. Converteren naar binaire afbeelding
In de 'im2bw' functie, kopieer en plak de code hieronder om het beeld om te zetten binair beeld in of je kunt zeggen in de vorm van de '0' (zwart) en '1' (wit) met de opdracht im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); assen (handles.axes1); imshow (abw);
3. Herstel naar originele afbeelding
Kopieer en plak de onderstaande code in de 'reset'- functie om de bewerkte afbeelding terug te zetten naar de originele afbeelding.
a = getappdata (0, 'a'); assen (handles.axes1); imshow (a);
4. Teken het beeldhistogram uit
In de 'histogram' functie, kopieer en plak de code hieronder om het histogram van de afbeelding in grijswaarden plot met de opdracht imhist ('filename') en de weergave in op axes1 . Voor het plotten van het histogram moet je de afbeelding altijd omzetten in grijstinten en dan kun je het histogram van dat grafische bestand zien.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); assen (handles.axes1); imhist (ahist);
5. Omzetten in aanvulling op afbeelding
In de 'complementimage' functie, kopieer en plak de code hieronder om het te zien complement van de geplaatste grafische bestand met behulp van commando imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); assen (handles.axes1); imshow (acomp);
6. Randdetectie met behulp van de Canny-methode
In de 'rand' functie, kopieer en plak de onderstaande code te detecteren en te vinden randen grijsschaal afbeelding met de opdracht edge ('bestandsnaam', 'methode') . In plaats van de methode kun je kiezen uit deze drie: Canny, Prewitt en montage . We gebruiken de Canny- methode voor randdetectie. Ook kun je de rand niet direct van de originele afbeelding detecteren, je moet deze eerst omzetten in grijswaarden en dan kun je de randen detecteren.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = edge (aedge , 'Canny') ' assen (handles.axes1); imshow (aedge);
7. Draai de afbeelding met de klok mee
In de 'rechtsom' functie kopieer en plak de code hieronder om het beeld met de klok mee roteren met de opdracht imrotate (bestandsnaam, 'angle')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 270); assen (handles.axes1); imshow (aclock);
8. Draai de afbeelding tegen de klok in
Kopieer en plak in de functie 'tegen de klok in' de onderstaande code om de afbeelding tegen de klok in te draaien met behulp van het commando imrotate (bestandsnaam, 'hoek')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 90); assen (handles.axes1); imshow (aclock);
Voer MATLAB GUI-code uit voor beeldverwerking
Klik nu op de knop 'RUN' om de bewerkte code in.m-bestand uit te voeren
Het kan enkele seconden duren voordat MATLAB reageert, klik niet op een GUI-knop totdat MATLAB een bezet bericht in de linker benedenhoek toont, zoals hieronder getoond,
Als alles klaar is, importeer je de afbeelding van de pc door op de knop 'Afbeelding uploaden' te klikken. Nu kunt u de afbeelding converteren of roteren door op een willekeurige knop te klikken. Onderstaande tabel toont u de taak die we uitvoeren met een klik op een bepaalde knop:
Het resultaat na een klik op elke knop wordt hieronder weergegeven,
De volledige werking van elke knop wordt gedemonstreerd in de onderstaande video.
U kunt zelfs een geavanceerd niveau van beeldverwerking uitvoeren met de Image Processing Toolbox die u kunt kopen op de officiële MATHWORKS-site, enkele van de geavanceerde bewerkingen worden hieronder vermeld:
- Geometrische operaties
- Blokkeer operaties
- Lineaire filtering en filterontwerp
- Transformeert
- Beeldanalyse en -verbetering
- Binaire beeldbewerkingen