Skocz do zawartości

technikalia astronomii

  • wpisów
    16
  • komentarzy
    27
  • wyświetleń
    7 529

konwersja RAWów do FITS, a także pierwsze kroki w IRAFie


Michal G.

1 525 wyświetleń

Dzien dobry,
dzisiaj zajmiemy się przygotowaniem plików, którymi będziemy karmili IRAFa, czyli FITSów. Jedziemy!

1. Czym są fitsy oraz o nagłówkach FITSów
2. Konwersja RAWów do FITSów
3. Edytowanie nagłówków. Użyjemy pierwszy raz IRAFa! Będzie również o poruszaniu się w IRAFie



1.
FITS jest specjalnym typem plików do przetrzymywania obrazów, choć jak się okazuje, nie zawsze muszą to być obrazy, zresztą jak sama nazwa wskazuje, jest dość elastyczny (Flexible Image Transport System). Każdy FITS składa się z dwóch części: nagłówka oraz faktycznych danych. Nagłówek ma bardzo ściśle określoną specyfikacje, dlatego nie wolno ręcznie edytować nagłówków! W specyfikacji FITSów jest zapis, że nagłówek ma mieć konkretny rozmiar - krotność 512 bajtów. Prawdę mówiąc piszę z pamięci i możliwe, że jest to inna liczba, ale nie w tym rzecz - edytując nagłówek FITSa należy zadbać o to, aby jeśli jest za mały to go powiększyć. Trochę śmieszne, ale juz tak jest. W praktyce oznacza to, że edytowanie nagłówków bezpiecznie jest zostawić wyspecjalizowanym do tego programom (IRAF oczywiście umie, dojdziemy do tego ;) ). W nagłówku FITSa zapisane sa parametry za pomocą słów kluczowych i ich wartości.
Przykładowy nagłówek FITSa wygląda nastepująco:

SIMPLE  =                    T / Fits standardBITPIX  =                   16 / Bits per pixelNAXIS   =                    2 / Number of axesNAXIS1  =                 2817 / Axis lengthNAXIS2  =                 1876 / Axis lengthEXTEND  =                    T / File may contain extensionsBSCALE  =           1.000000E0 / REAL = TAPE*BSCALE + BZEROBZERO   =           3.276800E4 /ORIGIN  = 'NOAO-IRAF FITS Image Kernel July 2003' / FITS file originatorDATE    = '2016-09-07T19:51:12' / Date FITS file was generatedIRAF-TLM= '2016-09-07T19:51:16' / Time of last modificationCOMMENT   FITS (Flexible Image Transport System) format is defined in 'AstronomyCOMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359HPHOTSYS = 'Instrumental'       / photometry filter systemFILTER  = 'Gi      '           / Spectral filter or colorspace componentDATE-OBS= '2016-09-01T20:52:24' / time of exposureEXPTIME =             24.70000 / [s] Exposure timeISO     =                   50 / ISO speedINSTRUME= 'Canon EOS 5D Mark II' / Camera manufacturer and modelAPERTURE= 'f/1.$   '           / ApertureFOCUS   =                 50.0 / [mm] Focal lengthCOMMENT Command: dcraw -c -4 -D -q 3 -w _MG_3193.CR2CREATOR = 'rawtran 0.3.8'      / Created by rawtran 0.3.8COMMENT Created by rawtran: http://integral.physics.muni.cz/rawtranCOMMENT EXIF data info - beginCOMMENT Filename: _MG_3193.CR2COMMENT Timestamp: Thu Sep 01 20:52:24 2016COMMENT Camera: Canon EOS 5D Mark IICOMMENT ISO speed: 50COMMENT Shutter: 24.7 secCOMMENT Aperture: f/1.$COMMENT Focal length: 50.0 mmCOMMENT Embedded ICC profile: noCOMMENT Number of raw images: 1COMMENT Thumb size:  5616 x 3744COMMENT Full size:   5792 x 3804COMMENT Image size:  5634 x 3753COMMENT Output size: 5634 x 3753COMMENT Raw colors: 3COMMENT Filter pattern: RGGBRGGBRGGBRGGBCOMMENT Daylight multipliers: 2.391381 0.929156 1.289254COMMENT Camera multipliers: 2194.000000 1024.000000 1694.000000 1024.000000COMMENT EXIF data info - endIMAGETYP= 'FLAT    'COMMENT   27 blank linesEND


