Convolution functions for buffers More...
#include <Inventor/algorithms/SoConvolution.h>
Public Member Functions | |
SoConvolution () | |
virtual int | doSeparateConvolution1D (SoBufferObject *sourceBufferObject, SoBufferObject *targetBufferObject, float *kernelData, int kernelSize, int width, int height) |
virtual int | doSeparateConvolution2D (SoBufferObject *sourceBufferObject, SoBufferObject *targetBufferObject, float *kernelData, int kernelSize, int width, int height) |
virtual int | doSeparateConvolutionRow (SoBufferObject *sourceBufferObject, SoBufferObject *targetBufferObject, float *kernelData, int kernelSize, int width, int height) |
virtual int | doSeparateConvolutionColumn (SoBufferObject *sourceBufferObject, SoBufferObject *targetBufferObject, float *kernelData, int kernelSize, int width, int height) |
int | doSeparateConvolution1D (SoCpuBufferObject *sourceBufferObject, SoCpuBufferObject *targetBufferObject, float *kernelData, int kernelSize, int width, int height) |
int | doSeparateConvolution2D (SoCpuBufferObject *sourceBufferObject, SoCpuBufferObject *targetBufferObject, float *kernelData, int kernelSize, int width, int height) |
int | doSeparateConvolutionRow (SoCpuBufferObject *sourceBufferObject, SoCpuBufferObject *targetBufferObject, float *kernelData, int kernelSize, int width, int height) |
int | doSeparateConvolutionColumn (SoCpuBufferObject *sourceBufferObject, SoCpuBufferObject *targetBufferObject, float *kernelData, int kernelSize, int width, int height) |
This module provides functions to perform convolution on 2D buffers.
Examples:
SoAlgorithms, SoArithmetic, SoConversion, SoDataExtract, SoSeismic
SoConvolution::SoConvolution | ( | ) |
SoConvolution constructor.
int SoConvolution::doSeparateConvolution1D | ( | SoCpuBufferObject * | sourceBufferObject, | |
SoCpuBufferObject * | targetBufferObject, | |||
float * | kernelData, | |||
int | kernelSize, | |||
int | width, | |||
int | height | |||
) |
Fast version for CPU buffers.
The general version maps the user buffers to CPU buffers and calls this function
virtual int SoConvolution::doSeparateConvolution1D | ( | SoBufferObject * | sourceBufferObject, | |
SoBufferObject * | targetBufferObject, | |||
float * | kernelData, | |||
int | kernelSize, | |||
int | width, | |||
int | height | |||
) | [virtual] |
This function performs a 1D convolution on a two dimensional buffer using a 1D kernel.
This convolution is equivalent to a row convolution.
sourceBufferObject | The input float buffer. | |
targetBufferObject | The output float buffer. | |
kernelData | The kernel values. | |
kernelSize | The kernel size. | |
width | The width of the two dimensional buffer. | |
height | The height of the two dimensional buffer. |
Reimplemented in SoCudaConvolution, and SoOpenCLConvolution.
int SoConvolution::doSeparateConvolution2D | ( | SoCpuBufferObject * | sourceBufferObject, | |
SoCpuBufferObject * | targetBufferObject, | |||
float * | kernelData, | |||
int | kernelSize, | |||
int | width, | |||
int | height | |||
) |
Fast version for CPU buffers.
The general version maps the user buffers to CPU buffers and calls this function
virtual int SoConvolution::doSeparateConvolution2D | ( | SoBufferObject * | sourceBufferObject, | |
SoBufferObject * | targetBufferObject, | |||
float * | kernelData, | |||
int | kernelSize, | |||
int | width, | |||
int | height | |||
) | [virtual] |
This function performs a 2D convolution on a two dimensional buffer using a 1D kernel.
The 2D convolution performs a row convolution followed by a column convolution using the same kernel for the two passes.
To do a 2D convolution with two different 1D kernels use the row/column methods doSeparateConvolutionRow() and doSeparateConvolutionColumn().
sourceBufferObject | The input float buffer. | |
targetBufferObject | The output float buffer. | |
kernelData | The kernel values. | |
kernelSize | The kernel size. | |
width | The width of the two dimensional buffer. | |
height | The height of the two dimensional buffer. |
Reimplemented in SoCudaConvolution, and SoOpenCLConvolution.
int SoConvolution::doSeparateConvolutionColumn | ( | SoCpuBufferObject * | sourceBufferObject, | |
SoCpuBufferObject * | targetBufferObject, | |||
float * | kernelData, | |||
int | kernelSize, | |||
int | width, | |||
int | height | |||
) |
Fast version for CPU buffers.
The general version maps the user buffers to CPU buffers and calls this function
virtual int SoConvolution::doSeparateConvolutionColumn | ( | SoBufferObject * | sourceBufferObject, | |
SoBufferObject * | targetBufferObject, | |||
float * | kernelData, | |||
int | kernelSize, | |||
int | width, | |||
int | height | |||
) | [virtual] |
This function performs a column convolution on a two dimensional buffe using a 1D kernel.
sourceBufferObject | The input float buffer. | |
targetBufferObject | The output float buffer. | |
kernelData | The kernel values. | |
kernelSize | The kernel size. | |
width | The width of the two dimensional buffer. | |
height | The height of the two dimensional buffer. |
Reimplemented in SoCudaConvolution, and SoOpenCLConvolution.
int SoConvolution::doSeparateConvolutionRow | ( | SoCpuBufferObject * | sourceBufferObject, | |
SoCpuBufferObject * | targetBufferObject, | |||
float * | kernelData, | |||
int | kernelSize, | |||
int | width, | |||
int | height | |||
) |
Fast version for CPU buffers.
The general version maps the user buffers to CPU buffers and calls this function
virtual int SoConvolution::doSeparateConvolutionRow | ( | SoBufferObject * | sourceBufferObject, | |
SoBufferObject * | targetBufferObject, | |||
float * | kernelData, | |||
int | kernelSize, | |||
int | width, | |||
int | height | |||
) | [virtual] |
This function performs a row convolution on a two dimensional buffer using a 1D kernel.
sourceBufferObject | The input float buffer. | |
targetBufferObject | The output float buffer. | |
kernelData | The kernel values. | |
kernelSize | The kernel size. | |
width | The width of the two dimensional buffer. | |
height | The height of the two dimensional buffer. |
Reimplemented in SoCudaConvolution, and SoOpenCLConvolution.