True Color Images
CIAO 4.15 Science Threads
Overview
Synopsis:
Most astronomical images map color to intensity level, i.e. for a greyscale image, lighter tones correspond to a brighter intensity level or vice versa. An alternative way of presenting data is via an image that correllates color and energy or wavelength. The output may also be a postscript file.
Purpose:
Use the CIAO tool dmimg2jpg to create a true color image and (optionally) overlay a source list on that image.
Related Links:
-
True Color Images in ds9: using the ds9 imager to interactively create a true color image.
Last Update: 15 Feb 2022 - Review for CIAO 4.14. Updated for Repro-5 and CALDB 4.9.6
Contents
- Get Started
- Create Input Images
- Create a True Color Image
- Real vs. Virtual Image Files
- Overlaying a Source List
- Parameter files:
- History
- Images
Get Started
Download the sample data: 1838 (ACIS-S, G21.5-09)
unix% download_chandra_obsid 1838 evt2
Create Input Images
First we need to create the input image files for dmimg2jpg. In this example, we use dmcopy to create 3 image files corresponding to the soft, medium, and hard energy bands. For the soft band (energy = 0.2 to 1.5 keV):
unix% punlearn dmcopy unix% pset dmcopy infile="acisf01838N004_evt2.fits[energy=200:1500][bin x=3773:4380,y=4006:4509]" unix% pset dmcopy outfile=soft_img.fits unix% dmcopy Input dataset/block specification (acisf01838N004_evt2.fits[energy=200:1500][bin x=3773:4380,y=4006:4509]): Output dataset name (soft_img.fits):
This dmcopy command takes the events in the given energy range and bins them to create an image of the S3 chip only (specified by the coordinates in the bin option). Since we did not give a blocking factor, the image is binned to the default value of 1; see ahelp dmcopy for information on blocking.
The command may be condensed to a single line instead. For the medium band (energy = 1.5 to 2.5 keV):
unix% dmcopy "acisf01838N004_evt2.fits[energy=1500:2500][bin x=3773:4380,y=4006:4509]" med_img.fits
And, finally, for the hard band (energy = 2.5 to 8.0 keV):
unix% dmcopy "acisf01838N004_evt2.fits[energy=2500:8000][bin x=3773:4380,y=4006:4509]" hard_img.fits
The choice of energy bands is dependent on the type of source and specific types of analysis the user is doing. The energy bands in this thread are different than the energy bands used in the Chandra Source Catalog.
Create a True Color Image
Now we can use dmimg2jpg to combine the the soft, medium and hard images created in the previous section into a single RGB image:
unix% punlearn dmimg2jpg unix% pset dmimg2jpg infile=soft_img.fits unix% pset dmimg2jpg greenfile=med_img.fits unix% pset dmimg2jpg bluefile=hard_img.fits unix% pset dmimg2jpg outfile=truecolor_1838.jpg unix% pset dmimg2jpg maxred=1 maxblue=1 maxgreen=1 unix% pset dmimg2jpg showgrid=yes unix% pset dmimg2jpg gridsize=60 unix% pset dmimg2jpg fontsize=1 unix% dmimg2jpg Input file name (red image if true color) (soft_img.fits): Green color channel file name (med_img.fits): Blue color channel file name (hard_img.fits): Output jpg file name (truecolor_1838.jpg):
The resulting image looks like Figure 1. You can check the parameter file with plist dmimg2jpg.
[Version: full-size]
Figure 1: X-ray true-color image of G21.5-09
A few notes on the parameters used above: maxred, maxblue, and maxgreen control the maximum pixel value to be used in the red, green, and blue files respectively. Experiment with these parameters to bring out the features in which you are interested. In general, lower maximum pixel values will bring out fainter features; for unsmoothed images, values near 1 may be necessary to display background noise.
The parameter showgrid controls whether a sky grid is overlayed on the image; gridsize=60 draws a grid line every 60 arcsecs. fontsize controls the size of font marking RA and Dec.
There is also a regionfile parameter that allows users to overlay a FITS formatted region (e.g. to mark the locations of sources). This option is discussed further in the Overlaying a Source List section.
Users may want to smooth their images before creating true color images. This can be done with several ciao tools: aconvolve, csmooth, or dmimgadapt.
Real vs. Virtual Image Files
It is also possible to use virtual files as input to dmimg2jpg, bypassing the dmcopy steps. To repeat the previous command with virtual file syntax:
unix% punlearn dmimg2jpg unix% pset dmimg2jpg infile="acisf01838N004_evt2.fits[energy=200:1500][bin x=3773:4380,y=4006:4509]" unix% pset dmimg2jpg greenfile="acisf01838N004_evt2.fits[energy=1500:2500][bin x=3773:4380,y=4006:4509]" unix% pset dmimg2jpg bluefile="acisf01838N004_evt2.fits[energy=2500:8000][bin x=3773:4380,y=4006:4509]" unix% pset dmimg2jpg outfile=virtual_1838.jpg unix% pset dmimg2jpg maxred=1 maxblue=1 maxgreen=1 unix% pset dmimg2jpg showgrid=yes unix% pset dmimg2jpg gridsize=60 unix% pset dmimg2jpg fontsize=1 unix% dmimg2jpg Input file name (red image if true color) (acisf01838N004_evt2.fits[energy=200:1500][bin x=3773:4380,y=4006:4509]): Green color channel file name (acisf01838N004_evt2.fits[energy=1500:2500][bin x=3773:4380,y=4006:4509]): Blue color channel file name (acisf01838N004_evt2.fits[energy=2500:8000][bin x=3773:4380,y=4006:4509]): Output jpg file name (virtual_1838.jpg):
Using this method is useful if disk space is an issue, since the intermediate files aren't written out.
Overlaying a Source List
A. On an X-ray Image
It is straightforward to overlay a source list from one of the detect tools, onto the x-ray image; the file may be either FITS or ASCII format. Using the regionfile parameter in dmimg2jpg:
unix% cat sources.reg # Region file format: CIAO version 1.0 circle(4071,4247,75) circle(4245,4092,20) unix% punlearn dmimg2jpg unix% pset dmimg2jpg infile=soft_img.fits unix% pset dmimg2jpg greenfile=med_img.fits unix% pset dmimg2jpg bluefile=hard_img.fits unix% pset dmimg2jpg outfile=overlay_1838.jpg unix% pset dmimg2jpg maxred=1 maxblue=1 maxgreen=1 unix% pset dmimg2jpg showgrid=yes unix% pset dmimg2jpg gridsize=60 unix% pset dmimg2jpg fontsize=1 unix% pset dmimg2jpg regionfile="region(sources.reg)" unix% pset dmimg2jpg regioncolor=")colors.red" unix% dmimg2jpg Input file name (red image if true color) (soft_img.fits): Green color channel file name (med_img.fits): Blue color channel file name (hard_img.fits): Output jpg file name (overlay_1838.jpg):
The regions are shown in Figure 2. You can see a list of available colors by doing "plist colors"; note the close-parenthesis needed in the regioncolor syntax.
[Version: full-size]
Figure 2: True-color image with source list overlaid
B. On an Optical Image
Adding a source list on top of an optical image requires the region file to be in WCS instead of Chandra physical coordinates.
-
Convert the source list from Chandra physical pixels to WCS in ds9:
- Load the x-ray image: unix% ds9 acisf01838N004_evt2.fits &
-
Region → Load Regions... →
sources.reg
unix% cat sources.reg # Region file format: CIAO version 1.0 circle(4071,4247,75) circle(4245,4092,20)
- Region → Save Regions... → sourcelist_J2000.reg
- Format → ciao
-
Coordinate System →WCS → Equatorial J2000
unix% cat sourcelist_J2000.reg # Region file format: CIAO version 1.0 circle(18:33:33.627,-10:34:07.32,0.615') circle(18:33:27.821,-10:35:23.58,0.164')
-
Load the optical image:
- Frame → New Frame
- Open... → optical.fits
- Frame → Match Frames → WCS
-
Make sure that the WCS axes are oriented the same for both images (e.g. North is "up"). Then load the region file onto the optical data.
- Region → Load Regions... → sourcelist_J2000.reg → Format: ciao
-
Convert the source list to the coordinates of the optical image:
-
Region → Save Regions → sourcelist_optical.reg
→ Format: ds9 → Coordinate System: Image
unix% cat sourcelist_optical.reg # Region file format: DS9 version 4.0 # Filename: /data/optical_image.fits global color=green font="helvetica 10 normal" select=1 highlite=1 edit=1 move=1 delete=1 include=1 fixed=0 source image circle(144.96674,195.67433,21.711926) circle(195.10976,150.535,5.7898468)
-
Region → Save Regions → sourcelist_optical.reg
→ Format: ds9 → Coordinate System: Image
Now dmimg2jpg can be run with the optical image as input and the regions in optical coordinates (regionfile="region(sourcelist_optical.reg)").
Parameters for /home/username/cxcds_param/dmimg2jpg.par #-------------------------------------------------------------------- # dmimg2jpg.par Parameter file for dmimg2jpg tool #-------------------------------------------------------------------- # Input files. infile = redfile for true color output #-------------------------------------------------------------------- infile = soft_img.fits Input file name (red image if true color) greenfile = med_img.fits Green color channel file name bluefile = hard_img.fits Blue color channel file name #-------------------------------------------------------------------- # Output files. Currently to get a postscript file you need # to make the jpeg file. #-------------------------------------------------------------------- outfile = truecolor_1838.jpg Output jpg file name #-------------------------------------------------------------------- # In greenfile == 'none' use a lookup table #-------------------------------------------------------------------- (lutfile = )lut.grey -> /soft/ciao/data/grey.lut) Colormap file (colorstretch = 1) Color lookup strech factor (colorshift = 0) Color lookup table shift (invert = no) Invert colors #-------------------------------------------------------------------- # Scaling functions. Use INDEF to get min and max of data #-------------------------------------------------------------------- (scalefunction = log) Scaling function(log|linear|power) (scaleparam = 3) Scaling parameter (for non-linear scalefunction) (minred = INDEF) Minimum value for the red color channel (mingreen = INDEF) Minimum value for the green color channel (minblue = INDEF) Minimum value for the blue color channel (maxred = 1) Maximum value for the red color channel (maxgreen = 1) Maximum value for the green color channel (maxblue = 1) Maximum value for the blue color channel #-------------------------------------------------------------------- # Regions, aimpoint and grid overlay #-------------------------------------------------------------------- (regionfile = ) Region overlay file (regioncolor = )colors.green -> 0 1 0) Region color triple (regionopt = individual) Option of region shape drawing method (individal|combine) (showaimpoint = no) Put crosshair at aimpoint (showlabel = no) Label the contours? (showgrid = yes) Show grid on image (gridcolor = )colors.white -> 1 1 1) Grid color triple (gridsize = 60) Gridsize [arcsec] (fontsize = 1) Font label size (psfile = ) Optional post script file name (verbose = 0) Level of verbose output (clobber = no) Clobber existing outputs? (mode = ql)
History
16 Dec 2004 | reviewed for CIAO 3.2: no changes |
21 Dec 2005 | reviewed for CIAO 3.3: no changes |
01 Dec 2006 | reviewed for CIAO 3.4: no changes |
08 Mar 2007 | added link to A True Color Images in ds9 thread |
16 Jan 2008 | updated for CIAO 4.0: color_image script removed from the CIAO scripts package (obsolete, use virtual file syntax instead); ds9 now automatically looks for the "[SRCLIST]" extension in the region file, so it doesn't have to be specified |
30 Jan 2009 | updated for CIAO 4.1: images are inline |
20 Apr 2009 | updated for CIAO 4.1.2: the showaimpoint and showgrid parameters in dmimg2jpg are set to "no" by default |
27 Jan 2010 | reviewed for CIAO 4.2: updated DS9 region file saving information |
13 Jan 2011 | reviewed for CIAO 4.3: no changes |
10 Jan 2012 | reviewed for CIAO 4.4: no changes |
03 Dec 2012 | Review for CIAO 4.5 |
11 Dec 2013 | Review for CIAO 4.6; no changes. |
23 Dec 2014 | Review for CIAO 4.7; minor edits. |
01 Feb 2016 | Minor link and other updates. |
15 Feb 2022 | Review for CIAO 4.14. Updated for Repro-5 and CALDB 4.9.6 |