IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Image 3d registration using grey signed features

algorithm allowing registration of 3d images using features associated to grey signature More...

IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration (const image::ImageConstPtr &pInOriginImg3d, const image::ImageConstPtr &pInTargetImg3d, const ipsdk::imaproc::attr::eRegistrationMotionModel3d &inRegMotionModel3d)
 wrapper function for algorithm allowing registration of 3d images using features associated to grey signature More...
 
IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration (const image::ImageConstPtr &pInOriginImg3d, const image::ImageConstPtr &pInTargetImg3d, const ipsdk::imaproc::attr::ScaleCandidatesConstPtr &pInScaleCandidates, const ipReal32 inGradStdDev, const attr::GaussianCoverageConstPtr &pInOptGradientGaussianCoverage, const ipsdk::imaproc::attr::CornerDetectionParamsConstPtr &pInCornerDetectionParams3d, const ipUInt32 inNbFeatures, const ipUInt32 inFeaturesDistX, const ipUInt32 inFeaturesDistY, const ipsdk::imaproc::attr::eInterpolationPolicy &inInterpolationPolicy, const ipsdk::imaproc::attr::SamplingBallInfoConstPtr &pInSamplingBallInfo3d, const ipsdk::imaproc::attr::eRegistrationMotionModel3d &inRegMotionModel3d, const ipReal64 inCorrelationThreshold3d, const ipsdk::imaproc::attr::RobustEstimationConfigConstPtr &pInOptRegistrationEstimationConfig, const ipsdk::imaproc::attr::Features3dRegistrationResultsPtr &pOutFeatures3dRegistrationResults)
 wrapper function for algorithm allowing registration of 3d images using features associated to grey signature More...
 
IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration (const image::ImageConstPtr &pInOriginImg3d, const image::ImageConstPtr &pInTargetImg3d)
 wrapper function for algorithm allowing registration of 3d images using features associated to grey signature More...
 
IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration (const image::ImageConstPtr &pInOriginImg3d, const image::ImageConstPtr &pInTargetImg3d, const ipReal32 inGradStdDev, const ipUInt32 inNbFeatures, const ipUInt32 inFeaturesDist, const ipsdk::imaproc::attr::Features3dRegistrationResultsPtr &pOutFeatures3dRegistrationResults)
 wrapper function for algorithm allowing registration of 3d images using features associated to grey signature More...
 
IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration (const image::ImageConstPtr &pInOriginImg3d, const image::ImageConstPtr &pInTargetImg3d, const attr::ScaleCandidatesConstPtr &pInScaleCandidates)
 wrapper function for algorithm allowing registration of 3d images using features associated to grey signature More...
 
IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration (const image::ImageConstPtr &pInOriginImg3d, const image::ImageConstPtr &pInTargetImg3d, const attr::ScaleCandidatesConstPtr &pInScaleCandidates, const ipReal32 inGradStdDev, const ipUInt32 inNbFeatures, const ipUInt32 inFeaturesDist, const attr::Features3dRegistrationResultsPtr &pOutFeatures3dRegistrationResults)
 wrapper function for algorithm allowing registration of 3d images using features associated to grey signature More...
 

Detailed Description

algorithm allowing registration of 3d images using features associated to grey signature

This algorithm allows to automatically compute motion transform linking two images. Given an origin image $InOriginImg3d$ and a target image $InTargetImg3d$, this algorithm basically allows to automatically compute motion transform linking. We compute transformation allowing to link points of images with following formula :

\[ P_{target}=sR(\chi, \beta, \alpha)P_{origin} + T(T_x, T_y, T_z) \]

with :

The computed transformation can also be of form :

\[ \bar{P}_{target}=H \bar{P}_{origin} \]

in case of homography motion model (ipsdk::imaproc::attr::eRegistrationMotionModel3d::eRMM2d_Homography) with :

This algorithm is composed of three main phasis :

