Horus Doc || Global Function Guide || General documentation   | Function documentation  

HxConvolution

Synopsis

HxImageRep HxConvolution (HxImageRep img, HxImageRep kernel, HxImageRep::ResultPrecision resPrec)

Input

HxImageRep img
The image you want to convolve with the kernel image.

HxImageRep kernel
The kernel for the convolution.

ResultPrecision resPrec
This parameter determines the precision of the resulting image. The available precision values are DEFAULT_PREC, SOURCE_PREC, ARITH_PREC, SMALL_PREC . See the section on Precision for a more detailed description about precision.

Return value

HxImageRep
The result of convolving the input image with the kernel image.

Description

The function HxConvolution convolves the input image with the kernel image. The convolution kernel can be either a scalar or vector image. If the kernel is a scalar image, the input image may be a scalar or a vector image. In case of a scalar kernel and an vector input image, the convolution is taken separately for each channel. If both kernel and image are vector images, the pixel dimension should be the same. In the latter case, each channel of the input image is convolved with the corresponding channel of the kernel.

Remarks

Valid input image types
All types of images are allowed for this function.

Valid kernel image types
The size of the kernel in any dimension should be less or equal to the size of the input image in the corresponding dimension. The dimensionality of the kernel image should be equal to the dimensionality of the input image. The pixel dimensionality of the kernel should be either 1 or equal to the pixel dimensionality of the input image.

Valid precision values
The available precision values are DEFAULT_PREC, SOURCE_PREC, ARITH_PREC, SMALL_PREC . See the section on Precision for a more detailed description about precision.

Border handling
This function uses MIRRORED border handling, see the section on Border handling.

Examples

Convolving an image with a kernel.

#include "HxImageRepGlobalFuncs.h"
#include "HxImageRep.h"

HxImageRep HxConvolutionExample1(HxImageRep im1, HxImageRep im2) {
   im1 = HxImageAsDouble(im1);
   im2 = HxImageAsDouble(im2);
   im1 = HxConvolution(im1, im2, HxImageRep::DEFAULT_PREC);
   im1 = HxContrastStretch(im1, 255.0);
   im1 = HxImageAsByte(im1);

   return im1;
}

int main(int argc, char* argv[])
{
    HxImageRep im1 = HxMakeFromFile(argv[1]);
    HxImageRep im2 = HxMakeFromFile(argv[2]);
    im1 = HxConvolutionExample1(im1, im2);
    HxWriteFile(im1, argv[3]);

    return 0;
}

exampleImage1.gif

First input image for the HxConvolution example.

exampleImage5.gif

Second input image for the HxConvolution example.

HxConvolutionResult1.gif

Output image of the HxConvolution example.

In this example an image is convolved with the upper left corner from that image. The example code only works on 2D images.

See also

HxConvKernelSeparated, HxConvGauss2d, HxConvGauss3d, HxConvKernelSeparated2d,

Keywords

Filter, Convolution,


Generated on Mon Jan 27 15:44:59 2003 for GlobalFunctionGuide by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001