BifsConv
Le convertisseur d'images vers FITS
The to-FITS image converter

Raoul Behrend
Observatoire de Genève
CH-1290 Sauverny - Suisse
Raoul.Behrend@unige.ch

BifsConv, qu'est-ce ?

Un logiciel permettant de convertir vers le format FITS (fit) divers formats d'image, tels que:

BifsConv, what is it ?

This software is a to-FITS (fit) image converter; it accepts images in various formats like:

bmp, imq, st4, stx, ima, cpa, pic, tif, tiff, mmf, mrw, dng, gif, mx5, hx5 (660x500), xl8 (510x500), sxl (510x512), dat, pcx, per, rle, dib, arn, blu, bb1, bb2, bb3, bb4, grn, irq, ibg, img, ir1, ir2, ir3, n07, n15, pds, red, ihw, sgr, sur, sun, vio, cpt, gls, fts, fits, ftz, at1, t1m, 08b, raw, sbi, st5, st6, st7, st8, st9, 237, imi, ccd, tga, pnm, ppm, pbm, pam, pgm, ras, cn1..cn9, spe, cr2, crw, raf, arw, nef, mef, rw2, rwl, ser (Lucam Recorder).
Construction/test: dpx (ffmpeg -i <film> -pix_fmt rgb48be %06d.dpx), pef, dcr, kdc, sr2, srw, dcm, dic, acr (dicom), l1g (LandSat), eps, plu, vk4, surf, qoi, jpg (brutes de raspistill sur Raspberry).
Quelques variantes et parfums ne sont toutefois pas traduits, par manque de documentation. Plus de problèmes pour voir/travailler, avec son imageur astronomique favori, des images satellitales au format Titus, PDS (sauf les images Clémentine et quelques images de Mars Global Surveyor), VICAR, TIFF, celles de SBIG et LumièreStellaire, etc. Les fichiers en FITS peuvent être compressés par les algorithmes Rice ou IHW. Some variants and flavours aren't translated, due to some undocumented things. No more problems viewing/working, with its favourite astronomical image processor, satellite images in Titus format, PDS (except the images by Clementine and a few by Mars Global Surveyor), VICAR, TIFF, SBIG's and StarLight's ones, etc. FITS files can be Rice or IHW compressed.
Le logiciel insère automatiquement les dates d'observation et les caractéristiques instrumentales disponibles dans certains formats; pour les autres, me contacter.

Au passage, BifsConv corrige certaines fautes dans le format FITS de certains logiciels (comme SharpCap, Meade, AstroArt, Pisco, Avi2Bmp).

The software automatically inserts the observation date and the instrumental characteristics present in some format; for the other ones, feel free to contact me.

On the fly, BifsConv corrects some errors made by some FITS generating software (like SharpCap, Meade, AstroArt, Pisco, Avi2Bmp).

Utilisation Usage
BIFSCONV "image"[,num] [=] [+] [Cr,v,b,a|R|V|B|A] [Zh,v] [Fz,s] [Ll] [M[H][MV]] [Ih,v,o [B|W|Q|S]] [HD|HM|HF|HO|HP|HQ|HR|Hs] [K[asc],[dec],[focmm],[phmm],[pvmm],[e/adu]] [Nn] [TW] [Y(:|+|=|-)c=v] [Mcccc[=]]
La première option de lancement est toujours le nom du fichier à convertir. Les guillemets permettent d'utiliser des fichiers dont les noms comportent un ou plusieurs espaces (au plus un à la fois) - facultatifs pour les autres fichiers. Le fichier de sortie porte le même nom et l'extension fit ou, si déjà présent et l'option = absente, est numéroté bifs####.fit . Il est possible d'extraire une image particulière d'une multi-image ou d'une image brute d'appareil numérique en indexant le nom de l'image avec un ou des numéros.
D'autres options (analysées de gauche à droite) sont possibles/nécessaires/sans utilité selon le type de fichier d'images à convertir:
  • Pour les images en couleur, Cr,v,b,a donnent la pondération du rouge, du vert, du bleu et du canal de transparence. R|V|B|A sélectionne rapidement une composante.
  • Zh,v donne les facteurs de compactage des pixels horizontalement et verticalement.
  • M[H][V]retournent horizontalement et verticalement l'image.
  • Fz,s impose l'équivalent de bzero et bscale des images fit, pour certains formats.
  • Ih,v,o donne les dimensions horizontale et verticale des images, ainsi que la taille en octets de l'entête à sauter; pour certains formats, on peut mettre une des dimensions à zéro et laisser le logiciel la recalculer à partir de la taille du fichier. B|W|Q signifie que les données sont codées sur 1, 2 ou de 4 octets; S demande l'échange de l'ordre des octets.
  • HD|HM|HF demande d'interpréter les éventuels instants marqués dans l'image originale comme étant le début, le milieu ou la fin de l'exposition. Hs donne une correction en secondes à appliquer au temps ci-dessus.
  • K[asc],[dec],[foc],[ph],[pv],[e/adu] permet de marquer et de corriger la positition visée par le télescope (hh.mmsss et ±°°.''""), sa focale équivalente (en mm), ainsi que les dimensions logiques (également en mm) des pixels de la caméra (tenir compte du compactage) et du gain de la caméra. Si spécifiées, ces valeurs priment sur celles de l'entête originale et celles en mémoire. Nn où n=1..2 permet d'écrire les coordonnées du centre du champ dans le dialecte non-standard de Astrometrica et PinPoint.
  • + permet d'accéder aux enregistrements d'ingéniérie des images des sondes spaciales.
  • TW impose une sortie sur 16 binons, même si c'est possible en 8 binons.
  • Y(:|+|=|-)c=v permet de remplacer ou ajouter, ajouter, remplacer ou supprimer une clé c et sa valeur v de l'entête du fichier de sortie - maximum 16 clés.
