Palettes.html Various copy-edits and cleaned up HTML. Caching.html Edited section headers and added an <h1> header. Errors.html Added section title "Error Handling Operations."
289 lines
12 KiB
HTML
Executable File
289 lines
12 KiB
HTML
Executable File
<html>
|
|
<head>
|
|
<title>Palettes</title>
|
|
</head>
|
|
|
|
<body bgcolor="#FFFFFF">
|
|
|
|
|
|
<hr>
|
|
<center>
|
|
<table border=0 width=98%>
|
|
<tr><td valign=top align=left>
|
|
<a href="H5.intro.html">Introduction to HDF5</a> <br>
|
|
<a href="RM_H5Front.html">HDF5 Reference Manual</a> <br>
|
|
<a href="index.html">Other HDF5 documents and links</a> <br>
|
|
<!--
|
|
<a href="Glossary.html">Glossary</a><br>
|
|
-->
|
|
</td>
|
|
<td valign=top align=right>
|
|
And in this document, the
|
|
<a href="H5.user.html"><strong>HDF5 User's Guide:</strong></a>
|
|
<br>
|
|
<a href="Files.html">Files</a>
|
|
<a href="Datasets.html">Datasets</a>
|
|
<a href="Datatypes.html">Data Types</a>
|
|
<a href="Dataspaces.html">Dataspaces</a>
|
|
<a href="Groups.html">Groups</a>
|
|
<br>
|
|
<a href="References.html">References</a>
|
|
<a href="Attributes.html">Attributes</a>
|
|
<a href="Properties.html">Property Lists</a>
|
|
<a href="Errors.html">Error Handling</a>
|
|
<br>
|
|
<a href="Filters.html">Filters</a>
|
|
Palettes
|
|
<a href="Caching.html">Caching</a>
|
|
<a href="Chunking.html">Chunking</a>
|
|
<a href="MountingFiles.html">Mounting Files</a>
|
|
<br>
|
|
<a href="Debugging.html">Debugging</a>
|
|
<a href="Environment.html">Environment</a>
|
|
<a href="ddl.html">DDL</a>
|
|
<a href="Ragged.html">Ragged Arrays</a>
|
|
</td></tr>
|
|
</table>
|
|
</center>
|
|
<hr>
|
|
|
|
|
|
|
|
|
|
<H1>HDF5 Palette Specification </H1>
|
|
|
|
<P>This section is a work in progress page. Please send comments to <A
|
|
href="mailto:davet@ncsa.uiuc.edu">davet@ncsa.uiuc.edu</A>. Anything and
|
|
everything on this page may be changed.
|
|
|
|
<P><B>Questions regarding this specification:</B>
|
|
<UL>
|
|
<LI>Currently, the range index is referred to as an attribute of the palette.
|
|
I'm wondering if it makes more sense for this to be an attribute of the
|
|
dataset... If a palette is to be shared by multiple data sets and each dataset
|
|
has it's own range index mapping, then maybe one would want the index range to
|
|
be an attribute of the palette.
|
|
<LI>Should the range index be separate from the palette, or it be incorporated
|
|
into a 4 column array?
|
|
<LI>Is this method of specifying attributes satisfactory (string name
|
|
identifier with corresponding value), or should they be specified as a struct
|
|
that is read in and written out? The number of attributes is currently at 5.
|
|
</LI></UL>
|
|
<HR>
|
|
<B>Changes made since last revision</B>
|
|
<UL>
|
|
<LI>What was previously called the FLOATRANGE index array has been changed to
|
|
the RANGEINDEX array, and can be of any type, <I>preferably</I> matching that
|
|
of the data set type.
|
|
<LI>A range value min/max attribute for the color numeric may be specified.
|
|
i.e. the red component value of an RGB will be between 0 and 1.
|
|
<LI>A dataset may specify an array of palettes that it may be used with now.
|
|
previously it was just one.
|
|
<LI>CMYK and YCbCr color models have been added. </LI></UL>
|
|
<HR>
|
|
|
|
<HR>
|
|
|
|
<HR>
|
|
|
|
<H2>HDF 5.0 Palette Overview: </H2>
|
|
<P>HDF 5.0 adds the following new features to what existed in earlier HDF
|
|
versions:
|
|
<P>
|
|
<UL>
|
|
<LI>palettes of varying length.
|
|
<LI>definable arbitrary index range
|
|
<LI>definable color model type (RGB, YUV, HSV, CMY, etc.)
|
|
<LI>definable color numeric type </LI></UL>
|
|
<HR>
|
|
|
|
<P>A palette is the means by which color is applied to an image and is also
|
|
referred to as a color lookup table. It is a table in which every row contains
|
|
the numerical representation of a particular color. In the example of an 8-bit
|
|
standard RGB color model palette, this numerical representation of a color is
|
|
presented as a triplet specifying the intensity of red, green, and blue
|
|
components that make up each color.
|
|
<P>
|
|
<CENTER><IMG src="Palettes.fm.anc.gif"> </CENTER>
|
|
<P>In this example, the color component numeric type is an 8-bit unsigned
|
|
integer. While this is most common and recommended for general use, other
|
|
component color numeric data types, such as a 16-bit unsigned integer , may be
|
|
used. This type is specified as the type attribute of the palette dataset. (see
|
|
H5Tget_type(), H5Tset_type())
|
|
<P>The minimum and maximum values of the component color numeric are specified
|
|
as attribute of the palette dataset. See below (attributes PAL_MINNUMERIC,
|
|
PAL_MAXNUMERIC). If these attributes do not exist, it is assumed that the range
|
|
of values will fill the space of the color numeric type. i.e. with an 8-bit
|
|
unsigned integer, the valid range would be 0 to 255 for each color component.
|
|
<P>The HDF 5.0 palette specification additionally allows for color models beyond
|
|
RGB. YUV, HSV, CMY, CMYK, YCbCr color models are supported, and may be specified
|
|
as a color model attribute of the palette dataset. <I>(see "Palette Attributes"
|
|
for details)</I>.
|
|
<P>In HDF 4 and earlier, palettes were limited to 256 colors. The HDF 5.0
|
|
palette specification allows for palettes of varying length. The length is
|
|
specified as the number of rows of the palette dataset.
|
|
<P>In a standard palette, the color entries are indexed directly. HDF 5.0
|
|
supports the notion of a range index table. Such a table defines an ascending
|
|
ordered of ranges that map dataset values to the palette. If a range index table
|
|
exists for the palette, the PAL_TYPE attribute will be set to "RANGEINDEX", and
|
|
the PAL_RANGEINDEX attribute will contain an object reference to a range index
|
|
table array. If not, the PAL_TYPE attribute either does not exist, or will be
|
|
set to "STANDARD".
|
|
<P>The range index table array consists of a one dimensional array with the same
|
|
length as the palette dataset - 1. Ideally, the range index would be of the same
|
|
type as the dataset it refers to, however this is not a requirement.
|
|
<P><B>Example 2: A range index array of type floating point</B>
|
|
<P>
|
|
<CENTER><IMG src="PaletteExample1.gif"> </CENTER>
|
|
<P>The range index array attribute defines the "<I>to</I>" of the range. Notice
|
|
that the range index array attribute is one less entry in size than the palette.
|
|
The first entry of 0.1259, specifies that all values below and up to 0.1259
|
|
inclusive, will map to the first palette entry. The second entry signifies that
|
|
all values greater than 0.1259 up to 0.3278 inclusive, will map to the second
|
|
palette entry, etc. All value greater than the last range index array attribute
|
|
(100000) map to the last entry in the palette.
|
|
<P>
|
|
<HR>
|
|
|
|
<H2>Palette Attributes </H2>
|
|
<P>A palette exists in an HDF file as an independent data set with accompanying
|
|
attributes.
|
|
<P>These attributes are defined as follows:
|
|
<DL>
|
|
<DT>Attribute name="<B>CLASS</B>"
|
|
<DD>This attribute is of type H5T_STR_NULLTERM.
|
|
<DD>For all palettes, the value of this attribute is "PALETTE". This attribute
|
|
identifies this palette data set as a palette that conforms to the
|
|
specifications on this page.
|
|
<P></P>
|
|
<DT>Attribute name="<B>PAL_COLORMODEL</B>"
|
|
<DD>This attribute is of type H5T_STR_NULLTERM.
|
|
<DD>Possible values for this are "RGB", "YUV", "CMY", "HSV".
|
|
<DD>This defines the color model that the entries in the palette data set
|
|
represent.
|
|
<DL>
|
|
<DT>"RGB"
|
|
<DD>Each color index contains a triplet where the the first value defines
|
|
the red component, second defines the green component, and the third the
|
|
blue component.
|
|
<P></P>
|
|
<DT>"CMY"
|
|
<DD>Each color index contains a triplet where the the first value defines
|
|
the cyan component, second defines the magenta component, and the third the
|
|
yellow component.
|
|
<P></P>
|
|
<DT>"CMYK"
|
|
<DD>Each color index contains a quadruplet where the the first value defines
|
|
the cyan component, second defines the magenta component, the third the
|
|
yellow component, and the forth the black component.
|
|
<P></P>
|
|
<DT>"YCbCr"
|
|
<DD>Class Y encoding model. Each color index contains a triplet where the
|
|
the first value defines the luminance, second defines the Cb Chromonance,
|
|
and the third the Cr Chromonance.
|
|
<P></P>
|
|
<DT>"YUV"
|
|
<DD>Composite encoding color model. Each color index contains a triplet
|
|
where the the first value defines the luminance component, second defines
|
|
the chromonance component, and the third the value component.
|
|
<P></P>
|
|
<DT>"HSV"
|
|
<DD>Each color index contains a triplet where the the first value defines
|
|
the hue component, second defines the saturation component, and the third
|
|
the value component. The hue component defines the hue spectrum with a low
|
|
value representing magenta/red progressing to a high value which would
|
|
represent blue/magenta, passing through yellow, green, cyan. A low value for
|
|
the saturation component means less color saturation than a high value. A
|
|
low value for <I>value</I> will be darker than a high value. </DD></DL>
|
|
<P></P>
|
|
<DT>Attribute name="<B>PAL_TYPE</B>"
|
|
<DD>This attribute is of type H5T_STR_NULLTERM <BR>The current supported
|
|
values for this attribute are : "STANDARD8" or "RANGEINDEX"
|
|
<P>A PAL_TYPE of "STANDARD8" defines a palette dataset such that the first
|
|
entry defines index 0, the second entry defines index 1, etc. up until the
|
|
length of the palette - 1. This assumes an image dataset with direct indexes
|
|
into the palette.
|
|
<P>If the PAL_TYPE is set to "RANGEINDEX", there will be an additional
|
|
attribute with a name of "<B>PAL_RANGEINDEX</B>", The <B>PAL_RANGEINDEX</B>
|
|
attribute contains an HDF object reference pointer which specifies a range
|
|
index array in the file to be used for color lookups for the palette. (See
|
|
example 2 for more details)
|
|
<P></P>
|
|
<DT>Attribute name="<B>PAL_MINNUMERIC</B>"
|
|
<DT>Attribute name="<B>PAL_MAXNUMERIC</B>"
|
|
<DD>These two attributes are of the same type as the palette elements or color
|
|
numerics. <BR>They specify the minimum and maximum values of the color numeric
|
|
components. For example, if the palette was an RGB of type Float, the color
|
|
numeric range for Red, Green, and Blue could be set to be between 0.0 and 1.0.
|
|
The intensity of the color guns would then be scaled accordingly to be between
|
|
this minimum and maximum attribute. </DD></DL>
|
|
<P>
|
|
<HR>
|
|
|
|
<HR>
|
|
|
|
<H2>Specifying a Palette for a Dataset </H2>
|
|
|
|
A dataset within an HDF5 file may
|
|
specify an array of palettes to be viewed with. The dataset will have an
|
|
attribute field called "<B>PALETTE</B>" which contains an array of object
|
|
reference pointers which refer to palettes in the file. The first palette in
|
|
this array will be the default palette that the data may be viewed with.
|
|
|
|
|
|
|
|
<hr>
|
|
<center>
|
|
<table border=0 width=98%>
|
|
<tr><td valign=top align=left>
|
|
<a href="H5.intro.html">Introduction to HDF5</a> <br>
|
|
<a href="RM_H5Front.html">HDF5 Reference Manual</a> <br>
|
|
<a href="index.html">Other HDF5 documents and links</a> <br>
|
|
<!--
|
|
<a href="Glossary.html">Glossary</a><br>
|
|
-->
|
|
</td>
|
|
<td valign=top align=right>
|
|
And in this document, the
|
|
<a href="H5.user.html"><strong>HDF5 User's Guide:</strong></a>
|
|
<br>
|
|
<a href="Files.html">Files</a>
|
|
<a href="Datasets.html">Datasets</a>
|
|
<a href="Datatypes.html">Data Types</a>
|
|
<a href="Dataspaces.html">Dataspaces</a>
|
|
<a href="Groups.html">Groups</a>
|
|
<br>
|
|
<a href="References.html">References</a>
|
|
<a href="Attributes.html">Attributes</a>
|
|
<a href="Properties.html">Property Lists</a>
|
|
<a href="Errors.html">Error Handling</a>
|
|
<br>
|
|
<a href="Filters.html">Filters</a>
|
|
Palettes
|
|
<a href="Caching.html">Caching</a>
|
|
<a href="Chunking.html">Chunking</a>
|
|
<a href="MountingFiles.html">Mounting Files</a>
|
|
<br>
|
|
<a href="Debugging.html">Debugging</a>
|
|
<a href="Environment.html">Environment</a>
|
|
<a href="ddl.html">DDL</a>
|
|
<a href="Ragged.html">Ragged Arrays</a>
|
|
</td></tr>
|
|
</table>
|
|
</center>
|
|
|
|
|
|
|
|
<hr>
|
|
<address>
|
|
<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
|
|
</address>
|
|
|
|
<!-- Created: Spring 1999 -->
|
|
<!-- hhmts start -->
|
|
Last modified: 23 July 1999
|
|
<!-- hhmts end -->
|
|
|
|
</body>
|
|
</html>
|