Woolz Image Processing  Version 1.7.5
WlzRsvFilter.c File Reference

Recursive filters for Woolz, these are also known as Deriche and infinite impulse responce (IIR) filters. More...

Functions

void WlzRsvFilterFreeFilter (WlzRsvFilter *ftr)
 Free a recursive filter. More...
 
WlzRsvFilterWlzRsvFilterMakeFilter (WlzRsvFilterName name, double prm, WlzErrorNum *dstErr)
 Creates a new recursive filter. More...
 
WlzObjectWlzRsvFilterObj (WlzObject *srcObj, WlzRsvFilter *ftr, int actionMsk, WlzErrorNum *dstErr)
 Applies a recursive filter to the given object. More...
 
WlzErrorNum WlzRsvFilterBuffer (WlzRsvFilter *ftr, double *datBuf, double *tmpBuf0, double *tmpBuf1, int bufSz)
 Filters a given buffer using an IIR filter defined by the filter coefficients. More...
 

Detailed Description

Recursive filters for Woolz, these are also known as Deriche and infinite impulse responce (IIR) filters.

Author
Bill Hill
Date
May 1999
Version
Id
5a1fbfaa76268168b291808db62241ada8903f3a
Address: MRC Human Genetics Unit, MRC Institute of Genetics and Molecular Medicine, University of Edinburgh, Western General Hospital, Edinburgh, EH4 2XU, UK.
Copyright (C), [2012], The University Court of the University of Edinburgh, Old College, Edinburgh, UK.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Function Documentation

void WlzRsvFilterFreeFilter ( WlzRsvFilter ftr)

Free a recursive filter.

Returns
void
Parameters
ftrFilter to free.

References AlcFree().

Referenced by WlzCannyDeriche(), WlzContourGrdObj2D(), WlzHistogramRsvGauss(), WlzNMSuppress(), and WlzRsvFilterBuffer().

WlzRsvFilter* WlzRsvFilterMakeFilter ( WlzRsvFilterName  name,
double  prm,
WlzErrorNum dstErr 
)

Creates a new recursive filter.

Returns
New recursive filter.
Parameters
nameName of filter.
prmParameter is alpha for Deriche's operators and sigma for Gaussians, must be \(\geq\) 0.0.
dstErrDestination error pointer, may be null.

References _WlzRsvFilter::a, AlcCalloc(), _WlzRsvFilter::b, _WlzRsvFilter::c, _WlzRsvFilter::name, WLZ_ERR_MEM_ALLOC, WLZ_ERR_NONE, WLZ_ERR_PARAM_DATA, WLZ_RSVFILTER_NAME_DERICHE_0, WLZ_RSVFILTER_NAME_DERICHE_1, WLZ_RSVFILTER_NAME_DERICHE_2, WLZ_RSVFILTER_NAME_GAUSS_0, WLZ_RSVFILTER_NAME_GAUSS_1, WLZ_RSVFILTER_NAME_GAUSS_2, and WLZ_RSVFILTER_NAME_NONE.

Referenced by WlzCannyDeriche(), WlzContourGrdObj2D(), WlzHistogramRsvGauss(), WlzNMSuppress(), and WlzRsvFilterBuffer().

WlzObject* WlzRsvFilterObj ( WlzObject srcObj,
WlzRsvFilter ftr,
int  actionMsk,
WlzErrorNum dstErr 
)
WlzErrorNum WlzRsvFilterBuffer ( WlzRsvFilter ftr,
double *  datBuf,
double *  tmpBuf0,
double *  tmpBuf1,
int  bufSz 
)

Filters a given buffer using an IIR filter defined by the filter coefficients.

Returns
Woolz error code.
Parameters
ftrThe filter.
datBufThe data buffer to be filtered with bufSz elements.
tmpBuf0Temporary buffer with at least dataSz elements.
tmpBuf1Temporary buffer with at least dataSz elements.
bufSzNumber of data in buffer.

