FITS or Flexible Image Transport System is a digital file format used to store, transmit, and manipulate scientific and other images. FITS is the most commonly used digital file format in astronomy. Unlike many image formats, FITS is designed specifically for scientific data and hence includes many provisions for describing photometric and spatial calibration information, together with image origin metadata.
A major feature of the FITS format is that image metadata is stored in a human readable ASCII header, so that an interested user can examine the headers to investigate a file of unknown provenance. Each FITS file consists of one or more headers containing ASCII card images (80 character fixed-length strings) that carry keyword/value pairs, interleaved between data blocks. The keyword/value pairs provide information such as size, origin, coordinates, binary data format, free-form comments, history of the data, and anything else the creator desires: while many keywords are reserved for FITS use, the standard allows arbitrary use of the rest of the name-space.
FITS is also often used to store non-image data, such as spectra, photon lists, data cubes, or even structured data such as multi-table databases. A FITS file may contain several extensions, and each of these may contain a data object. For example, it is possible to store x-ray and infrared exposures in the same file.
The earliest and still most commonly used type of FITS data is an image header/data block. The term 'image' is somewhat loosely applied, as the format supports data arrays of arbitrary dimension—normal image data are generally 2-D or 3-D (with the third dimension representing the color plane). The data themselves may be in one of several integer and floating-point formats, specified in the header.
FITS image headers can contain information about one or more scientific coordinate systems that are overlain on the image itself. Images contain an implicit Cartesian coordinate system that describes the location of each pixel in the image, but scientific uses generally require working in 'world' coordinates, for example the celestial coordinate system. As FITS has been generalized from its original form, the world coordinate system (WCS) specifications have become more and more sophisticated: early FITS images allowed a simple scaling factor to represent the size of the pixels; but recent versions of the standard permit multiple nonlinear coordinate systems, representing arbitrary distortions of the image. The WCS standard includes many different spherical projections, including, for example, the HEALPix spherical projection widely used in observing the cosmic microwave background radiation.
FITS also supports tabular data with named columns and multidimensional rows. Both binary and ASCII table formats have been specified. The data in each column of the table can be in a different format from the others. Together with the ability to string multiple header/data blocks together, this allows FITS files to represent entire relational databases.
FITS support is available in a variety of programming languages that are used for scientific work, including C, FORTRAN, Java, Perl, PDL, Python, S-Lang and IDL. The FITS Support Office at NASA/GSFC maintains a list of libraries and platforms that currently support FITS.
Image processing programs such as the GIMP, Photoshop and IrfanView can generally read simple FITS images but frequently cannot interpret more complex tables and databases; scientific teams frequently write their own code to interact with their FITS data, using the tools available in their language of choice. The SAOImage DS9 Astronomical Data Visualization Application is available for almost all O.S. and handles images and headers.
Many scientific computing environments make use of the coordinate system data in the FITS header to display, compare, rectify, or otherwise manipulate FITS images. Examples are the coordinate transform library included with PDL, the PLOT_MAP library in the solarsoft solar-physics-related software tree, the Starlink Project AST library in C, and the PyFITS package in python.