Znajdziemy tutaj takie rzeczy jak czas ekspozycji, rodzaj ekspozycji (IMAGETYP= flat, dark, object, zero, illum, fringe itd), datę zrobienia ekspozycji, a także komentarze pozostawione przez różne programy, którymi coś robiliśmy z FITSem.
Żeby IRAF mógł prawidłowo wykonać wszelkie redukcje nasz FITS musi koniecznie zawierać takie informacje jak IMAGETYP, czas ekspozycji, ilość pikseli, ilość bitów na piksel. Większość z tych rzeczy ustawione jest podczas konwersji RAWa do FITSa lub jeśli używamy dedykowanego programu zapisującego FITSy bezpośrednio z kamery, ale np. IMAGETYP nie zostanie dodany jeśli konwertujemy RAWy, bo przecież skąd program ma wiedzieć jaki obrazek konweruje? Tę wartość musimy ustawić sami.

2.
Istnieje wiele programów do konwersji RAWów do FITSów zarówno na Windowsy jak i linuksy. Problem polega na tym, że nie zawsze wiadomo co one robią z informacją o kolorze. Ponieważ celem wpisów na tym blogu jest wykonywanie fotometrii, to opiszę jak z kolorowego obrazka zrobić czarno-białego FITSa. Istnieje możliwość przechowywania w FITSie koloru - odbywa się to za pomocą kilkuwarstwowego FITSa - taki FITS ma kilka następujących po sobie bloków z obrazem (wszystko jest wtedy oczywiście opisane w nagłówku). Zamienimy maskę bayera na czarno-biały FITS za pomocą pikseli zielonych, uśrednionych z dwóch wartości w każdym pikselu. Debayeryzację i konwersję do FITS zdecydowałem się robić za pomocą programu dcraw. Można go zainstalować na linuksach za pomocą komendy sudo apt-get dcraw albo samemu skompilować ze źródła ( https://www.cybercom.net/~dcoffin/dcraw/ ).
Jak widać w powyższym nagłówku przekonwertowałem RAWa z Canona 300D za pomocą wywołania:
dcraw -c -4 -D -q 3 -w _MG_3193.CR2 (jeszcze nie eksperymentowałem ze szczegołowymi ystawieniami konwersji - zajmę się tym jak dojdę do fotometrii i wtedy porównam wyniki z różnych metod konwersji.)
takich konwersji musiałem zrobić całą masę i gdybym miał ręcznie to zrobić dla wszystkich, to prawdopodobnie trafił by mnie szlag. Tu z pomocą przychodzi inny program: rawtran ( http://integral.physics.muni.cz/rawtran/ ), który jest tak naprawdę wrapperem dla dcraw (obudowuje wywołania i wywołuje dcraw dla wygody użytkownika). Mozna go zainstalować tylko przez skompilowanie, no trudno... Na dole strony rawtrana znajdziemy sekcje Download and Installation. Jest tam napisane, że do działania wymagana jest biblioteka cfitsio - całe szczęście, że jesteśmy na linuksie! Cfitsio czasami na Windowsach nie daje się skompilować (jest to związanie z różnymi instalacjami Visual Studio). Biblioteka cfitsio jest oczywiście biblioteką do obsługi FITSów, i tak by się przydała w przyszłości, wiele programów z niej korzysta. Tutaj znajduje się zawsze najaktualniejsza wersja cfitsio: http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio_latest.tar.gz
Ściągamyi rozpakowujemy. Rozpakować można przez programy okienkowe (kliknięcie prawym przyciskiem -> rozpakuj) albo w terminalu. Jeśli w terminalu, to domyślnie plik będzie w folderze Downloads ;) Robimy!

cd ~/home/Downloadsls *.gztar -zxvf {nazwa_pliku_z_cfitsio}   // można zacząć wpisywanie tylko pierwszych znaków a potem kliknąc TAB, system sam uzupełni resztę)ls -ltr   // teraz pojawi sie folder z rozpakowanymi źródłamicd {folder}./configure   // przygotowanie kompilowania, jeśli brakuje jakichś bibliotek, to tutaj się o tym dowiemymake          // kompilowaniesudo make install   // instalowanie 


pomiędzy komendami ./configure <-> make <-> make install będzie mieliło dosyć długo, to dobry czas na zrobienie herbaty, kawy, albo pisanie na blogu ;)
Rawtrana instalujemy dokładnie tak samo (i w ogóle dowolny program, jeśli kompilujemy ze źródeł to procedura tak będzie wyglądała, czasami tylko z drobnymi różnicami).

