[ VIGRA Homepage | Class Index | Function Index | File Index | Main Page ]

details Functors to Transform Images VIGRA


Classes

class  BrightnessContrastFunctor
 Adjust brightness and contrast of an image. More...

class  Threshold
 Threshold an image. More...

class  VectorNormFunctor
 A functor for computing the vector norm. More...

class  VectorNormSqFunctor
 A functor for computing the squared vector norm. More...


Functions

template<class Multiplier, class DestValueType> LinearIntensityTransform<
DestValueType, Multiplier > 
linearIntensityTransform (Multiplier scale, DestValueType offset)
 Apply a linear transform to the source pixel values.

template<class SrcValueType, class DestValueType> LinearIntensityTransform<
DestValueType, typename NumericTraits<
DestValueType >::RealPromote > 
linearRangeMapping (SrcValueType src_min, SrcValueType src_max, DestValueType dest_min, DestValueType dest_max)
 Map a source intensity range linearly to a destination range.



Detailed Description


Note that the unary functors of the STL can also be used in connection with transformImage().


Function Documentation


  LinearIntensityTransform<DestValueType, Multiplier> linearIntensityTransform (...)
 
 

Apply a linear transform to the source pixel values.

Factory function for a functor that linearly transforms the source pixel values. The functor applies the transform 'destvalue = scale * (srcvalue + offset)' to every pixel. This can, for example, be used to transform images into the visible range 0...255 or to invert an image.

If you leave out the second parameter / offset, you will get an optimized version of the functor which only scales by the given factor, however you have to make the template parameter (pixel type) explicit then.

Traits defined:

FunctorTraits::isUnaryFunctor is true (VigraTrueType)

Declaration:

    namespace vigra {
        template <class Multiplier, class DestValueType>
        LinearIntensityTransform<DestValueType, Multiplier>
        linearIntensityTransform(Multiplier scale, DestValueType offset);

        template <class DestValueType, class Multiplier>
        ScalarIntensityTransform<DestValueType, Multiplier>
        linearIntensityTransform(Multiplier scale);
    }

Usage:

#include "vigra/transformimage.hxx"
Namespace: vigra

    vigra::IImage src(width, height);
    vigra::BImage dest(width, height);
    ...
    vigra::FindMinMax<IImage::PixelType> minmax;   // functor to find range

    vigra::inspectImage(srcImageRange(src), minmax); // find original range

    // transform to range 0...255
    vigra::transformImage(srcImageRange(src), destImage(dest),
                          linearIntensityTransform(
                            255.0 / (minmax.max - minmax.min), // scaling
                          - minmax.min));                    // offset

The one-parameter version can be used like this:

    // scale from 0..255 to 0..1.0
    FImage dest(src.size());

    vigra::transformImage(srcImageRange(src), destImage(dest),
                          linearIntensityTransform<float>(1.0 / 255));

Required Interface:

The source and destination value types must be models of LinearSpace in both cases.


  LinearIntensityTransform<DestValueType, typename NumericTraits<DestValueType>::RealPromote> linearRangeMapping (...)
 
 

Map a source intensity range linearly to a destination range.

Factory function for a functor that linearly transforms the source pixel values. The functor applies the transform 'destvalue = scale * (srcvalue + offset)' to every pixel, where scale = (dest_max - dest_min) / (src_max - src_min) and offset = dest_min / scale - src_min. As a result, the pixel values src_max, src_min in the source image are mapped onto dest_max, dest_min respectively. This works for scalar as well as vector pixel types.

Declaration:

    namespace vigra {
        template <class SrcValueType, class DestValueType>
        LinearIntensityTransform<DestValueType, typename NumericTraits<DestValueType>::RealPromote>
        linearRangeMapping(SrcValueType src_min, SrcValueType src_max,
                           DestValueType dest_min, DestValueType dest_max );
    }

Usage:

#include "vigra/transformimage.hxx"
Namespace: vigra

    vigra::IImage src(width, height);
    vigra::BImage dest(width, height);
    ...
    vigra::FindMinMax<IImage::PixelType> minmax;   // functor to find range

    vigra::inspectImage(srcImageRange(src), minmax); // find original range

    // transform to range 0...255
    vigra::transformImage(srcImageRange(src), destImage(dest),
                          linearRangeTransform(
                            minmax.min, minmax.max,               // src range
                            (unsigned char)0, (unsigned char)255) // dest range
                          );

Required Interface:

The source and destination value types must be models of LinearSpace in both cases.

© Ullrich Köthe (koethe@informatik.uni-hamburg.de)
Cognitive Systems Group, University of Hamburg, Germany

html generated using doxygen and Python
VIGRA 1.3.3 (18 Aug 2005)