Astronomical image processing guide (How to open a FITS image?)
FITS Fortran Guide
A structure of a FITS file is a little bit complicated, but not too much. The FITS itself includes a header and a data part. The header of an image consists from meta-information about the image. The most important are the size (width and height) and data representation of the image.
The header is set of 80-byte (character) length records. Every record is represented by text line with structure: | KEYWORD = VALUE
The KEYWORD must be no longer than 8 characters. The ‘=’ must be in 9 column. The width and height of an image is coded by the way:
How to get an image size?
To get this basic information by use of the cfitsio library, we can use of the piece of the code (source code):
! to compile: gfortran -Wall -o FITSsize o.f90 -L/usr/local/lib -lcfitsio program FITSsize implicit none integer :: status, bitpix, naxis, naxes(2) ! status ... FITS status (0=no error) ! naxis .. number of axes in image (we require =2) ! naxes .. dimension of the image (2-element array) integer :: blocksize,pcount,gcount logical :: extend, simple ! required by cFITSIO character(len=666) :: name = 'image.fits' ! name .. fill with name of the image to open status = 0 call ftopen(25,name,0,blocksize,status) call ftghpr(25,2,simple,bitpix,naxis,naxes,pcount,gcount,extend,status) call ftclos(25,status) if( status == 0 ) then write(*,*) 'The image ',trim(name),' has the size:',naxes else write(*,*) 'The image "',trim(name),'" not found or not accessible.' end if end program FITSsize
The code may by compiled by command: host$ gfortran -Wall -o FITSsize FITSsize.f90 -L/usr/local/lib -lcfitsio where switch -Wall prints some warnings, -o specify name of the generated binary file (name of the routine), -L points path to cfitsio library (may be omitted, usually any system directory) and -lcfitsio links cFITSIO library (libcfitsio.a). Type:
host$ ./FITSsize
to run. The utility will try to open file named as ‘image.fits’ (can be changed in declaration name = ‘image.fits’). If this file is accessible it will print the size of the image. If the name can’t be open, an error will appeared.
This code demonstrates basic idioms of FITS-specific ones:
- its look horribly
- there is a lot of declarations which meaning is too hard to remember
- the variable status must be set to zero before calling of any of cFITSIO routines
- the name of the image to open is a second argument to ftopen
- the routine ftghpr reads important parameters (coded by KEYWORDS as above) of the image