Grupa IZ07IO1 Wyższa Szkoła Informatyki Stosowanej i Zarządzania WIT ALGORYTMY PRZETWARZANIA OBRAZÓW Projekt Aplikacja przetwarzająca obrazy z możliwością eksportu i importu do programu MS Excel. Wykonali: 1. Skolimowski Arkadiusz 2. Tomasiak Andrzej Prowadzący: dr inż. Marek Doros 1
Warszawa 2011/2012 2
Spis treści Instalacja... 4 Interface aplikacji... 5 Histogram... 6 Eksport i import... 7 Przestrzenie barw... 8 Operacje jednopunktowe... 9 Operacje sąsiedztwa... 11 Analizy... 13 Maska wygładzania... 13 Erozja... 15 Negacja... 17 3
Instalacja Wszystkie pliki potrzebne do działania programu znajdują się a archiwum rar. Program wymaga zainstalowania pakietu.net Framework w wersji 3.5. 4
Interface aplikacji Po uruchomieniu programu i otworzeniu obrazu po lewej stronie wyświetla się histogram analizowanego obrazu. Możemy także wyświetlić informację o wartościach składowych kolorów każdego piksela (Red, Green, Blue, Hue, Saturation, Value). Ryc. 1 Okno programu po wczytaniu obrazka. Wybierając z górnego menu Narzędzia>Zaznaczanie możemy zaznaczyć na obrazie wybrany fragment, który będzie podlegał dalszej analizie. 5
Histogram Program umożliwia przekształcenie obrazu do skali szarości przez wybranie z górnego menu Histogram>Skala szarości. Możliwe jest także wykonanie wygładzania histogramu czterema metodami: metoda średniej wartości dwóch sąsiednich elementów, metoda losowego przydzielania wartości w przedziale, metoda średniej sąsiedztwa, metoda własna, oparta o dystrybuantę, która określa liczbę punktów w obrazie o wartości składowej mniejszej lub równej i podzieloną przez liczbę wszystkich punktów w obrazie. Program umożliwia zapisania histogramu przez złapanie aktywnego histogramu i przeciągnięcia go pod tablicę przedstawiającą wartości liczbowe poszczególnych kanałów. Kliknięcie lewym przyciskiem myszy na zapisanym histogramie pozwala przywrócić obraz, który służył do jego utworzenia. 6
Eksport i import Program umożliwia eksport obrazów do programu Excel. W celu wykonania eksportu należy zaznaczyć wybrany obraz lub jego fragment i z górnego menu wybrać opcję Eksport. Pojawi się formularz eksportu obrazu. Ryc. 2 Formularz eksportu obrazu. Możemy wybrać czy chcemy eksportować obraz bezpośrednio do programu Excel, czy może do pliku *.csv. Możemy także wybrać zakres barw, które chcemy zapisać (skala szarości, kanały RGB, kanały HSB) oraz kanały które chcemy zachować. Program umożliwia także import obrazów z programu Excel. Należy wybrać z górnego menu opcję Import. Pojawi się formularz importu obrazu. Ryc. 3 Formularz importu obrazu. Należy wybrać czy chcemy importować obraz z pliku *.csv, czy z otwartego arkusza programu Excel. Musimy także określić w jaki sposób zapisane były kolory w pliku oraz, który arkusz odpowiada określonemu kanałowi. 7
Przestrzenie barw Program domyślnie pobiera wartości RGB danego piksela. Stosowana jest metoda GetPixel(int x, int y) z przestrzeni nazw System.Drawing. Przeliczenie wartości koloru z kanałów RGB na skalę szarości polega na wyciągnięciu średniej arytmetycznej z trzech składowych barw. Ponieważ w miejsce trzech kanałów zapisywany jest jeden nie ma możliwości odtworzenia pierwotnych kolorów obrazu. Kolejne eksporty do skali szarości nie powodują dalszych zmian obrazu. Przeliczenie wartości koloru z kanałów RGB na kanały HSB także jest operacją niemożliwą do odwrócenia. Prowadzi do nieodwracalnych zmian na obrazie. Kolejne eksporty do przestrzeni HSB nie prowadzą do dalszych zmian. Ryc. 4 Obraz i jego histogram w przestrzeni barw RGB, oraz po eksporcie do HSB. 8
Operacje jednopunktowe Do operacji jednopunktowych, możliwych do zrealizowanie programem należą operacje: negacji, posteryzacji, progowania, zmiany jasności, zmiany kontrastu, zmiany gamma, uniwersalny operator jednopunktowy, dodawanie, odejmowanie, mnożenie, logiczny AND, logiczny OR, logiczny XOR. Algorytm negacji odejmuje od wartości 255 wartość badanego piksela. Algorytm posteryzacji redukuje liczbę występujących na obrazie barw do określonej liczby poziomów. Algorytm progowania zmienia wartości RGB danego piksela na 0, jeśli są poniżej zadanego progu i na 255 jeśli są równe lub większe od danego progu. Algorytm operacji zmiany jasności dodaje do każdej ze składowych RGB pewną stałą wartość, przy założenie, że wartość wynikowa musi się mieścić w przedziale od 0 do 255. Algorytm operacji zmiany kontrastu zmienia kontrast w zależności od współczynnika. Zwiększanie kontrastu obrazu powoduje systematyczne rozszerzanie zakresu histogramu względem środka zakresu składowej. Zmniejszanie kontrastu prowadzi natomiast do zwężania histogramu obrazu. Algorytm operacji zmiany współczynnika gamma sprowadza się do wykonania przekształcenia obrazu przy pomocy odpowiednio przygotowanej tablicy LUT. Współczynniki w takiej tablicy wyznaczane są wg następującego wzoru: LUT(i) = i1/γ Uniwersalny operator jednopunktowy pozwala użytkownikowi na wprowadzenie dowolnych wartości do tablicy LUT. Służy do tego prosty interface graficzny. 9
Ryc. 5 Inerface uniwersalnego operatora jednopunktowego. Punkty otrzymane w wyniku użycia kontrolki są wpisywane do tablicy LUT po czym uzupełniane są pozostałe pozycje przy pomocy interpolacji pomiędzy punktami otrzymanymi z kontrolki. Tak przygotowana tablica jest wykorzystywana do przetworzenia obrazu. Dodatkowo zrealizowane zostały operatory dodawania, odejmowania, mnożenia, sumy logicznej, ilorazu logicznego oraz alternatywy wykluczającej. Algorytm wykonujący powyższe operacje opiera się na prostych działaniach matematycznych (dodawanie, odejmowanie, mnożenie) oraz logicznych operatorach ( and, or, xor). 10
Operacje sąsiedztwa Do operacji sąsiedztwa, możliwych do zrealizowanie programem należą operacje: zastosowania maski wygładzania i wyostrzania, mediany 3x3, 5x5 i 7x7, erozji, dylatacji, otwarcia, zamknięcia. Algorytm zastosowania maski wygładzania pobiera za pomocą kontrolki wartości maski (aby zastosować maskę wygładzającą należy wpisać 1 w środkowy kwadrat maski wyostrzającej). Ryc. 6 Kontrolka wyboru maski wygładzającej. Algorytm oblicza sumę liczb w masce k, mnoży wartość każdego piksela przez odpowiadającą mu wartość z maski. Obliczana jest suma iloczynów, która dzielona jest przez obliczoną wcześniej wartość k. Algorytm zastosowania maski wyostrzającej pobiera za pomocą kontrolki wartości maski (aby zastosować maskę wyostrzającą należy wpisać 1 w środkowy kwadrat maski wygłądzającej). 11
Ryc. 7 Kontrolka wyboru maski wyostrzającej. Algorytm mnoży wartość każdego piksela przez odpowiadającą mu wartość z maski i oblicza sumę iloczynów. Algorytm mediany 3x3, 5x5 i 7x7 pobiera wartości pikseli z wybranego sąsiedztwa i układa je w kolejności. Następnie wybierana jest wartość środkowa i wstawiana jako nowa wartość piksela. Algorytm erozji opiera się na wybraniu piksela o wartości najmniejszej i wstawieniu go w miejsce środkowego. Algorytm dylatacji opiera się na wybraniu piksela o wartości największej i wstawieniu go w miejsce środkowego. Algorytm otwarcia opiera się na wykonaniu operacji erozji, a nastepnie na tak przetworzonym obrazie operacji dylatacji. Algorytm zamknięcia opiera się na wykonaniu operacji dylatacji, a nastepnie na tak przetworzonym obrazie operacji erozji. Wszystkie powyższe algorytmy można przeprowadzić dla dwóch przypadków elementu strukturalnego, czyli rombu (czterosąsiedztwo) i kwadratu (ośmiosąsiedztwo). 12
Analizy Maska wygładzania Z obrazu cherry.bmp wycięto kawałek o wymiarach 44 na 38 pikseli. Pokazane są także wartości kanałów RGB części analizowanego wycinka. R G B 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 251 255 255 255 255 255 255 253 249 255 255 255 255 255 254 250 246 255 255 255 255 254 252 248 245 255 255 254 254 252 249 245 244 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 251 255 255 255 255 255 255 253 249 255 255 255 255 255 254 250 247 255 255 255 255 254 252 248 245 255 255 254 254 252 249 245 244 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 251 255 255 255 255 255 255 253 249 255 255 255 255 255 254 250 246 255 255 255 255 254 252 248 245 255 255 254 254 252 249 245 244 Ryc. 8 Obraz oryginalny. Obraz poddano obróbce w programie. Zastosowano maskę wygładzającą: 1 2 1 2 4 2 1 2 1 Wybrano opcję kopiowania skrajnych kolumn i wierszy obrazu. Efektem jest wygładzenie ostrości krawędzi obrazu. 13
R G B 255 255 255 255 255 255 254 253 255 255 255 255 255 255 254 252 255 255 255 255 255 254 253 251 255 255 255 255 254 254 252 249 255 255 255 254 254 253 250 247 255 254 254 254 253 251 248 245 254 254 254 253 251 248 245 244 255 255 255 255 255 255 254 253 255 255 255 255 255 255 254 252 255 255 255 255 255 254 253 251 255 255 255 255 254 254 252 249 255 255 255 254 254 253 250 247 255 254 254 254 253 251 248 245 254 254 254 253 251 248 245 244 255 255 255 255 255 255 254 253 255 255 255 255 255 255 254 252 255 255 255 255 255 254 253 251 255 255 255 255 254 254 252 249 255 255 255 254 254 253 250 247 255 254 254 254 253 251 248 245 254 254 254 253 251 248 245 244 Ryc. 9 Obraz po przetworzeniu w programie. Wycinek obrazu wyeksportowano do programu Microsoft Excel i skopiowano skrajne wiersze i kolumny. Następnie obraz poddano obróbce. Dla komórki B2 zastosowano formułę, którą następnie rozciągnięto na wszystkie komórki obrazu: ZAOKR.DO.CAŁK((A1+C1+A3+C3+2*(B1+C2+B3+A2)+4*B2)/16). Formuła ta odpowiada masce zastosowanej w programie. R G B 255 255 255 255 255 255 254 253 255 255 255 255 255 255 254 253 255 255 255 255 255 255 254 253 255 255 255 255 255 255 254 252 255 255 255 255 255 254 253 251 255 255 255 255 254 254 252 249 255 255 255 254 254 253 250 247 255 254 254 254 253 251 248 245 254 254 254 253 251 248 245 244 255 255 255 255 255 255 254 252 255 255 255 255 255 254 253 251 255 255 255 255 254 254 252 249 255 255 255 254 254 253 250 247 255 254 254 254 253 251 248 245 254 254 254 253 251 248 245 244 255 255 255 255 255 255 254 252 255 255 255 255 255 254 253 251 255 255 255 255 254 254 252 249 255 255 255 254 254 253 250 247 255 254 254 254 253 251 248 245 254 254 254 253 251 248 245 244 14
Ryc. 10 Obraz po przetworzeniu w Excelu. Efekty uzyskane przy pomocy programu, jak i przy pomocy Excela są takie same. Równiej histogramy są takie same. Obra programy dokonują takich samych obliczeń i zaokrąglają liczby w ten sam sposób. Erozja Obraz poddano operacji erozji/romb. Najpierw jednak należało zmienić obraz na szaroodcieniowy (Histogram>Skala szarości). Skala szarości 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 255 255 255 255 255 255 255 251 255 255 255 255 255 255 253 249 255 255 255 255 255 254 250 247 255 255 255 255 254 252 248 245 255 255 254 254 252 249 245 244 Ryc. 11 Obraz oryginalny w skali szarości. Następnie wykonano operację: Sąsiedztwa>Erozja>Romb. 15
Skala szarości 255 255 255 255 255 255 255 251 255 255 255 255 255 255 254 249 255 255 255 255 255 255 251 248 255 255 255 255 255 253 249 247 255 255 255 255 254 250 247 245 255 255 254 254 252 248 245 244 254 254 253 252 249 245 243 243 Ryc. 12 Obraz po przetworzeniu w programie. Obraz poddano także obróbce w Excelu. Zastosowano formułę MIN(B1;A2;B2;C2;B3). Skala szarości 255 255 255 255 255 255 255 251 255 255 255 255 255 255 254 249 255 255 255 255 255 255 251 248 255 255 255 255 255 253 249 247 255 255 255 255 254 250 247 245 255 255 254 254 252 248 245 244 254 254 253 252 249 245 243 243 Ryc. 13 Obraz po przetworzeniu w Excelu. 16
Negacja Ponownie uzyskano takie same efekty jak za pomocą programu. Z operacji jednopunktowych wybrano operację negacji. Operację wykonano w programie. R G B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 2 6 0 0 0 0 0 1 5 9 0 0 0 0 1 3 7 10 0 0 1 1 3 6 10 11 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 2 6 0 0 0 0 0 1 5 8 0 0 0 0 1 3 7 10 0 0 1 1 3 6 10 11 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 2 6 0 0 0 0 0 1 5 9 0 0 0 0 1 3 7 10 0 0 1 1 3 6 10 11 Ryc. 14 Obraz po przetworzeniu w programie. Tą samą operację wykonano w Excelu. Użyto formuły 255-B2. 17
R G B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 2 6 0 0 0 0 0 1 5 9 0 0 0 0 1 3 7 10 0 0 1 1 3 6 10 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 2 6 0 0 0 0 0 1 5 8 0 0 0 0 1 3 7 10 0 0 1 1 3 6 10 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 2 6 0 0 0 0 0 1 5 9 0 0 0 0 1 3 7 10 0 0 1 1 3 6 10 11 Ryc. 15 Obraz po przetworzeniu w Excelu. Ponownie uzyskano takie same rezultaty jak w przypadku programu. 18