>  Docs Center  >  Libraries  >  Buie  >  SPEC2CIE
Libraries

SPEC2CIE

SPEC2CIE

Name


  spec2cie

Purpose (one Line Only)


  Convert from reflectance spectrum to CIE Chromaticity coordinates

Description


  Conversion from reflectance spectrum to CIE Chromaticity (D65).
    The color conversion is based on a Fortran subroutine
    from A. T. Young, ; SDSU
    See: http://mintaka.sdsu.edu/GF/explain/optics/color/color.html
  This routine is designed to let you feed it spectral information that
    may or may not be encoded against other dimensions (most commonly
    position) and convert the spectral dimension to its CIE equivalent.

Category


  Image display

Calling Sequence


  spec2cie,wave,spec,x,y,bigy

Inputs


  wave - scalar or vector, wavelengths, in nanometers for spectrum
          The spectral range of interest is 380-770 nm (visual range)
          This does not need to be regularly spaced but should be monotonical
          increasing.
  spec - Spectrum or spectral image data, this information is expected
        to be in the range of 0-1 where 1 is perfectly reflecting and
        0 is perfectly absorbing.
        rank(spec) cannot be < rank(wave). Last array index
            for spec matches the index for wave.

Optional Input Parameters


Keyword Input Parameters


  SUBSAMPLE - Allows for finer resolution input spectra to be accurately
            transformed. The default value is 1 and should work on anything
            with spectral structure coarser than 10 nm. To properly capture
            the nuances of your input spectra, divide 10 by the sampling
            interval of your spectra. Round this number up to the next
            integer and this is the value you'd give as EXPAND.
  SHOWSUMMARY - Flag, if set will print and plot information for the
                  scalar case. Ignored for vector or array data.

Outputs


  x,y - CIE chromaticity, rank is one less than spec.
  bigy - intensity
    Note: white is x=0.3127, y=0.3290, bigy=Y=1.0
    (z=0.3583 because x+y+z=1)

Keyword Output Parameters


Common Blocks


Side Effects


Restrictions


  Sorry, this is not an elegant or general coding solution. This could
  be more general but I dont' have the time to figure out the IDL syntax
  to maximize vectorability. This won't be too fast if wave is short and
  spec is really big.

Procedure


  The tricky part in using this routine effectively is to understand how
  the wavelength information is imbedded in the input variables.
  Consider the simplest possible case, two wavelenths of information
  and just one points to calculate this for:
      wave=[450,600] ; two wavelengths, don't have to match end points
      spec=[0.5,0.6] ; slight red slope
  will return scalar values for x,y,bigy
  Another case, same wavelength vector, but now two "scans"
      spec -> 100x2 array
  second dimension matches wave vector
  result x,y,bigy are each 100 elements long
  Last case, saveme wavelength vector, but now two images
      spec -> 100x100x2 array
  third dimension matches wave vector
  result x,y,bigy are each 100x100 arrays

Modification History


  Written by Marc W. Buie, Southwest Research Institute, 2009/01/05



© 2024 NV5 Geospatial Solutions, Inc. |  Legal
   Contact Us