- 1. Przetwarzanie obrazu za pomocą okna edytora MATLAB
- 2. Przetwarzanie obrazu za pomocą MATLAB GUI
- Tworzenie graficznego interfejsu użytkownika MATLAB do przetwarzania obrazu
- MATLAB GUI Code do przetwarzania obrazu
- Uruchom kod GUI MATLAB do przetwarzania obrazu
Wyobraź sobie, że kierujesz aparat na jakiś obiekt, a aparat podaje nazwę tego obiektu, tak, Obiektyw Google w smartfonach z Androidem robi to samo, używając przetwarzania obrazu. Daje to komputerowi wizję wykrywania i rozpoznawania rzeczy oraz podejmowania odpowiednich działań. Przetwarzanie obrazu ma wiele zastosowań, takich jak wykrywanie i rozpoznawanie twarzy, odcisk kciuka, rzeczywistość rozszerzona, OCR, skanowanie kodów kreskowych i wiele innych. Dostępnych jest wiele programów do przetwarzania obrazu, wśród których najbardziej odpowiednim na początek jest MATLAB.
MATLAB może wykonywać wiele zaawansowanych operacji przetwarzania obrazu, ale aby rozpocząć pracę z przetwarzaniem obrazu w MATLAB, tutaj wyjaśnimy kilka podstawowych operacji, takich jak RGB do Gray, obracanie obrazu, konwersja binarna itp. Możesz dalej tworzyć automatyczne programy do usuwania szumów, obrazów przejrzystość, filtrowanie za pomocą funkcji wyjaśnionych w tym samouczku.
Zanim przejdziesz dalej, jeśli jesteś nowy w MATLAB, możesz sprawdzić nasze poprzednie samouczki MATLAB, aby lepiej zrozumieć:
- Pierwsze kroki z MATLAB: szybkie wprowadzenie
- Łączenie Arduino z MATLAB - migająca dioda LED
- Sterowanie silnikiem DC za pomocą MATLAB i Arduino
- Sterowanie silnikiem krokowym za pomocą MATLAB i Arduino
- Jak wykreślić wykres temperatury w czasie rzeczywistym za pomocą MATLAB
W MATLAB, jak zawsze, istnieją dwa sposoby wykonania dowolnego algorytmu przetwarzania obrazu, jeden polega na bezpośrednim wprowadzeniu polecenia w oknie edytora / polecenia, a drugi polega na utworzeniu GUI dla tego samego. Tutaj pokażemy Ci obie metody wykonywania podstawowych operacji przetwarzania obrazu w MATLAB-ie.
1. Przetwarzanie obrazu za pomocą okna edytora MATLAB
Teraz napiszemy kod do wykonywania podstawowych operacji przetwarzania obrazu w oknie edytora. Aby zapoznać się z całą podstawową terminologią używaną w MATLAB-ie, kliknij link. Skopiuj i wklej poniższy kod w oknie edytora, a = imread ('F: \ skrót obwodu \ przetwarzanie obrazu przy użyciu 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 ('wiosna')
W zmiennej „a” importujemy obraz za pomocą polecenia imread („nazwa pliku”), a następnie wykonujemy wykres wiersza „2” i kolumny „3” za pomocą wykresu cząstkowego (wiersz, kolumna, pozycja) i wyświetlamy zaimportowany obraz na pozycji. 1 '. Aby wyświetlić obraz, używamy polecenia imshow („nazwa pliku”) .
Poniżej znajduje się kilka poleceń umożliwiających podstawowe przetwarzanie przesłanego obrazu:
- W zmiennej „b” konwertujemy obraz RGB na obraz intensywności w skali szarości za pomocą polecenia rgb2gray („nazwa pliku”) i wyświetlając go na wykresie na pozycji „2”.
- W zmiennej „c” konwertujemy obraz na obraz binarny lub można powiedzieć w formacie „0” (czarny) i „1” (biały), używając polecenia im2bw („nazwa pliku”) i wyświetlając go w pozycja „3”.
- W zmiennej „d” dostosowujemy lub odwzorowujemy wartości intensywności obrazu w skali szarości za pomocą polecenia imadjust („nazwa pliku”) i wyświetlamy je na wykresie na pozycji „4”.
- W zmiennej „e” wykreślamy histogram obrazu w skali szarości za pomocą polecenia imhist („nazwa pliku”) i wyświetlamy go na wykresie na pozycji „5”. Aby wykreślić histogram, zawsze musisz przekonwertować obraz na skalę szarości, a wtedy będziesz mógł zobaczyć histogram tego pliku graficznego.
- Polecenie Imfinfo ('nazwa pliku z lokalizacją') służy do wyświetlania informacji o pliku graficznym.
- Polecenie = rozmiar ('nazwa_pliku') służy do wyświetlenia rozmiaru i płaszczyzn kolorów określonego pliku graficznego.
- colormap ('spring') służy do zmiany typu mapy kolorów pliku graficznego. Tutaj w moim kodzie ustawiłem to polecenie jako komentarz, ale możesz go użyć, usuwając znak procentu. MATLAB ma wiele rodzajów kolorów, takich jak Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines i spring.
W związku z tym w MATLAB-ie istnieje wiele poleceń, których można używać do wykonywania różnych zadań. Możesz sprawdzić funkcje przetwarzania obrazu w MATLAB-u, klikając łącze.
2. Przetwarzanie obrazu za pomocą MATLAB GUI
Tworzenie graficznego interfejsu użytkownika MATLAB do przetwarzania obrazu
Aby zbudować GUI (graficzny interfejs użytkownika) do przetwarzania obrazu, uruchom GUI, wpisując poniższe polecenie w oknie poleceń .
przewodnik
Otworzy się wyskakujące okienko, a następnie wybierz nowy pusty GUI, jak pokazano na poniższym obrazku,
Teraz musimy wybrać liczbę przycisków (każdy przycisk będzie wykonywał inne zadanie) i jedną oś do wyświetlania obrazu.
Aby zmienić rozmiar lub kształt przycisku lub osi, po prostu kliknij na niego, a będziesz mógł przeciągać rogi przycisku. Dwukrotne kliknięcie dowolnego z nich umożliwia zmianę koloru, ciągu, tagu i innych opcji tego konkretnego przycisku. Po dostosowaniu będzie wyglądać tak
Możesz dostosować przyciski według własnego wyboru. Teraz, kiedy to zapiszesz, kod zostanie wygenerowany w oknie edytora MATLAB-a. Edytuj wygenerowany kod, aby ustawić zadanie dla różnych przycisków. Poniżej dokonaliśmy edycji kodu MATLAB.
MATLAB GUI Code do przetwarzania obrazu
Kompletny kod MATLAB do przetwarzania obrazu przy użyciu GUI MATLAB, jest podany na końcu tego projektu. Ponadto dołączamy plik GUI (.fig) i plik kodu (.m) do pobrania, za pomocą którego można dostosować rozmiar przycisków lub osi zgodnie z wymaganiami. Zmodyfikowaliśmy wygenerowany kod, jak wyjaśniono poniżej.
W funkcji „uploadimage” skopiuj i wklej poniższy kod, aby wstawić plik z komputera. Tutaj polecenie uigetfile ('typ rozszerzenia obrazu') jest używane do importowania obrazu w GUI MATLABA . Przeczytaj ten plik za pomocą polecenia imread (), a następnie wyświetl go za pomocą polecenia imshow () na osiach1 przy użyciu osi (handles.axes1) . Teraz za pomocą polecenia setappdata () zapisz zmienną w GUI, aby zmienna była dostępna dla jednej części GUI dla drugiej części GUI.
a = uigetfile („.jpg”) a = imread (a); osie (handles.axes1); imshow (a); setappdata (0, 'a', a)
Teraz w każdej funkcji zobaczysz polecenie getappdata (), które jest używane do pobierania danych, które są przechowywane za pomocą setappdata () w GUI.
Tutaj wyjaśnimy osiem powszechnie używanych funkcji w przetwarzaniu obrazu
S. Nie. |
Komenda |
Nazwa przycisku |
Zadanie do wykonania |
1. |
uigetfile () |
Załaduj obrazek |
Kliknij, aby zaimportować obraz z dysku |
2. |
rgb2gray () |
RGB na szary |
Kliknij, aby przekonwertować obraz RGB na skalę szarości |
3. |
im2bw () |
Konwertuj na obraz binarny |
Kliknij, aby przekonwertować obraz na plik binarny |
4. |
- |
RESETOWANIE |
Kliknij, aby zresetować obraz jako oryginalny |
5. |
imhist () |
Histogram |
Kliknij, aby zobaczyć histogram obrazu |
6. |
imcomplement () |
Obraz uzupełniający |
Kliknij, aby sprawdzić obraz uzupełniający |
7. |
edge (nazwa pliku, metoda) |
Wykrywanie krawędzi |
Kliknij, aby wykryć krawędzie na obrazie |
8. |
imrotate (nazwa pliku, kąt) |
Obróć w prawo |
Kliknij, aby obrócić obraz w kierunku zgodnym z ruchem wskazówek zegara |
9. |
imrotate (nazwa pliku, kąt) |
Obróć przeciwnie do ruchu wskazówek zegara |
Kliknij, aby obrócić obraz w kierunku przeciwnym do ruchu wskazówek zegara |
1. Konwertuj obraz RGB na skalę szarości
W funkcji „rgb2gray” skopiuj i wklej poniższy kod, aby przekonwertować obraz RGB na skalę szarości za pomocą polecenia rgb2gray () .
a = getappdata (0, 'a'); agray = rgb2gray (a); osie (handles.axes1); imshow (agray);
2. Konwersja do obrazu binarnego
W funkcji „im2bw” skopiuj i wklej poniższy kod, aby przekonwertować obraz na obraz binarny lub możesz powiedzieć w formacie „0” (czarny) i „1” (biały) za pomocą polecenia im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); osie (handles.axes1); imshow (abw);
3. Zresetuj do oryginalnego obrazu
W funkcji „reset” skopiuj i wklej poniższy kod, aby zresetować edytowany obraz do oryginalnego obrazu.
a = getappdata (0, 'a'); osie (handles.axes1); imshow (a);
4. Wykreślić histogram obrazu
W funkcji „histogram” skopiuj i wklej poniższy kod, aby wykreślić histogram obrazu w skali szarości za pomocą polecenia imhist („nazwa pliku”) i wyświetl go na osiach1 . Aby wykreślić histogram, zawsze musisz przekonwertować obraz na skalę szarości, a wtedy będziesz mógł zobaczyć histogram tego pliku graficznego.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); osie (handles.axes1); imhist (ahist);
5. Konwertuj na obraz uzupełniający
W funkcji „complementimage” , skopiuj i wklej poniższy kod, aby zobaczyć uzupełnienie wstawionego pliku graficznego za pomocą polecenia imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); osie (handles.axes1); imshow (acomp);
6. Wykrywanie krawędzi metodą Canny
W funkcji „edge” skopiuj i wklej poniższy kod, aby wykryć i znaleźć krawędzie na obrazie w skali szarości za pomocą polecenia edge („nazwa pliku”, „metoda”) . Zamiast metody możesz wybrać spośród tych trzech: Canny, Prewitt i montaż . Używamy metody Canny do wykrywania krawędzi. Nie możesz również wykryć krawędzi bezpośrednio z oryginalnego obrazu, najpierw musisz przekonwertować go na skalę szarości, a następnie możesz wykryć krawędzie.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = edge (aedge , 'Canny') ' axes (handles.axes1); imshow (aedge);
7. Obróć obraz zgodnie z ruchem wskazówek zegara
W funkcji „zgodnie z ruchem wskazówek zegara” skopiuj i wklej poniższy kod, aby obrócić obraz w kierunku zgodnym z ruchem wskazówek zegara, używając polecenia imrotate (nazwa pliku, „kąt”)
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 270); osie (handles.axes1); imshow (aclock);
8. Obróć obraz przeciwnie do ruchu wskazówek zegara
W funkcji „przeciwnie do ruchu wskazówek zegara” skopiuj i wklej poniższy kod, aby obrócić obraz w kierunku przeciwnym do ruchu wskazówek zegara, używając polecenia imrotate (nazwa pliku, „kąt”)
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 90); osie (handles.axes1); imshow (aclock);
Uruchom kod GUI MATLAB do przetwarzania obrazu
Teraz kliknij przycisk „RUN”, aby uruchomić edytowany kod w pliku.m
MATLAB może odpowiedzieć kilka sekund, nie klikaj żadnych przycisków GUI, dopóki MATLAB nie wyświetli komunikatu o zajętości w lewym dolnym rogu, jak pokazano poniżej,
Gdy wszystko będzie gotowe, zaimportuj obraz z komputera, klikając przycisk „Prześlij obraz”. Teraz będziesz mógł przekonwertować lub obrócić obraz, klikając odpowiednio dowolny przycisk. Poniższa tabela pokaże Ci zadanie, które wykonujemy po kliknięciu dowolnego przycisku:
Wynik kliknięcia każdego przycisku da pokazany poniżej,
Pełne działanie każdego przycisku jest pokazane na poniższym filmie.
Możesz nawet zrobić zaawansowany poziom przetwarzania obrazu za pomocą zestawu narzędzi do przetwarzania obrazu, który możesz kupić na oficjalnej stronie MATHWORKS, niektóre operacje na poziomie zaawansowanym są wymienione poniżej:
- Operacje geometryczne
- Operacje blokowe
- Liniowe filtrowanie i projektowanie filtrów
- Przekształca
- Analiza i ulepszanie obrazu
- Operacje na obrazach binarnych