IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit

Compute X, Y and Z gradients of an input image convolving it with 3d Gaussian kernels. More...

IPSDKIPLFILTERING_API GradientXYZImg ipsdk::imaproc::filter::gaussianGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDev)
 wrapper function for Gaussian filter used to compute gradient on a 3d image More...
 
IPSDKIPLFILTERING_API GradientXYZImg ipsdk::imaproc::filter::gaussianGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDevX, const ipReal32 inStdDevY, const ipReal32 inStdDevZ, const attr::GaussianCoverageConstPtr &pInOptGradientGaussianCoverage)
 wrapper function for Gaussian filter used to compute gradient on a 3d image More...
 
IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDevX, const ipReal32 inStdDevY, const ipReal32 inStdDevZ, const attr::GaussianCoverageConstPtr &pInOptGradientGaussianCoverage, const image::ImagePtr &pOutOptGradXImg3d, const image::ImagePtr &pOutOptGradYImg3d, const image::ImagePtr &pOutOptGradZImg3d)
 wrapper function for Gaussian filter used to compute gradient on a 3d image More...
 
IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianXGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDev)
 wrapper function for Gaussian filter used to compute gradient along x axis on a 3d image More...
 
IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianXGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDev, const attr::GaussianCoverageConstPtr &pInOptGradientGaussianCoverage, const image::ImagePtr &pOutOptGradXImg3d)
 wrapper function for Gaussian filter used to compute gradient along x axis on a 3d image More...
 
IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianYGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDev)
 wrapper function for Gaussian filter used to compute gradient along y axis on a 3d image More...
 
IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianYGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDev, const attr::GaussianCoverageConstPtr &pInOptGradientGaussianCoverage, const image::ImagePtr &pOutOptGradYImg3d)
 wrapper function for Gaussian filter used to compute gradient along y axis on a 3d image More...
 
IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianZGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDev)
 wrapper function for Gaussian filter used to compute gradient along z axis on a 3d image More...
 
IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianZGradient3dImg (const image::ImageConstPtr &pInImg3d, const ipReal32 inStdDev, const attr::GaussianCoverageConstPtr &pInOptGradientGaussianCoverage, const image::ImagePtr &pOutOptGradZImg3d)
 wrapper function for Gaussian filter used to compute gradient along z axis on a 3d image More...
 

Detailed Description

Compute X, Y and Z gradients of an input image convolving it with 3d Gaussian kernels.

Used Gaussian kernels $GaussKnl^{X}_{XYZ}$, $GaussKnl^{Y}_{XYZ}$ and $GaussKnl^{Z}_{XYZ}$ coefficients are defined as follow :

\[ GaussKnl^{X}_{XYZ}[o_x, o_y, o_z] = -\dfrac{o_x}{(2\pi)^\frac{3}{2}\sigma^5}e^{-\dfrac{o_x^2+o_y^2+o_z^2}{2\sigma^2}} \]

\[ GaussKnl^{Y}_{XYZ}[o_x, o_y, o_z] = -\dfrac{o_y}{(2\pi)^\frac{3}{2}\sigma^5}e^{-\dfrac{o_x^2+o_y^2+o_z^2}{2\sigma^2}} \]

\[ GaussKnl^{Z}_{XYZ}[o_x, o_y, o_z] = -\dfrac{o_z}{(2\pi)^\frac{3}{2}\sigma^5}e^{-\dfrac{o_x^2+o_y^2+o_z^2}{2\sigma^2}} \]

where :

Size $[n_x, n_y, n_z]$ 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}e^{-\dfrac{o_x^2}{2\sigma^2}} \]

On output image values are given by:

\[ OutOptGradXImg3d[x, y, z] = \sum_{o_z=-\dfrac{n_z}{2}}^{\dfrac{n_z}{2}}{\sum_{o_y=-\dfrac{n_y}{2}}^{\dfrac{n_y}{2}}{\sum_{o_x=-\dfrac{n_x}{2}}^{\dfrac{n_x}{2}}{InImg3d[x+o_x, y+o_y, z+o_z] \times GaussKnl^{X}_{XYZ}[o_x, o_y, o_z]}}} \]

\[ OutOptGradYImg3d[x, y, z] = \sum_{o_z=-\dfrac{n_z}{2}}^{\dfrac{n_z}{2}}{\sum_{o_y=-\dfrac{n_y}{2}}^{\dfrac{n_y}{2}}{\sum_{o_x=-\dfrac{n_x}{2}}^{\dfrac{n_x}{2}}{InImg3d[x+o_x, y+o_y, z+o_z] \times GaussKnl^{Y}_{XYZ}[o_x, o_y, o_z]}}} \]

\[ OutOptGradZImg3d[x, y, z] = \sum_{o_z=-\dfrac{n_z}{2}}^{\dfrac{n_z}{2}}{\sum_{o_y=-\dfrac{n_y}{2}}^{\dfrac{n_y}{2}}{\sum_{o_x=-\dfrac{n_x}{2}}^{\dfrac{n_x}{2}}{InImg3d[x+o_x, y+o_y, z+o_z] \times GaussKnl^{Z}_{XYZ}[o_x, o_y, o_z]}}} \]

A detailled analysis of this filter has been done in J. Canny (1986) "A computational approach to edge detection", IEEE Trans. Pattern Analysis and Machine Intelligence, vol 8, pages 679-714.