Extraction phasis can be controlled via following parameters : $InOptGradStdDev$, $InOptGradientGaussianCoverage$, $InOptCornerDetectionParams3d$, $InOptNbFeatures$, $InOptFeaturesDistX$, $InOptFeaturesDistY$, $InOptFeaturesDistZ$, $InOptInterpolationPolicy$ and $InOptSamplingBallInfo3d$ (see Extract grey signed features 3d).

Motion transform computation phasis can be controlled via following parameters : $InOptRegMotionModel3d$, $InOptCorrelationThreshold3d$ and $InOptRegistrationEstimationConfig$. Note that in case where $InOptRegMotionModel3d$ parameter is set to ipsdk::imaproc::attr::eRegistrationMotionModel3d::eRMM3d_Similarity or ipsdk::imaproc::attr::eRegistrationMotionModel3d::eRMM3d_Homography, algorithm will iterate on its three main phasis searching for best results adusting used scale for feature extraction (this phasis is not scale invariant see Extract grey signed features 3d). In this case an additional parameter $InOptScaleCandidates$ allows to defined candidates for tested scale factor.

See Image 3d registration using grey signed features for an illustration of this algorithm applied in 2d case.

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InOriginImg3d [Input] Origin 3d image provided to registration algorithm X
ipsdk::imaproc::attr::InTargetImg3d [Input] Target 3d image provided to registration algorithm X
ipsdk::imaproc::attr::InOptScaleCandidates [Input Optional] scale candidates for processing X
ipsdk::imaproc::attr::InOptGradStdDev [Input Optional] standard deviation used for gradient computation X
ipsdk::imaproc::attr::InOptGradientGaussianCoverage [Input Optional] Parameter allowing to specify a gaussian distribution coverage for processing X
ipsdk::imaproc::attr::InOptCornerDetectionParams3d [Input Optional] parameters used during corner detection process X
ipsdk::imaproc::attr::InOptNbFeatures [Input Optional] target number of features to be detected by algorithm X
ipsdk::imaproc::attr::InOptFeaturesDistX [Input Optional] distance between detected features along x axis (tchebychev distance) X
ipsdk::imaproc::attr::InOptFeaturesDistY [Input Optional] distance between detected features along y axis (tchebychev distance) X
ipsdk::imaproc::attr::InOptFeaturesDistZ [Input Optional] distance between detected features along z axis (tchebychev distance) X
ipsdk::imaproc::attr::InOptInterpolationPolicy [Input Optional] interpolation policy used to extract local data from image X
ipsdk::imaproc::attr::InOptSamplingBallInfo3d [Input Optional] Parameters for used sampling ball around image points X
ipsdk::imaproc::attr::InOptRegMotionModel3d [Input Optional] 3d motion model which should be used for computation X
ipsdk::imaproc::attr::InOptCorrelationThreshold3d [Input Optional] threshold on 3d correlation scores used during pairs matching X
ipsdk::imaproc::attr::InOptRegistrationEstimationConfig [Input Optional] configuration for robust estimation part of features registration X
ipsdk::imaproc::attr::OutWk1Img [Output] Temporary working image for algorithm promoteReInterpretable (_pOutWk1Img, _pInOriginImg3d, _pInTargetImg3d, ipsdk::imaproc::ePromoteBinaryType::ePBT_UpperSigned)
ipsdk::imaproc::attr::OutWk2Img [Output] Temporary working image for algorithm promoteReInterpretable (_pOutWk2Img, _pInOriginImg3d, _pInTargetImg3d, ipsdk::imaproc::ePromoteBinaryType::ePBT_UpperSigned)
ipsdk::imaproc::attr::OutWk3Img [Output] Temporary working image for algorithm promoteReInterpretable (_pOutWk3Img, _pInOriginImg3d, _pInTargetImg3d, ipsdk::imaproc::ePromoteBinaryType::ePBT_UpperSigned)
ipsdk::imaproc::attr::OutWk4Img [Output] Temporary working image for algorithm promoteReInterpretable (_pOutWk4Img, _pInOriginImg3d, _pInTargetImg3d, ipsdk::imaproc::ePromoteBinaryType::ePBT_UpperSigned)
ipsdk::imaproc::attr::OutWk5Img [Output] Temporary working image for algorithm promoteReInterpretable (_pOutWk5Img, _pInOriginImg3d, _pInTargetImg3d, ipsdk::imaproc::ePromoteBinaryType::ePBT_UpperSigned)
ipsdk::imaproc::attr::OutWk6Img [Output] Temporary working image for algorithm promoteReInterpretable (_pOutWk6Img, _pInOriginImg3d, _pInTargetImg3d, ipsdk::imaproc::ePromoteBinaryType::ePBT_UpperSigned)
ipsdk::imaproc::attr::OutWk7Img [Output] Temporary working image for algorithm promoteReInterpretable (_pOutWk7Img, _pInOriginImg3d, _pInTargetImg3d, ipsdk::imaproc::ePromoteBinaryType::ePBT_UpperSigned)
ipsdk::imaproc::attr::OutFeatures3dRegistrationResults [Output] collection of results for features 3d registration algorithm allocate (_pOutFeatures3dRegistrationResults)