The first parameter is always the name of the file to be converted. The quotations marks permit to use files with names containing one or more spaces (but one at a time) - facultative for other files. The ouput file has the same name and fit as the extension or, if already present and that the = option is absent, is numbered bifs####.fit . It is possible to extract a particular image from a multi-image or from a raw image drom a digital camera by using indexes just after the name of the file.
Other options (processed from left to right) are possible/needed/useless depending on the type of the image file to be converted:
  • For colour pictures, Cr,v,b,a gives the weigthening of red, green, blue and transparency channels. R|V|B|A select more easily a specific channel.
  • Zh,v represents the horizontal and vertical binning factors.
  • M[H][V]mirror horizontaly and verticaly the image.
  • Fz,s fixes bzero and bscale in the same manner as for fit images, for some formats.
  • Ih,v,o imposes horizontal and vertical dimensions of the image to be converted, as well as the size in bytes of the skipped header; for some formats, one can give 0 for one of the sizes and the software will compute the real value from the filesize. B|W|Q specify that the data are coded on 1, 2 or 4 bytes; S swaps low and high bytes.
  • HD|HM|HF says that the time, if present in the original file, is for the beggining, middle or end of exposure. Hs specify a correction in seconds to the previous time.
  • K[asc],[dec],[foc],[ph],[pv],[e/adu] is an easy way to specify and correct the pointing direction of the telescope (as hh.mmsss and ±°°.''""), its equivalent focal length (in mm), and the sizes (also in mm) of the logical pixels of the CCD camera (keep in mind the binning factors), and the gain of the camera. These values, if specified, overread the ones in the original header or in the software. Nn with n=1..2 permits to write the coordinates of the center of the field in the non-standard dialect of Astrometrica and PinPoint.
  • + gives access to the engineering records of spacecraft images.
  • TW specify to output file to be on 16 bits, even if it is possible with 8 bits.
  • Y(:|+|=|-)c=v allows the software to change or add, add, change, erase a key c and its value v in the output file - at most 16 keys.
Attention: l'option = autorise le logiciel à écraser un fichier avec l'extension fit. A n'utiliser que si vous avez sauvegardé vos images originales dans un autre répertoire/disque ! Je décline toutes responsabilités. Caution: the = option authorize the software to overwrite a file with a fit extension. Use it only if you have copied your original images in a different directory/disc ! I decline all responsibilities.
Exemple Example
bifsconv 12222001.fts = k12.42201,-4.3327,666.7,0.0148,0.0148 "y:object='2003 EM1'"
charge l'image 12222001.fts puis crée 12222001.fit ; si cette dernière existe déjà, elle est écrasée (option =). La position asc=12h42m20,1s dec=-4°33'27" est insérée dans l'entête. La longueur focale équivalente de l'instrument est de 666,7mm; les pixels font 0,0148x0,0148mm. Si une clé OBJECT existe, sa valeur est changée à '2003 EM1'; sinon, elle est créée. reads the image 12222001.fts and create a file named 12222001.fit ; if this file already exists, it is overwritten (= option). The coordinates RA=12h42m20.1s and DEC=-4°33'27" are added in the header. The equivalent focal length is 666.7mm; the pixels are sized 0.0148x0.0148mm. If there exists an OBJECT key, its value is changed to '2003 EM1', else it's created.
Astuces
  • Pour convertir du FITS en FITS, commencer par renommer les images avec une extension fts.
  • Les images Mariner 10 doivent être renomées avec l'extension vic - ou une autre de la série PDS.
  • Pour convertir les images du programme International Halley Watch, de la sonde Juno au PDS, il faut mettre bout à bout l'entête hdr (respectivement lbl) au corps imq et placer le tout dans un fichier fts (respectivement ihw); effacer ensuite le fichier imq. Parfois, les entêtes hdr et lbl n'ont pas le même contenu informatif - il faut essayer les deux manières pour savoir quelle est la meilleure.
    Exemple dans lequel "a" est le nome de l'image (sans extension):
