IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU - ĆWICZENIA
wersja 1.1
CPO - ćw.5. Automatyczna interpretacja obrazu cyfrowego - dr inż. Jakub Kolecki - KGFiTŚ
|
Ćwiczenie_5. Automatyczna interpretacji obrazu cyfrowego – budowa programu
do rozpoznawania koloru światła sygnalizatora
• Cel tematu
1. Powtórzenie zagadnień realizowanych na poprzednich zajęciach laboratoryjnych z programem MATLAB z
naciskiem na ich praktyczne wykorzystanie.
- wczytywanie obrazu do zmiennej oraz sposób przechowywania obrazu kolorowego
- budowa maski filtru
(z wykorzystaniem funkcji fspecial)
- filtracja przestrzenna obrazu
(z wykorzystaniem funkcji imfilter)
2. Zapoznanie się z niektórymi instrukcjami sterującymi
(pętla for, i instrukcja warunkowa if)
3. Zapis informacji w pliku tekstowym
(funkcje fopen, fclose, fprintf)
• Dane do ćwiczeń
Na ćwiczeniach korzystamy z obrazów zlokalizowanych na wiki
Dostępne są dwa zestawy obrazów.
• Oprogramowanie
W trakcie wykonywania ćwiczenia korzystamy z oprogramowania MATLAB 2010b
• Przebieg zajęć
1. Część teoretyczna
- Automatyczna interpretacja obrazów cyfrowych. Wyjaśnienie pojęć: detekcja obiektu,
identyfikacja obiektu, pomiar obiektu na przykładzie obrazu sygnalizatora świetlnego.
- Zapoznanie studentów z najczęściej stosowanymi instrukcjami sterującymi: pętlą for oraz
instrukcją if.
- Zapoznanie z funkcją num2str, str2double,strcat
- Zapoznanie z funkcjami fopen, fclose, fprintf
- Zapoznanie z funkcjami mean, max, min
2. Część praktyczna
2.1 Wstęp - wyświetlenie przykładowego obrazu (praca w oknie Comand Window).
- Korzystając z okna komend wczytaj do zmiennej o nazwie FOTO obraz, którego nazwa
jest zgodna z Twoim numerem.
- Wyświetl wczytany obraz
- Jeżeli na sygnalizatorze pali się światło zielone zapisz w zmiennej ZIELONY kanał
zielony obrazu. Jeżeli na sygnalizatorze pali się światło czerwone w zmiennej
CZERWONY zapisz kanał czerwony obrazu.
- Wyświetl zapisany kanał w nowym oknie
IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU - ĆWICZENIA
wersja 1.1
CPO - ćw.5. Automatyczna interpretacja obrazu cyfrowego - dr inż. Jakub Kolecki - KGFiTŚ
|
- Na obrazie kolorowym korzystając z narzędzia „Data Cursor” odczytaj wartości
jasności RGB pięciu pikseli leżących w obrębie palącego się sygnału. Jaka jest
najniższa a jaka najwyższa odczytana przez Ciebie wartość w kanale
odpowiadającym kolorowi palącego się światła ?
2.2 Skrypt – etap 1 - Automatyczne wczytywanie obrazów z wykorzystaniem pętli for
- Utwórz nowy skrypt, który:
1. Kasuje zmienne (clear)
2. Czyści ekran (clc)
3. Realizuje pętle for, wewnątrz której:
wczytywany jest obraz o numerze i.JPG
wypisywana jest średnia wartość jasności piksela o współrzędnych:
[wiersz = 10*N, kolumna = 10*N] w kanale zielonym.
N oznacza numer studenta.
2.3 Skrypt – etap 2 – Program do automatycznej interpretacji obrazu
Przerób utworzony wcześniej skrypt tak aby wewnątrz pętli for poza wczytaniem
obrazu realizowane były następujące zadania:
- filtracja obrazu filtrem wygładzającym (dolnoprzepustowym). Wykorzystaj w tym celu
funkcje fspecial oraz imfilter
Jeżeli Twój numer (N) jest nieparzysty wykorzystaj filtr uśredniający.
Jeżeli Twój numer (N) jest parzysty wykorzystaj filtr Gaussa*
Jeżeli Twój numer (N) jest podzielny przez 3 maska ma mieć wymiary 3 x 3
Jeżeli Twój numer (N) jest podzielny przez 4 maska ma mieć wymiary 7 x 7
Jeżeli Twój numer (N) nie jest podzielny ani przez 3 ani przez 4 zastosuj maskę 5 x 5
*Jeżeli stosowany jest filtr Gaussa, ustaw parametr sigma jako równy 1/5 rozmiaru maski – skorzystaj
Pomocy programu MATLAB
- sprawdzenie jaki kolor światła pali się w danym momencie na sygnalizatorze
(dowolna metoda)
- zapisanie do pliku wynikowego informacji o tym jakie światło pali się na każdym z
obrazów. Wynikowy plik tekstowy ma wyglądać podobnie jak poniżej:
IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU - ĆWICZENIA
wersja 1.1
CPO - ćw.5. Automatyczna interpretacja obrazu cyfrowego - dr inż. Jakub Kolecki - KGFiTŚ
|
ZAŁĄCZNIK - Składnia wybranych funkcji przydatnych w rozwiązywaniu zadań
pętla for:
Przykład – obliczenie wartości 7! (silnia)
wynik = 1;
for i = 1:7
wynik = wynik*i;
end
instrukcja warunkowa if:
składnia:
if warunek
%instrukcje wykonywane jeżeli warunek jest spełniony
end
strcat
Funkcja służy do łączenia kilku ciągów znaków w jeden ciąg.
Funkcja może łączyć ze sobą więcej niż dwa ciągi znaków.
Przykład 1:
str1 = ‘Jan Kowa’;
str2 = ‘lski’;
str3 = strcat(str1,str2);
%W zmiennej str3 będzie ciąg znaków: ‘Jan Kowalski’
Przykład 2:
Prefix = ‘obraz’;
Oznaczenie = ‘A24’;
I = imread(strcat(Prefix,Oznaczenie,’.jpg’));
%Do zmiennej I zostanie wczytany obraz o nazwie ‘obrazA24.jpg’
num2str
Funkcja służy do zamiany liczby na ciąg znaków
Przykład:
NR = 3;
I = imread(strcat(sum2str(NR),’.jpg’));
%Do zmiennej I zostanie wczytany obraz o nazwie ‘3.jpg’
str2double
Funkcja służy do zamiany ciągu znaków na liczbę
fopen, fclose, fprintf
fopen – otwiera plik i tworzy identyfikator pliku do odczytu
fclose – zamyka plik
fprintf- zapisanie danych do pliku tekstowego
Składnia funkcji fprintf:
fprintf(Id_pliku, ciąg_znaków, zmienna1, zmienna2,…);
IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU - ĆWICZENIA
wersja 1.1
CPO - ćw.5. Automatyczna interpretacja obrazu cyfrowego - dr inż. Jakub Kolecki - KGFiTŚ
|
Zapis do pliku - przykład
V = 20;
IdObiektu = 9;
Plik = fopen(‘Obiekty.txt’,’w’);
fprintf(Plik,’Obiekt %d ma predkosc %d km/h\n’,Obiektu,V);
fclose(Plik);
%W efekcie w pliku Obiekty.txt zostanie zapisana informacja:
Obiekt 9 ma predkosc 20 km/h
Symbol %d oznacza że w tym miejscu ma zostać wstawiona liczba całkowita
Liczby są wstawiane do tekstu zgodnie z kolejnością ich podania licząc od trzeciego argumentu funkcji
Symbol \n oznacza przejście do nowej linii