Otwieranie plików typu BINARY FLAT FILES (.bin) w BILKO Lekcja VI. Otwieranie plików typu BINARY FLAT FILES (.bin) w BILKO. Cel: zapoznanie się z formatem plików zdjęć oraz z procedurą otwierania plików binary flat file w BILKO Umiejętności które zdobędziesz: Po ukończeniu lekcji nauczysz się jak otwierać pliki obrazów w formacie (.bin) eksportowane z innych programów do BILKO oraz zdobędziesz podstawowe informacje na temat formatów zapisu obrazów (BSQ, BIL, BIP) Wstęp. Lekcja VI zapozna Cię z pewnymi formatami zapisu obrazów i pokaże w jaki sposób należy otwierać obrazy eksportowane z innych aplikacji jako pliki binarne. Jest to bardzo istotna i przydatna umiejętność. W pewnych przypadkach może się okazać, że jedne aplikacje nie będą w stanie otworzyć plików zapisanych w formatach, na których pracują inne aplikacje. Prawie wszystkie aplikacje, natomiast, mogą eksportować i importować pliki jako pliki binarne. Pozwala to na transfer plików pomiędzy aplikacjami takimi jak pakiety teledetekcyjne oraz pakiety GIS. Jest to często jedyna droga gdy nie mogą one bezpośrednio otwierać swoich plików. Aby jednak otwierać pliki w formacie (.bin) należy wiedzieć posiadać pewne informacje o strukturze pliku, zarówno gdy pliki są eksportowane jak i importowane. W celu zaimportowania pliku binarnego należy znać następujące informacje: (1) Liczbę pikseli w każdej linii (wierszu) obrazu, (2) Liczbę linii w obrazie, (3) Format zapisu każdego z pikseli (jedno, dwu, lub cztero-bajtowe), (4) Sposób kodowania pikseli. Np. jeśli plik jest utworzony na komputerze Apple Macintosh lub na systemie Unix, wtedy należy zastosować zamianę kolejności bajtów (opcja swap) jeśli importuje się plik na komputer PC, (5) Liczbę kanałów w obrazie, który jest importowany w pliku binarnym, (6) Sposób zapisu obrazu teledetekcyjnego, który normalnie jest zapisywany na jeden z 3 sposobów - Band Sequential (BSQ), Band Interleaved by Line (BIL) or Band Interleaved by Pixel (BIP). Informacje na temat formatu zapisu każdego piksela oraz formatu zapisu obrazu teledetekcyjnego są z reguły dostępne do wglądu w programie, z którego eksportujemy obrazy, np. w programie Erdas Imagine. Można je znaleźć w Layer Info (informacje o warstwie). BILKO otwiera obrazy o pikselach z następującym kodowaniem: 8-bit unsigned integer, 16-bit unsigned integer, 16-bit signed integer, 32-bit unsigned integer, 32-bit unsigned integer i 32-bit floating point. Pierwszy format zajmuje 1 bajt na piksel, następne dwa po 2 bajty na piksel, ostatnie trzy po 4 bajty.!!! unsigned integer wartość pikseli kodowana jako liczby nieujemne całkowite, signed integer wartości ujemne bądź dodatnie całkowite, floating point wartości zmiennoprzecinkowe, 1 Z 9
Lekcja 6 Formaty zapisu obrazu są wyjaśnione poniżej na 4 przykładowych kanałach (niebieski, zielony, czerwony i bliska podczerwień) obrazu mającego n wierszy (linii) oraz m pikseli (kolumn) w każdej linii. Plik binarny przechowujący obraz w formacie Band Seqential (BSQ format z sekwencją kanałów) będzie posiadał wszystkie piksele pierwszego kanału w przechowywane w jednym ciągu (niebieski), następnie drugiego kanału (zielony), a następnie trzeciego itd. Struktura ta przedstawiona jest na rysunku 1. poniżej. Rysunek 1. Format zapisu obrazu z sekwencją kanałów (BSQ) dla czterech przykładowych kanałów (niebieski, zielony, czerwony i bliska podczerwień) Plik binarny przechowujący obraz w formacie Band Interleaved by Line (BIL pasmo z przeplotem lini) będzie posiadał wszystkie piksele pierwszej linii obrazu pierwszego kanału (niebieski) przechowywane w jednym ciągu, następnie wszystkie piksele pierwszej linii obrazu drugiego kanału, trzeciego itd. Taka sekwencja będzie powtarzana dla kolejnych linii obrazu aż do ostatniej. Struktura ta przedstawiona jest na rysunku 2. poniżej. 2 Z 9
Otwieranie plików typu BINARY FLAT FILES (.bin) w BILKO Rysunek 2. Format zapisu obrazu z przeplotem lini (BIL) dla czterech przykładowych kanałów (niebieski, zielony, czerwony i bliska podczerwień) Plik binarny przechowujący obraz w formacie Band Interleaved by Pixel (BIP pasmo z przeplotem pikseli) będzie posiadał dane o pierwszym pikselu z każdego kanału w jednym ciągu, następnie o drugim pikselu w każdym kanale itd. aż do ostatniego piksela (n x m). Struktura ta przedstawiona jest na rysunku 3. poniżej. Rysunek 3. Format zapisu obrazu z przeplotem pikseli (BIP) dla czterech przykładowych kanałów (niebieski, zielony, czerwony i bliska podczerwień) Otwieranie plików binarnych w BILKO Obrazy mogą być przechowywane w wielu formatach, które są oznaczone przez rozszerzenia plików w nawiasie po IMAGES w Files of type (typ pliku, rysunek poniżej). Kiedy już opanujesz dość złożoną umiejętność otwierania plików binarnych powinieneś być w stanie otworzyć każdy odpowiednio sformatowany plik w BILKO. Zadanie : W programie wybierz File, Open. W oknie dialogowym Open upewnij się, że opcja Apply na dole jest zaznaczona oraz że opcje Extract i Minimize są niezaznaczone. Nazwa pliku, z którym będziesz pracował, to AVHRR_ID2497481.bin. Jeśli znajdujesz się w folderze lekcji VI plik powinien znajdować się na liście. W przeciwnym wypadku przejdź do tego folderu i wtedy otwórz plik, klikając na niego 3 Z 9
Lekcja 6 dwa razy lub używając przycisku Open. Operacja ta rozpoczyna proces wyświetlania pliku obrazu o nazwie AVHRR_ID2497481.bin. Plik ten jest nazywany binary flat file co oznacza plik binarny płaski, który może być otwierany przez prawie każdy program do przetwarzania obrazów pod warunkiem, że posiadamy pewne informacje na temat jego struktury. W przypadku naszego pliku musimy podać informacje dotyczące struktury pliku, ponieważ są one inne niż domyślne w programie (tak jest w większości przypadków). Poniżej podane są dane dotyczące naszego pliku: (1) Obraz nie posiadający nagłówka (Header Length: is 0), (2) Obraz posiada 737 pikseli w linii (Pixels per Line : 737), (3) Liczba linii obrazu 567 (Number of Lines : 567), (4) Format zapisu piksela (Pixel Format:) 16 bit unsigned integer (każdy piksel kodowany jako liczba całkowita zajmująca 2 bajty = 16 bitów, bez wartości ujemnych). Nie zaznaczamy opcji Swap bytes ponieważ plik był tworzony na innym komputerze PC, jeśli jednak byłoby inaczej należało by w tym momencie jej uży,. (5) Liczba kanałów (Number of Bands:) jest równa 5, (6) Standard zapisu obrazu (Interleave Format :) to pasmo z przeplotem linii ( BIL). 4 Z 9
Otwieranie plików typu BINARY FLAT FILES (.bin) w BILKO Kliknij przycisk pomocy (Help) znajdujący się w prawym górnym rogu okienka dialogowego Open As Flat File i zauważ, że przy kursorze pojawia się znak zapytania. Przesuń kursor na miejsce wprowadzania danych Pixels per Line: i kliknij lewym klawiszem myszy. Pojawia się informacja pomocy dotycząca wskazanej części okienka dialogowego. Kliknij przycisk pomocy ponownie i tym razem przesuń kursor na opcję zaznaczenia BIP, kliknij prawym klawiszem myszy. Ukaże się menu wyboru z jedną tylko opcją What's This?. Po kliknięciu lewym klawiszem myszy pojawi się informacja pomocy na temat formatu zapisu obrazu BIP. Pamiętaj, pomoc w BILKO nigdy nie jest daleko. Teraz użyj danych dotyczących struktury pliku podanych powyżej w celu wypełnienia okienka dialogowego Open As flat file (powinno ono po wypełnieniu wyglądać jak to powyżej). Kiedy skończysz kliknij przycisk OK. Po kliknięciu przycisku OK wyskakują, osobne dla każdego kanału, okienka dialogowe Redisplay Image,. Zauważ, że podana jest maksymalna i minimalna wartość w każdym kanale. Dla AVHRR (Advanced Very High Resolution Radiometer) wartości te będą pomiędzy 0 a 1024. Narazie nie będziemy zajmować się opcjami tego okienka dialogowego. Klikamy przycisk Apply dla każdego z pięciu kanałów zdjęcia satelitarnego AVHRR. Wybierz kanał nr.2 (AVHRR_ID2497481 #02.bin) i obejrzyj go. Jeśli wygląda normalnie to gratulacje, właśnie poprawnie otworzyłeś zdjęcie! Jeśli natomiast zdjęcie wygląda jak kompletny bałagan, zamknij je i spróbuj otworzyć jeszcze raz, uważając aby poprawnie wypełnić okno dialogowe Open As flat file. Poprawnie otworzone 5 Z 9
Lekcja 6 zdjęcie może wydawać się nieco ciemne na źle ustawionym monitorze, aby zniwelować ten efekt należy podnieść jasność monitora. W celu usprawnienia pracy z plikiem zawierającym pięć kanałów które razem stanowią nasze zdjęcie satelitarne AVHRR, możemy je połączyć używając Image, Connect z menu w górnym pasku ekranu. Wybierz Image, Connect z menu w górnym pasku ekranu, powinno pojawić się okienko dialogowe Connect. W okienku powinna się wyświetlić lista pięciu części składowych (czyli kanałów) naszego zdjęcia, wczytanych z pliku binarnego. Wybierz wszystkie pięć oraz zaznacz opcję Stacked i kliknij OK. Teraz pięć kanałów naszego zdjęcia jest połączona jak seria warstw, z których kanał #1 jest na górze a #5 na dole. Używając klawisz <Tab> możesz przechodzić do oglądania następnej warstwy. Zauważ że jasność kanału #3 jest dużo większa w porównaniu do pozostałych. Mając już prawidłowo otwarty plik binarny przechodzimy do następnego zadania którym będzie zapisanie części składowych zdjęcia (poszczególnych kanałów) w formacie danych używanym przez BILKO (.dat), sprawi to, że będą one prosto i szybko otwierane przez program. Upewnij się że kanał #1 na górze naszego połączonego zdjęcia jest aktywny. Wybierz z menu na górze File, Save As. W okienku dialogowym Save As wybierz folder w jakim chcesz zapisać zdjęcie oraz upewnij się, że wybrany typ pliku to Bilko.dat. Jeśli tak nie jest należy wybrać go z listy. W polu Nazwa pliku: powinno być wpisane AVHRR_ID2497481 #01.dat. Kliknij przycisk Save aby zakończyć zapis kanału #1. Następnie użyj przycisku <Tab> w celu zmiany kanału i powtarzaj czynności zapisywania aby zapisać wszystkie 5 kanałów. Sprawdź teraz czy wszystkie zapisane pliki mają rozszerzenie.dat.!!! Zauważ: Jeśli format zapisu piksela byłby 8-bit unsigned (integer) mógłbyś zapisać obraz w formacie CompuServe.gif. W tym momencie 5 kanałów naszego zdjęcia jest ze sobą połączonych. Dzięki temu można się sprawnie poruszać między nimi. Zapisane są one także w formacie Bilko.dat. Teraz możesz jeszcze bardziej uprościć ich otwieranie poprzez zapisanie ich jako set w tym przypadku oznaczający zbiór plików obrazu, który będzie otwierać je wszystkie razem. Zadanie : Wybierz z menu w górnym pasku ekranu File, Save Set i jako nazwę pliku wprowadź AVHRR_ID2497481, a następnie zapisz. Kiedy już to zrobisz wybierz z menu Window, Close All w celu zamknięcia wszystkich otwartych plików zajmujących przestrzeń pamięci BILKO. Teraz kliknij File, Open i w okienku dialogowym Open z listy Pliki typu: wybierz SETS (*.set). Następnie kliknij dwa razy na pliku AVHRR_ID2497481.set. Tym razem w oknie dialogowym Redisplay Image użyj Auto linear stretch z listy Stretch Settings. W celu zastosowania takich ustawień do wszystkich pasm kliknij przycisk All. 6 Z 9
Połączony zbiór kanałów powinien zostać wyświetlony. Otwieranie plików typu BINARY FLAT FILES (.bin) w BILKO Jest to dużo prostsze niż otwieranie obrazu z pliku binarnego. Normalnie zdjęcia teledetekcyjne zawierające wiele pasm (zdjęcia multispektralne) są przechowywane właśnie jako tego typu zbiory, ponieważ znacząco ułatwia to pracę z nimi. Teraz na zakończenie przekonasz się co stanie się jeśli przy otwieraniu pliku binarnego wprowadzisz niepoprawne dane o jego strukturze. Wybierz z menu górnego Window, Close All, aby zamknąć otwarte zdjęcia. Następnie zacznij ponownie otwierać plik AVHRR_ID2497481.bin. Tym razem wprowadź informację że obraz zapisany jest w formacie BSQ (format z sekwencją kanałów) i otwórz pierwsze pasmo. Po wypełnieniu okienko dialogowe Open As flat file powinno wyglądać tak jak poniżej. Jeżeli jesteś pewny że twoje okno wypełnione jest tak jak to przedstawione powyżej kliknij przycisk OK. W okienku dialogowym Redisplay Image wybierz opcję Equalize i kliknąć przycisk OK. Teraz powinieneś zobaczyć obraz pliku binarnego o strukturze BIL odczytany błędnie jako BSQ. Na obrazie powinno być widocznych mnóstwo pasków. Jest tak dlatego że względne jasności poszczególnych kanałów są bardzo różne. Jasności te mają następującą zależność kanał#3 > kanał#4 >kanał#5 > kanał#1 > kanał#2. Jeśli przybliżysz zdjęcie na mniej więcej 1500% (najłatwiej zrobić to przytrzymując przycisk <Ctrl> i używając rolki w myszy) zobaczysz dokładnie, że każda linia pochodzi z innego kanału, i powtarza się to co 5 linii (rysunek poniżej). Po przeanalizowaniu zdjęcia zamknij je. 7 Z 9
Lekcja 6 Jako końcowe ćwiczenie, mające na celu pokazanie jak ważna jest znajomość liczby pikseli w linii oraz liczby linii w obrazie, wprowadzimy błędne informacje o długości linii ale tylko o jeden piksel. Otwórz ponownie plik o nazwie AVHRR_ID2497481.bin, jednak tym razem wprowadź następujące parametry: Pixels per line 736 (zamiast 737), Number of lines =567, Number of bands = 5, First band = 1, Last band = 1, Pixel format = 16-bit unsigned [integer], Interleave format = BIL. W okienkach dialogowych Redisplay Image wybierz opcję Auto linear stretch i kliknij Ok. Zdjęcie powinno być kompletnym bałaganem. Jest tak dlatego, że w drugiej linii pierwsze 5 pikseli to końcowe piksele z kanału #5, które nie zostały w nim wyświetlone ponieważ z każdej linii (w każdym kanale) odjęliśmy 1 piksel. Jeśli przybliżysz zdjęcie o około 1500% będziesz mógł to zauważyć. Kiedy skończysz zamknij zdjęcie. Końcowe ćwiczenie miało na celu pokazanie jak bardzo należy być ostrożnym podczas importowania plików binarnych. Każdy błąd może być katastrofą. Jest to szczególnie istotne w przypadku formatów z przeplotem. W formacie z sekwencją kanałów łatwiej jest znaleźć błąd. Jednak bardziej istotne w tym ćwiczeniu jest to, że jeśli przybliżymy zdjęcie tak, aby widzieć 8 Z 9
Otwieranie plików typu BINARY FLAT FILES (.bin) w BILKO dobrze pojedyncze piksele i zaczniemy je analizować, to mamy szanse na znalezienie błędu. Możemy tym samym naprawić zdjęcie o ile oczywiście rozumiemy strukturę pliku. Jeśli na przybliżeniu widzimy przesuwające się 5 pikseli, a jest to 5 kanałowe zdjęcie w formacie BIL to pomyliliśmy się o 1 piksel w długości linii. Jeśli natomiast widzimy przesuwające się 10 pikseli w tego typu zdjęciu to pomyłka wynosi 2 piksele w długości linii. Jeżeli widzimy 5 pikseli przesuwających się w zdjęciu o formacie BSQ to błąd stanowi brak 5 pikseli w długości linii itd. Ta wiedza może okazać się niezwykle pomocna jeśli ktoś da nam plik binarny i nie jesteśmy pewni co do jego dokładnych rozmiarów lub jeśli ktoś podał nam złe informacje o strukturze pliku. 9 Z 9