Tricks
  • To convert from FITS to FITS, rename your images with a fts extension.
  • Mariner 10's images must be renamed with a vic extension - or an other PDS-like extension.
  • To convert images from the International Halley Watch program, the Juno spacecraft at PDS, first append the hdr (respectively lbl) header and the imq content in a fts (respectively ihw) file; then erase the imq file. Sometimes, the hdr and lbl headres don't have the same information contents - do a try of both manners to select the best one.
    Example where "a" is the name of the image (without extension):
ms-dos: copy /b a.hdr+a.imq a.fts
ou/or: copy /b a.lbl+a.imq a.ihw
linux: cat a.hdr a.imq > a.fts
ou/or: cat a.lbl a.imq > a.ihw
Sous DOS/Windows, il faut commencer par ouvrir une fenêtre ms-dos. Après quoi, la commande In DOS/Windows, first open a ms-dos box. Then, the command
for %f in (*.*) do bifsconv "%f" =
convertit toutes les images reconnues d'un répertoire. Cette commande marche en ligne de commande; en fichier de commande, il faut remplacer % par %%. On peut aussi assigner un bouton de la souris pour convertir une image depuis l'explorateur, avec l'action suivante: converts all recognised images from a directory. This command works as a command line; in a batch file, replace % by %%. To convert a file using the explorer, one can also assign a mouse-button to the following action:
bifsconv "%1" =
Sous Linux, la conversion en bloc s'obtient avec With Linux, the in-mass conversion is obtained by
find . -name '*.*' -exec bifsconv "{}" = \;
ou / or
for i in *.* ; do bifsconv "$i" = ; done
Images en mode brut (RAW)

BifsConv sait convertir la plupart des formats d'images en mode brut d'appareils de photo numériques. Pour les formats non-pris en charge, la solution est d'utiliser le fabuleux programme DCRaw de Dave Coffin pour faire une traduction au format tiff, et ensuite de faire la conversion finale en fit à l'aide de BifsConv. Pour ce cas, un mode d'extracation des couleurs à partir de la matrice du capteur est disponible dans BifsConv: selon l'exemple ci-dessous, l'option mrvvb signifie que la matrice de base comporte un photosite rouge, deux photosites verts sur le diagonale et le dernier photosite est bleu. A adapter pour certains appareils par essais avec une photo de paysage. On peut rajouter un = à la suite de la liste des couleurs de sorte à demander de normaliser les intensités par le nombre de photosites de même couleur. Dans la plupart des cas, il suffit de ne mentionner que m=, car les couleurs sont habituellement bien reconnues par la logique interne. Pour avoir une image brute de brute, utiliser l'option c1,1,1,1 au lieu de m ou de m=. Dans les exemples, une mention du canal de couleur est rajoutée au nom de l'image.

Exemple: conversion des images au format fep en tiff, puis extraction des trois composantes de couleur.

"RAW format" images

BifsConv knows how to convert images most "raw formats". Nevertheless some formats, the way to do the conversion is to use the marvelous DCRaw converter by Dave Coffin to obtain first an image in tiff format, and than to do the final conversion to fit format using BifsConv. For this particular case, one can select a color chanel from the color filter array as in the example below. The mrvvb option means that the matrix has one red-, two green- and one blue pixels. To be adapted for some cameras, using trials on a landscape image. With a = added, the intensities are normalized by the number of pixels of the same colour. For most cases, it is enough to use the option m=, because the colour components are usualy well identified by the internal logic. To obtain a really raw image, use c1,1,1,1 in place of m or m=. In the following exemples, the name of the colour chanel is added at the end of the filename.

Examples: conversion of the pef images to tiff, and than the extraction of the three colours.

fichier de commande sous windows / windows command file
for %%f in (*.pef) do dcraw -t 0 -j -T -4 -D -v %%f
for %%f in (*.tiff) do bifsconv %%f =+_r m= "y:filter='r'" r
for %%f in (*.tiff) do bifsconv %%f =+_v m= "y:filter='v'" v
for %%f in (*.tiff) do bifsconv %%f =+_b m= "y:filter='b'" b
linux
find . -maxdepth 1 -name \*.pef -exec dcraw -j -t 0 -T -4 -D -v "{}" \;
find . -maxdepth 1 -name \*.tiff -exec bifsconv "{}" =+_r m= "y:filter='r'" r \;
find . -maxdepth 1 -name \*.tiff -exec bifsconv "{}" =+_v m= "y:filter='v'" v \;
find . -maxdepth 1 -name \*.tiff -exec bifsconv "{}" =+_b m= "y:filter='b'" b \;

