Image Registration
Scanco Image Registration
[edit]Image Transformation
[edit]
Return to Contents or Return to Main Page
Image Registration
[edit]
Return to Contents or Return to Main Page
Register MRI to HR-pQCT
[edit]The registration between MRI and HR-pQCT using the Scanco system requires an initial guess as the MRI and HR-pQCT images are usually not close to being aligned (unlike two HR-pQCT images that start off in the same orientation). The following steps explain how to determine an initial guess using blSurfaceViewer.
1. Contour bones (really rough for MRI is ok).
2. Find initial guess that approximately aligns bones from both scans.
- Read in aim to IPL
- Use gobj_maskaimpeel_ow to get just the MRI and XCT bone (but not change dimensions of the image as this affects the initial guess)
- Scale the peeled XCT image down by 3
- Write out both these files and ftp to computer
- Open in blSurfaceViewer (input = MRI, source = XCT if you are using the XCT as the fixed image and MRI as the moving image)
- Move them until they are aligned.
- Click Save Transform
- Go file -> Save TDatOpen the TDat file to get the initial inputs
3. This initial guess (in x, y, z rotations and translations) can be used in the registration function in IPL as the 'initial rotation' and 'initial translation' input.
Return to Contents or Return to Main Page
Similarity Registration
[edit]Understand rotation parameters
[edit]In SimilarityRegistration, former AppSimilarityRegistrationV3, used when registering images with Shape, the config file
allows for setting inital rotations initial_transform_axis_x, initial_transform_axis_y, initial_transform_axis_z. These correspond to the versor components and are calculated as follows:
initial_transform_axis_x = n_x * sin(alpha/2) initial_transform_axis_y = n_y * sin(alpha/2) initial_transform_axis_z = n_z * sin(alpha/2)
where n=[n_x,n_y,n_z]^T is the unit vecotr representing the axis of rotation and alpha is the angle of rotation. Example 45 degree rotation around x-axis:
initial_transform_axis_x = 1 * sin(45/2) = 0.382 initial_transform_axis_y = 0 * sin(45/2) = 0 initial_transform_axis_z = 0 * sin(45/2) = 0
The rotations after registration final_transform_axis_x, final_transform_axis_y, final_transform_axis_z can be interpreted the same way.
ITK provides the functions GetAxis() and GetAngle to obtain [n_x, n_y, n_z] and alpha respectively, which are calculated as follows:
v_1 = initial_transform_axis_x v_2 = initial_transform_axis_y v_3 = initial_transform_axis_z magnitude = sqrt(v_1^2 + v_2^2 + v_3^2) n_x = v_1/magnitude n_y = v_2/magnitude n_z = v_3/magnitude alpha = 2 * atan(magnitude/1)
Return to Contents or Return to Main Page
Set optimizer scales
[edit]http://www.vtk.org/Wiki/ITK/ImageRegistration#Parameter_Selection
Return to Contents or Return to Main Page
SkiRegistration
[edit]ITK Rigid registration for HR-pQCT
[edit]- Refer to skiRegistration-Guide
Available on the SVN server https://mike.kin.ucalgary.ca/svn/bonelab/trunk/UserApps/yves/
The three executables skiInitialize, skiRegister and skiTransform are called in sequence using a shell script skiRegistration.sh.