Zastosowanie obrazów w kodzie flagowym. Lekcja 7: Zastosowanie obrazów kodów flagowych. Cel: Zaprezentowanie jak wykorzystywać informacje zawarte kodzie flagowym (które są dołączone do niektórych obrazach) używając plików formuł i operatorów bitowych. Umiejętności, które zdobędziesz: Pod koniec lekcji, dowiesz jak operatory bitowe pozwalają na wykorzystanie kodu flagowego. Obrazy flagowe mogą pochodzić z danych takich jak MERIS i AVHRR. Wskazują on takie cechy pikseli jak: przynależność do linii wybrzeża, obecność chmur, obecność błysków słońca itp. Wstęp Wiele obrazów jest obecnie dostarczanych z obrazem kodów flagowych, które daje informacje o każdym pikselu. Kodowania flagowe (ang. flag-codings) są specjalnym typem metadanych. Są one klasyfikacjami lub jakościowymi informacjami przechowywanymi jako pola bitowe dla każdego piksela w paśmie flag (ang. Flag band). Produkt może mieć wiele pasm flagowych, tym samym kodowanie może być wieloflagowe. Kodowanie flagowe pełni ważną rolę w interpretacji zdjęcia,. Umożliwia wykluczenie kiepskich danych z analizy poprzez użycie warstwy maskowania (ang. bit-mask), złożonej z wartości flagowych w pasmach flagowych. Operatory bitowe są niezbędne do wykorzystania kodowania flagowego. Wykorzystanie operatorów bitowych do wykorzystania informacji flagowych. Zdjęcia z wielu sensorów mogą zawierać informacje flagowe. Są one zazwyczaj w formie obrazu, który zawiera atrybuty flag dla każdego piksela. Przykładem może być sensor amerykański: AVHRR (Advanced Very High Resolution Radiometr), który jest własnością amerykańskiej organizacji NOAA (National Oceanographic and Atmospheric Administration) Sensory europejskiej agencji kosmicznej (ESA) z satelity ENVISAT: MERIS (Medium Resolution Imaging Spectrometer) AATSR (Advanced Along Track Scanning Radiometer) Atrybuty flag wskazują na obrazie takie rzeczy jak położenie: lądu, wody, chmur, wybrzeża, błyski słońca lub błędne dane. Otwórz plik MER_RR_1_Mediterraean.n1. Jest to zdjęcie MERIS które prezentuje obszar śródziemnomorski wokół Włoch. Kliknij na folder Flag Codings (położony z lewej strony okna), następnie kliknij dwa razy na dokument 1 Z 5
Lekcja 7 tekstowy l1_flags. W dokumencie zawarta jest informacja o 8 kodach flagowych (atrybutach pikseli). Informacja flagowa może być zastosowana do każdego piksela w zbiorze danych. Ze względu na to że jest 8 atrybutów, informacje o flagach mogą być przechowywane w postaci obrazu 8-bitowego (wartości nieujemne całkowite). Każda flaga jest reprezentowana przez jeden bit. (Tabela1) Tabela 1. Kodowanie flagowe może być reprezentowane przez 8-bitowe liczby całkowite. Każdy z 8 bitów kodowania flagowego poszczególnego piksela może być ustawiony tak aby reprezentować inny atrybut. Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Potęga 2 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 Wartość 128 64 32 16 8 4 2 1 Kliknij na folder Bands w lewym panelu. Zauważ, że typ danych zdjęcia l1_flags (w folderze w prawym panelu) jest 8-bitowy. Obraz flagowy jest tego samego rozmiaru (1121 x 1121 pikseli) co 15 pasm radiancji w obrazie MERIS. Oznacza to, że jedno kodowanie flagowe występuje dla każdego piksela w paśmie MERIS. Kliknij prawym klawiszem myszy na folder obrazu 1l_flags i wybierz Open Properties. Zobaczysz wypisaną klasyfikacja MERIS na poziomie 1b (MERIS L1b) i flagi jakościowe. Obie wartości są pokazane w tabeli 2 poniżej. Tabela 2. Klasyfikacja oraz wartości flag dla obrazu MERIS na poziomie 1b. Opis flagi Wartość 8-biotowa liczba Przyporządkowanie Wynik całkowita (binarnie bitu do flagi. COSMETIC =1 00000001 Bit 1 set 2 0 = 1 DUPLICATED =2 00000010 Bit 2 set 2 1 = 2 GLINT_RISK =4 00000100 Bit 3 set 2 2 = 4 SUSPECT =8 00001000 Bit 4 set 2 3 = 8 LAND-OCEAN =16 00010000 Bit 5 set 2 4 = 16 BRIGHT =32 00100000 Bit 6 set 2 5 = 32 COASTLINE =64 01000000 Bit 7 set 2 6 = 64 INVALID =128 10000000 Bit 8 set 2 7 = 128 Przykłady kombinacji Land and duplicated 00010010 Bity 2 i 5 2 + 16 = 18 Wright and land 00110000 Bity 5 i 6 16 + 32 = 48 Land and coastline 01010000 Bity 5 i 7 16 + 64 = 80 Bilko wykorzystuje dwa operatory, pozwalające na używanie informacji flagowych. Pierwszym z nich jest operator AND, który jest reprezentowany w plikach formuł przez znak &. Drugi z nich to operator OR, reprezentowany jako. Flagi pozwalają na zamaskowanie pewnego obszaru obrazu, który jest niepożądany z różnych przyczyn np. zawiera niepewne dane spowodowane przez przez gęste chmury. Najlepiej jest posługiwać się 2 Z 5
Zastosowanie obrazów w kodzie flagowym. flagami w dokumencie formuły poprzez ustawienie serii stałych dla każdej z używanych flag. Następnie wykorzystując serie operatorów bitowych AND pomiędzy stałymi i flagami identyfikujemy obszar, który jest pod wpływem poszczególnej flagi. Najlepiej jest to wytłumaczyć na przykładzie. Kliknij dwukrotnie na folder obrazu radiance_2 w prawym panelu by otworzyć drugie pasmo radiancji TOA (Top Of Atmosphere) zdjęcia MERIS [jeśli pojawi się okno Extract, odznacz opcję Extract i kliknij OK]. Następnie pojawi się okno dialogowe Redisplay Image. Zaznacz Null Value(s): == 0 i zanotuj maksymalna wartość piksela. Wybierz Equalize jako sposób rozciągnięcia (stretch) histogramu, a następnie kliknij przycisk Apply. Zwróć uwagę, że obraz jest zapisany w formacie 16-bitowym naturalnym. Obejrzyj szybko obraz, który przedstawia Włochy, wybrzeże Adriatyckie, zachodni teren śródziemnomorski, Korsykę, Sardynię oraz Sycylię. Następnie kliknij prawym przyciskiem myszy na folder obrazu l1_flags i wybierz Open Items aby otworzyć obraz flag przypisany do zdjęcia. Zbadaj obraz za pomocą kursora i odpowiedz na pytanie. Pytanie 1: Które wartości, w obrazie flag, są przypisane do: Czystego oceanu Większości lądu Większości jasnego obszaru (chmury) na północnym-wschodzie zdjęcia? Jakie flagi są ustawione aby otrzymać te wartości? Połącz obraz flag oraz obraz radiancji pasma 2 z jednym pustym obrazem (Blank =1) w zbiór trzech połączonych sąsiadująco obrazów wybierając z menu Image, Connect. Użyj narzędzia Selector aby wybrać obraz flag jako @1 (obraz 1), obraz pasma radiancji 2 jako @2 i pusty obraz jako @3. Jak już to wykonasz, otwórz dokument formuły Operatory_bitowe.frm Przeanalizuj dokument formuły. Zauważ że: obraz flag ma być ustalony jako @1 i obraz pasma radiancji 2 jako @2, stałe zostały ustawione dla sześciu flag, obraz wyjściowy z formuły pojawi się w trzecim pustym oknie (@3) Sprawdźmy co formuła wykonuje. Maskuje ona (t.j. ustawia na zero) wszystkie te obszary na obrazie które: mają ryzyko refleksu 3 Z 5
Lekcja 7 są niepewne są lądem są jasne (t.j. mają gęsta chmura lub powodują nasycenie sensora z jakiegoś innego powodu) są nieważne Każdy z operatorów AND (zapisany jako &) wykonuje operację pomiędzy stałą flagi, a obrazem flag. Tworzy się iloczyn obrazów, w którym wszystkie piksele mają wartość 0 lub 1. Obszary gdzie flaga jest obecna, przyjmują wartość 1, zaś gdzie jej nie ma wartość wynosi 0 (tabela 3). Fragmenty formuły (znajdujące się w nawiasie) uwidaczniają obszary gdzie flagi są obecne, a powinno być odwrotnie. Aby to osiągnąć, każdy operator AND musi zostać poprzedzony operatorem NOT (w tym wypadku użycie znaku!, który w plikach formuł może być używany wymiennie z NOT). Tworzy to serię masek dla każdej flagi. Tereny, gdzie flagi są obecne, są ustawione jako 0, a reszta obrazu jako 1. Pomnożenie obrazu radiancji pasma 2 przez serię masek pozowali ustawić wszystkie niechciane obszary jako 0. Przypadek 1. Obraz flag wskazuje ląd z gęstymi chmurami (jasny obszar); operator AND ze stałą flagą jasności Bright (32) wskazuje prawdę (tj. Bit 6 ma wartość 1 w obrazie flag i w stałych flag), rezultatem dla danego piksela jest 1. Jest to zamienione na 0 poprzez operator NOT (!). Przypadek 2. Obraz flag wskazuje ląd z gęstymi chmurami; operator AND z flagą Land (ląd) wskazuje prawdę (tj. Bit 5 ma wartość 1 w obrazie flag i jako stała flagi), rezultatem dla piksela jest wartość 1. Jest to zamienione na 0 poprzez operator NOT (!). Przypadek 3. Obraz flag wskazuje na otwarty ocean bez błędów; operator AND z flagą Land (ląd) wskazuje fałsz (tj. Bit 5 ma wartość 0 w obrazie flag, stałą zaś wartość 1), rezultatem dla piksela jest 0. Jest to zamienione na 1 poprzez operator NOT (!). Tabela 3. Rezultat operatora AND dla trzech przypadków Przypadek Piksele obrazu flag Stała flag Opis flag Rezultat w obrazie wyjściowym Rezultat po zastosowaniu NOT (!) 1 00110000 & 00100000 Bright (32) 00000001 00000000 2 00110000 & 00010000 Land (16) 00000001 00000000 3 00000000 & 00010000 Land (16) 00000000 00000001 4 Z 5
Zastosowanie obrazów w kodzie flagowym. Obraz wyjściowy musi być zapisany w formacie liczb 16-bitowych naturalnych, tak jak obraz radiancji pasma 2. Ustaw plik formuły jako aktywne okno, wybierz Opitions! z menu. W oknie dialogowym Formula Opitions, odznacz Use special handing for Nulls. Następnie wybierz format 16-bit unsigned integer (16-bitowy naturalny) jako Output Image Type: i kliknij OK. Zastosuj teraz formułę do zbioru połączonych obrazów. Obejrzyj nowy obraz w trzecim oknie, zauważ że wszystkie tereny lądu, z ryzykiem refleksu słonecznego, oraz gęstymi chmurami lub z niepewnymi pikselami są ustawione jako zero. Pozostały tylko wartości dla obszaru wody. W pliku formuły Operatory_bitowe.frm zakomentowane są jeszcze dwie drogi dojścia do tego samego rezultatu. W celu ich uruchomienia należy usunąć znaki #, które są umieszczone przed alternatywnymi formułami. Zobaczysz, że wykonują ona tę samą operacje na obrazach. Zauważ, że druga alternatywna formuła, która używa serii operatów OR, działa szybciej. Aby zobaczyć dokładnie gdzie jest wybrzeże na nowym obrazie, można narysować jasną linię. Będzie ona tworzyć z pikselami zaflagowanymi pas wybrzeża. Wartość najjaśniejszego piksela w obrazie radiancji pasma 2, którą powinieneś zanotować wcześniej, wynosiła 52547. Ustawmy wartość wybrzeża na wartość 60 000. W tym celu należy dodać dwie nowe frazy do dokumentu formuły, po formulach alternatywnych. Jedną z dróg jest dodanie następujących dwóch linijek: CONST NewCoast = 60000 ; IF (Flags & Coastline) NewCoast ELSE @3; Utworzy to nowy obraz @3 z dodaną linia brzegową o wartości 60000. Dodaj dwie nowe linijki na końcu pliku formuły i załaduj formułę do obrazu. Obejrzyj nowy obraz. Zobaczysz, że obszary mórz są bardzo mało skontrastowane. By to poprawiać, kliknij prawym klawiszem myszy na obraz i wybierz Redisplay. W oknie Redisplay Image wybierz Equalize jako Stretch settings Use:. Następnie kliknij Apply. Operacja ta powinna znacznie poprawić kontrast obrazu. Kiedy skończysz pozamykaj wszystkie pliki. Możesz zachować dokument formuły dla siebie jako przykład. Niektóre obrazy mogą zawierać bardzo wyszukane zestawy flag. Przykładowo, niektóre zdjęcia ENVISAT posiadają 16 flag i dlatego ich obraz jest zapisany w formacie 16 bitowym całkowitym. Niektóre posiadają nawet 24 flagi i wtedy potrzebujesz formatu 32-bitowego, by móc je wykorzystać. Flagi te są używane za pomocą tych samych metod, które zostały zaprezentowane powyżej. 5 Z 5