ou / or
for i in *.pef ; do dcraw -j -t 0 -T -4 -D -v "$i" ; done
for i in *.tiff ; do bifsconv "$i" =+_r m= "y:filter='r'" r ; done
for i in *.tiff ; do bifsconv "$i" =+_v m= "y:filter='v'" v ; done
for i in *.tiff ; do bifsconv "$i" =+_b m= "y:filter='b'" b ; done
Remarque: pour les applications photométriques et astrométriques, une manière de faire légèrement meilleure est disponible dans le programme de prétraitement Apla. Note: for photometric et astrometric applications, a slightly better way to extract colour channels exists: it is implemented in the Apla preprocessing software.
Autres formats d'image

Il existe des centaines de formats d'images différents et de variantes... et je n'ai pas une envie folle de tous les programmer. Fort heureusement, plusieurs convertisseurs acceptent de nombreux formats en entrée (dont le jpeg et le png) et permettent une sortie en tiff ou un des autres formats compris par BifsConv; il suffit alors de faire la conversion en deux temps, en utilisant par exemple le graticiel XnView ou le partagiciel Konvertor pour le premier pas.

Other image formats

There are hundreds of different image formats and flavour... and I don't want to code all of them. Some converters can input many formats (including jpeg and png) and output them in tiff or in an other format understand by BifsConv; the translation can thus be done in two steps, using for example the freeware XnView or the shareware Konvertor for the first step.

Autres fonctionnalités

Plusieurs fonctionnalité ne sont pas documentées ici par manque de tests de validation; il existe certainement celle dont vous avez besoin ! Prenez le temps de m'exposer vos souhaits...

Other features

Many features are undocumented here due to the lack of validation tests; the one you needs is probably already existing. Take some time to describe your wishes to me...

Mais encore...

Quatre versions de BifsConv sont disponibles:

  • bifsconv (386+; linux);
  • bifsconv (arm; raspbian aarch64 (et aussi armv6l et arvv7l sur demande));
  • bifsconv.exe (486+; windows);
  • bifsconl.exe (386+; dos et windows);

  • Pour les Macs de type Intel, il n'existe pas encore de version dédiée; mais la version linux fonctionne correctement avec la couche Wine.
    Some more...

    Four versions of BifsConv are available:

  • bifsconv (386+; linux);
  • bifsconv (arm; raspbian aarch64 (and also armv6l et arvv7l on demand));
  • bifsconv.exe (486+; windows);
  • bifsconl.exe (386+; dos and windows);

  • For Intel-styled Macs, there is not yet a dedicated version; but the linux version is reported to be working fine with the Wine software.
    BifsConv est développé en Pascal; les diverses versions sont compilées avec Free Pascal - anciennement aussi avec Borland Pascal et Delphi. Commentaires bienvenus. BifsConv is developped in Pascal; the various versions are compiled using Free Pascal - and also with Borland Pascal and Delphi in the past. Comments are welcome.
    Légalement
  • BifsConv est une oeuvre d'art sans garantie aucune; son auteur ne peut être tenu responsable de quoi que ce soit.
  • Bien que BifsConv sache décoder certaines images en format Dicom, l'usage médical de ce logiciel n'est pas recommandé.
  • Tous usages militaires strictement interdits.
  • Est aussi interdite la redistribution massive sans mon accord explicite.
  • BifsConv est un "timbriciel": il est gratuit et ne peut pas être vendu. Il faut s'enregister en envoyant simplement une carte postale avec un magnifique timbre ! Un lien vers la présente page est aussi le bienvenu...
  • Legal statement
  • BifsConv is an artwork without any waranty; its author can not be charged for any responsability of any kind.
  • BifsConv is able to read some images in Dicom format; nevertheless its use for medical puposes is not recommended.
  • All military uses strictly prohibited.
  • Is also forbidden the in-mass redistribution without my explicit permission.
  • BifsConv is a "stampware": it's free and can not be sold. Registration is required by just sending a postcard with a wonderful stamp ! A link to the present page is also appreciated...
  • Un problème ?

    BifsConv ne marche pas/pas bien/plus/pas encore avec une image ? Envoyez-la moi !

    Any problem ?

    BifsConv does not/not well/no more work/not work yet correctly with an image ? Send it to me !

    Quelques liens/some links:

  • Plan du site
  • Page personnelle
  • Traitement numérique des images
  • Digital image processing
  • Page d'accueil de l'Observatoire
  • rien/ rien