Image Registration

From bone.wiki
Jump to navigation Jump to search

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]

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.


Return to Contents or Return to Main Page