![]() |
IPSDK
4_1_0_2
IPSDK : Image Processing Software Development Kit
|
3D Cross correlation calculated in the Fourier domain More...
| IPSDKIPLFILTERING_API image::ImagePtr | ipsdk::imaproc::filter::fastCrossCorrelation3dImg (const image::ImageConstPtr &pInImg3d, const image::ImageConstPtr &pInTemplateImg) |
| wrapper function for 3D Cross correlation calculated in the Fourier domain More... | |
| IPSDKIPLFILTERING_API void | ipsdk::imaproc::filter::fastCrossCorrelation3dImg (const image::ImageConstPtr &pInImg3d, const image::ImageConstPtr &pInTemplateImg, const image::ImagePtr &pOutRealImg) |
| wrapper function for 3D Cross correlation calculated in the Fourier domain More... | |
3D Cross correlation calculated in the Fourier domain
This algorithm computes the three dimensional Cross-Correlation (CC) between an image
and a template
. To speed up the process, the calculation is performed in the frequency domain as follows :
Where
is the configate of
,
represents the Fourier transform of an image
,
is the local mean intensity of the input image in the neighbourhood defined by the template,
is the template global mean intensity and
the inverse Fourier tranform.
The algorithm needs 4 working images with Real32 data to compute the Fourier transforms. If the template image is smaller than the reference image, it is padded before calculating its Fourier transform and two additional working images are used to store the padded template image.
Please, note that the results are not strictly identical to the Normalized Cross-Correlation 2d (NCC) and the maximum of the CC is located at the origin of the template whereas it is located at the template center coordinates for the NCC.
A 2d example of CC result is available at Normalized Cross-Correlation 2d.
Attribute description for algorithm :
| Name | ToolTip | Default Initializer |
|---|---|---|
| ipsdk::imaproc::attr::InImg3d1 | [Input] First 3d image for operation | X |
| ipsdk::imaproc::attr::InImg3d2 | [Input] Second 3d image for operation | X |
| 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::OutWk1RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk1RealImg, _pInImg3d1, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk2RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk2RealImg, _pInImg3d1, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk3RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk3RealImg, _pInImg3d1, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutWk4RealImg | [Output] Temporary working image for algorithm | ipsdk::imaproc::duplicateInOut (_pOutWk4RealImg, _pInImg3d1, ipsdk::image::eImageBufferType::eIBT_Real32) |
| ipsdk::imaproc::attr::OutRealImg | [Output] image for processing operation (data contained in image buffer are reals) | ipsdk::imaproc::duplicateInOut (_pOutRealImg, _pInImg3d1, ipsdk::image::eImageBufferType::eIBT_Real32) |
Global rule description for algorithm :
ipsdk::imaproc::customImageProperty (_pInImg3d2,
fastCCRule3d (_pInImg3d1,_pInImg3d2)) &&
ipsdk::imaproc::matchSize (_pInImg3d1,_pOutWk1RealImg) &&
ipsdk::imaproc::matchSize (_pInImg3d1,_pOutWk2RealImg) &&
ipsdk::imaproc::matchSize (_pInImg3d1,_pOutWk3RealImg) &&
ipsdk::imaproc::matchSize (_pInImg3d1,_pOutWk4RealImg) &&
ipsdk::imaproc::matchSize (_pInImg3d1,_pOutRealImg) &&
(ipsdk::processor::ifIsSet (
_pOutOptWk1RealImg, (
ipsdk::imaproc::matchSize (_pInImg3d2,_pOutOptWk1RealImg)) &&
(ipsdk::imaproc::noInSitu (_pInImg3d2,_pOutOptWk1RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutWk1RealImg,_pOutOptWk1RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutWk2RealImg,_pOutOptWk1RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutWk3RealImg,_pOutOptWk1RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutWk4RealImg,_pOutOptWk1RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutRealImg,_pOutOptWk1RealImg)))) &&
(ipsdk::processor::ifIsSet (
_pOutOptWk2RealImg, (
ipsdk::imaproc::matchSize (_pInImg3d1,_pOutOptWk2RealImg)) &&
(ipsdk::imaproc::noInSitu (_pInImg3d1,_pOutOptWk2RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutWk1RealImg,_pOutOptWk2RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutWk2RealImg,_pOutOptWk2RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutWk3RealImg,_pOutOptWk2RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutWk4RealImg,_pOutOptWk2RealImg)) &&
(ipsdk::imaproc::noInSitu (_pOutRealImg,_pOutOptWk2RealImg))))
| IPSDKIPLFILTERING_API image::ImagePtr ipsdk::imaproc::filter::fastCrossCorrelation3dImg | ( | const image::ImageConstPtr & | pInImg3d, |
| const image::ImageConstPtr & | pInTemplateImg | ||
| ) |
wrapper function for 3D Cross correlation calculated in the Fourier domain
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
| IPSDKIPLFILTERING_API void ipsdk::imaproc::filter::fastCrossCorrelation3dImg | ( | const image::ImageConstPtr & | pInImg3d, |
| const image::ImageConstPtr & | pInTemplateImg, | ||
| const image::ImagePtr & | pOutRealImg | ||
| ) |
wrapper function for 3D Cross correlation calculated in the Fourier domain
| ipsdk::processor::IPSDKBaseProcessingException | on failure |
1.8.14