Politechnika Rzeszowska Katedra Informatyki i Automatyki Laboratorium Wizji Komputerowej Ćwiczenie 1 HISTOGRAMY I BINARYZACJA Zagadnienia teoretyczne: 1. Zapoznać się z pojęciami histogram i wyrównywanie histogramu ([1] s.99-100, [2, 3]). 2. Zapoznać się z funkcjami Image Processing Toolbox [4] do a) Wprowadzania i wyprowadzania obrazów do/z systemu MATLAB (imread, imwrite), b) Wyznaczania histogramu (imhist), c) Wyrównywania histogramu (histeq), d) Konwersji obrazów wielokolorowych na obrazy szare (rgb2gray) i czarno-białe (binaryzacja, im2bw). 3. Zapoznać się z metodami znajdowania progu binaryzacji [1,2,3]: a) Reguły znajdowania progu binaryzacji ([1] s.133-135), b) Metoda Otsu (graythresh) adaptacyjnego wyznaczania progu binaryzacji [3, 4], c) Binaryzacja dokonywana za pomocą zmiennego progu ([1] s.135-136). 4. Zapoznać się z funkcjami pakietu Image Acquisition Toolbox służącymi do pobierania obrazów z kamery w celu ich obróbki w systemie MATLAB [Dodatek A]. Przebieg ćwiczenia 1. Przygotować program (w postaci pliku.m) dla systemu MATLAB realizujący następujące zadania: a) Wyświetlający on-line obrazy z odcieniami szarości powstałe po konwersji obrazów kolorowych otrzymywanych z kamery, 1
b) Wyznaczający i wyświetlający histogram obrazów szarych uzyskanych w p. 1a, c) Wyznaczający i wyświetlający obrazy uzyskane w wyniku zastosowania operacji wyrównywania histogramu do obrazów z p. 1a, d) Wyznaczający i wyświetlający obraz binarny (czarno-biały) poprzez progowanie z progiem wyznaczonym adaptacyjnie. 2. Porównać obrazy z punktów 1a i 1c z uwzględnieniem różnych warunków ich akwizycji i różnej zawartości. 3. Przygotować sprawozdanie z ćwiczenia zawierające a) Temat ćwiczenia, b) Przygotowany podczas ćwiczenia program, c) Wyniki działania programu wraz z opisem, d) Wnioski. Literatura [1] R. Tadeusiewicz Systemy wizyjne robotów przemysłowych, WNT, Warszawa 1992 [2] R. Tadeusiewicz, P. Korohoda, Algorytmy i metody komputerowej analizy i przetwarzania obrazów, Wyd. Fund. Post. Telekom., Kraków, 1997 [3] M. Wysocki, J. Marnik, T. Kapuściński, Wizja komputerowa. Materiały pomocnicze. Oficyna Wydawnicza Politechniki Rzeszowskiej, Rzeszów, 2004 [4] Opis funkcji pakietu Image Processing Toolbox (w katalogu IPT_help) 2
Politechnika Rzeszowska Katedra Informatyki i Automatyki Laboratorium Wizji Komputerowej Ćwiczenie 2 ZAKŁÓCANIE I FILTRACJA OBRAZÓW, DETEKCJA KRAWĘDZI NA OBRAZACH Zagadnienia teoretyczne: 1. Zapoznać się z rodzajami zakłóceń występujących w obrazach cyfrowych [1, 2, 3]. 2. Zapoznać się z metodami filtracji obrazów ([1] s.90-115, [2] s.104-144, [3]). 3. Zapoznać się z metodami detekcji krawędzi na obrazach ([1] s. 115-129, [2] s.104-144, [3]). Przebieg ćwiczenia 1. Przygotować program (w postaci pliku.m) dla systemu MATLAB realizujący następujące zadania: a) Wyświetlający on-line obrazy z odcieniami szarości otrzymywane z kamery, b) Wyznaczający i wyświetlający obrazy powstałe na podstawie obrazów szarych uzyskanych w p. 1a poprzez ich zakłócenie następującymi rodzajami szumów: Gaussowskim, Pasami o grubości 1 piksela, Impulsowym (sól i pieprz). c) Wyznaczający i wyświetlający obrazy uzyskane w wyniku zastosowania następujących metod filtracji do obrazów z p. 1b: Filtru Gaussa, Filtru medianowego uśredniającego różnej wielkości, Filtru uśredniającego z maskami o różnej wielkości. 3
2. Porównać obrazy z punktu 1c pod względem jakości odfiltrowania zakłóceń. 3. Przygotować program (w postaci pliku.m) dla systemu MATLAB wyznaczający obrazy zawierające krawędzie obiektów znajdujących się na obrazach otrzymywanych tak jak w p. 1a z użyciem następujących metod: a) Masek Sobela dla kierunków poziomego i pionowego, b) Kombinacji krawędzi poziomych i pionowych otrzymywanych w p. 3a, c) Operatora Laplace a, d) Filtru LOG. 4. Porównać obrazy z punktu 3 pod względem jakości otrzymywanych krawędzi. 5. Przygotować sprawozdanie z ćwiczenia zawierające a) Temat ćwiczenia, b) Przygotowane podczas ćwiczenia programy, c) Wyniki działania tych programów wraz z opisem, d) Wnioski. Literatura [1] R. Tadeusiewicz Systemy wizyjne robotów przemysłowych, WNT, Warszawa 1992 [2] R. Tadeusiewicz, P. Korohoda, Algorytmy i metody komputerowej analizy i przetwarzania obrazów, Wyd. Fund. Post. Telekom., Kraków, 1997 [3] M. Wysocki, J. Marnik, T. Kapuściński, Wizja komputerowa. Materiały pomocnicze. Oficyna Wydawnicza Politechniki Rzeszowskiej, Rzeszów, 2004 4
Politechnika Rzeszowska Katedra Informatyki i Automatyki Laboratorium Wizji Komputerowej Ćwiczenie 3 MORFOLOGIA MATEMATYCZNA Zagadnienia teoretyczne: 1. Zapoznać się z podstawowymi transformacjami morfologicznymi: dylatacją, erozją, openingiem, closingiem, zwężaniem, rozszerzaniem oraz z filtrami morfologicznymi OC i CO, top-hat ([1, 2]). Przebieg ćwiczenia 1. Przygotować program (w postaci pliku.m) dla systemu MATLAB realizujący następujące zadania: a) Wyświetlający on-line obrazy z odcieniami szarości otrzymywane z kamery, b) Wyznaczający i wyświetlający obrazy powstałe na podstawie obrazów szarych poprzez ich binaryzację z progiem ustalanym adaptacyjnie, c) Wyznaczający i wyświetlający obrazy uzyskane w wyniku zastosowania następujących metod morfologicznych do obrazów z p. 1b z różnymi rozmiarami masek: Erozji, Dylatacji, Openingu, Closingu. d) Wyznaczający i wyświetlający obrazy uzyskane w wyniku zastosowania filtrów OC i CO z różnymi rozmiarami masek do obrazów z p. 1b zakłóconych szumem impulsowym. e) Wyznaczający i wyświetlający obrazy krawędzi uzyskane za pomocą erozji. 2. Porównać obrazy z punktów 1b i 1c pod względem wielkości obiektów i jakości ich brzegów. 5
3. Porównać obrazy z punktu 1d (zakłócone i po filtracji OC i CO) ich jakości i obecności zakłóceń. 4. Porównać obrazy z punktu 1e pod względem wyglądu otrzymywanych krawędzi. 5. Przygotować zmodyfikowaną wersję programu z punktu 1 tak, by przetwarzane były obrazy szare. Krawędzie wyznaczyć za pomocą gradientu morfologicznego. 6. Porównać obrazy otrzymywane w p. 5 według odpowiednich kryteriów z punktów 2-4. 7. Przygotować sprawozdanie z ćwiczenia zawierające a) Temat ćwiczenia, b) Przygotowane podczas ćwiczenia programy, c) Wyniki działania tych programów wraz z opisem, d) Wnioski. Literatura [1] R. Tadeusiewicz, P. Korohoda, Algorytmy i metody komputerowej analizy i przetwarzania obrazów, Wyd. Fund. Post. Telekom., Kraków, 1997 [2] M. Wysocki, J. Marnik, T. Kapuściński, Wizja komputerowa. Materiały pomocnicze. Oficyna Wydawnicza Politechniki Rzeszowskiej, Rzeszów, 2004 6
Politechnika Rzeszowska Katedra Informatyki i Automatyki Laboratorium Wizji Komputerowej Ćwiczenie 4 ANALIZA CECH OBIEKTÓW Zagadnienia teoretyczne: 1. Zapoznać się z metodami segmentacji i wykrywania obiektów [1, 2, 3]. 2. Zapoznać się z rodzajami cech obiektów (współczynniki kształtu, momenty geometryczne) [1, 2, 3]. 3. Zapoznać się z rodzajami klasyfikatorów [3]. Przebieg ćwiczenia 1. Przygotować funkcję dla systemu MATLAB służącą do wyznaczania wektora cech obiektu (funkcje moment, momentc, momentcn, niezm1 niezm 9 z katalogu mpliki) 2. Przygotować bazę wzorców dla każdej klasy obiektów, które mają być rozpoznawane w postaci macierzy o wymiarach [L N], gdzie: L liczba wzorców, N długość wektora cech pomniejszona o wartość 1. Struktura każdego wiersza tej macierzy powinna być następująca: [nr_klasy_obiektu wektor_cech] 3. Przygotować program (w postaci pliku.m) dla systemu MATLAB realizujący następujące zadania: a) Pobranie obrazu tła b) Wykrycie obiektu do analizy metodą odejmowania obrazu od tła (funkcje imabsdiff, im2bw, graythresh), c) Wyznaczenie cech wykrytego obiektu z użyciem funkcji z p.1, d) Dokonanie klasyfikacji obiektu metodą najbliższego sąsiada (funkcja klasyfikknn z katalogu mpliki). 4. Przygotować sprawozdanie z ćwiczenia zawierające 7
a) Temat ćwiczenia, b) Przygotowane podczas ćwiczenia programy, c) Wyniki działania tych programów wraz z opisem, d) Wnioski. Literatura [1] R. Tadeusiewicz Systemy wizyjne robotów przemysłowych, WNT, Warszawa 1992 [2] R. Tadeusiewicz, P. Korohoda, Algorytmy i metody komputerowej analizy i przetwarzania obrazów, Wyd. Fund. Post. Telekom., Kraków, 1997 [3] M. Wysocki, J. Marnik, T. Kapuściński, Wizja komputerowa. Materiały pomocnicze. Oficyna Wydawnicza Politechniki Rzeszowskiej, Rzeszów, 2004 8
Politechnika Rzeszowska Katedra Informatyki i Automatyki Laboratorium Wizji Komputerowej Ćwiczenie 5 KOMPRESJA OBRAZÓW Zagadnienia teoretyczne: 1. Zapoznać się z metodami kompresji wykorzystującymi kodowanie Huffmana i transformację kosinusową, oraz z pojęciami dotyczącymi oceny jakości kompresji (entropia, redundancja informacji, współczynnik kompresji, średnia liczba bitów na punkt obrazu, błąd średniokwadratowy, PNSR) [1, 2]. Przebieg ćwiczenia 1. Wykorzystując kamerę CCD pozyskać 2 obrazy: pierwszy zawierający duże jednorodne obiekty na jednorodnym tle, drugi zawierający wiele szczegółów. 2. Wykorzystując programy do kompresji z wykorzystaniem kodu Huffmana (direct.exe, dpcm.exe, huf.exe) wyliczyć dla pozyskanych obrazów współczynniki kompresji i współczynniki określające średnią liczbę bitów na punkt obrazu po kompresji. Porównać otrzymane wartości. 3. Wykorzystując funkcję komprdct.m dokonać kompresji każdego z pozyskanych obrazów z użyciem transformacji kosinusowej następującymi sposobami: a) z podziałem obrazu na bloki o rozmiarach 8 8 i 16 16 uwzględniając współczynniki, których wartość przekroczyła zadany próg p (wykonać dla kilku wartości p), N współczynników znajdujących się w najbliższym otoczeniu lewego górnego rogu macierzy współczynników kompresji kosinusowej (wykonać dla różnych wartości N) b) bez podziału obrazu na bloki wybierając współczynniki dla rekonstrukcji tak jak w p. 3a). 9
Dla każdego wariantu kompresji wyliczyć współczynnik PSNR (funkcja PNSR.m) i błąd średniokwadratowy (funkcja komprmse.m). Porównać otrzymane wartości. 4. Przygotować sprawozdanie z ćwiczenia zawierające a) Temat ćwiczenia, b) Ciąg poleceń MATLAB a służących do realizacji poszczególnych zadań oraz wyniki działania tych instrukcji c) Wnioski Opis oprogramowania Programy direct.exe, dpcm.exe i huf.exe służą do kompresji obrazów z wykorzystaniem różnych wariantów kodowania bezstratnego Huffmana. Postać wywołania tych programów jest następująca: direct.exe <obraz_poddawany_kompresji> <plik_z_obrazem_po_kompresji> dpcm.exe <obraz_poddawany_kompresji> <plik_z_obrazem_po_kompresji> huf.exe <obraz_poddawany_kompresji> <plik_z_obrazem_po_kompresji> Plik z obrazem do kompresji można poddać dekompresji z wykorzystaniem programów ddirect.exe, ddpcm.exe i dhuf.exe, odpowiednio. Składnia polecenia jest następująca: ddirect.exe <plik_z_obrazem_po_kompresji> <obraz_po_dekompresji> ddpcm.exe <plik_z_obrazem_po_kompresji> <obraz_po_dekompresji> dhuf.exe <plik_z_obrazem_po_kompresji> <obraz_po_dekompresji> Do wyznaczania współczynnika kompresji można użyć funkcji WspKompr.m przygotowanej dla systemu MATLAB. Postać wywołania tej funkcji jest następująca: wsp = WspKompr(M, N, B, c) gdzie M, N - liczba wierszy i liczba kolumn obrazu B - liczba bitów wykorzystywanych do reprezentacji piksela c - długość strumienia bitów dla obrazu po kompresji. Współczynnik określający średnią liczbę bitów na punkt obrazu można obliczyć z użyciem funkcji Bit_Piks.m przygotowanej dla systemu MATLAB. Postać wywołania tej funkcji jest następująca: bpp = Bit_Piks(M, N, c) gdzie M, N - liczba wierszy i liczba kolumn obrazu c - długość strumienia bitów dla obrazu po kompresji. 10
Kompresja kosinusowa obrazów w systemie MATLAB jest realizowana za pomocą funkcji dct2.m pakietu Image Processing Toolbox. Dla celów laboratorium przygotowana została funkcja komprdct.m realizująca kompresję obrazu i wyznaczająca współczynniki MSE i PSNR dla tej kompresji. Składnia funkcji jest następująca: [IpoDCT, MSE, wsppsnr] = komprdct(i, RozmBloku, metoda, ProgLubN) gdzie: I - obraz intensywnościowy poddawany kompresji, RozmBloku - długość boku kwadratu określającego wymiar bloku do przetwarzania obrazu z podziałem na bloki (<=0 jeżeli przetwarzanie ma się odbywać bez podziału na bloki) metoda - metoda wyboru współczynników do dekompresji Możliwe wartości: - 'prog' - do dekompresji zostaną użyte współczynniki przekraczające próg określony tym parametrem - 'rog' - do dekompresji zostanie użytych N współczynników znajdujących się w otoczeniu lewego górnego rogu macierzy po transformacji DCT (mniej więcej w obszarze trójkąta równobocznego, prostokątnego); N = wartość wskazana parametrem ProgLubN ProgLubN - wartość określająca próg dla metody 'prog' lub N dla metody 'rog' IpoDCT - obraz wynikowy MSE - błąd średniokwadratowy kompresji WspPSNR - współczynnik PSNR Literatura [1] M. Wysocki, J. Marnik, T. Kapuściński, Wizja Komputerowa, materiały pomocnicze, Oficyna Wydawnicza Politechniki Rzeszowskiej, Rzeszów, 2004 [2] M. Sonka, V. Hlavac, R. Boyle, Image Processing, Analysis and Machine Vision, Chapman & Hall Computing, 1993 11
Politechnika Rzeszowska Katedra Informatyki i Automatyki Laboratorium Wizji Komputerowej Ćwiczenie 6 STEREOWIZJA Zagadnienia teoretyczne: 1. Zapoznać się z pojęciami kalibracja systemu stereowizyjnego, rektyfikacja, dysparycja, mapa głębi rekonstrukcja 3D [1, 2]. 2. Zapoznać się z zamieszczonym w dalszej części instrukcji opisem sprzętu i oprogramowania wykorzystywanego w ćwiczeniu. Przebieg ćwiczenia 1. Przeprowadzić kalibrację układu kamer. 2. Dokonać rektyfikacji obrazów stereo i wyznaczyć mapy dysparycji dla kilku ujęć zawierających obiekty znajdujące się w różnych odległościach od kamer. Próby wykonać dla różnych wartości parametrów programu. 3. Dokonać próby rekonstrukcji 3D fragmentu wybranego obiektu. 4. Wykorzystując układ stereowizyjny oszacować odległość wybranego obiektu od kamery. 5. Przygotować sprawozdanie z ćwiczenia zawierające a) Temat ćwiczenia, b) Wykaz wyznaczonych w procesie kalibracji parametrów wewnętrznych i zewnętrznych kamer, c) Ocenę wpływu parametrów ustawianych podczas wyznaczania dysparycji na jakość otrzymywanych map głębi i czas ich generowania, d) Dyskusję na temat możliwości rekonstrukcji 3D całego obiektu, e) Oszacowanie dokładności wyznaczenia odległości obiektu od kamery, f) Wnioski. 12
Opis sprzętu i oprogramowania Stanowisko laboratoryjne składa się z komputera PC wyposażonego w posiadającą dwa kanały wideo kartę frame-grabbera Matrox Morphis. Do karty podłączone są dwie kamery analogowe Panasonic VX47 zamocowane na jednym statywie w kanonicznym układzie stereowizyjnym. W rozwiązaniu tym maksymalne opóźnienie pomiędzy obrazami z kamery lewej i prawej nie przekroczy 40 ms. Do przetwarzania obrazów i wykonywania obliczeń wykorzystane zostanie następujące oprogramowanie: przygotuj_do_kalibracji.exe program umożliwiający zarejestrowanie 5 par obrazów, które następnie zostaną wykorzystane w procedurze kalibracji, smallvcal.exe program do kalibracji układu kamer, wyznaczaj_dysparycje.exe program wyznaczający mapę dysparycji, rekonstrukcja_3d.exe program dokonujący rekonstrukcji 3D na podstawie wartości dysparycji, oblicz_odleglosc.exe program wyznaczający odległość obiektu od kamery. W ćwiczeniu do kalibracji układu kamer wykorzystana zostanie specjalna plansza: Sposób wykonania ćwiczenia 1. Wykorzystując interaktywny program przygotuj_do_kalibracji.exe nagraj 5 par obrazów przedstawiających planszę kalibracyjną w różnych pozycjach. Wskazówki do umieszczania planszy kalibracyjnej: staraj się, aby plansza zajmowała jak największą część obrazu, nagraj jedną parę obrazów z planszą ustawioną pionowo, dla pozostałych par obrazów ustawiaj planszę pod różnymi kątami tak aby poszczególne pola szachownicy maiły różną głębię, 13
nagraj przynajmniej jedną parę obrazów tak, by odległość planszy od kamer znacznie różniła się od pozostałych przypadków, dla kilku par obrazów umieszczaj planszę tak aby była blisko jednej z krawędzi obrazów, plansza powinna być ustawiona tak aby wszystkie pola szachownicy były widoczne w obrazach z oby kamer. Przykładowe ustawienia planszy kalibracyjnej: 2. Wykorzystując program smallvcal.exe przeprowadź procedurę kalibracji układu kamer 14
a) Uruchom okienko Internal Calibration (opcja Calibrate z menu głównego) b) Ustaw parametry pracy programu dostosowane do dostępnego sprzętu (Custom, Imager Width = 768, Imager Height = 576, Imager Pixel dx = 0,007, Imager Pixel dy = 0,007, Kappa2, Kappa3, Tau1, Tau2, check.pdf) c) Wczytaj obrazy przygotowane w punkcie 1 (przycisk Load) d) Wyznacz cechy wykorzystywane podczas kalibracji (przycisk Features) e) Przeprowadź kalibrację (przycisk Calibrate). Otrzymane parametry wewnętrzne i zewnętrzne układu kamer wyświetlone zostaną w SVS Debugging Window. f) Zapisz parametry w pliku params.ini (przycisk Save). 3. Wykorzystując program wyznaczaj_dysparycje.exe wyznacz mapę dysparycji dla kilku ujęć zawierających obiekty znajdujące się w różnej odległości od układu kamer. Procedurę powtarzaj dla różnych parametrów algorytmu poszukiwania odpowiedników. a) Wczytaj plik params.ini zawierający parametry wyznaczone w procesie kalibracji. Parametry te wykorzystane zostaną do rektyfikacji obrazów (opcja Wczytaj Parametry z menu programu) b) Ustaw parametry algorytmu poszukiwania odpowiedników: rozmiar okna, maksymalną wartość dysparycji, wartość progową wykorzystywaną do odrzucania odpowiedników wygenerowanych na podstawie okien o słabej teksturze, filtr L/R. Oceń jakość mapy dysparycji i czas jej wyznaczania dla różnych ustawień. 15
Wskazówka: Wartość progowa, o której mowa w punkcie 3b może być ustawiona w następujący sposób: skieruj kamery na gładką powierzchnię o znikomej strukturze i zwiększaj wartość progową aż mapa dysparycji przestanie migać 4. Wykorzystując program rekonstrukcja_3d.exe dokonaj rekonstrukcji 3D wybranego obiektu. Parametry pracy programu ustaw jak w p. 3. 5. Wyznacz odległość wybranego obiektu od kamery wykorzystując program wyznacz_odleglosc.exe. Parametry programu ustawiaj jak w p. 3. Oszacuj dokładność metody porównując wyniki ze znanymi wartościami. Literatura [1] Stereowizja, opracowanie Zespołu Wizji Komputerowej i Optymalizacji Katedry Informatyki i Automatyki [2] B. Cyganek, Komputerowe przetwarzanie obrazó trójwymiarowych, Akademicka Oficyna Wydawnicza EXIT, Warszawa, 2002 [3] M. Wysocki, J. Marnik, T. Kapuściński, Wizja Komputerowa, materiały pomocnicze, Oficyna Wydawnicza Politechniki Rzeszowskiej, Rzeszów, 2004 16
Dodatek A IMAGE ACQUISITION TOOLBOX Procedura akwizycji obrazów z użyciem pakietu Image Acquisition Toolbox (IAT) w wersji 1.7 dla systemu MATLAB 7.0.1 Krok 1. Zainstaluj i skonfiguruj urządzenie do akwizycji obrazów A. Zainstaluj sterowniki kamery B. Podłącz kamerę C. Sprawdź, czy kamera działa poprawnie, wykorzystując narzędzia software owe dostarczane z kamerą Krok 2. Wydobądź informacje, które jednoznacznie identyfikują urządzenie do akwizycji obrazów (za pomocą funkcji imaqhwinfo) A. Nazwa adaptera (programu, który pakiet IAT wykorzystuje do komunikowania się z urządzeniem do akwizycji obrazów za pomocą sterownika tego urządzenia) pole InstalledAdaptors struktury zwracanej po wywołaniu funkcji imaqhwinfo bez parametrów B. Identyfikator urządzenia liczba skojarzona z każdym urządzeniem do akwizycji obrazów (pole DeviceIDs struktury zwracanej po wywołaniu funkcji imaqhwinfo z parametrem określającym adapter); przy tworzeniu obiektu powiązanego z wejściem wideo domyślnie przyjmowane jest pierwsze urządzenie C. Format wideo określa rozdzielczość obrazu i inne parametry strumienia wideo; informacje o formatach wideo znajdują się w polu SupportedFormats pola DeviceInfo struktury zwracanej przez funkcję imaqhwinfo; przy tworzeniu obiektu powiązanego z wejściem wideo jest to parametr opcjonalny domyślnie przyjmowane są domyślne wartości urządzenia Krok 3. Utwórz obiekt powiązany z wejściem wideo A. W oknie poleceń MATLABa wywołaj funkcję videoinput podając odpowiednie parametry B. Jedynym wymaganym parametrem jest nazwa adaptera (zob. Krok 2.A), pozostałe parametry (identyfikator urządzenia i format wideo zob. Krok 2.B i Krok 2.C) są opcjonalne Krok 4. Utwórz okno z podglądem obrazu z wejścia wideo (opcjonalnie) A. Po utworzeniu obiektu powiązanego z wejściem wideo możliwy jest już dostęp do urządzenia do akwizycji obrazów z poziomu systemu MATLAB B. Jednakże przed rozpoczęciem pobierania obrazów do pamięci MATLABa możesz sprawdzić ich wygląd w oknie podglądu 17
strumienia wideo, np. w celu zmiany położenia kamery, czy skorygowania ostrości C. W celu utworzenia okna podglądu strumienia obrazu w oknie poleceń MATLABa wywołaj funkcję preview z parametrem wskazującym na obiekt powiązany ze strumieniem wideo D. Okno podglądu można zamknąć w sposób typowy dla okienek Windows lub z poziomu MATLABa wywołując funkcję closepreview Krok 5. Skonfigurowanie właściwości obiektu powiązanego z wejściem wideo A. Po utworzeniu obiektu powiązanego z wejściem wideo można zmienić charakterystyki obrazu i inne aspekty procesu przetwarzania; dokonuje się tego odpowiednio ustawiając właściwości tego obiektu B. IAT wykorzystuje 2 rodzaje obiektów powiązanych z wejściem wideo: Obiekty powiązane z wejściem wideo reprezentują połączenie między MATLABem a urządzeniem do akwizycji obrazów na wysokim poziomie; tworzone są za pomocą funkcji videoinput; właściwości tych obiektów są takie same dla każdego rodzaju urządzenia Obiekty powiązane ze źródłem wideo tworzone są automatycznie podczas tworzenia obiektu powiązanego z wejściem wideo (jedno lub więcej); każdy z tych obiektów reprezentuje kolekcję fizycznych źródeł danych (jednego lub więcej) traktowanych jak pojedyncza wielkość; liczba obiektów powiązanych ze źródłem wideo zależy od urządzenia i formatu wideo określonego przy tworzeniu obiektu powiązanego z wejściem wideo; w danej chwili może być aktywny tylko jeden obiekt powiązany ze źródłem wideo, zwany źródłem wybranym (selected source); obiekt ten jest źródłem obrazów C. Do uzyskania informacji o właściwościach obiektu (powiązanego ze źródłem wideo lub z wejściem wideo) zastosuj funkcję get z parametrem wskazującym obiekt Właściwości aktualnie wybranego obiektu powiązanego ze źródłem wideo dla danego obiektu powiązanego z wejściem wideo wyświetlić można poleceniem get(getselectedsource(<obiekt_wideo>)) Niektóre właściwości (nie read-only) można zmieniać poleceniem set; wywołanie polecenia set z jednym parametrem (obiektem wideo) umożliwia wyświetlenie tylko tych właściwości, które można zmieniać Krok 6. Przechwytywanie obrazów wykonywane jest w 3 krokach 18
A. Uruchomienie obiektu powiązanego z wejściem wideo poprzez wywołanie funkcji start powoduje przygotowanie obiektu do akwizycji danych, niektóre właściwości obiektu zostają zablokowane (stają się read-only); zatrzymanie następuje po pozyskaniu wskazanej liczby klatek (właściwość TriggerRepeat) lub na skutek wywołania funkcji stop (jedyna możliwość w przypadku, gdy akwizycja jest ciągła TriggerRepeat = Inf) B. Wyzwolenie akwizycji zależne jest od wartości właściwości TriggerType: wartość immediate nakazuje wyzwolenie akwizycji zaraz po uruchomieniu obiektu funkcją start dla wartości manual akwizycja jest wyzwalana po wywołaniu funkcji trigger wartość hardware umożliwia wyzwolenie akwizycji bezpośrednio przez urządzenie do akwizycji obrazów. C. Pobranie danych obrazowych do przestrzeni roboczej MATLABa za pomocą funkcji getdata Pobrane dane obrazowe przechowywane mogą być w buforze pamięci, na dysku lub w obu tych miejscach naraz, zależnie od wartości właściwości LogginMode obiektu powiązanego z wejściem wideo Pobranie pojedynczej klatki możliwe jest bez uruchamiania obiektu i wyzwalania akwizycji (funkcja getsnapshot) Krok 7. Czyszczenie po zakończeniu pracy z obiektem powiązanym z wejściem wideo należy ten obiekt usunąć z pamięci i wyczyścić przestrzeń roboczą MATLABa ze zmiennych powiązanych z tym obiektem (funkcje delete, clear, close) Przykład: Krok 2: Krok 3: A. imaqhwinfo B. info = imaqhwinfo( winvideo ) vid = videoinput( winvideo ) %utworzenie obiektu powiązanego z wejściem wideo Krok 4: Krok 5: preview(vid) %utworzenie okna podglądu 19
wideo get(vid) %wyświetlenie właściwości obiektu powiązanego z wejściem get(getselectedsource(vid)) %wyświetlenie właściwości obiektu powiązanego %ze źródłem wideo set(vid, TriggerRepeat, Inf) %ustawienie właściwości TriggerRepeat na wartość Inf % ciągła akwizycja obrazów (do momentu %zamierzonego jej przerwania) Krok 6: figure; %utworzenie okna graficznego set(gcf, doublebuffer, on ) %zapewnia płynne wyświetlanie start(vid) %uruchomienie obiektu (powoduje automatyczne wyzwolenie akwizycji) while (vid.framesacquired <= 100) data = getdata(vid, 2); %pobranie danych obrazowych diff_im = imabsdiff(data(:,:,:,1), data(:,:,:,2)); %wyznaczenie obrazu % różnicowego dla 2 ostatnio pobranych klatek Krok 7: end stop(vid) imshow(diff_im); %wyświetlenie obrazu różnicowego delete(vid) %usunięcie obiektu wideo clear %wyczyszczenie przestrzeni roboczej MATLABa close(gfc) %zamknięcie okna graficznego 20
Przechwytywanie obrazów Po wyzwoleniu przechwytywania właściwość Logging obiektu powiązanego z wejściem wideo jest ustawiana na wartość on, a przechwycone klatki umieszczane są w pamięci i/lub na dysku, zależnie od ustawień właściwości LoggingMode. Możliwe wartości dla tej właściwości to: memory pobrane klatki umieszczane są w pamięci, skąd mogą zostać pobrane do przestrzeni roboczej systemu MATLAB, disk pobrane obrazy zapisywane są na dysku, disk&memory przechwycone klatki są umieszczane zarówno w pamięci jak i na dysku. Po zakończeniu przechwytywania właściwość Logging obiektu jest ustawiana na wartość off. Określenie liczby klatek do przechwycenia Liczba klatek, jaką należy przechwycić po wyzwoleniu akwizycji może być ustawiona za pomocą właściwości FramesPerTrigger obiektu powiązanego z wejściem wideo. Domyślną wartością jest tu 10. Za pomocą właściwości FrameGrabInterval można określić, co która klatka ma być przechwycona. Uwaga: Liczba klatek, którą można przechwycić jest ograniczona wielkością pamięci systemowej. Duża wartość właściwości FramesPerTrigger może spowodować przepełnienie tej pamięci. W celu uniknięcia problemu można w funkcji getdata wskazać liczbę pamiętanych klatek lub usuwać z pamięci pewne/wszystkie klatki (funkcją flushdata). Określenie liczby przechwyconych klatek Liczba przechwyconych klatek jest zapisywana we właściwości FramesAcquired obiektu powiązanego z wejściem wideo. Liczba dostępnych (zapamiętanych w buforze pamięci) klatek może być różna od liczby przechwyconych klatek, jako skutek użycia funkcji getdata i flushdata. Liczba dostępnych klatek jest pamiętana we właściwości FramesAvailable. Opóźnienie przechwytywania W pewnych przypadkach nie jest potrzebne przechwytywanie pewnej liczby początkowych klatek zwracanych przez urządzenie do akwizycji obrazów, gdyż często po aktywacji kamery dostrajane są pewne parametry jej działania, przez co obraz może być np. zbyt jasny lub zbyt ciemny. Liczbę pomijanych na początku akwizycji klatek można ustawić we właściwości TriggerFrameDelay obiektu powiązanego z wejściem wideo. 21
Wymuszenie oczekiwania na zakończenie przechwytywania obrazów Funkcje start i trigger są asynchroniczne, tzn. powodują rozpoczęcie akwizycji obrazów i przekazują sterowanie do okna poleceń systemu MATLAB. Niekiedy wskazane jest, by aplikacja zaczekała na pobranie wszystkich klatek nim nastąpi kontynuacja jej działania. Aby to osiągnąć należy wywołać funkcję wait zaraz po funkcji start/trigger. Praca z przechwyconymi obrazami Pobieranie obrazów do przestrzeni roboczej systemu MATLAB Możliwe są 3 sposoby pobrania obrazów do przestrzeni roboczej systemu MATLAB: 1. Przeniesienie określonej liczby klatek z bufora pamięci do przestrzeni roboczej systemu MATLAB za pomocą funkcji getdata; funkcja getdata powoduje usunięcie pobranych klatek z bufora pamięci, jednocześnie blokuje linię poleceń systemu MATLAB do czasu, kiedy zadana liczba klatek będzie dostępna w buforze pamięci. 2. Podgląd klatek ostatnio pobranych do bufora pamięci w tym celu należy użyć funkcji peekdata; funkcja ta nie powoduje usunięcia z bufora pamięci pobranych do podglądu klatek; ponadto odnosi się ona do ostatnio pobranych klatek (najświeższych), w odróżnieniu od funkcji getdata, która odnosi się do klatek pobranych najwcześniej 3. Pobranie pojedynczej klatki do tego służy funkcja getsnapshot; użycie tej funkcji jest najprostsze, ponieważ nie wymaga ona, by obiekt powiązany z wejściem wideo był uruchomiony, ani nie wymaga wyzwolenia akwizycji; funkcja getsnapshot działa niezależnie od bufora pamięci, dlatego może zwrócić obraz nawet, gdy bufor ten jest pusty, a pobrana ramka nie wpływa na wartość właściwości FramesAvailable. Praca z obrazami w przestrzeni roboczej systemu MATLAB Dane obrazowe pobrane do przestrzeni roboczej systemu MATLAB są wielowymiarową tablicą. Pierwsze dwa wymiary to wymiary pobranych obrazu, następny jest zależny od rodzaju obrazu (przestrzeni barw, dla obrazów w skali szarości = 1, dla RGB = 3), a kolejny dotyczy liczby klatek. Wymiary obrazu i jego rodzaj są określone w odpowiednich właściwościach obiektu powiązanego z wejściem wideo: VideoResolution rozdzielczość obrazu ([szerokość wysokość]), NumberOfBands liczba pasm reprezentujących kolor, ReturnedColorSpace przestrzeń kolorów dla obrazu. Podgląd danych obrazowych Obrazy pobrane do przestrzeni roboczej systemu MATLAB można wyświetlić podobnie jak inne obrazy (za pomocą funkcji imshow, image i imagesc pakietu 22
Image Processing Toolbox). W pakiecie IAT udostępniono dodatkowo funkcję imaqmontage umożliwiającą podgląd wielu ramek wielowymiarowej tablicy danych obrazowych. Funkcja ta wyświetla obrazy tak, by znajdowały się w obszarze o kształcie jak najbardziej zbliżonym do kwadratu. 23
Spis treści Ćwiczenie 1. HISTOGRAMY I BINARYZACJA...1 Ćwiczenie 2. ZAKŁÓCANIE I FILTRACJA OBRAZÓW, DETEKCJA KRAWĘDZI NA OBRAZACH...3 Ćwiczenie 3. MORFOLOGIA MATEMATYCZNA...5 Ćwiczenie 4. ANALIZA CECH OBIEKTÓW...7 Ćwiczenie 5. KOMPRESJA OBRAZÓW...9 Ćwiczenie 6. STEREOWIZJA...12 Dodatek A. IMAGE ACQUISITION TOOLBOX...17 24