![]() |
IPSDK
4_1_0_2
IPSDK : Image Processing Software Development Kit
|
Variational Stationary Noise Remover. More...
| IPSDKIPLFILTERING_API VSNRResult | ipsdk::imaproc::filter::vsnr2dImg (const image::ImageConstPtr &pInImg, const ipUInt32 nbIter, const ipReal32 stdDevX, const ipReal32 stdDevY, const ipReal32 theta, const ipReal64 alpha) |
| wrapper function for Variational Stationary Noise Remover More... | |
| IPSDKIPLFILTERING_API void | ipsdk::imaproc::filter::vsnr2dImg (const image::ImageConstPtr &pInImg, const ipUInt32 nbIter, const ipReal32 stdDevX, const ipReal32 stdDevY, const ipReal32 theta, const ipReal64 alpha, const image::ImagePtr &pOutCorrectedImg, const image::ImagePtr &pOutNoiseImg) |
| wrapper function for Variational Stationary Noise Remover More... | |
| IPSDKIPLFILTERING_API VSNRResult | ipsdk::imaproc::filter::vsnr2dImg (const image::ImageConstPtr &pInImg, const image::ImageConstPtr &pNoiseImg, const ipUInt32 nbIter, const ipReal64 alpha) |
| wrapper function for Variational Stationary Noise Remover More... | |
| IPSDKIPLFILTERING_API void | ipsdk::imaproc::filter::vsnr2dImg (const image::ImageConstPtr &pInImg, const image::ImageConstPtr &pNoiseImg, const ipUInt32 nbIter, const ipReal64 alpha, const image::ImagePtr &pOutCorrectedImg, const image::ImagePtr &pOutNoiseImg) |
| wrapper function for Variational Stationary Noise Remover More... | |
Variational Stationary Noise Remover.
Standard denoising methods rely on a white noise assumption. This means that the intensity alteration is spatially uncorrelated. The VSNR (Variational Stationary Noise Remover) algorithm removes structural noise, i.e. following a pattern, in the input image [1].
In a generic case, we can express the noisy image
as the sum of the clean image
and the noise image
:
In the case of stationary noise
can be expressed as the convolution of white noise
with a pattern
:
where
is the convolution operator.
In this IPSDK implementation, noise the pattern
can be provided as an input image or can be expressed as an oriented Gabor function, by providing the Gabor parameters:
Where
are the coordinates after a rotation of
:
This is an example of noie image according
to a Gabor pattern
with an orientation of 45° and a white noise
:
The noise image estimation can be estimated by iteratively solving the following optimization problem:
Where
is the regularization term.
Please, see [1] for more details.
Here is an example of VSNR filtering result:
[1] Variational algorithms to remove stationary noise. Application to microscopy imaging. J. Fehrenbach, P. Weiss and C. Lorenzo, IEEE Image Processing Vol. 21, Issue 10, pages 4420 - 4430, October (2012)
Attribute description for algorithm :
| Name | ToolTip | Default Initializer |
|---|---|---|
| ipsdk::imaproc::attr::InImg | [Input] image for processing operation | X |
| ipsdk::imaproc::attr::InOptImg1 | [Input Optional] first input image for operation | X |
| ipsdk::imaproc::attr::InNbIter | [Input] Number of iterations for an iterative algorithm | X |
| ipsdk::imaproc::attr::InOptGaborParams | [Input Optional] Parameters to generate a Gabor signal | X |
| ipsdk::imaproc::attr::InFactor | [Input] Multiplying factor. Used for instance by shading correction algorithm | X |
| ipsdk::imaproc::attr::OutOptWk1Img | [Output Optional] Temporary working image for algorithm | X |
| ipsdk::imaproc::attr::OutWk1RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk1RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk2RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk2RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk3RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk3RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk4RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk4RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk5RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk5RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk6RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk6RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk7RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk7RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk8RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk8RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk9RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk9RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk10RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk10RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk11RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk11RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk12RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk12RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk13RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk13RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk14RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk14RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk15RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk15RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk16RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk16RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk17RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk17RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk18RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk18RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk19RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk19RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk20RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk20RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk21RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk21RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk22RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk22RealImg, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutImg1 | [Output] First output image | ipsdk::imaproc::duplicateInOut (_pOutImg1, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutImg2 | [Output] Second output image | ipsdk::imaproc::duplicateInOut (_pOutImg2, _pInImg, ipsdk::image::eImageBufferType::eIBT_Real32) |
Global rule description for algorithm :
ipsdk::imaproc::matchSize (_pInImg,_pOutImg1) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutImg2) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk1RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk2RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk3RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk4RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk5RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk6RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk7RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk8RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk9RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk10RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk11RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk12RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk13RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk14RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk15RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk16RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk17RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk18RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk19RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk20RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk21RealImg) &&
ipsdk::imaproc::matchSize (_pInImg,_pOutWk22RealImg) &&
ipsdk::processor::ifIsSet (_pInOptImg1,
ipsdk::imaproc::matchSize (_pInImg,_pInOptImg1))
| IPSDKIPLFILTERING_API VSNRResult ipsdk::imaproc::filter::vsnr2dImg | ( | const image::ImageConstPtr & | pInImg, |
| const ipUInt32 | nbIter, | ||
| const ipReal32 | stdDevX, | ||
| const ipReal32 | stdDevY, | ||
| const ipReal32 | theta, | ||
| const ipReal64 | alpha | ||
| ) |
wrapper function for Variational Stationary Noise Remover
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::vsnr2dImg | ( | const image::ImageConstPtr & | pInImg, |
| const ipUInt32 | nbIter, | ||
| const ipReal32 | stdDevX, | ||
| const ipReal32 | stdDevY, | ||
| const ipReal32 | theta, | ||
| const ipReal64 | alpha, | ||
| const image::ImagePtr & | pOutCorrectedImg, | ||
| const image::ImagePtr & | pOutNoiseImg | ||
| ) |
wrapper function for Variational Stationary Noise Remover
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API VSNRResult ipsdk::imaproc::filter::vsnr2dImg | ( | const image::ImageConstPtr & | pInImg, |
| const image::ImageConstPtr & | pNoiseImg, | ||
| const ipUInt32 | nbIter, | ||
| const ipReal64 | alpha | ||
| ) |
wrapper function for Variational Stationary Noise Remover
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::vsnr2dImg | ( | const image::ImageConstPtr & | pInImg, |
| const image::ImageConstPtr & | pNoiseImg, | ||
| const ipUInt32 | nbIter, | ||
| const ipReal64 | alpha, | ||
| const image::ImagePtr & | pOutCorrectedImg, | ||
| const image::ImagePtr & | pOutNoiseImg | ||
| ) |
wrapper function for Variational Stationary Noise Remover
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
1.8.14