References _WlzRsvFilter::a, Alc2Free(), Alc3Free(), ALC_ER_NONE, AlcBit2Malloc(), AlcBit3Malloc(), AlcDouble2Malloc(), AlcDouble3Malloc(), AlcFree(), AlcMalloc(), _WlzRsvFilter::b, _WlzRsvFilter::c, _WlzValues::core, _WlzDomain::core, _WlzGreyP::dbp, _WlzObject::domain, _WlzPlaneDomain::domains, getopt(), _WlzDomain::i, _WlzIntervalDomain::kol1, _WlzPlaneDomain::kol1, _WlzIntervalDomain::lastkl, _WlzPlaneDomain::lastkl, _WlzPlaneDomain::lastln, _WlzPlaneDomain::lastpl, _WlzIntervalWSpace::lftpos, _WlzIntervalDomain::line1, _WlzPlaneDomain::line1, _WlzIntervalWSpace::linpos, main(), _WlzIntervalWSpace::nwlpos, optarg, opterr, _WlzDomain::p, _WlzGreyWSpace::pixeltype, _WlzPlaneDomain::plane1, _WlzObject::plist, _WlzIntervalWSpace::rgtpos, _WlzObject::type, _WlzCoreDomain::type, _WlzCoreValues::type, _WlzVoxelValues::type, _WlzGreyWSpace::u_grintptr, _WlzValues::v, _WlzObject::values, _WlzVoxelValues::values, _WlzValues::vox, _WlzIVertex2::vtX, _WlzIVertex3::vtX, _WlzIVertex2::vtY, _WlzIVertex3::vtY, _WlzIVertex3::vtZ, WLZ_2D_DOMAINOBJ, WLZ_ERR_DOMAIN_DATA, WLZ_ERR_DOMAIN_TYPE, WLZ_ERR_EOO, WLZ_ERR_GREY_TYPE, WLZ_ERR_MEM_ALLOC, WLZ_ERR_NONE, WLZ_ERR_PARAM_NULL, WLZ_ERR_VALUES_TYPE, WLZ_GREY_DOUBLE, WLZ_GREY_ERROR, WLZ_GREY_FLOAT, WLZ_GREY_INT, WLZ_GREY_RGBA, WLZ_GREY_SHORT, WLZ_GREY_TAB_RAGR, WLZ_GREY_UBYTE, WLZ_INTERVALDOMAIN_INTVL, WLZ_INTERVALDOMAIN_RECT, WLZ_PLANEDOMAIN_DOMAIN, WLZ_RASTERDIR_DLIC, WLZ_RASTERDIR_ILIC, WLZ_RSVFILTER_ACTION_NONE, WLZ_RSVFILTER_ACTION_X, WLZ_RSVFILTER_ACTION_Y, WLZ_RSVFILTER_ACTION_Z, WLZ_RSVFILTER_NAME_DERICHE_0, WLZ_RSVFILTER_NAME_DERICHE_1, WLZ_RSVFILTER_NAME_DERICHE_2, WLZ_RSVFILTER_NAME_GAUSS_0, WLZ_RSVFILTER_NAME_GAUSS_1, WLZ_RSVFILTER_NAME_GAUSS_2, WLZ_VOXELVALUETABLE_GREY, WlzAssignObject(), WlzAssignValues(), WlzBitLnSetItv(), WlzCopyObject(), WlzFreeObj(), WlzFreeVoxelValueTb(), WlzGetBackground(), WlzGreyTableTypeToGreyType(), WlzGreyTableTypeToTableType(), WlzGreyValueTableType(), WlzInitGreyRasterScan(), WlzInitGreyScan(), WlzMakeMain(), WlzMakeVoxelValueTb(), WlzNewValueTb(), WlzNextGreyInterval(), WlzReadObj(), WlzRsvFilterFreeFilter(), WlzRsvFilterMakeFilter(), WlzRsvFilterObj(), WlzStringFromErrorNum(), WlzValueClampGreyIntoGrey(), WlzValueCopyGreyToGrey(), WlzValueSetUByte(), and WlzWriteObj().

Referenced by WlzHistogramRsvFilter().