Global Rule description

Global rule description for algorithm :
((ipsdk::imaproc::matchBufferType (_pInOriginImg3d,_pInTargetImg3d)) && 
 (ipsdk::imaproc::isReInterpretable (_pOutWk1Img,_pInOriginImg3d)) && 
 (ipsdk::imaproc::isReInterpretable (_pOutWk1Img,_pInTargetImg3d)) && 
 (ipsdk::imaproc::matchSizeAndType (_pOutWk1Img,_pOutWk2Img,_pOutWk3Img,_pOutWk4Img,_pOutWk5Img,_pOutWk6Img)) && 
 (ipsdk::imaproc::matchSizeAndType (_pOutWk1Img,_pOutWk7Img)))

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLRegistration as registration

Code Example

# opening of input images
inImg3d1 = PyIPSDK.loadTiffImageFile(inputImgPath1)
inImg3d2 = PyIPSDK.loadTiffImageFile(inputImgPath2)
# computation of motion transform between images
outRegistrationResult = registration.greySignedFeaturesImg3dRegistration(inImg3d1, inImg3d2, PyIPSDK.eRegistrationMotionModel3d.eRMM3d_Similarity)
transformParams = outRegistrationResult.transform.params
# print of results
print("Registration results :")
print("----------------------")
print("Nb original features : " + str(outRegistrationResult.indicators.nbFeatures1))
print("Nb target features : " + str(outRegistrationResult.indicators.nbFeatures2))
print("Nb made pairs : " + str(outRegistrationResult.indicators.nbPairs))
print("Robust estimation status :")
print("--------------------------")
print(outRegistrationResult.indicators.estimationResults.toString())
print("Estimated motion transform :")
print("----------------------------")
print("Rotation (chi, beta, alpha in radians) : {" + str(transformParams[PyIPSDK.Rigid3d.eTP_Chi]) + ", " + str(transformParams[PyIPSDK.Rigid3d.eTP_Beta]) + ", " + str(transformParams[PyIPSDK.Rigid3d.eTP_Alpha]) + "}")
print("Translation : {" + str(transformParams[PyIPSDK.Rigid3d.eTP_Tx]) + ", " + str(transformParams[PyIPSDK.Rigid3d.eTP_Ty]) + ", " + str(transformParams[PyIPSDK.Rigid3d.eTP_Tz]) + "}")

Example of C++ code :

Example informations

Associated library

IPSDKIPLRegistration

Header file

Code Example

// Load the input images
ImagePtr pInImg1 = loadTiffImageFile(inImgFilePath1);
ImagePtr pInImg2 = loadTiffImageFile(inImgFilePath2);
// computation of motion transform between images
const RegistrationMotionTransform3d& outTransform = pOutRegistrationResult->getNode<Features3dRegistrationResult::Transform>();
See also
GreySignedFeaturesImg3dRegistrationLvl1

Function Documentation

