IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit

Smooth an input image convolving it with a 2d Gaussian kernel. More...

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianSmoothing2dImg (const image::ImageConstPtr &pInImg, const ipReal32 inStdDev)
 wrapper function for Gaussian filter used to blur a 2d image More...
 
IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianSmoothing2dImg (const image::ImageConstPtr &pInImg, const ipReal32 inStdDevX, const ipReal32 inStdDevY, const attr::GaussianCoverageConstPtr &pInOptSmoothingGaussianCoverage)
 wrapper function for Gaussian filter used to blur a 2d image More...
 
IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianSmoothing2dImg (const image::ImageConstPtr &pInImg, const ipReal32 inStdDevX, const ipReal32 inStdDevY, const attr::GaussianCoverageConstPtr &pInOptSmoothingGaussianCoverage, const image::ImagePtr &pOutImg)
 wrapper function for Gaussian filter used to blur a 2d image More...
 

Detailed Description

Smooth an input image convolving it with a 2d Gaussian kernel.

Used Gaussian kernel $GaussKnl_{XY}$ coefficients are defined as follow :

\[ GaussKnl_{XY}[o_x, o_y] = \dfrac{1}{2\pi\sigma_x\sigma_y}e^{-\dfrac{1}{2}\left(\dfrac{o_x^2}{\sigma_x^2}+\dfrac{o_y^2}{\sigma_y^2}\right)} \]

where :

Size $[n_x, n_y]$ of this finite kernel is controlled by InOptGradientGaussianCoverage attribute.
This parameter defined the minimum distribution spread ratio which should be reach regards to an infinite Gaussian distribution.
We define for example $n_x$ such that :

\[ n_x = \max(MinHalfKernelSize, \min(\{n\}\in \mathbb{N}^+) / \sum_{o_x=-\dfrac{n_x}{2}}^{\dfrac{n_x}{2}}{GaussKnl_X[o_x]}>= GaussianRatio \times \sum_{o_x=-\infty}^{+\infty}{GaussKnl_X[o_x]}) \]

where :

\[ GaussKnl_X[o_x] = \dfrac{1}{\sqrt{2\pi}\sigma_x}e^{-\dfrac{o_x^2}{2\sigma_x^2}} \]

On output image values are given by:

\[ OutImg[x, y] = \sum_{o_y=-\dfrac{n_y}{2}}^{\dfrac{n_y}{2}}{\sum_{o_x=-\dfrac{n_x}{2}}^{\dfrac{n_x}{2}}{InImg[x+o_x, y+o_y] \times GaussKnl_{XY}[o_x, o_y]}} \]

Input and output images must have same size.

Here is an example of a Gaussian smoothing operation applied to an 8-bits grey levels input image (with $InStdDevX=InStdDevY=7$):

gaussianSmoothing2d.png
See also
http://en.wikipedia.org/wiki/Gaussian_filter
http://en.wikipedia.org/wiki/Gaussian_blur

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InImg [Input] image for processing operation X
ipsdk::imaproc::attr::InStdDevX [Input] standard deviation used for operation along X axis X
ipsdk::imaproc::attr::InStdDevY [Input] standard deviation used for operation along Z axis X
ipsdk::imaproc::attr::InOptSmoothingGaussianCoverage [Input Optional] Parameter allowing to specify a gaussian distribution coverage for processing X
ipsdk::imaproc::attr::OutImg [Output] image for processing operation ipsdk::imaproc::duplicateInOut (_pOutImg, _pInImg)

Global Rule description

Global rule description for algorithm :
ipsdk::imaproc::matchSize (_pInImg,_pOutImg)

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLFiltering as filter

Code Example

# opening of input images
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
# gaussian smoothing filter 2d computation
outImg = filter.gaussianSmoothing2dImg(inImg, 1.5)

Example of C++ code :

Example informations

Associated library

IPSDKIPLFiltering

Header file

Code Example

// opening input image
ImagePtr pInImg = loadTiffImageFile(inputImgPath);
// compute gaussian smoothing on input image
ImagePtr pOutImg = gaussianSmoothing2dImg(pInImg, inStdDevX, inStdDevY, createGaussianCoverage(inOptGaussianRatio, minHalfKernelSize));
See also
GaussianSmoothing2dImgLvl1

Function Documentation

◆ gaussianSmoothing2dImg() [1/3]

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianSmoothing2dImg ( const image::ImageConstPtr pInImg,
const ipReal32  inStdDev 
)

wrapper function for Gaussian filter used to blur a 2d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianSmoothing2dImg() [2/3]

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianSmoothing2dImg ( const image::ImageConstPtr pInImg,
const ipReal32  inStdDevX,
const ipReal32  inStdDevY,
const attr::GaussianCoverageConstPtr pInOptSmoothingGaussianCoverage 
)

wrapper function for Gaussian filter used to blur a 2d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianSmoothing2dImg() [3/3]

IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianSmoothing2dImg ( const image::ImageConstPtr pInImg,
const ipReal32  inStdDevX,
const ipReal32  inStdDevY,
const attr::GaussianCoverageConstPtr pInOptSmoothingGaussianCoverage,
const image::ImagePtr pOutImg 
)

wrapper function for Gaussian filter used to blur a 2d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure