0

I have been trying to create an image registration script to align measurement tools (phantoms) seen in x-ray images across different x-ray detectors. The fixed image will always be larger, and the moving image to be registered is a known, constant template. The goal of registration is to use the transform of the registered template to precisely know the location of measurable points of the phantom on the larger moving image.

The image pair will have varying levels of significant noise (Gaussian and Poisson Noise), and the phantom may be of a different size (due to different xray detector resolutions), position, and rotation. As such I am looking to align with a similarity transform (rotation, scale, translation).

Current Solution

There are several phantoms I am imaging, and I have provided examples of two: one for contrast-noise measurements and another for MTF.

This is an example of the registration for the contrast phantom (pure acrylic block):

Phantom 1 (Fixed), Phantom 1 (Moving), Phantom 1 Aligned (magenta on green view)

And this is for the MTF phantom (acrylic block embedded with highly radiopaque lead):

Phantom 2 (Fixed), Phantom 2 (Moving), Phantom 2 Aligned (magenta on green view)

The registration for images of the MTF phantom, with visibly high-contrast edges and high-contrast numbers is trivial with feature-based registration. In MATLAB's Registration Estimator (Image Processing & Computer Vision toolbox), a number of feature-based techniques (MSER, SURF, ORB, and KAZE) perform well in <0.3s: MTF Registration example

For the contrast phantom, feature-based registration does not reliably detect features and when it does, it returns very poor results: SURF Registration

To register the contrast phantom, I am current using a more costly solution (~10s) that looks something like this:

  • Normalize the intensity and smooth both images with a bilateral filter (intensity correction is tricky due to differing attenuation characteristics of the phantoms at different photon energies)
  • Binarize with Otsu's Threshold (eliminating any connected components aside the largest)
  • Find the rotation of the fixed image (find the minimum area bounding box of iterative rotations, with correction to orient the top side)
  • An affine matrix (without shear) is created based on the rotation of the fixed image, size of the fixed bounding box compared to that of the moving, and the location of the top left corner of the fixed bounding box
  • This affine matrix is used to create a rough alignment of the two images
  • MATLAB's imregister function (OnePlusOneEvolutionary optimizer) is used to refine the transformation with the rough alignment as the initial solution. This creates the final registration

Question

How else could I approach registering the contrast phantom images to improve time performance and accuracy. I am especially interested how to improve feature-based registration on these images. If I embed lead markers within the contrast phantom, feature-based registration should improve greatly, however I am curious from a purely academic standpoint if it is possible without any modifications to the phantom.

More abstractly, I want to learn more about why feature-based detection fails at aligning the contrast phantom images, while excelling on the MTF phantom images. Are there certain feature geometries that feature extraction excels at? Or is the difference in performance between the contrast alignment and MTF alignment less about the geometry, but rather the much greater SNR in the MTF images?

  • try the DSP stack exchange too -- there are ways to use fourier transforms (as convolution) and log-polar transforms to estimate translation, rotation, and scaling. I haven't gotten that to work but maybe others have. – Christoph Rackwitz Feb 02 '22 at 09:47
  • "If I embed lead markers within the contrast phantom, feature-based registration should improve greatly". Congratulations on re-discovering the 2nd Law of Computer Vision ("All CV software problems are solvable, given a sufficient hardware budget"). If this is an industrial application, do seriously consider running a cost-benefit analysis before spending more time on algorithms, especially if accuracy requirements are tight. – Francesco Callari Feb 02 '22 at 16:14
  • Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. – Community Feb 11 '22 at 11:22

0 Answers0