Linear Methods for Image Interpolation
|
Convolution functions. More...
Go to the source code of this file.
Defines | |
#define | CLAMP(X, A, B) (((X) < (A)) ? (A) : (((X) > (B)) ? (B) : (X))) |
Clamp X to [A, B]. | |
Functions | |
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 | |
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. | |
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. | |
boundaryext | GetBoundaryExt (const char *Boundary) |
Get function pointer to boundary extension function. | |
Variables | |
const filter | NullFilter = {NULL, 0, 0} |
NULL filter object. |
Convolution functions.
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.c.
#define CLAMP | ( | X, | |
A, | |||
B | |||
) | (((X) < (A)) ? (A) : (((X) > (B)) ? (B) : (X))) |
filter AllocFilter | ( | int | Delay, |
int | Length | ||
) |
filter GaussianFilter | ( | double | Sigma, |
int | R | ||
) |
Construct an FIR approximation of a Gaussian filter.
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.
boundaryext GetBoundaryExt | ( | const char * | Boundary | ) |
Get function pointer to boundary extension function.
Boundary | string naming the boundary extension |
Choices for Boundary are
Definition at line 421 of file conv.c.
int IsNullFilter | ( | filter | Filter | ) |
filter MakeFilter | ( | float * | Coeff, |
int | Delay, | ||
int | Length | ||
) |
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
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 |
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.
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.
const filter NullFilter = {NULL, 0, 0} |