Rogue Wave Views |
Rogue Wave Views Documentation Home |
Convolution filter. More...
#include <ilviews/bitmaps/filters/convolve.h>
Public Member Functions | |
IlvConvolutionFilter (IlvBitmapDataKernel *kernel=0, IlFloat divisor=0, IlFloat bias=0.0) | |
Constructor. More... | |
~IlvConvolutionFilter () | |
Destructor. More... | |
IlvBitmapData * | apply (IlUInt count=0, const IlvBitmapData **inputs=0) |
Applies the convolution to the given image. | |
IlFloat | getBias () const |
Returns the bias. More... | |
IlFloat | getDivisor () const |
Returns the divisor. More... | |
IlvConvolutionFilter::EdgeMode | getEdgeMode () const |
Returns the edge mode. More... | |
IlvBitmapDataKernel * | getKernel () const |
Returns the kernel. More... | |
void | setBias (IlFloat bias) |
Sets the bias. More... | |
void | setDivisor (IlFloat divisor) |
Sets the divisor. More... | |
void | setEdgeMode (IlvConvolutionFilter::EdgeMode mode) |
Sets the edge mode. More... | |
void | setKernel (IlvBitmapDataKernel *kernel) |
Sets the kernel. More... | |
Public Member Functions inherited from IlvBitmapFilter | |
IlvBitmapFilter () | |
Constructor. More... | |
virtual | ~IlvBitmapFilter () |
Destructor. More... | |
IlvBitmapData * | applyUnary (const IlvBitmapData *data) |
Convenience method for unary filters. More... | |
virtual const char * | getClassName () const |
Returns the class name of the filter. More... | |
IlUInt | getHeight () const |
Returns the height of the filter effect region. More... | |
const char *const * | getInputs (IlUInt &count) const |
Returns the name of the input bitmap data. More... | |
const char * | getName () const |
Returns the name of the filter. More... | |
IlUInt | getRefCount () const |
Returns the reference count for this instance. | |
const char * | getResult () const |
Returns the name of the result bitmap data. More... | |
IlUInt | getWidth () const |
Returns the width of the filter effect region. More... | |
IlInt | getX () const |
Returns the left coordinate of the filter effect region. More... | |
IlInt | getY () const |
Returns the top coordinate of the filter effect region. More... | |
void | lock () |
Locks the current instance. | |
void | setHeight (IlUInt height) |
Sets the height of the filter effect region. More... | |
void | setInputs (IlUInt count, const char *const *name) |
Sets the input names of the filter. More... | |
void | setName (const char *id) |
Sets the name of the filter. More... | |
void | setResult (const char *name) |
Sets the result name of the filter. More... | |
void | setWidth (IlUInt width) |
Sets the width of the filter effect region. More... | |
void | setX (IlInt x) |
Sets the left coordinate of the filter effect region. More... | |
void | setY (IlInt y) |
Sets the top coordinate of the filter effect region. More... | |
void | unLock () |
Unlocks the current instance. When the reference count is 0 , the instance is deleted. | |
Additional Inherited Members | |
Static Public Member Functions inherited from IlvBitmapFilter | |
static IlvBitmapFilter * | Create (const char *classname, IlBoolean forceLoad=IlTrue) |
This static method creates an instance of a bitmap filter of given classname. If the filter class is not registered and forceLoad is IlTrue , an attempt to load a dynamic module for this filter is made. More... | |
static const char ** | GetRegisteredFilters (IlUInt &num) |
This static method returns an array of registered filter class names. More... | |
Convolution filter.
Library: ilvbmpflt
This bitmap filter lets you apply a matrix convolution to an image. A convolution combines pixels in the input image with neighboring pixels to produce a resulting image. A wide variety of imaging operations can be achieved through convolutions, including blurring, edge detection, sharpening, embossing, and beveling. A matrix convolution is based on an n-by-m matrix (the convolution kernel) that describes how a given pixel value in the input image is combined width its neighboring pixel values to produce a resulting pixel value.
To illustrate, suppose you have an input image that is 5 by 5 pixels, whose color values are as follows:
0 20 40 235 235 100 120 140 235 235 200 220 240 235 255 225 225 255 255 255 225 225 255 255 255
and you define a 3-by-3 convolution kernel as follows:
1 2 3 4 5 6 7 8 9
Let's focus on the pixel at the second row and second column of the source image (source pixel value is 120). The resulting pixel value will be:
(1 * 0 + 2 * 20 + 3 * 40 + 4 * 100 + 5 * 120 + 6 * 140 + 7 * 200 + 8 * 220 + 9 * 240) / (1 + 2 + 3 +4 + 5 + 6 + 7 + 8 + 9)
By default the divisor is the sum of the kernel coefficients but can be specified. A bias value can be added after computing the value. An edge mode can be specified for border values. The edge mode can be one of:
IlvConvolutionFilter::Duplicate
: The border pixels are duplicated. IlvConvolutionFilter::Wrap
: The border pixels are extended using the opposite edge. IlvConvolutionFilter::None
: The border pixels are extended with 0 values. IlvRGBBitmapData
, IlvBitmapFilter
, IlvBitmapKernel
IlvConvolutionFilter::IlvConvolutionFilter | ( | IlvBitmapDataKernel * | kernel = 0 , |
IlFloat | divisor = 0 , |
||
IlFloat | bias = 0.0 |
||
) |
Constructor.
Initializes a new instance of the class IlvConvolutionFilter
. The default operator is a 3x3 identity kernel.
IlvConvolutionFilter::~IlvConvolutionFilter | ( | ) |
Destructor.
The destructor releases all the memory used by the instance.
IlFloat IlvConvolutionFilter::getBias | ( | ) | const |
Returns the bias.
IlFloat IlvConvolutionFilter::getDivisor | ( | ) | const |
Returns the divisor.
IlvConvolutionFilter::EdgeMode IlvConvolutionFilter::getEdgeMode | ( | ) | const |
Returns the edge mode.
IlvBitmapDataKernel* IlvConvolutionFilter::getKernel | ( | ) | const |
Returns the kernel.
void IlvConvolutionFilter::setBias | ( | IlFloat | bias | ) |
Sets the bias.
bias | The new bias. |
void IlvConvolutionFilter::setDivisor | ( | IlFloat | divisor | ) |
Sets the divisor.
If the divisor is 0
then the sum of the kernel coefficients is used. If this coefficient is 0
then the divisor is 1.0
.
divisor | The new divisor. |
void IlvConvolutionFilter::setEdgeMode | ( | IlvConvolutionFilter::EdgeMode | mode | ) |
Sets the edge mode.
mode | The new edge mode. |
void IlvConvolutionFilter::setKernel | ( | IlvBitmapDataKernel * | kernel | ) |
Sets the kernel.
kernel | The new kernel. |
© Copyright 2015, Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave is a registered trademark of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.