IPSDK 0.2
IPSDK : Image Processing Software Development Kit
Stack registrationSee full documentation
outImg,transformsstackRegistrationImg (inImg3d)
WarpMotionTransform2dCollstackRegistrationImg (inImg3d,outImg)
outImg,transformsstackRegistrationImg (inImg3d,theta,maxTranslation)
WarpMotionTransform2dCollstackRegistrationImg (inImg3d,theta,maxTranslation,outImg)
imagestackRegistrationImg (inImg3d,transformColl)

Detailed Description

Registration of the slices in a 3D stack using grey signed features and taking into account a cumulative angular bias.

In some applications, the aquisition of a 3D stack is subject to the device vibrations, which yields to unaligned information along the 3D dataset. This algorithm registers all slices of a 3D stack to correct such a spatial variation considered as a simple translation. It performs the registration by using Extract grey signed features 2d and Registration of grey signed features 2d. The outputs are the registered 3D stack and the estimated transforms applied to each slices. Please, note that the resulting transforms have a decimal precision but the actually applied transform parameters are truncated.

If a transform collection has already been estimated, it is possible to provide it to directly perform the registration without estimating the transform parameters.

The principle is illustrated in the figure below:

stackRegistrationImg.png

A cumulative offset may appear along the stack, as showed in the figure below. The input parameter theta can be used to compensate this shift.

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLRegistration as registration

Code Example

# opening of input image
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
# statistics measurement
outImg, transforms = registration.stackRegistrationImg(inImg, theta, maxTranslation)

Example of C++ code :

Example informations

Header file

#include <IPSDKIPL/IPSDKIPLRegistration/Processor/StackRegistrationImg/StackRegistrationImg.h>

Code Example

// Simple call with transform parameter estimation
StackRegistrationResult result = stackRegistrationImg(pInImg, theta, maxTranslation);
// Simple call with provided transform parameters
FileReadResult fRes = readFromXmlFile(dataPath);
WarpMotionTransform2dCollPtr pTransforms = boost::static_pointer_cast<WarpMotionTransform2dColl>(fRes._pObject);
ImagePtr pOutImg = stackRegistrationImg(pInImg, pTransforms);
// Multi-slice call
PlanIndexedStackRegistrationResult resultPI = multiSlice_stackRegistrationImg(pInImg_multiSlice, theta, maxTranslation);