<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
                   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<!-- lifted from troff+man by doclifter -->
<refentry id='rgb2ycc1'>
<!--  @(#)rgb2ycc.1 2001/04/02 NIST -->
<!--  I Image Group -->
<!--  Craig Watson and Michael D. Garris -->

<refmeta>
<refentrytitle>RGB2YCC</refentrytitle>
<manvolnum>1D</manvolnum>
<refmiscinfo class='date'>02 April 2001</refmiscinfo>
<refmiscinfo class='source'>NIST</refmiscinfo>
<refmiscinfo class='manual'>NFIS Reference Manual</refmiscinfo>
</refmeta>
<refnamediv id='name'>
<refname>rgb2ycc</refname>
<refpurpose>converts a color RGB image to the YCbCr colorspace and downsamples component planes as specified.</refpurpose>
</refnamediv>
<!-- body begins here -->
<refsynopsisdiv id='synopsis'>
<cmdsynopsis>
  <command>rgb2ycc</command>    
    <arg choice='plain'><replaceable>&lt;outext&gt;&lt;imagefile&gt;</replaceable></arg>
    <sbr/>
    <arg choice='opt'><arg choice='plain'>-raw_in <replaceable>w,h,d,</replaceable></arg><arg choice='opt'><replaceable>ppi</replaceable></arg><arg choice='opt'>-nonintrlv </arg></arg>
    <arg choice='opt'>-YCbCr <replaceable>H0,V0:H1,V1:H2,V2</replaceable></arg>
    <sbr/>
</cmdsynopsis>
</refsynopsisdiv>


<refsect1 id='description'><title>DESCRIPTION</title>
<para><emphasis remap='B'>Rgb2ycc</emphasis>
takes as input a file containing an uncompressed color RGB
image.  Two possible input file formats are accepted, NIST IHead
files and raw pixmap files.  If a raw pixmap file is to be converted,
then its image attributes must be provided on the command line as well.
Once read into memory, the RGB pixmap is converted to the YCbCr
colorspace. The results are always written to a raw pixmap file
because the NIST IHead file format only supports interleaved RGB images.</para>

<para>The color components of RGB pixels in a raw pixmap file may
be interleaved or non-interleaved.  By default, <command>rgb2ycc</command>
assumes interleaved color pixels.  (See INTERLEAVE OPTIONS below.)</para>

<para>If requested, <command>rgb2ycc</command> also conducts downsampling of the
YCbCr component planes.  By default, this utility does no downsampling.
Regardless of downsampling, the conversion from RGB to YCbCr and
back to RGB will not result in the same exact image.  Some pixels
values will be slightly perturbed due to the round-off of the
floating point transformations that are applied.
(See YCbCr OPTIONS below.)</para>  

</refsect1>

<refsect1 id='options'><title>OPTIONS</title>
<para>All switch names may be abbreviated; for example,
<option>-raw_in</option> may be written <option>-r</option>.</para>
<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;outext&gt;</emphasis></term>
  <listitem>
<para>the extension of the YCbCr output file.
To construct the output filename, <command>rgb2ycc</command> takes the
input filename and replaces its extension with the one
specified here.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>&lt;image file&gt;</emphasis></term>
  <listitem>
<para>the input file, either an IHead file or raw pixmap file,
containing the color RGB image to be converted.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><option>-raw_in </option><emphasis remap='I'>w</emphasis>,<emphasis remap='I'>h</emphasis>,<emphasis remap='I'>d</emphasis>,[<emphasis remap='I'>ppi</emphasis>]</term>
  <listitem>
<para>the attributes of the input image.  This option must
be included on the command line if the input is a
raw pixmap file.</para>
<!-- .br -->
  <!-- .RS -->
  </listitem>
  </varlistentry>
</variablelist>
<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>w</emphasis></term>
  <listitem>
<para>the pixel width of the pixmap</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>h</emphasis></term>
  <listitem>
<para>the pixel height of the pixmap</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>d</emphasis></term>
  <listitem>
<para>the pixel depth of the pixmap</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>ppi</emphasis></term>
  <listitem>
<para>the optional scan resolution of the image in integer units of
pixels per inch.</para>
  </listitem>
  </varlistentry>
</variablelist>
<!-- .RE -->
<variablelist remap='TP'>
  <varlistentry>
  <term><option>-nonintrlv</option></term>
  <listitem>
<para>specifies that the color components in an <emphasis remap='I'>input</emphasis> raw pixmap file
image are non-interleaved and stored in separate component planes.
(See INTERLEAVE OPTIONS below.)</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><option>-YCbCr </option><emphasis remap='I'>H0</emphasis>,<emphasis remap='I'>V0</emphasis>:<emphasis remap='I'>H1</emphasis>,<emphasis remap='I'>V1</emphasis>:<emphasis remap='I'>H2</emphasis>,<emphasis remap='I'>V2</emphasis></term>
  <listitem>
<para>this option, if provided on the command line, directs <command>rgb2ycc</command>
to conduct downsampling of the YCbCr component planes.
If all the H,V factors are set to 1 then no downsampling is done;
this is equivalent to ommiting the option.
(See YCbCr Options below.)</para>

  </listitem>
  </varlistentry>
</variablelist>
</refsect1>

<refsect1 id='interleave_options'><title>INTERLEAVE OPTIONS</title>
<para>The color components of RGB pixels in a raw pixmap file may
be interleaved or non-interleaved.  Color components are interleaved
when a pixel's (R)ed, (G)reen, and (B)lue components are sequentially
adjacent in the image byte stream, ie. RGBRGBRGB... .  If the color
components are non-interleaved, then all (R)ed components in the
image are sequentially adjacent in the image byte stream, followed
by all (G)reen components, and then lastly followed by all (B)lue
components.  Each complete sequence of color components is called
a <emphasis remap='I'>plane</emphasis>.  The utilities <emphasis remap='B'>intr2not</emphasis> and <emphasis remap='B'>not2intr</emphasis>
convert between interleaved and non-interleaved color components.
By default, <command>rgb2ycc</command> assumes interleaved
color components, and note that all color IHead images must be
interleaved.</para>

</refsect1>

<refsect1 id='ycbcr_options'><title>YCbCr OPTIONS</title>
<para><emphasis remap='B'>Rgb2ycc</emphasis> converts color RGB images to the YCbCr colorspace.
A common compression technique for YCbCr images is to downsample
the Cb &amp; Cr component planes.
<emphasis remap='B'>Rgb2ycc</emphasis> conducts a limited range of YCbCr
downsampling schemes that are represented by a list of component
plane factors.
These factors together represent downsampling ratios relative to
each other.  The comma-separated list of factor pairs correspond to
the Y, Cb, and
Cr component planes respectively.  The first value in a factor
pair represents the downsampling of that particular component plane
in the X-dimension, while the second represents the Y-dimension.
Compression ratios for a particular component plane are calculated
by dividing the maximum component factors in the list by the current
component's factors.  These integer factors are limited
between 1 and 4.  H,V factors all set to 1 represent
no downsampling.  For complete details, <command>rgb2ycc</command> implements
the downsampling and interleaving schemes described in the
following reference:</para>

<!-- .RS -->
<para>W.B. Pennebaker and J.L. Mitchell, "JPEG: Still Image Compression
Standard," Appendix A - "ISO DIS 10918-1 Requirements and Guidelines,"
Van Nostrand Reinhold, NY, 1993, pp. A1-A4.</para>
<!-- .RE -->

<para>For example the option specification:</para>

<!-- .RS -->
<para>-YCbCr 4,4:2,2:1,1</para>
<!-- .RE -->

<para>directs <command>rgb2ycc</command> to not downsample the Y component plane
(4,4 are the largest X and Y factors listed); the Cb component
plane will be downsampled in X and Y by a factor of 2
(maximum factors 4 divided by current factors 2); and the Cr component
plane will be downsampled in X and Y by a factor of 4 (maximum factors 4
divided by current factors 1).  Note that downsampling component
planes is a form of <emphasis remap='I'>lossy</emphasis> compression.
The utility <emphasis remap='B'>ycc2rgb</emphasis> takes the YCbCr results and converts
them back to the RGB colorspace.  If downsampling was applied
to the YCbCr components, then the downsampled planes are
up-sampled prior to conversion to RGB.  Note that even without
dowsampling, the conversion from RGB to YCbCr and
back to RGB will not result in the same exact image.  Some pixels
values will be slightly perturbed due to the round-off of the
floating point transformations that are applied.</para>

</refsect1>

<refsect1 id='examples'><title>EXAMPLES</title>
<para>From <emphasis remap='I'>test/imgtools/execs/rgb2ycc/rgb2ycc.src</emphasis>:</para>

<!-- .RS -->
<para><emphasis remap='B'>% rgb2ycc ycc face.raw -r 768,1024,24 -Y 4,4:1,1:1,1</emphasis>
<!-- .br -->
converts an RGB face image in a raw pixmap file to the YCbCr
colorspace and downsamples the Cb and Cr component planes
by a factor of 4 in both dimensions.</para>

</refsect1>

<refsect1 id='see_also'><title>SEE ALSO</title>
<para><emphasis remap='B'>cjpegl</emphasis>(1D),
<emphasis remap='B'>dpyimage</emphasis>(1D),
<emphasis remap='B'>intr2not</emphasis>(1D),
<emphasis remap='B'>not2intr</emphasis>(1D),
<emphasis remap='B'>ycc2rgb</emphasis>(1D)</para>

</refsect1>

<refsect1 id='author'><title>AUTHOR</title>
<para>NIST/ITL/DIV894/Image Group</para>
</refsect1>
</refentry>

