Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.mrao.cam.ac.uk/~dag/CUBEHELIX/
Дата изменения: Tue Mar 15 15:32:32 2016
Дата индексирования: Sun Apr 10 02:43:49 2016
Кодировка:
|
Dave Green's `cubehelix' colour scheme
Implementations:
- Fortran
- Astronomical Packages (AIPS / casa /
DS9 / karma kvis / miriad / CIAO / PSRchive / HEALpix),
- Other (gnuplot / IDL / matlab / python
(matplotlib / seaborn) / Octave / javascript / R / NCL / IGOR / DigitalMicrograph)
Or try your own, using javascript.
|
Example images using the `cubehelix' colour scheme
using AIPS. (left) A portion of the Galactic plane from
the VGPS survey at
1.4 GHz, which includes the supernova remnant G35.6-0.4 (see:
2009MNRAS.399..177G).
(right) The Crab Nebula at 347 GHz observed with SCUBA on the JCMT
(see 2004MNRAS.355.1315G).
|
|
Other examples elsewhere:
(1) the Sun;
(2) some geography;
(3) Arctic ice thickness;
(4) edge detection;
(5) optical images of Comet
Lovejoy (C/2014 Q2),
Barnard's
Loop in Orion and the
Horsehead Nebula;
(6) summer--winter
temperature differences across the Earth;
(7) particulate polution.
1. Background
Many colour schemes used to display astronomical intensity images do
not have an underlying increase in the perception of the brightness of
the colours used (e.g. burning out to red for the high data values, but
using yellow/green for intermediate data values, which are perceived as
being brighter than the red).
2. A Solution
I have written up the implementation of a colour scheme -- called
`cubehelix' -- which is intended to be perceived as increasing in
intensity. This is a family of colour schemes that go from black to
white, deviating away from a pure greyscale (i.e. the diagonal from
black to white in a colour cube) using a tapered helix in the colour
cube, while ensuring a continuous increase in perceived intensity. The
deviation from the diagonal takes into account that red, green and blue
are not perceived equally in terms of intensity. These colour schemes
prints as a monotonically increasing greyscale on black and white
postscript devices.
This colour scheme is described in more detail in:
Please cite this paper if you use `cubehelix' in any
publications.
This colour scheme is now recommended in the Graphics Guide
for authors from the American Astronomical Society (although, bizarrely,
they decided to call it `cube-helix' with a hyphen).
There is no single `cubehelix', as there are several parameters that
control this family of colour schemes:
- the `start' colour (this is the direction of the predominant colour
deviation from black at the start of the colour scheme, with R=1, G=2,
B=3 etc.);
- the `number' of R->G->B rotations that are made from the
start (i.e. black) to the end (i.e. white) of the colour scheme;
- a `hue' parameter, which controls how saturated the colour of all
hues are (if this parameter is zero then the colour scheme is purely a
greyscale; if the parameter is larger than 1, then some R, G or B values
may be out of range near the start or end colour scheme, so will
have to be clipped, although if only a few colour levels are clipped,
the resulting colour scheme may still be satisfactory);
- a `gamma factor' can be used to emphasise low or high intensity
values.
The image below shows what I consider my `default' scheme.
![my `default' cubehelix colour scheme](rgb-default.png)
And here is a 3-D visualisation (made with Maple) of how the colour scheme
spirals around the diagonal of the colour cube (see 3d-cubehelix.mpl for the maple code if you
want to explore this in 3-D further).
![my `default' cubehelix colour scheme 3D](3d-default.png)
Note that since this `default' scheme uses a hue parameter of 1, no
R, G or B values are clipped, and the perceived intensity is constantly
increasing. If the hue parameter is increased, then the scheme becomes
more colourful, but some of the R, G or B values are clipped (although
the underlying perception of intensity is not exactly constantly
increasing, it is still monotonically increasing). Below is a `more hue'
scheme, for a hue parameter of 1.5.
![a `more hue' cubehelix colour scheme](rgb-morehue.png)
This page gives several other colour
wedges made with different parameters (along with the corresponding
colour scheme files for use in DS9 or kvis, see
Section 3.2 below).
This page which allows you to visualise --
using javascript -- what other combinations of parameters produce, and
also produce colour scheme files for DS9, or R/G/B values as decimal or
hex numbers (this works in Firefox, Safari and Chrome, but not with IE).
3. Implementations
As in the published paper, here is the Fortran 77
source of a subroutine that implements this scheme, which
is free software released into the public domain,
under the unlicense license.
3.2 Astronomical packages
(AIPS / casa / DS9 / karma kvis / miriad / CIAO / PSRchive /
HEALpix )
This scheme is also currently implemented in:
- AIPS: from the 31DEC10 release as TVHELIX -- for examples,
see the plots at the top of this page (note: you may have to RUN NEWPARMS so
that TVHELIX is declared as verb within AIPS; and if you run a midnight job,
for 31DEC11 you should have a DOPRINT option for TVHELIX to print out the four
parameters used to control the colour scheme, which is probably useful).
- casa: from version 3.1.0, in viewer as a colo(u)r scheme
called CubeHelix.
- DS9: it is possible to read in specific colour maps
from text files, using
prompt>
ds9 -cmap file <cmap-filename>
and several version of the scheme are
available, or you can make others
here.
- karma/kvis: it is possible to read in specific colour maps from
.kf binary files, using the
Intensity → PseudoColour
(emulated) → Load
menus. Appropriate .kf files for several version of the scheme are
available (these work fine for me, under Linux
and Solaris, but may not work with all implementations, as the .kf
files are, I believe, memory dumps, so for example might need byte-swapping),
or you can make others here.
- miriad: Cubehelix has been implemented in a
recent miriad release (from release 1.24), in cgdisp and
cgspec.
- Chandra Interactive Analysis of Observations (CIAO):
Cubehelix is included, as "contributed" script chips_contrib.helix, from Version 4.6.1.
- Stefan
Osłowski has implemented cubehelix in the development branch
of the PSRchive radio
pulsar processing package, and also has produced ls_image.h in C++ for use with HEALpix (use the
Get_Colour_Cubehelix function instead of Get_Colour).
Other implementations I currently know of are:
- gnuplot: Ingo
Thies (of Universität Bonn) has added this to his other useful colortools
for gnuplot (also there is a `cubehelix' palette option is recent
development versions
of gnuplot, as shown in this demo).
- IDL:
- Aaron Barth
(of University of California, Irvine) has added this colo(u)r scheme to his ATV data display and analysis
package for IDL.
- James Davenport
(of the University of Washington) has written an implementation for IDL -- cubehelix.pro.
- matlab:
- Phillip Graff (a former colleague of mine here at the University of
Cambridge, now at NASA) has written function implementing this for
matlab -- CubeHelix.m.
- Stephen Cobeldick has written a another version,
which extends cubehelix is a variety of ways,
including a interactive demonstration (note: the `hue' parameter is
renamed `sat' for saturation).
- python/matplotlib:
- The cubehelix scheme is available from the 1.1.0 release of matplotlib.
- Ian
Heywood (of the University of Oxford) has implemented this for python
(with matplotlib) -- cubehelix.py.
- Oleg Smirnov (of ASTRON) has incorporated cubehelix into his .fits
viewer Tigger (see screenshot and Colormaps.py, specifically see
CubeHelixColormap.colorize()), which was added to Version 1.2 (of 17th
September 2011) of MeqTrees.
- James
Davenport (of the University of Washington) has written a full
implementation for python, available on github.
- Micheal Waskom has
included cubehelix in his seaborn
statistical data visualization, based on matplotlib (see
examples).
- J. J.
Green (no relation!) has included several cubehelix color schemes in
his compilation of colour schemes, at cpt-city, in a
variety of formats (cpt: colour palette tables for use with the Generic Mapping
Tools; c3g: CSS3 gradients; ggr: gradients for the GNU image manipulation
program, GIMP; gpf: Gnuplot palette files; grd: (version 3) for Paint Shop Pro
and Photoshop; inc: POV-Ray colour map headers; sao: the SAO format used by the
astronomical image viewer, DS9; svg: scalar vector graphics gradients).
- Octave: since version 4.0, a cubehelix
function is provided, for a single version of this colour scheme (i.e. it is not
possible to adjust the parameters).
- javascript: Mike
Bostock has implemented and extended cubehelix in JavaScript as a
plugin
for the
D3.js visualisation library (see
examples), and
Bass Jobsen has written
a custom function to use this in Less (a preprocessor for CSS).
- R: Robin
Evans, of the Statistical Laboratory, University of Cambridge, has
an implementation for R (from version 1.6 of his useful functions).
- NCL: A cubehelix colour scheme is included in the NCAR Command Language
(NCL) plotting package, from version 6.2.0, as
MPL_cubehelix.
- IGOR: cubehelix has been implemented
for IGOR Pro
(a scientific data analysis and graphs), for version 6.30.x and above.
- DigitalMicrograph: A script is available
(see 2014 Dec 16), by Bernhard Schaffer, for the DigitalMicrograph software package
used in electron microscopy.
If you have another implementation, please let me know if you
want it listed here.
home |
addresses |
teaching |
research