oracular (3) Filter.3.gz

Provided by: libvolpack1-dev_1.0b3-10_amd64 bug

NAME

       vpSetFilter - define a resampling filter

SYNOPSIS

       #include <volpack.h>

       vpResult
       vpSetFilter(vpc, num_taps, num_phases, weights)
           vpContext *vpc;
           int num_taps, num_phases;
           float *weights;

ARGUMENTS

       vpc    VolPack context from vpCreateContext.

       num_taps
              Number of filter taps.

       num_phases
              Number of filter phases.

       weights
              Array containing filter weights.

DESCRIPTION

       vpSetFilter is used to specify a table of filter weights before resampling an array with vpResample.  The
       table can be used to specify an arbitrary separable space-invariant filter.

       The vpc argument is a VolPack context for storing a description of the  resampling  filter.   The  volume
       data and rendering parameters currently stored in the context are not affected by calls to vpSetFilter or
       vpResample.

       The num_taps argument specifies the number of filter taps.  When an array is  resampled,  the  number  of
       filter  taps  is equal to the number of input array elements that contribute to one element of the output
       array.  A filter weight is associated with each tap and determines the contribution of the  corresponding
       input  array  element  to the output array element.  Note that when upsampling the number of taps depends
       only on the support of the filter kernel.  When downsampling, the number of taps should  also  depend  on
       the scale factor (since the filter kernel must also be scaled).

       The  num_phases argument specifies the number of filter phases, which is equal to the number of times the
       filter kernel is sampled.  The more filter phases, the more accurate the filtering  operation.   However,
       there  is  a  point  of  diminishing returns where increasing the number of phases results in very little
       increase in accuracy, and has the disadvantages of increased storage requirements  and  potentially  poor
       cache performance.  To allow for an efficient implementation, num_phases must be a power of two.

       The  weights  array  contains  the  filter  weights  themselves.  The array should have dimensions: float
       weights[num_phases][num_taps]; Each element should normally be a number between  0.0  and  1.0  (negative
       values  are  also  possible but can lead to ringing), and for any particular phase the entries for all of
       the taps should sum to 1.0 (or else ripple is introduced into constant regions of the filtered array).

       The easiest way to initialize the weight table is to call one of the predefined routines described in the
       vpBoxFilter(3) man page.

ERRORS

       The normal return value is VP_OK.  The following error return values are possible:

       VPERROR_BAD_VALUE
              Either num_taps is non-positive or num_phases is not a positive power of two.

SEE ALSO

       VolPack(3), vpBoxFilter(3), vpResample(3)