Rawtran jest super, bo daje możliwośc wybrania "filtru" instrumentalnego, znaczy się wybrania pikseli z których on stworzy plik, to właśnie robi opcja:

-c [Ri|Gi|Gi1|Gi2|Bi] (instrumental bands)

Ja wybrałem -c Gi. Na stronie rawtrana jest pełna informacja co robi, która opcja.
Żeby przekonwertować wszystkie RAWy w folderze wywołujemy:

for A in *.CR2; do rawtran -o ${A%CR2}fits ${A}; done


UF!

3.
Wreszczie mamy FITSy! W końcu też doszliśmy do pierwszego odpalenia IRAFa!
Jeśli jest taka potrzeba to umieszczamy nasze FITSy w wygodnym folderze - spędzimy w tym folderzu parę godzin, niech będzie wygodny ;)
W tym folderze przygotowujemy IRAFa do odpalenia za pomocą komendy mkiraf
UWAGA ODPALAMY IRAFA, wpisujemy, BADADUM!
cl



już.

Naszym oczom ukazuje się przepięknie archaiczny interfejs tekstowy. W sumie ma tę zaletę, że nie muszę mu robić screenshotów, bo mogę skopiowac tekst ;D

   NOAO/IRAF PC-IRAF Revision 2.16.1 EXPORT Mon Oct 14 21:40:13 MST 2013      This is the EXPORT version of IRAF V2.16 supporting PC systems.  Welcome to IRAF.  To list the available commands, type ? or ??.  To get  detailed information about a command, type `help <command>'.  To run  a  command  or  load  a  package,  type  its name.   Type  `bye' to exit a  package, or `logout' to get out  of the CL.    Type `news' to find  out  what is new in the version of the system you are using.    Visit http://iraf.net if you have questions or to report problems.  ***  Checking update status... Your IRAF system is up to date  ***  Initializing SAMP .... No Hub Available  The following commands or packages are currently defined:      dataio.     language.   obsolete.   softools.   vo.               dbms.       lists.      plot.       system.           images.     noao.       proto.      utilities.  vocl> 


Mamy tutaj listę paczek, którymi będziemy analizować dane. Tzn większości z nich nigdy nie użyjemy, bo IRAF służy nie tylko do analizy danych z CCD.

Żeby poruszać się po IRAFie potrzebujemy sie nauczyć tylko kilku rzeczy, ale w sumie możemy ich się nauczyć w locie, skoro i tak mamy zadanie do wykonania. Przejdźmy się razem, pogrubioną czcionka i kursywą wyróżniłem komendy, należy je oczywiście zatwierdzać ENTERem.
1. wpisanie nazwy paczki spowoduje wejście do niej. Można wpisać tylko początkowe litery nazwy, jeśli się nie powtarzają, to wejdziemy (np samo p jest niejednoznaczne) np. wpiszmy noa
2. weszliśmy do paczki noao. Ukazała nam się nowa lista paczek.
3. Możemy zobaczyć skrótowy opis co robi dana paczka: help
4. uuuuu, digiphot - Digital stellar photometry package - To tutaj będziemy dążyć :)
5. a wejdźmy sobie zobaczyć co jhest w środku: digi
6. help
daophot - Dao Crowded-Field Photometry Package
7. to tutaj będziemy w przyszłości robić fotometrię.
Zanim jednak zaczniemy fotometrię musimy zrobić redukcje, to nie tutaj
8. bye Tak. Bye jest komendą :) Żegnamy się z paczką i idziemy do góry
9. imred wchodzimy do paczki do redukcji.
10. help ccdhedit - to jest help od procedury do edutowania nagłówków.

Teraz mamy dwie możliwości. Naszepliki nazywają się wszystkie tak samo (z licznikiem), albo nasze pliki (kalibracyjne) nazwane są swoimi typami, np dark01.fits, dark02.fits itd. Jeśli mamy różne nazwy to jest trochę łatwiej, tak jak stoi w EXAMPLES z helpa. Jeśli mamy kijowe nazwy, to trzeba zrobić trochę więcej kroków... :(
Musimy utworzyć plik tekstowy z listą plików danego typu. Nie ma rady, trzeba będzie zrobić trochę ręcznej roboty. Wpisujemy
ls *.fits > dark.txt
Ten znaczek > oznacza, że przekierowujemy wyjście z programu ls (normalnie wypisałby na ekran) do pliku. Można tez dopisywać dopliku na jego końcu (nie kasując tego co było w nim wcześniej) za pomocą >>
Teraz ten plik tekstowy trzeba wyedytować - usunąć z niego wszystkie nazwy plików, które nie są darkami. Tę procedurę powtarzamy kilka razy, ale nie ma potrzeby wpisywać całej komendy od nowa, można nacisnąć strzałkę w górę.
ls *.fits > object.txt
ls *.fits > zero.txt
ls *.fits > flat.txt
Jak juz mamy listę plików, to użyjemy ccdhedit, ale trochę inaczej niż w helpie.
epar ccdhedit
dodanie epar powoduje że wchodzimy do edycji parametrów danej procedury.

                                   I R A F                      Image Reduction and Analysis FacilityPACKAGE = ccdred   TASK = ccdheditimages  =                       CCD imagesparamete=                       Image header parametervalue   =                       Parameter value(type   =               string) Parameter type (string|real|integer)(mode   =                   ql)


epar będzie naszym przyjacielem, wywołamy to jeszcze milion razy ;)
Normalnie w images wpisalibyśmy nazwę plików, albo bardzo dużo nazw plików rozdzielonych przecinkami, na szczęście jednak jesteśmy sprytniejsi i stworzyliśmy już sobie listę plików i jej uzyjemy. Listy plików w IRAFie rozróżnia się od po prostu plików znakiem @. Czyli wpisujemy np
@dark.txt
Teraz jest trochę problem, bo wiem, że każdy, kto spróbuje iść w moje ślady będzie mógł mieć tutaj co innego niż ja. Otóż ja do educji plików używam programu vim. Jest on trochę dziwny w obsłudze, ale ja go lubię i jestem przyzwyczajony. IRAF natomiast też tak naprawdę używa edytora tekstu - u mnie jest to vim, ale kiedys miałem emacs'a. Od czego to zależy- a nie wiem :( Problem polega na tym, że z różnych programów inaczej się wychodzi z trubu edycji. Z vima trzeba zrobić ESC, a potem :wq (zapisuje i wychodzi, samo q by wyszło bez zapisywania). Z emacsa się wychodziło ESC+z. Z innych programów czasami jest CTRL+x. Na dole okienka z IRAFem jest podpowiedź co trzeba nacisnąć, żeby dostać helpa edytora plików, w którym jesteśmy.
w parameter i value wpisujemy

images  =            @dark.txt  CCD imagesparamete=             IMAGETYP  Image header parametervalue   =                 DARK  Parameter value(type   =               string) Parameter type (string|real|integer)


type zostawiamy na string, gdybyśmy zmieniali np. czas ekspozycji, to oczywiście byśmy dali real itd. String oznacza, że wartość jest słowem, a nie liczbą, ani nie liczbą całkowitą (integer).

No i wykonujemy zadanie:
ccdhedit
bez żadnych parametrów. Pojawi się kilka zapytań, ale ponieważ wszystko ustawiliśmy wcześniej, to wszystkie zatwierdzamy ENTERem.

Teraz robimy to samo dla klatek z flatami, biasami, i światłem - i po robocie!



Z tak przygotowanymi FITSami będziemy mogli się zabrać za redukcje, ale to już w kolejnym odcinku...
Na zakończenie chciałbym jeszcze napisać ? oraz ??
Otóż są to dwie komendy IRAFa, obie podają listy paczek, ale w różnych ilościach i z rózną ilością podpaczek ;)

i już absolutnie na koniec, żeby wyjść z IRAFa wpisujemy
lo
^ to jest mała literka L ;)

a zatem do następnego razu,
lo



  • Lubię 1

1 komentarz


Rekomendowane komentarze

Gość
Dodaj komentarz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.