![]() |
IPSDK
4_1_0_2
IPSDK : Image Processing Software Development Kit
|
Patch-based bilateral filter used to denoise a 3d image. More...
Patch-based bilateral filter used to denoise a 3d image.
Patch-based bilateral filter is an algorithm used for image denoising. Like the Bilateral smoothing 3d, each voxel value is replaced by a weighted average of the values of its neighbours, and the weight is a product of two gaussian functions, one depending on the spatial distance between the 2 voxels, and the other one depending on intensity similarities. But contrary to the original version of the bilateral filter, the intensity similarity is not computed between 2 voxels, but between their 2 cubic neighbourhoods.
In term of results, this algorithm outperforms the original bilateral filter(better preservation of details and structures in the image) and gives results similar to the non-local means filter when one of the parameters, the spatial sigma, is great enough.
On output image values are given by:
where:
is the weight function; 
is the space function; 
is the intensity similarity function; 
is a ball-shaped kernel of a given radius, specified by the user through the parameter field PatchBasedBilateralParams::KernelRadius
is defined by PatchBasedBilateralParams::PatchSimilaritySigma parameter field
is defined by PatchBasedBilateralParams::SpaceSigma parameter field
stands for the standard deviation of gaussian noise estimated in the image and is defined by PatchBasedBilateralParams::NoiseSigma parameter fieldInput and output images must have same size.
Adjusting the parameters of the filter requires some expertise. To simplify the user's task, it is possible to execute the filter in semi-automatic or in full-automatic mode:
These 2 modes usually give satisfying results, provided the noise of the input image follows a gaussian distribution. If this is not the case, using one of the 2 automatic modes may be a good starting point, but it will be certainly necessary to adjust manually the parameters afterwards.
Attribute description for algorithm :
| Name | ToolTip | Default Initializer |
|---|---|---|
| ipsdk::imaproc::attr::InImg3d | [Input] 3d image for operation | X |
| ipsdk::imaproc::attr::InOptPIPatchBasedBilateralParams | [In Optional] Plan indexed collection of parameters for patch-based bilateral filter | X |
| ipsdk::imaproc::attr::OutPIPatchBasedBilateralParams | [Output] Plan indexed collection of parameters for patch-based bilateral filter | ipsdk::imaproc::fromImageButVolume (_pOutPIPatchBasedBilateralParams, _pInImg3d) |
| ipsdk::imaproc::attr::OutOptWk1RealImg | [Output Optional] Temporary working image for algorithm (data contained in image buffer are reals) | X |
| ipsdk::imaproc::attr::OutOptWk2RealImg | [Output Optional] Temporary working image for algorithm (data contained in image buffer are reals) | X |
| ipsdk::imaproc::attr::OutRealImg | [Output] image for processing operation (data contained in image buffer are reals) | ipsdk::imaproc::duplicateInOut (_pOutRealImg, _pInImg3d, ipsdk::image::eImageBufferType::eIBT_Real32) |
Global rule description for algorithm :
ipsdk::imaproc::matchSize (_pInImg3d,_pOutRealImg) &&
ipsdk::imaproc::matchImagePlans (_pOutPIPatchBasedBilateralParams,_pInImg3d,eImagePlansMatchPolicy::eIPMP_CT) &&
ipsdk::processor::ifIsSet (_pInOptPIPatchBasedBilateralParams,
ipsdk::imaproc::matchImagePlans (_pInOptPIPatchBasedBilateralParams,_pInImg3d,eImagePlansMatchPolicy::eIPMP_CT)) &&
(ipsdk::processor::ifIsSet (
_pOutOptWk1RealImg, (
ipsdk::imaproc::matchSize (_pInImg3d,_pOutOptWk1RealImg)) &&
(ipsdk::imaproc::noInSitu (_pInImg3d,_pOutOptWk1RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutRealImg,_pOutOptWk1RealImg)))) &&
(ipsdk::processor::ifIsSet (
_pOutOptWk2RealImg, (
ipsdk::imaproc::matchSize (_pInImg3d,_pOutOptWk2RealImg)) &&
(ipsdk::imaproc::noInSitu (_pInImg3d,_pOutOptWk2RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutRealImg,_pOutOptWk2RealImg))))
| IPSDKIPLFILTERING_API PatchBasedBilateralResult ipsdk::imaproc::filter::patchBasedBilateral3dImg | ( | const image::ImageConstPtr & | pInImg | ) |
wrapper function for patch-based bilateral filter used to denoise a 3d image
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API attr::PatchBasedBilateralParamsPtr ipsdk::imaproc::filter::patchBasedBilateral3dImg | ( | const image::ImageConstPtr & | pInImg, |
| const image::ImagePtr & | pOutImg | ||
| ) |
wrapper function for patch-based bilateral filter used to denoise a 3d image
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API PatchBasedBilateralResult ipsdk::imaproc::filter::patchBasedBilateral3dImg | ( | const image::ImageConstPtr & | pInImg, |
| const ipsdk::imaproc::attr::PatchBasedBilateralParamsConstPtr & | pParams | ||
| ) |
wrapper function for patch-based bilateral filter used to denoise a 3d image
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API attr::PatchBasedBilateralParamsPtr ipsdk::imaproc::filter::patchBasedBilateral3dImg | ( | const image::ImageConstPtr & | pInImg, |
| const ipsdk::imaproc::attr::PatchBasedBilateralParamsConstPtr & | pParams, | ||
| const image::ImagePtr & | pOutImg | ||
| ) |
wrapper function for patch-based bilateral filter used to denoise a 3d image
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API attr::PlanIndexedPatchBasedBilateralParamsPtr ipsdk::imaproc::filter::multiSlice_patchBasedBilateral3dImg | ( | const image::ImageConstPtr & | pInImg, |
| const image::ImagePtr & | pOutImg | ||
| ) |
wrapper function for patch-based bilateral filter used to denoise a 3d image
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API attr::PlanIndexedPatchBasedBilateralParamsPtr ipsdk::imaproc::filter::multiSlice_patchBasedBilateral3dImg | ( | const image::ImageConstPtr & | pInImg, |
| const attr::PlanIndexedPatchBasedBilateralParamsConstPtr & | pPIParams, | ||
| const image::ImagePtr & | pOutImg | ||
| ) |
wrapper function for patch-based bilateral filter used to denoise a 3d image
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API attr::PlanIndexedPatchBasedBilateralParamsPtr ipsdk::imaproc::filter::multiSlice_patchBasedBilateral3dImg | ( | const image::ImageConstPtr & | pInImg, |
| const ipsdk::ipReal64 | noiseSigma, | ||
| const image::ImagePtr & | pOutImg | ||
| ) |
wrapper function for patch-based bilateral filter used to denoise a 3d image
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API attr::PlanIndexedPatchBasedBilateralParamsPtr ipsdk::imaproc::filter::multiSlice_patchBasedBilateral3dImg | ( | const image::ImageConstPtr & | pInImg, |
| const ipsdk::ipReal64 | noiseSigma, | ||
| const ipsdk::ipReal64 | minRange, | ||
| const ipsdk::ipReal64 | maxRange, | ||
| const image::ImagePtr & | pOutImg | ||
| ) |
wrapper function for patch-based bilateral filter used to denoise a 3d image
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
1.8.14