dr in. Artur Bernat, KMP, WM., PKos., wykład wstpny V (rodowisko Matlab), strona: 1 Wykład wstpny (V)<< zrealizowany w 2006, przedrostki-nazwy zretuszowane w Acrobat >> z Podstaw Przetwarzania Informacji (rodowisko Matlab 6.x 7.x, przykłady wizualizacji) W ramach serii wstpnych wykładów dotyczcych prezentacji moliwoci dokonywania przekształce na danych obrazów 2D w Image Processing Toolbox, postanowiono przedstawi pewne wstpne przykłady zastosowa omówionej grupy funkcji, jak równie specyficznej składni polece w manipulacji na zawartoci danych 1D/2D/3D. Na pocztek, postanowiono przedstawi przykładow posta kodu słucego w generacji fraktalnej obiektu przypominajcego kształtem li paproci (ang. fern): Rys1Przykładowy kod fern.m, generacji obiektu fraktalnego formie podobnej do licia paproci Specyficznym rozwizaniem powyszej funkcji generacji (rys.1) jest zastosowanie generacji zbioru punktów, przynalenych do tworzonego iteracyjnego obiektu, w oparciu o indeksowan posta map mapsa oraz mapsb. Mapy te ulegaj nastpnie złoeniu w uyciem polecenia [], zarówno w czasie tworzenia animacji z procesu tworzenia obiektu fraktalnego, jak i w czasie ostatecznej generacji mapy im_final, po za globaln ptl iteracyjn for. Takie rozwizanie to moliwo bardziej elastycznego wykorzystania, definiowania, jak i
mgr in. Artur Bernat, KMP, WM., PKos., wykład wstpny V (rodowisko Matlab), strona: 2 przedefiniowywania w locie palety kolorów. Alternatywne rozwizanie, jest trudniejsze w implementacji, bo dla przykładu oznacza konieczno obsługi danych w ich reprezentacji RGB lub HSV. Sam algorytm generacji obiektu fraktalnego, mimo, e nazywany jest algorytmem deterministycznej generacji, to z pewnych wzgldów bdzie miał zapewniony losowy zestaw warunków pocztkowych. Wdrówka punktu po płaszczynie XY, jest tutaj opisywana szczególnie prost liniow kombinacj czynników i wartoci biecych współrzdnych: xi+ 1 = A* xi + B * yi + E (1) yi+ 1 = C * xi + D * yi + F Rónica w wartociach współczynników A..F, to inny równie powszechnie znany z sylwetki generowanego obiektu, algorytm w nastpujcej implementacji: Rys2Przykładowy kod drag.m, generacji obiektu sylwetki smoka Na pierwszy rzut oka, powysza implementacja (rys.2) posiada dwukrotnie krótsze(!) w licznoci swoich pod-elementów, wektory A...F. Historia powstania przepisu na konkretne wartoci losowo dobieranych współczynników w zawartoci wektorów A..F, jest raczej nieznana (przynajmniej powszechnie). Wane jest to, e z reguły, jakiekolwiek losowo, czy
mgr in. Artur Bernat, KMP, WM., PKos., wykład wstpny V (rodowisko Matlab), strona: 3 eksperymentalnie wprowadzane zmiany, powoduj zupełn deterioracj albo wrcz rozbieno zupełnie stabilnych algorytmów opartych o zaleno (1). W kocu liczno podelementów wektorów A..F ustawiona na 3, ze specyficzn naprzemienn list współczynników, to moliwo generacji słynnego trójkta Sierpiskiego: Rys3Przykładowy kod triangle.m, generacji trójkta Sierpiskiego We wszystkich powyszych implementacjach, zastosowano ochron przed moliwoci wykroczenia konturu generowanego obiektu fraktalnego po za wymiar fizyczny map mapsa i mapsb. Proste przemnoenie wartoci nowo-wyliczanej współrzdnej (ujemnej/dodatniej w znaku) przez wyznaczany znak współrzdnej to moliwo wykrelania w zakresie nieujemnych i porednio niezerowych wartoci współrzdnych (s to podwyraenia typu: 1+sign(X).*X oraz 1+sign(Y).*Y). Zasadniczo, zaley nam na czysto losowym lub prawie losowym starcie algorytmu. W tym celu mona by na przykład zaimplementowa nadrzdn funkcj wywoła pod-sesji kolejnych generacji obiektów fraktalnych, o stosunkowo małej licznoci punktów generowanych, lecz równie o losowym punkcie startu generowanych współrzdnych x,y.
mgr in. Artur Bernat, KMP, WM., PKos., wykład wstpny V (rodowisko Matlab), strona: 4 W tym celu zaimplementowano skrypt ferns.m, który naprzemiennie wywołuje to funkcj w skrypcie fern_rand.m, to funkcj w skrypcie fern_rand_jet.m: Rys4Przykładowy kod nadrzdnych wywoła ferns.m, generacji licia paproci Kod implementacji w skrypcie fern_rand.m zasadniczo nie róni si od tego, przedstawionego na rys.1. Wartoci startowe s dobierane losowo z zakresu [1,17] oraz [1,23] odpowiednio. Ze wzgldu na losowy wybór, w kadej z iteracji pod-elementów z zawartoci wektorów A..F, moliwe jest w pewnym sensie dopełnienie, tych peryferyjnych elementów licia paproci, których by moe nie udałoby si pozyska, przy nawet bardzo poszerzonej liczbie iteracji, w jednej globalnej sesji generacji, z uyciem skryptu fern.m. Wywołanie funkcji drugiego skryptu fern_rand_jet.m, to pewnego rodzaju algorytmiczna spekulacja/koloryzacja/stylizacja powierzchni licia paproci z uyciem predefiniowanej/wbudowanej w rodowisko Matlab (v6.5 i v7.1) palety kolorów o nazwie jet. Ogólnie, barwy zimne na wszelkiego rodzaju wykresach 3D, wykorzystuje si tutaj w oznaczaniu punktów niej połoonych, a barwy cieplejsze tej palety kolorów, to narzdzie w oznaczaniu punktów wyej połoonych według schematu kolorystycznego palety JET. W takim razie (rys.6b) postanowiono 64-elementow palet JET, podzieli na dwoje (31- elementów) i obdzieli jej zawartoci kolorystyczn powierzchni dwóch lici paproci stosownie do zmiany współrzdnej Y. W efekcie kocowym w skrypcie nadrzdnym nastpuje swoistego rodzaju domieszkowywanie składowych RGB obrazów z wywoła skryptów podrzdnych.
mgr in. Artur Bernat, KMP, WM., PKos., wykład wstpny V (rodowisko Matlab), strona: 5 Rys5 Przykładowy kod poddrzdnych wywoła ferns_rand.m, generacji licia paproci Kod przedstawiony na rys.6 jest nieco poszerzony o obliczenia biecego koloru palety JET, przynalenego danemu przedziałowi wysokoci na obrazie generowanym: Rys6A Paleta JET domieszkowana inn okrojon palet kolorów skutkuje nieoczekiwanie załamaniem si cigłoci barw po prawej stronie
mgr in. Artur Bernat, KMP, WM., PKos., wykład wstpny V (rodowisko Matlab), strona: 6 Rys6B Przykładowy kod poddrzdnych wywoła ferns_rand_jet.m, generacji licia paproci Podsumowujc, t cz biecego wykładu (wykład V), mona powiedzie, e nie istnieje prosty przepis na przejcie od praktyki programistycznej w jzyku C/C++, na sposób programowania, obsługi zmiennych i cało specyfiki pracy w rodowisku Matlab. Równie pierwsze, wstpne przewiadczenie o przydatnoci tej i czy innej funkcji w wytyczonym zadaniu, z reguły wymaga weryfikacji. Równie w tym przypadku, to jest tworzenia specyficznej mieszaniny barw danych uzyskanych z dwóch rónych funkcji generowania tego samego obiektu fraktalnego, lecz z rónicymi si paletami barw, z pozoru wystarczyłoby wywołanie funkcji imadd, a treci dwóch obrazów zostałyby zsumowane. Praktyka jednak, czasami kae wkracza samemu w realizacj drobnych zada pomocniczych wzgldem zadania głównego. Nawizujc do treci wykładów IVA/B, postanowiono przedstawi poniej skrypt demonstrujcy postpujc degradacj zbioru informacji oryginalnego obrazu intensywnoci luminancji, jako funkcj zawanego zbioru współczynników prostej transformaty kosinusowej. Zazwyczaj, to czy inne demo w formie interaktywnej moe posłuy w celach dydaktycznych. Tym razem jednak, poniej przedstawiona tre skryptu dctmovie, tworzy dwie animacje zapisywane na dysku twardym. Jedna obrazuje zmienn jako obrazu po
mgr in. Artur Bernat, KMP, WM., PKos., wykład wstpny V (rodowisko Matlab), strona: 7 wykonanym prostym przekształceniu w oparciu o:a) transformat kosinusow (kompresja stratna), b)redukcj zbioru współczynników, c)transformat odwrotn kosinusow: Rys7 Przykładowy kod dctmovie.m, składnia filmu obrazujcego postpujc degradacj treci obrazu Druga animacja to mapa zbinaryzowanych współczynników transformaty kosinusowej, obrazujca udział wybranych współczynników transformaty w tworzeniu obrazu w realizacji odwrotnej transformacji kosinusowej. Rys 8 Pitnacie klatek animacji w formie pod-wykresów jako wynik wykonania skryptu o treci z rysunku 7 Na rys.8, powyej pokazano degradacj treci pewnego obrazu intensywnoci luminacji z górn granic wartoci współczynników transformaty kosinusowej ustawion na 600, przy rozdzielczoci obrazu rzdu 300x330 pikseli.
mgr in. Artur Bernat, KMP, WM., PKos., wykład wstpny V (rodowisko Matlab), strona: 8 Rys 9 Pitnacie klatek animacji adekwatnych w swojej treci do danych rekonstruowanego obrazu pierwotnej trec (na rys.8 powyej)i, które przedstawiaj w formie jasnych pikseli lokalizacj współczynników transformaty kosinusowej, wyselekcjonowanych do dalszego przetwarzania. Jak wida z porównania postaci wyników na rysunkach 8 i 9 treci obrazów rekonstruowanych oraz zakres licznoci współczynników wyselekcjonowanych do dalszego przetwarzania, odpowiednio), mona stwierdzi potencjalnie wysok wydajno całego procesu kompresji stratnej, któr mona by rozbudowa w oparciu o zademonstrowany cig wywoła funkcji zaimplementowanych w rodowisku Matlab.Z jednej strony, analizowany pierwszy rzd otrzymanych obrazów z rys.8 nie wskazuje na drastyczne obnienie jakoci obrazu oryginalnego. Jednoczenie, z drugiej strony, zakres współczynników prostej transformaty kosinusowej, moe by znacznie zawony w selekcji.analogicznie, poprzez wizualizacj z formie animacji, postanowiono przedstawi pewne potencjalne moliwoci wykorzystania w przetwarzaniu treci obrazów 2D prostej i odwrotnej szybkiej transformaty Fouriera:(jakkolwiek bez wydruku wyników kocowych): Rys10 Wizualizacja wyników wywołania funkcji szybkiej transformaty Fouriera