IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit

bilateral filter on 3d image More...

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

Detailed Description

bilateral filter on 3d image

The bilateral filter is a non-linear smoothing filter that has good properties of edge-preserving. Each pixel value is replaced by a weighted average of the values of its neighbours. The weight is a product of two gaussian functions, one depending on the euclidian distance between the central pixel and its current neighbour, the other depending on the difference of the intensities of these 2 pixels.

On output image values are given by:

\[ OutImg[x, y, z] = \dfrac { \sum_{o_z=-n}^{n}{\sum_{o_y=-n}^{n}{\sum_{o_x=-n}^{n}{W(x, y, z, o_x, o_y, o_z) \times InImg[x+o_x, y+o_y, z+o_z]}}} } { \sum_{o_z=-n}^{n}{\sum_{o_y=-n}^{n}{\sum_{o_x=-n}^{n}{W(x, y, z, o_x, o_y, o_z)}}} } \]

where:

Input and output images must have same size.

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

See also
http://en.wikipedia.org/wiki/Bilateral_filter

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)
# bilateral filter 3d computation
outImg = filter.bilateral3dImg(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
bilateral3dImg(pInImg, inHalfKnlSize, inSpaceSigma, inRangeSigma, pOutImg);
See also
Bilateral3dImgLvl1
Bilateral3dImgLvl2
Bilateral3dImgLvl3

Function Documentation

◆ bilateral3dImg() [1/3]

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

wrapper function for bilateral filter on 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ bilateral3dImg() [2/3]

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

wrapper function for bilateral filter on 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ bilateral3dImg() [3/3]

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

wrapper function for bilateral filter on 3d image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure