Table Of ContentPrzetwarzanie obrazów cyfrowych –
laboratorium
Uniwersytet Marii Curie-Skłodowskiej
Wydział Matematyki, Fizyki i Informatyki
Instytut Informatyki
Przetwarzanie obrazów
cyfrowych – laboratorium
Marcin Denkowski
Paweł Mikołajczak
Lublin 2011
Instytut Informatyki UMCS
Lublin 2011
Marcin Denkowski
Paweł Mikołajczak
Przetwarzanie obrazów cyfrowych –
laboratorium
Recenzent: Michał Chlebiej
Opracowanie techniczne: Marcin Denkowski
Projekt okładki: Agnieszka Kuśmierska
Praca współfinansowana ze środków Unii Europejskiej w ramach
Europejskiego Funduszu Społecznego
Publikacja bezpłatna dostępna on-line na stronach
Instytutu Informatyki UMCS: informatyka.umcs.lublin.pl.
Wydawca
Uniwersytet Marii Curie-Skłodowskiejw Lublinie
Instytut Informatyki
pl. Marii Curie-Skłodowskiej 1, 20-031 Lublin
Redaktor serii: prof. dr hab. Paweł Mikołajczak
www: informatyka.umcs.lublin.pl
email: [email protected]
Druk
ESUS Agencja Reklamowo-Wydawnicza Tomasz Przybylak
ul. Ratajczaka 26/8
61-815Poznań
www: www.esus.pl
ISBN: 978-83-62773-02-2
Spis treści
Przedmowa vii
1 Środowisko programistyczne 1
1.1. Cyfrowa reprezentacja obrazu . . . . . . . . . . . . . . . . . . 2
1.2. C++/Qt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4. C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5. MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 Transformacje intensywności obrazów 21
2.1. Podstawowe przekształcenie intensywności . . . . . . . . . . . 22
2.2. Przekształcenia histogramu . . . . . . . . . . . . . . . . . . . 27
2.3. Tryby mieszania obrazów . . . . . . . . . . . . . . . . . . . . 33
3 Transformacje geometryczne obrazów 41
3.1. Matematyczna notacja transformacji . . . . . . . . . . . . . . 42
3.2. Implementacja transformacji afinicznej . . . . . . . . . . . . . 44
3.3. Interpolacja obrazu . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4. Uwagi optymalizacyjne . . . . . . . . . . . . . . . . . . . . . . 50
4 Modele kolorów 51
4.1. Model RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2. Model CMYK . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3. Model HSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4. Model CIE XYZ . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5. Modele CIE L*a*b* oraz CIE L*u*v* . . . . . . . . . . . . . 63
5 Filtracja cyfrowa obrazów 69
5.1. Filtracja splotowa . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.2. Filtracja nieliniowa . . . . . . . . . . . . . . . . . . . . . . . . 84
6 Przekształcenia morfologiczne obrazów 97
6.1. Podstawy morfologii . . . . . . . . . . . . . . . . . . . . . . . 99
vi SPIS TREŚCI
6.2. Algorytmy morfologiczne . . . . . . . . . . . . . . . . . . . . 104
6.3. Morfologia obrazów skali szarości . . . . . . . . . . . . . . . . 110
7 Przekształcenia w dziedzinie częstotliwości 115
7.1. Dyskretna Transformata Fouriera . . . . . . . . . . . . . . . . 116
7.2. Dyskretna Transformata Kosinusowa . . . . . . . . . . . . . . 118
7.3. Uwagi implementacyjne . . . . . . . . . . . . . . . . . . . . . 120
7.4. Wizualizacja transformaty Fouriera . . . . . . . . . . . . . . . 133
7.5. Filtracja splotowa . . . . . . . . . . . . . . . . . . . . . . . . . 134
7.6. Kompresja stratna . . . . . . . . . . . . . . . . . . . . . . . . 138
7.7. Watermarking . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Bibliografia 149
Skorowidz 153
Przedmowa
System wzrokowy człowieka jest niezmiernie skomplikowany, dostarcza
ponad 90% informacji potrzebnych mu do funkcjonowania w środowisku.
Otoczenie odwzorowywane jest w postaci obrazu. Scena zapisana w obrazie
jest przetwarzana, tak aby wyselekcjonować potrzebne człowiekowi infor-
macje. Tworzenie i analizowanie obrazów towarzyszy człowiekowi od same-
go początku historii człowieka myślącego. Stosunkowo od niedawna (lata
dwudzieste dwudziestego wieku) dostępna stała się nowa forma obrazu –
obrazy cyfrowe. Obrazy cyfrowe są specyficzną formą danych. W obrazach,
zarówno zarejestrowanych przez urządzenia do ich akwizycji jak i obrazach
postrzeganych bezpośrednio przez system wzrokowy człowieka, występuję
duża nadmiarowość. Istotne jest wyodrębnienie kluczowych cech zawartych
w przedstawianym obrazie. Podstawowym zadaniem technik przetwarzania
obrazów cyfrowych jest analiza obrazów, która prowadzi do uzyskania istot-
nych informacjiniezbędnych przy podejmowaniu decyzji. Klasycznym przy-
kładem użyteczności przetwarzania obrazów cyfrowych są techniki rozpo-
znawania linii papilarnych w celu identyfikacji osoby, jakie stosują służby
imigracyjne USA na swoich przejściach granicznych. W celu zapewnienia
bezpieczeństwa lotów prowadzona jest na lotniskach analiza obrazów pozy-
skanychzprześwietlaniabagaży podróżnych.Wdzisiejszych czasach trudno
także sobie wyobrazić diagnozy lekarskie bezwykonania i analizy cyfrowych
zdjęć medycznych (USG, CT, MRI). Są to wystarczające dowody, aby me-
tody przetwarzania i analizy obrazów cyfrowych uznać za kluczowe zadanie
współczesnej informatyki stosowanej.
Wprogramachnauczaniainformatykinawyższychuczelniach przedmio-
tyzwiązanezomawianiemmetodprzetwarzaniaobrazówcyfrowychzajmują
znaczące miejsce. Istnieje bogata oferta podręczników omawiających zagad-
nienia związane z prezentowaniem teoretycznych podstaw tworzenia oraz
przetwarzania obrazów cyfrowych. Oferta pozycji książkowych dotycząca
praktycznych aspektów przetwarzania obrazów cyfrowych jest dość uboga.
Niniejszy podręcznik przeznaczony jest dla studentów informatyki spe-
cjalizujących się w dziedzinie przetwarzania obrazów cyfrowych. Jego prze-
znaczeniem jest służenie pomocą studentom tworzącym na ćwiczeniach la-
viii Przedmowa
boratoryjnych oprogramowanie realizujące wybrane metody przetwarzania
i analizy obrazów cyfrowych. Podręcznik zakłada, że czytelnik jest zaznajo-
miony zwybranymiśrodowiskamiprogramistycznymi (C++/QT,Java, C#
lub MATLAB).
Podręcznik składa się z siedmiu części.
W części pierwszej przedstawiono wybrane środowiska programistyczne,
w kontekście przetwarzania obrazów. Omówiono zastosowanie pakietu QT
w połączeniu z językiem C++, języka Java oraz środowiska .NET i języka
C# a także omówiono skrótowo zalety pakietu MATLAB. W każdym opisie
pokazanoszkieletprogramuobsługującegowczytanieiprzetwarzanieobrazu
o wyspecyfikowanym formacie.
W rozdziale drugim zostały omówione zagadnienia związane z transfor-
macjami intensywności obrazów. Omówiono transformacje liniowe, logaryt-
miczneipotęgoweorazzagadnieniazwiązanezprzekształceniemhistogramu
obrazu.
Rozdział trzeci omawia zagadnienia związane z transformacjami geome-
trycznymiobrazówcyfrowych.Wtymrozdzialeomówionotakżezagadnienia
związane z interpolacją obrazów.
Rozdział czwarty poświęcony jest omówieniu modeli barw stosowanych
w grafice komputerowej i obrazach cyfrowych. Dokładnie omówiono modele
RGB, CMYK, HSL oraz podstawowe modele CIE.
Bardzo rozbudowany rozdział piaty poświęcony jest zagadnieniom zwią-
zanych ze stosowaniem filtrów cyfrowych w przetwarzaniu obrazów. Omó-
wiono filtrację wykorzystującą operację splotu, szczegółowo opisując prak-
tyczne aspekty stosowania filtrów rozmywających iwyostrzających. Kolejny
podrozdział omawia zagadnienia związane z filtrami nieliniowymi, koncen-
trując się na omówieniu filtrów statystycznych i filtrów adaptacyjnych.
W rozdziale szóstym omówiono podstawy przekształceń morfologicz-
nych, przedstawiając podstawowe elementy teorii. W części praktycznej
omówione zostały dobrze działające algorytmy morfologiczne.
Dość obszerny rozdział siódmy omawia zagadnienia związane z przetwa-
rzaniem obrazów cyfrowych w domenie częstotliwościowej. Omówiona jest
dyskretna transformata Fouriera i dyskretna transformata kosinusowa oraz
zastosowanie ich przykładowych implementacji. Przedstawiono praktycz-
ne zastosowanie transformat do obliczania szybkiego splotu oraz kompresji
stratnej obrazu. Omówiono także zagadnienie osadzania znaku wodnego w
obrazie cyfrowym.
Podręcznik powstał napodstawie dziesięcioletniego doświadczenia auto-
rów podręcznika w prowadzeniu zajęć z przedmiotów grafika komputerowa,
przetwarzanie obrazów cyfrowych i przetwarzanie obrazów medycznych na
kierunku Informatyka na Uniwersytecie Marii Curie-Skłodowskiej w Lubli-
nie.
Rozdział 1
Środowisko programistyczne
1.1. Cyfrowa reprezentacja obrazu . . . . . . . . . . . . . . 2
1.2. C++/Qt . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1. Źródła w sieci . . . . . . . . . . . . . . . . . . . 4
1.2.2. Kolor i obraz w Qt . . . . . . . . . . . . . . . . 4
1.2.3. Zarys aplikacji . . . . . . . . . . . . . . . . . . 7
1.3. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1. Klasy kolorui obrazu w Javie . . . . . . . . . . 9
1.3.2. Zarys aplikacji . . . . . . . . . . . . . . . . . . 11
1.4. C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.1. Klasy obrazu i koloru w .NET . . . . . . . . . . 13
1.4.2. Zarys aplikacji . . . . . . . . . . . . . . . . . . 16
1.5. MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 1. Środowisko programistyczne
1.1. Cyfrowa reprezentacja obrazu
Obrazcyfrowyjestreprezentowany logicznie przezdwuwymiarowątabli-
cę, macierz. Ilość wierszy i kolumn tej tablicy definiuje rozdzielczość obrazu
w pionie i w poziomie. Każdy element tej macierzy opisuje wartość poje-
dynczego punktu obrazu - piksela. Piksel jest opisywany pewną strukturą
reprezentującą poziom szarości lub kolor punktu. W zależności od wielko-
ści tej struktury mówimy o rozdzielczości bitowej obrazu lub o jego głębi
bitowej. W historii cyfrowego obrazu struktura punktu przyjmowała coraz
większe wielkości :
1) 1 bit – punkt mógł mieć tylko jedną z dwóch wartości, zazwyczaj inter-
pretowanych jako kolor biały lub czarny. Taki obraz nazywa się mono-
chromatycznym.
2) 8 bitów – daje możliwość reprezentacji 256 stanów punktu interpretowa-
nych jako skala szarości od czerni do bieli lub w trybie tzw. indeksowa-
nym, gdzie każda wartość reprezentowała z góry ustalony kolor wybrany
często ze znacznie większego zbioru i zebrany w tzw. tablicy LUT (Lo-
okUp Table).
3) 15 i 16 bitów – punkt jest reprezentowany w postaci złożenia 3 podsta-
wowych barw składowych addytywnego modelu barw RGB. Dla 15 bi-
towej reprezentacji istnieje 215 = 32768 możliwości, po 5 bitów na każdą
składową; dla reprezentacji 16 bitowej istnieje 216 = 65536 możliwości,
odpowiednio 5-6-5 bitów na każdą składową RGB.
4) 24i32bity –pełnareprezentacja wszystkich dostępnychkolorów. Każdy
bajt tej struktury zapisany w postaci liczby całkowitej reprezentuje stan
odpowiedniej składowej - czerwonej, zielonej i niebieskiej. Nieznacznym
rozwinięciem 24-bitowego opisu koloru jest tryb 32-bitowy (Rysunek 1.1
ilustruje logiczne ułożenie punktów w obrazie). Dodaje on dodatkowy
8-bitowy kanał zwany często kanałem alfa, wykorzystywany do repre-
zentacji przezroczystości, chociaż bardzo często po prostu ignorowany.
Jest to jednak często pewnien kompromis pomiędzy wydajnością a ilo-
ścią zajmowanej pamięci, bowiem struktura 4-bajtowa w 32-bitowych
procesorach jest znacznie lepiej segmentowalna od 3-bajtowej.
24-bitowa liczba opisująca kolor daje w sumie dosyć imponującą licz-
bę możliwych do zakodowania barw, bo aż 16777216, ale należy pamiętać,
że na każdą składową przypada wciąż tylko 256 możliwych stanów, co w
przypadku subtelnych przejść tonalnych może się okazać niewystarczające.
Warto pamiętać również, że kilka efektów i przekształceń zadanych obra-
zowi opisanemu liczbami całkowitymi może dosyć szybko doprowadzić do
degradacji informacji w nim zawartych. Doprowadziło to do wprowadzenia
reprezentacji zmiennoprzecinkowej pojedynczej precyzji lub nawet podwój-