SoConvolution Class Reference
[CPU algorithms]

VSG extension Convolution functions for buffers More...

#include <Inventor/algorithms/SoConvolution.h>

Inheritance diagram for SoConvolution:
SoCudaConvolution SoOpenCLConvolution

List of all members.

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)

Detailed Description

VSG extension Convolution functions for buffers

This module provides functions to perform convolution on 2D buffers.

Examples:

SEE ALSO

SoAlgorithms, SoArithmetic, SoConversion, SoDataExtract, SoSeismic

See related examples:

ComputeBatch, ComputeSlice


Constructor & Destructor Documentation

SoConvolution::SoConvolution (  ) 

SoConvolution constructor.


Member Function Documentation

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.

  • The data in the input buffer must contain floats.
  • The function puts float values in the output buffer.

This convolution is equivalent to a row convolution.

Parameters:
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.
Returns:
Returns 0 if there is no error, 1 if one of the buffers is too small.

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 data in the input buffer must contain floats.
  • The function puts float values in the output buffer.

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().

Parameters:
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.
Returns:
Returns 0 if there is no error, 1 if one of the buffers is two small.

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.

  • The data in the input buffer must contain floats.
  • The function puts float values in the output buffer.
Parameters:
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.
Returns:
Returns 0 if there is no error, 1 if one of the buffers is two small.

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.

  • The data in the input buffer must contain floats.
  • The function puts float values in the output buffer.
Parameters:
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.
Returns:
Returns 0 if there is no error, 1 if one of the buffers is two small.

Reimplemented in SoCudaConvolution, and SoOpenCLConvolution.


The documentation for this class was generated from the following file:

Open Inventor Toolkit reference manual, generated on 12 Feb 2024
Copyright © Thermo Fisher Scientific All rights reserved.
http://www.openinventor.com/