.TH IM_LAB2UCS 3 "2 December 1992"
.SH NAME
im_Lab2UCS, im_LabQ2XYZ, im_UCS2Lab, im_Lab2disp, im_disp2Lab, im_UCS2XYZ,
im_XYZ2UCS \- derived colour space conversion functions
.SH SYNOPSIS
#include <vips/vips.h>

int im_Lab2UCS(in, out)
.br
IMAGE *in, *out;

int im_LabQ2XYZ(in, out)
.br
IMAGE *in, *out;

int im_UCS2Lab(in, out)
.br
IMAGE *in, *out;

int im_Lab2disp(in, out, display)
.br
IMAGE *in, *out;
.br
struct im_col_display *display;

int im_disp2Lab(in, out, display)
.br
IMAGE *in, *out;
.br
struct im_col_display *display;

int im_UCS2XYZ(in, out)
.br
IMAGE *in, *out;

int im_XYZ2UCS(in, out)
.br
IMAGE *in, *out;

.SH DESCRIPTION
These functions are built on the basic VIPS colour space transformations as a
convenience for the programmer. See im_Lab2XYZ(3) for an explanation of the
colour spaces and the basic conversion functions.

im_Lab2UCS(3), for example, is defined as:

  int
  im_Lab2UCS( IMAGE *in, IMAGE *out )
  {
     IMAGE *t1 = im_open_local( out, 
        "im_Lab2UCS intermediate", "p" );
   
     if( !t1 || 
        im_Lab2LCh( in, t1 ) || 
        im_LCh2UCS( t1, out ) )
        return( -1 );
   
     return( 0 );
  }

.SH RETURN VALUE
The functions return 0 on success and -1 on error.
.SH SEE ALSO 
im_col_XYZ2rgb(3), im_dE_fromLab(3), im_LabQ2Lab(3), im_Lab2disp(3).
.SH COPYRIGHT
National Gallery and Birkbeck College, 1990 - 1993
.SH AUTHOR
K. Martinez \- 2/12/1992
.br
J. Cupitt \- 21/7/93
