Laboratorium przetwarzania obrazów - Matlab.pdf

(410 KB) Pobierz
Laboratorium przetwarzania obrazów
Autorzy opracowania:
P. Pełczyński, P. Strumiłło, M. Strzelecki
Łódź,
październik 2000
Spis treści:
1.
Pakiet MATLAB
i Biblioteka Przetwarzania Obrazów ...................................... 3
(Image
Processing Toolbox - IPT)
2. Reprezentacje obrazów kolorowych ........................................................................
12
3. Operacje punktowe na obrazach ..............................................................................
16
4. Filtracja obrazu w dziedzinie przestrzennej ........................................................... 21
5. Dwuwymiarowa transformacja Fouriera ................................................................ 26
6. Metody kompresji obrazów ...................................................................................... 29
7. Przetwarzanie obrazów binarnych ........................................................................... 33
2
Biblioteka Przetwarzania Obrazów (Image
Processing Toolbox - IPT)
pakietu matematycznego MATLAB
Cel
ćwiczenia
Zapoznanie z biblioteką przetwarzania obrazów (Image
Processing Toolbox - IPT)
pakietu
matematycznego MATLAB.
Wiadomości wstępne
Image Processing Toolbox
(IPT) jest biblioteką pakietu MATLAB zawierającą zbiór specjali-
zowanych funkcji przeznaczonych do przetwarzania i analizy obrazów. Funkcje tej biblioteki
umożliwiają, m.in., wykonywanie następujących działań na obrazach:
przekształcenia geometryczne obrazów,
projektowanie filtrów i przestrzenna filtracja liniowa obrazów,
transformacje obrazów (Fouriera, kosinusowa),
poprawa jakości obrazu,
analiza obrazu,
przetwarzanie obrazów binarnych.
W celu sprawdzenia, czy używana przez Ciebie instalacja pakietu MATLAB jest wyposażona
w bibliotekę IPT, w oknie komend (tj.
MATLAB Command Window),
wpisz polecenie:
ver
Po zastosowaniu komendy
ver
zostanie wyświetlona informacja o numerze wersji oraz lista
bibliotek, w którą jest wyposażona używana przez Ciebie licencja pakietu MATLAB. W
wyświetlonej liście powinna znajdować się m.in. pozycja:
Image Processing Toolbox Version 2.1
15-Dec-1997
Większość funkcji biblioteki IPT to m-pliki napisane w języku skryptowym pakietu MA-
TLAB (tj. pliki z rozszerzeniem
*.m).
Działanie poszczególnych funkcji i ich składnie można
uzyskać za pomocą polecenia
help function_name
np. podając polecenie
help imread
uzyskasz informację o funkcji
imread,
służącej do
ładowania
obrazów z plików dyskowych do pamięci roboczej pakietu MATLAB. Zapoznaj
się ze składnią tej funkcji i typami plików graficznych, które mogą być
ładowane
do pamięci
roboczej pakietu.
Pełniejszy opis poszczególnych poleceń można również uzyskać korzystając z pomocy
interaktywnej dostępnej w menu głównym okna komend programu MATLAB
(np.
Help>Help Desk HTML).
Kody
źródłowe
funkcji zapisanych w m-plikach można wyświetlić stosując polecenie:
3
type function_name
np. wprowadź polecenie
type filter2,
by zapoznać się z kodem
źródłowym
funkcji
służącej do dwuwymiarowej filtracji obrazu.
Pełną listę funkcji dostępnych w bibliotece IPT wyświetla polecenie:
help images/contents
Z działaniem niektórych funkcji i możliwościami biblioteki IPT pakietu MATLAB możesz
się zapoznać dokładniej podając polecenie:
demo
oraz wybierając pozycję
Image Processing Toolbox
z menu
Toolboxes.
Okno demonstracyjne pakietu MATLAB (MATLAB
Demo Window)
zawiera również
przykłady działania innych bibliotek oraz wprowadzenie do podstawowych funkcji przetwa-
rzania numerycznego i funkcji graficznych dostępnych w pakiecie MATLAB.
Struktury danych stosowane do reprezentacji i przetwarzania obrazów w bibliotece
Image Processing Toolbox
Podstawowe typy obrazów monochromatycznych są reprezentowane w pakiecie MATLAB za
pomocą tablic dwuwymiarowych. Każdy element tablicy odpowiada jednemu punktowi
obrazu cyfrowego określanego jako
piksel.
Wartości elementów obrazu reprezentują jasność
poszczególnych pikseli obrazu, np. jasność punktu obrazu znajdującego się na przecięciu
drugiego wiersza i trzeciej kolumny tablicy
A
można uzyskać odczytując wartość elementu
tablicy
A
o współrzędnych
(2,3),
tj.
A(2,3),
gdzie
2
i
3
są indeksami wskazującymi na ten
punkt obrazu patrz rys.
1.
1
1
2
3
4
2
3
4
kolumny
A(2,3)
wiersze
Rys.
1.
Obraz jako tablica dwuwymiarowa
4
W pakiecie MATLAB, elementy tablic są standardowo reprezentowane za pomocą 64 bito-
wych liczb zmiennoprzecinkowych (klasa
double).
Zastosowanie takiej precyzji do kodo-
wania obrazów nie jest konieczne i zajmuje bardzo duży obszar pamięci operacyjnej kompu-
tera. Z powyższych względów, do kodowania obrazów w bibliotece IPT stosuje się głównie
klasę
uint8,
tj. zmienną ośmiobitową bez znaku (zauważmy,
że
do wyświetlania obrazów
nie ma potrzeby stosowania zmiennych przyjmujących ujemne wartości).
Zmienne klasy
uint8
Biblioteka IPT udostępnia ograniczony zbiór działań na zmiennych klasy
uint8,
tj.:
wyświetlanie obrazów reprezentowanych za pomocą zmiennej
uint8,
indeksowanie (adresowanie punktów) obrazów,
zmianę wymiarów tablic i kolejności elementów tablic, m.in. za pomocą poleceń:
reshape, cat, permute.
Niezależnie od klasy zmiennej stosowanej do kodowania jasności punktu obrazu, w bibliotece
IPT stosuje się cztery podstawowe struktury danych do reprezentacji obrazów:
obrazy indeksowane (indexed
images),
obrazy monochromatyczne (intensity
images),
obrazy binarne (binary
images),
obrazy RGB (RGB
images).
Obrazy indeksowane (indexed
images)
Obrazy indeksowane składają się z dwóch typów tablic:
trójkolumnowej tablicy (mapy) kolorów,
dwuwymiarowej tablicy (typu
double
lub
uint8)
indeksów do tablicy kolorów o
rozmiarze odpowiadającym rozmiarowi obrazu.
Tablica kolorów jest trójkolumnową tablicą typu
double.
Każdy wiersz tej tablicy zawiera
wartość odpowiednio czerwonej (Red), zielonej (Green) i niebieskiej (Blue) składowej
koloru, z których każda może przyjmować wartości z zakresu [0,
1].
Maksymalna liczba
wierszy tablicy kolorów wynosi 256.
Tablica indeksów zawiera indeksy wskazujące na wiersze tablicy kolorów, przy czym adre-
sowanie tablicy kolorów zależy od tego czy tablica indeksów jest klasy
double
czy
uint8.
Jeżeli tablica indeksów
A
jest klasy
double
i np.
A(2,3)=10
to kolor tego punktu obrazu
jest wyznaczony przez zawartość dziesiątego wiersza tablicy kolorów. Jeżeli zaś tablica
indeksów jest klasy
uint8
to kolor punktu obrazu
A(2,3)
jest wyznaczony przez zawar-
tość jedenastego wiersza tablicy kolorów (indeksowanie rozpoczyna się od indeksu 0, tj.
indeks 0 wskazuje na pierwszy wiersz tablicy kolorów).
Klasę zmiennej przechowywanej w obszarze roboczym pakietu MATLAB, możesz sprawdzić
np. za pomocą polecenia
whos,
które wyświetla nazwę, rozmiar i klasę aktualnie używanych
zmiennych utworzonych w obszarze roboczym (ang.
MATLAB workspace).
5
Zgłoś jeśli naruszono regulamin