Output images OutOptGradXImg3d, OutOptGradYImg3d and OutOptGradZImg3d are optional (at least one must be provided). Input and output images must have same size.

Here is an example of a Gaussian gradient operation applied to an 8-bits grey levels input image (with $InStdDev=3$):

gaussianGradient3d.png
See also
http://en.wikipedia.org/wiki/Edge_detection#cite_note-8

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InImg3d [Input] 3d image for 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::InStdDevZ [Input] standard deviation used for operation along Z axis X
ipsdk::imaproc::attr::InOptGradientGaussianCoverage [Input Optional] Parameter allowing to specify a gaussian distribution coverage for processing X
ipsdk::imaproc::attr::OutOptGradXImg3d [Output Optional] 3d image associated to X component of gradient computation promoteUnary (_pOutOptGradXImg3d, _pInImg3d, ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned)
ipsdk::imaproc::attr::OutOptGradYImg3d [Output Optional] 3d image associated to Y component of gradient computation promoteUnary (_pOutOptGradYImg3d, _pInImg3d, ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned)
ipsdk::imaproc::attr::OutOptGradZImg3d [Output Optional] 3d image associated to Z component of gradient computation promoteUnary (_pOutOptGradZImg3d, _pInImg3d, ipsdk::imaproc::ePromoteUnaryType::ePUT_UpperSigned)

Global Rule description

Global rule description for algorithm :
((ipsdk::processor::isSet (_pOutOptGradXImg3d) || 
  ipsdk::processor::isSet (_pOutOptGradYImg3d) || 
  ipsdk::processor::isSet (_pOutOptGradZImg3d)) && 
 (ipsdk::processor::ifIsSet (_pOutOptGradXImg3d,
   ipsdk::imaproc::matchSize (_pInImg3d,_pOutOptGradXImg3d))) && 
 (ipsdk::processor::ifIsSet (_pOutOptGradYImg3d,
   ipsdk::imaproc::matchSize (_pInImg3d,_pOutOptGradYImg3d))) && 
 (ipsdk::processor::ifIsSet (_pOutOptGradZImg3d,
   ipsdk::imaproc::matchSize (_pInImg3d,_pOutOptGradZImg3d))))

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLFiltering as filter

Code Example

# opening of input images
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
# gaussian gradient filter 3d computation
outGxImg, outGyImg, outGzImg = filter.gaussianGradient3dImg(inImg, 1.5)

Example of C++ code :

Example informations

Associated library

IPSDKIPLFiltering

Header file

Code Example

// opening input image
ImagePtr pInImg3d = loadTiffImageFile(inputImgPath, eTiffDirectoryMode::eTDM_Volume);
// compute gaussian gradient on input image
GradientXYZImg gradientXYZ = gaussianGradient3dImg(pInImg3d, inStdDev, inStdDev, inStdDev, createGaussianCoverage(inOptGaussianRatio, minHalfKernelSize));
See also
GaussianGradient3dImgLvl1

Function Documentation

◆ gaussianGradient3dImg() [1/3]

IPSDKIPLFILTERING_API GradientXYZImg ipsdk::imaproc::filter::gaussianGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDev 
)

wrapper function for Gaussian filter used to compute gradient on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianXGradient3dImg() [1/2]

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianXGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDev 
)

wrapper function for Gaussian filter used to compute gradient along x axis on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianYGradient3dImg() [1/2]

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianYGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDev 
)

wrapper function for Gaussian filter used to compute gradient along y axis on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianZGradient3dImg() [1/2]

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::gaussianZGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDev 
)

wrapper function for Gaussian filter used to compute gradient along z axis on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianGradient3dImg() [2/3]

IPSDKIPLFILTERING_API GradientXYZImg ipsdk::imaproc::filter::gaussianGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDevX,
const ipReal32  inStdDevY,
const ipReal32  inStdDevZ,
const attr::GaussianCoverageConstPtr pInOptGradientGaussianCoverage 
)

wrapper function for Gaussian filter used to compute gradient on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianGradient3dImg() [3/3]

IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDevX,
const ipReal32  inStdDevY,
const ipReal32  inStdDevZ,
const attr::GaussianCoverageConstPtr pInOptGradientGaussianCoverage,
const image::ImagePtr pOutOptGradXImg3d,
const image::ImagePtr pOutOptGradYImg3d,
const image::ImagePtr pOutOptGradZImg3d 
)

wrapper function for Gaussian filter used to compute gradient on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianXGradient3dImg() [2/2]

IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianXGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDev,
const attr::GaussianCoverageConstPtr pInOptGradientGaussianCoverage,
const image::ImagePtr pOutOptGradXImg3d 
)

wrapper function for Gaussian filter used to compute gradient along x axis on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianYGradient3dImg() [2/2]

IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianYGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDev,
const attr::GaussianCoverageConstPtr pInOptGradientGaussianCoverage,
const image::ImagePtr pOutOptGradYImg3d 
)

wrapper function for Gaussian filter used to compute gradient along y axis on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ gaussianZGradient3dImg() [2/2]

IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::gaussianZGradient3dImg ( const image::ImageConstPtr pInImg3d,
const ipReal32  inStdDev,
const attr::GaussianCoverageConstPtr pInOptGradientGaussianCoverage,
const image::ImagePtr pOutOptGradZImg3d 
)

wrapper function for Gaussian filter used to compute gradient along z axis on a 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure