IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Separated bilateral smoothing 3d

separated version of bilateral filter on 3d image More...

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::separatedBilateral3dImg (const image::ImageConstPtr &pInImg, const ipReal64 inSpaceSigma, const ipReal64 inRangeSigma)
 wrapper function for separated version of bilateral filter on 3d image More...
 
IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::separatedBilateral3dImg (const image::ImageConstPtr &pInImg, const ipUInt32 inHalfKnlSize, const ipReal64 inSpaceSigma, const ipReal64 inRangeSigma)
 wrapper function for separated version of bilateral filter on 3d image More...
 
IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::separatedBilateral3dImg (const image::ImageConstPtr &pInImg, const ipUInt32 inHalfKnlSize, const ipReal64 inSpaceSigma, const ipReal64 inRangeSigma, const image::ImagePtr &pOutImg)
 wrapper function for separated version of bilateral filter on 3d image More...
 

Detailed Description

separated version of bilateral filter on 3d image

The separated bilateral filter is an approximation of the Bilateral smoothing 3d that gives resulting images that may be close to what is obtained with the original bilateral filter with dramatically better time performance. The separated bilateral filter is executed in 3 passes: first along x-axis, then along y-axis and finally along z-axis.

Output image pixel values are given by:

\[ OutImg[x, y, z] = \dfrac { \sum_{o_z=-n}^{n}{W_z(x, y, z, o_z)*OutImg_y[x, y, z+o_z]} } { \sum_{o_z=-n}^{n}{W_z(x, y, z, o_z)} } \]

where:

Input and output images must have same size.

See Separated bilateral smoothing 2d for an illustration of separated bilateral filter applied to a 2d image.

See also
M. Moreaud, F. Cokelaer, Flowing Bilateral Filter : definition and GPU implementation, Image Analysis and Stereology (revision in progress)

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InImg3d [Input] 3d image for operation X
ipsdk::imaproc::attr::InRangeSigma [Input] sigma for range gaussian function X
ipsdk::imaproc::attr::InSpaceSigma [Input] sigma for spatial gaussian function X
ipsdk::imaproc::attr::InOptHalfKnlSize [Input Optional] half kernel size (square or cubic kernel) X
ipsdk::imaproc::attr::OutImg [Output] image for processing operation ipsdk::imaproc::duplicateInOut (_pOutImg, _pInImg3d)

Global Rule description

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

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLFiltering as filter

Code Example

# opening of input images
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
# separable bilateral filter 3d computation
outImg = filter.separatedBilateral3dImg(inImg, 5, 3)

Example of C++ code :

Example informations

Associated library

IPSDKIPLFiltering

Header file

Code Example

// opening input image
ImagePtr pInImg = loadTiffImageFile(inputImgPath);
// definition of a custom output geometry
ImageGeometryPtr pOutImageGeometry = geometry3d(
outImageBufferType,
pInImg->getSizeX(),
pInImg->getSizeY(),
pInImg->getSizeZ());
// creation of output image
boost::shared_ptr<MemoryImage> pOutImg = boost::make_shared<MemoryImage>();
pOutImg->init(*pOutImageGeometry);
// compute bilateral filter on input image
separatedBilateral3dImg(pInImg, inHalfKnlSize, inSpaceSigma, inRangeSigma, pOutImg);
See also
SeparatedBilateral3dImgLvl1
SeparatedBilateral3dImgLvl2

Function Documentation

◆ separatedBilateral3dImg() [1/3]

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::separatedBilateral3dImg ( const image::ImageConstPtr pInImg,
const ipReal64  inSpaceSigma,
const ipReal64  inRangeSigma 
)

wrapper function for separated version of bilateral filter on 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ separatedBilateral3dImg() [2/3]

IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::separatedBilateral3dImg ( const image::ImageConstPtr pInImg,
const ipUInt32  inHalfKnlSize,
const ipReal64  inSpaceSigma,
const ipReal64  inRangeSigma 
)

wrapper function for separated version of bilateral filter on 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ separatedBilateral3dImg() [3/3]

IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::separatedBilateral3dImg ( const image::ImageConstPtr pInImg,
const ipUInt32  inHalfKnlSize,
const ipReal64  inSpaceSigma,
const ipReal64  inRangeSigma,
const image::ImagePtr pOutImg 
)

wrapper function for separated version of bilateral filter on 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure