dr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 1 Wykład wstpny (IV << zrealizowany w 006, przedrostki-nazwy zretuszowane w crobat >> z Podstaw Przetwarzania Informacji (na danych obrazów D w rodowisku Matlab 6.x 7.x Indeksacja danych obrazów kolorowych D, zastosowanie, praktyka Na poprzednim wykładzie zaznaczono istotn rónic pomidzy prost reprezentacj danych obrazu kolorowego D w formacie 4-bitowym, a postaci danych obrazu o zindeksowanej palecie kolorów. by zindeksowa dane obrazu kolorowego D naley wykorzysta polecenie rgbind z jednoczesn deklaracj zmiennej danych obrazu zindeksowanego powiedzmy o nazwie image_indeks oraz palety kolorów o nazwie przykładowej paleta. Nadto, jako argument wejciowy naley poda liczb docelow kolorów palety obrazy indeksowanego, poniewa nastpuje tu pewnego rodzaju optymalizacja w objtoci danych reprezentujcych informacj w treci obrazu D: >> image=imread('autumn.tif'; >> [image_indeks,paleta]=rgbind(image,130; >> whos image* paleta Name Size ytes Class image 06x345x3 1310 uint8 array image_indeks 06x345 71070 uint8 array paleta 130x3 310 double array Grand total is 84670 elements using 87400 bytes W powyszym przykładzie zredukowano liczb kolorów w indeksacji danych obrazu D do 130. Dane D obrazu kolorowego formatu 4-bitów o zajtoci ok. 13k zostały zredukowane trzykrotnie w zajtoci pamici, cała wynikowa paleta nowo-zdefiniowanych kolorów zajmuje około 3k. W prostym przykładzie redukcji licznoci kolorów palety wynikowej w indeksacji danych napisano pewien skrypt: Rys 1 Skrypt redukcji stopniowej licznoci palety kolorów poprzez wartoci 17,64,...1. Poniej podano posta obrazu reprezentowanego jedynie dla ostatnich 3 obrazów. Rys Postacie obrazów D przy 4, oraz 1-elementowej palecie kolorów.
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: Z indeksacj kolorów w zastosowaniach inynierskich rodowiska Matlab czsto wykorzystuje si łczne wywołanie funkcji find, cho jej funkcjonalno wykracza poza ramy stosowalnoci Image Processing Toolbox: Rys 3 Skrypt konwersji kolorowej mapy danych 3D na ich reprezentacj głbokociow. Gdyby na przykład zachodziła potrzeba okrelenia głbokoci punktów na mapie 3D w kolorowej reprezentacji danych, to funkcja find mogłaby kojarzy odpowiednie głbokoci z paska skali głbokoci z indeksem odpowiedniego koloru palety kolorowej mapy danych 3D. W powyszym skrypcie, w linii 10 (liczc wszystkie linie łcznie z linijkami komentarzy pewien pasek skali głbokoci mapy 3D o nazwie sc został zindeksowany ze swobodn, tj. domyln liczb kolorów indeksacji. Uzyskano posta zindeksowan mapy paska głbokoci scind, oraz co najwaniejsze, palet indeksów kolorów o nazwie scmap. Nastpnie, w linii 1 dokonano indeksacji właciwej mapy kolorowej głbokoci map z uyciem wczeniej uzyskanej palety indeksów scmap (zabieg ten składniowo i funkcjonalnie jest jeszcze niemoliwy do przeprowadzenia na bazie rodowiska Matlab 6.1. Na tym etapie, naley przeanalizowa zawartoci uzyskanej w tej sposób zindeksowanej mapy głbokoci 3D tpgrind, pod ktem zgodnoci numeru indeksu z numerem indeksu na pasku skali głbokoci. Reszta zabiegów w powyszym skrypcie dotyczy przypadków wystpowania danych pustych w zmiennych przestrzeni roboczej, jak równie drobnego zagadnienia skalowania rozpitoci w pikselach indeksowanego paska skali do rzeczywistej rozpitoci danych na mapie 3D. Wizualizacja zjawisk falowych w ich modelowaniu D/3D Zasadniczym tematem biecego wykładu jest omówienie technik i metod przekształce na obrazach D, wraz z nieco bardziej zaawansowan wizualizacj, w tym równie animacj modelowanych prostych zjawisk falowych. dzie to próba implementacji modelu fali poprzecznej o stałej wartoci prdkoci promieniowej v jej propagacji (tj. jej rozchodzenia si w sposób cigły promieniowo i izotropowo od punktowego ródła wychyle pionowych sinusoidalnych. Jednoczenie, bdzie to ta sama warto prdkoci v rozchodzenia si czoła fali sinusoidalnej w pocztkowych etapach wizualizacji modelowanego zjawiska w oparciu o animacj.
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 3 Niech amplituda Y wychyle pionowych dla dowolnej z lokalizacji (x, y na płaszczynie XY pierwszej wiartki układu kartezjaskiego współrzdnych o pocztku w punkcie (x 0,y 0 przyjmie posta: (,, sin( Y x y t = ( x / period x0 + ( y / period y0 + ( v t (1 Przebieg zaburzenia z pierwszej wiartki na płaszczynie XY zostaje nastpnie odwzorowany przez odbicie w symetrii liniowej, punktowej oraz liniowej w II, III oraz IV wiartce, odpowiednio. Nie jest to oczywicie klasyczna formuła rozchodzenia si fali cigłej sinusoidalnej (dla przypadku dwu-wymiarowego o poprzecznym wychyleniu chwilowym wzgldem kierunku jej rozchodzenia si oraz o stałej promieniowej prdkoci rozchodzenia. Jednake, jak si wkrótce okae, dla celów czysto implementacyjnych jest to do pouczajcy przykład, dajcy emulacj w pewnym stopniu zjawiska tłumienia, spowolniania i w konsekwencji wydłuania si w praktyce długoci generowanej fali. Rys 4 Skrypt animuj_plusk_vel.m dla pojedynczej cigłej fali sinusoidalnej
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 4 Powyszy skrypt animuj_plusk_vel.m do dobrze emuluje rozchodzenie si fali z pojedynczego punktowego ródła sinusoidalnych zaburze. Moliwa jest równie emulacja zjawiska rozchodzenia si fali od dwóch punktowych ródeł sinusoidalnych zaburze powierzchni, a znajdujcych si w niedalekiej odległoci od siebie. W takim razie na kolejnych klatkach generowanej w modelowaniu animacji zauway bdzie mona zjawisko interferencji, tj. wzajemnego wyciszania si i wzmacniania si chwilowych amplitud zaburze na powierzchni orodka płynnego (według skryptu uruchomieniowego animuj_plusk_velx.m, który został zdwojony w swoich funkcjach stosownie do skryptu powyej: Rys 5 Rezultaty wykonania skryptu animuj_plusk_velx.m generacji fali sinusoidalnej rozchodzcej si promieniowo, w sposób cigły z dwóch punktowych ródeł drga. Długoci fali wynosz i 3 jednostki, prdkoci rozchodzenia si fal wynosz:1.5 i 0.7 jednostki na jedn klatk animacji. Rozstp poziomy pomidzy ródłami to 15 jednostek przy wymiarach wzbudzanej powierzchni fal 100x100. Cało animacji zawiera 30 klatek. Na rysunku zaprezentowano wycig jedynie co pitej klatki poczynajc od pitej włcznie. Widoczne pewne przekłamania algorytmu z prawej strony zawartoci obrazów (,, [sin( Y x y t = ( x / period x0 + ( y / period y0 + ( v t ( + sin( ( x / period x + ( y / period y + ( v t 0 0 Po dłuszym namyle zdecydowano si na korekcj powyszych zalenoci ((1 oraz (, celem uzyskania efektu w modelowaniu generacji fali sinusoidalnej w oparciu o zalenoi: (,, [sin( Y x y t = ( x / period x0 + ( y / period y0 + v t] (3 oraz (,, [sin( Y x y t = ( x / period x0 + ( y / period y0 + v t] (4 + [sin( ( x / period x + ( y / period y 0 0 + v W tym przypadku przebieg chwilowych zmian na wzbudzanej powierzchni 3D jest bardziej wiarygodny dla oka, zwłaszcza przy dwóch ródłach cigłej generacji fal. Poniej przykład wizualizacji opartej na animacji 90-klatkowej z przestrzeni 100x100 punktów powierzchni 3D. Odstp w poziomie pomidzy dwoma ródłami fali sinusoidalnej wynosi 5 jednostek. Długoci fal s zgodne z tymi podanymi powyej na rysunku 5 tj. i 3 jednostki odpowiednio, przy prdkociach rozchodzenia si tych fal wynoszcych odpowiednio 1.5 i 0.7. Jest to oczywicie warunek zjawiska nadzwyczajnego, zakładajcy róne prdkoci V i V propagacji fal w jednorodnym rodowisku, tylko dlatego, e pochodz one z dwóch rónych ródeł! Nie mniej umiarkowanie prosty skrypt (taki jak plusk_velx.m, poniej umoliwia modelowanie zjawisk z załoenia w przyrodzie niemoliwych. t] ]
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 5 Rys 6 Skrypt plusk_velx.m dla cigłej fali sinusoidalnej generowanej z dwóch ródeł punktowych. Istnieje moliwo definiowania niezalenie długoci fal oraz ich prdkoci propagacji dla ródła i.
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 6 Rys 7 Rezultaty wykonania skryptu plusk_velx.m generacji cigłej fali sinusoidalnej rozchodzcej si promieniowo ze stał prdkoci, z dwóch punktowych ródeł drga. Długoci fali wynosz i 3 jednostki, prdkoci rozchodzenia si fal wynosz:1.5 i 0.7 jednostki na jedn klatk animacji. Rozstp poziomy pomidzy ródłami to 5 jednostek przy wymiarach wzbudzanej powierzchni 100x100. Cało animacji zawiera 90 klatek. Na rysunku jedynie zaprezentowano 10 klatek W realnych zastosowaniach modelowania propagacji fal wzbudzanych w orodku jednorodnym, nadto niezbdna jest implementacja rozchodzcego si czoła fali, któr zaczto wzbudza w orodku: _ radial dist = ( x / period x0 + ( y / period y0 (5 Y ( x, y, t = [(1 sign( v t] [sin( v t] Prdko propagacji czoła fali v jest tutaj w implementacji tosama z prdkoci cigłej propagacji fali. Rys 8 Rezultaty wykonania skryptu plusk_velfront.m generacji fali sinusoidalnej rozchodzcej si promieniowo ze stał prdkoci, z pojedynczego ródła drga. W zalenoci (5 nie podano opisu czasowego amplitudy w oparciu o uskok Heaviside a, lecz posłuono si analogicznym w działaniu wyraeniu zbudowanym w oparciu o wywołanie funkcji sign.
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 7 Rys 9 Skrypt plusk_velfront.m dla fali sinusoidalnej z czołem, generowanej z pojedynczego ródła
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 8 Zaimplementowano równie propagacj fali z dwóch ródeł drga z czołem fali (plusk_velxfront.m: Rys 10 Skrypt plusk_velxfront.m dla fali sinusoidalnej z czołem, generowanej z dwóch ródeł
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 9 Rys 11 Rezultaty wykonania skryptu plusk_velxfront.m generacji fali sinusoidalnej rozchodzcej si promieniowo ze stał prdkoci, z dwóch ródeł drga, z czołami fal. Zaleno zaimplementowana w tym przypadku jest przedstawiona poniej ( x / period x ( x / period x Y ( x, y, t = [(1 sign( + = = [(1 sign( + ( y / period y 0 0 + ( y / period y 0 0 v t] [sin( v v t] [sin( t] v t] Ostatecznie, zamodelowano przebieg fali z pierwszym i drugim czołem fali generowanym na pocztku animacji oraz w dwóch trzecich jej rozcigłoci, z wygaszeniem pierwszego cigu fal w jednej trzeciej rozcigłoci całej animacji: (5 Rys 1 Rezultaty wykonania skryptu plusk_velxfrontd.m generacji fali sinusoidalnej rozchodzcej si promieniowo ze stał prdkoci, z dwóch ródeł drga, ze zdwojonymi w czasie czołami fal. nimacja składajca si z 90 klatek została tutaj przedstawiona schematycznie z wycigiem rednio co 5 klatki. ( x / period x ( x / period x Y ( x, y, t = [(1 sign( + = = [(1 sign( + ( y / period y 0 0 + ( y / period y 0 0 v t] [sin( v v t] [sin( t] v t] (6
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 10 Rys 13 Skrypt plusk_velxfrondt.m dla fali sinusoidalnej, generowanej z dwóch ródeł, ze zdwojonymi w czasie czołami fal Opis funkcji czasowego sterowania amplitud przebiegów sinusoidalnych nie wymaga tutaj w tym wykładzie zapisu formalnego. Grupa funkcji wyodrbniania cech w zawartoci obrazów D Obecnie, przebieg ostatni fal sinusoidalnych utrwalony na szeregu obrazach D w formie animacji, posłuy w wizualizacji moliwoci zastosowa szeregu funkcji z Image Processing Toolbox. W grupie przekształce podstawowych omówione zostan midzy innymi funkcje detekcji krawdzi, rozmycia obrazu, uredniania, binaryzacji oraz etykietowania, tj. oznaczania spójnych podobszarów danych na mapie logicznej. W tym celu we wikszoci poniszych skryptów animacja zadana, bdzie rozkładana na pojedyncze obrazy z uyciem funkcji frameim oraz poddawana przekształceniom, celem złoenia ponownej animacji z przekształcon zawartoci obrazów D.
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 11 Rys 14 Skrypt graymoviebw.m binaryzacji cigu obrazów D z zadanej animacji Rys 15 Rezultaty wykonania skryptu graymoviebw.m w zadaniu binaryzacji. Na poziomie rodowiska Matlab 6.1 nie istnieje implementacja funkcji graythresh dokonujca automatycznego doboru progu binaryzacji według kryterium Otsu. Dla prostoty i zgodnoci z rónymi wersjami rodowiska Matlab wybrano arbitralnie próg równy 0.5. W praktyce, czsto istnieje konieczno oznaczenia rejonów na wynikowej mapie, logicznie reprezentujcych spójne podobszary bieli na czarnym tle. Stosuje si przy tym, kryterium ssiedztwa równe 4 lub 8, a oznaczajce liczb pikseli, w najbliszym otoczeniu bieco badanego punktu, biorcych udział w tworzeniu jednego spójnego podobszaru danych. Rys 16 Skrypt graymoviebwlabel.m binaryzacji cigu obrazów D z zadanej animacji
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 1 W skrypcie powyszym zastosowano losowo generowan palet kolorów w licznoci 190. Z uwagi na to, e wywołanie funkcji bwlabel wykrywa do około 50-60 elementów na szeregu rozwaanych obrazów D, w ten sposób przygotowana paleta kolorów jest wystarczajca w wizualizacji: Rys 17 Rezultaty wykonania skryptu graymoviebwlabel.m w zadaniu etykietowania podobszarów. Rys 18 Skrypt graymovieedge.m detekcji krawdzi na obrazach D z zadanej animacji W detekcji krawdzi na treci obrazu D mona wykorzysta funkcj edge, która na poziomie rodowiska Matlab 6.1 posiada dwie wbudowane opcje prewitt oraz canny. Oznaczaj one metod oraz sposób formowania maski, słucej w detekcji krawdzi, a swoje nazwy zawdziczaj wprost od nazwisk swoich autorów. W praktyce jednak w szerszym zestawie dostpnych opcji przekształce na danych obrazów D, stosuje si funkcj fspecial w formowaniu maski przekształce oraz funkcj filter ogólnych przekształce wykorzystujcych splot. Std funkcja filter w czci korzysta z wywołania w swoim wntrzu funkcji conv (splot dwuwymiarowych danych. Poniej podano przed wynikami działania skryptu z rysunku 14 tre skryptu graymoviefilter.m, słucego wielorakim celom w przekształceniach i wyodrbnianiu cech na obrazach D.
mgr in. rtur ernat, KMP, WM., PKos., wykład IV (rodowisko Matlab, strona: 13 Rys 19 Skrypt graymoviefilter.m detekcji krawdzi na obrazach D z zadanej animacji Rys 0 Rezultaty wykonania skryptu graymovieedge.m w detekcji krawdzi z opcj prewitt.