Convolution functions.
More...
Go to the source code of this file.
|
#define | FreeFilter(Filter) (Free((Filter).Coeff)) |
| Free a filter.
|
|
#define | Conv1D(Dest, DestStride, Src, SrcStride, Filter, Boundary, N) |
| 1D FIR convolution with a specified boundary extension More...
|
|
|
typedef float(* | boundaryext )(const float *, int, int, int) |
| typedef representing a boundary extension function
|
|
|
void | SampledConv1D (float *Dest, int DestStride, const float *Src, int SrcStride, filter Filter, boundaryext Boundary, int N, int nStart, int nStep, int nEnd) |
| (Sub)sampled 1D FIR convolution More...
|
|
void | SeparableConv2D (float *Dest, float *Buffer, const float *Src, filter FilterX, filter FilterY, boundaryext Boundary, int Width, int Height, int NumChannels) |
| Separable 2D FIR convolution with constant boundary extension. More...
|
|
filter | MakeFilter (float *Coeff, int Delay, int Length) |
| Make a filter.
|
|
filter | AllocFilter (int Delay, int Length) |
| Allocate memory for a 1D FIR filter with length Length.
|
|
int | IsNullFilter (filter Filter) |
| Tests whether a filter is NULL.
|
|
filter | GaussianFilter (double Sigma, int R) |
| Construct an FIR approximation of a Gaussian filter. More...
|
|
boundaryext | GetBoundaryExt (const char *Boundary) |
| Get function pointer to boundary extension function. More...
|
|
Convolution functions.
- Author
- Pascal Getreuer getre.nosp@m.uer@.nosp@m.gmail.nosp@m..com
Copyright (c) 2010-2011, Pascal Getreuer All rights reserved.
This program is free software: you can use, modify and/or redistribute it under the terms of the simplified BSD License. You should have received a copy of this license along this program. If not, see http://www.opensource.org/licenses/bsd-license.html.
Definition in file conv.h.
#define Conv1D |
( |
|
Dest, |
|
|
|
DestStride, |
|
|
|
Src, |
|
|
|
SrcStride, |
|
|
|
Filter, |
|
|
|
Boundary, |
|
|
|
N |
|
) |
| |
Value:(
SampledConv1D(Dest, DestStride, Src, SrcStride, Filter, Boundary, N, \
0, 1, N - 1))
1D FIR convolution with a specified boundary extension
- Parameters
-
Dest | pointer to memory to hold the result |
DestStride | step between successive output samples |
Src | pointer to the input data |
SrcStride | step between successive input samples |
Filter | the filter |
Boundary | boundary extension |
N | the length of the convolution |
Definition at line 72 of file conv.h.
filter GaussianFilter |
( |
double |
Sigma, |
|
|
int |
R |
|
) |
| |
Construct an FIR approximation of a Gaussian filter.
- Parameters
-
Sigma | standard deviation of the Gaussian filter |
R | support radius |
This function returns an FIR filter approximating a Gaussian with standard deviation Sigma. It is the responsibility of the caller to call FreeFilter to free the filter coefficients memory when done.
The support radius of the filter is R, and the filter length is 2*R + 1. A reasonable choice for R is R = (int)ceil(4*Sigma). The coefficients are normalized to have unit sum. If Sigma is zero, then the unit impulse filter is returned.
Definition at line 193 of file conv.c.
Get function pointer to boundary extension function.
- Parameters
-
Boundary | string naming the boundary extension |
- Returns
- function pointer on success, NULL on failure
Choices for Boundary are
- "zpd": zero-padded extension
- "sp0" or "const": constant extension
- "sp1" or "linear": linear extension
- "per": periodic extension
- "sym" or "symh": half-sample symmetric extension
- "symw": whole-sample symmetric extension
- "asym" or "asymh": half-sample antisymmetric extension
- "asymw": whole-sample antisymmetric extension
Definition at line 421 of file conv.c.
void SampledConv1D |
( |
float * |
Dest, |
|
|
int |
DestStride, |
|
|
const float * |
Src, |
|
|
int |
SrcStride, |
|
|
filter |
Filter, |
|
|
boundaryext |
Boundary, |
|
|
int |
N, |
|
|
int |
nStart, |
|
|
int |
nStep, |
|
|
int |
nEnd |
|
) |
| |
(Sub)sampled 1D FIR convolution
- Parameters
-
Dest | pointer to memory to hold the result |
DestStride | step between successive output samples |
Src | pointer to the input data |
SrcStride | step between successive input samples |
Filter | the filter |
Boundary | boundary extension |
N | the length of the convolution |
nStart,nStep,nEnd | sample the convolution at nStart:nStep:nEnd |
Definition at line 40 of file conv.c.
void SeparableConv2D |
( |
float * |
Dest, |
|
|
float * |
Buffer, |
|
|
const float * |
Src, |
|
|
filter |
FilterX, |
|
|
filter |
FilterY, |
|
|
boundaryext |
Boundary, |
|
|
int |
Width, |
|
|
int |
Height, |
|
|
int |
NumChannels |
|
) |
| |
Separable 2D FIR convolution with constant boundary extension.
- Parameters
-
Dest | pointer to memory to hold the result |
Buffer | workspace buffer of size Width*Height |
Src | pointer to the input image in row-major planar order |
FilterX | the horizontal filter |
FilterY | the vertical filter |
Boundary | boundary extension |
Width | image width |
Height | image height |
NumChannels | number of image channels |
Definition at line 123 of file conv.c.