◆ greySignedFeaturesImg3dRegistration() [1/6]

IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration ( const image::ImageConstPtr pInOriginImg3d,
const image::ImageConstPtr pInTargetImg3d,
const ipsdk::imaproc::attr::eRegistrationMotionModel3d inRegMotionModel3d 
)

wrapper function for algorithm allowing registration of 3d images using features associated to grey signature

In this case computed transformation type is defined by user

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure
Returns
best registration result

◆ greySignedFeaturesImg3dRegistration() [2/6]

IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration ( const image::ImageConstPtr pInOriginImg3d,
const image::ImageConstPtr pInTargetImg3d 
)

wrapper function for algorithm allowing registration of 3d images using features associated to grey signature

In this case we compute a rigid transformation

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure
Returns
best registration result

◆ greySignedFeaturesImg3dRegistration() [3/6]

IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration ( const image::ImageConstPtr pInOriginImg3d,
const image::ImageConstPtr pInTargetImg3d,
const attr::ScaleCandidatesConstPtr pInScaleCandidates 
)

wrapper function for algorithm allowing registration of 3d images using features associated to grey signature

In this case we compute a similarity transformation

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure
Returns
best registration result

◆ greySignedFeaturesImg3dRegistration() [4/6]

IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration ( const image::ImageConstPtr pInOriginImg3d,
const image::ImageConstPtr pInTargetImg3d,
const ipsdk::imaproc::attr::ScaleCandidatesConstPtr pInScaleCandidates,
const ipReal32  inGradStdDev,
const attr::GaussianCoverageConstPtr pInOptGradientGaussianCoverage,
const ipsdk::imaproc::attr::CornerDetectionParamsConstPtr pInCornerDetectionParams3d,
const ipUInt32  inNbFeatures,
const ipUInt32  inFeaturesDistX,
const ipUInt32  inFeaturesDistY,
const ipsdk::imaproc::attr::eInterpolationPolicy inInterpolationPolicy,
const ipsdk::imaproc::attr::SamplingBallInfoConstPtr pInSamplingBallInfo3d,
const ipsdk::imaproc::attr::eRegistrationMotionModel3d inRegMotionModel3d,
const ipReal64  inCorrelationThreshold3d,
const ipsdk::imaproc::attr::RobustEstimationConfigConstPtr pInOptRegistrationEstimationConfig,
const ipsdk::imaproc::attr::Features3dRegistrationResultsPtr pOutFeatures3dRegistrationResults 
)

wrapper function for algorithm allowing registration of 3d images using features associated to grey signature

In this case computed transformation type is defined by user

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure
Returns
best registration result

◆ greySignedFeaturesImg3dRegistration() [5/6]

IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration ( const image::ImageConstPtr pInOriginImg3d,
const image::ImageConstPtr pInTargetImg3d,
const ipReal32  inGradStdDev,
const ipUInt32  inNbFeatures,
const ipUInt32  inFeaturesDist,
const ipsdk::imaproc::attr::Features3dRegistrationResultsPtr pOutFeatures3dRegistrationResults 
)

wrapper function for algorithm allowing registration of 3d images using features associated to grey signature

In this case we compute a rigid transformation

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure
Returns
best registration result

◆ greySignedFeaturesImg3dRegistration() [6/6]

IPSDKIPLREGISTRATION_API attr::Features3dRegistrationResultPtr ipsdk::imaproc::registration::greySignedFeaturesImg3dRegistration ( const image::ImageConstPtr pInOriginImg3d,
const image::ImageConstPtr pInTargetImg3d,
const attr::ScaleCandidatesConstPtr pInScaleCandidates,
const ipReal32  inGradStdDev,
const ipUInt32  inNbFeatures,
const ipUInt32  inFeaturesDist,
const attr::Features3dRegistrationResultsPtr pOutFeatures3dRegistrationResults 
)

wrapper function for algorithm allowing registration of 3d images using features associated to grey signature

In this case we compute a similarity transformation

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure
Returns
best registration result