Got Questions? Get Answers.
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
3D registration: rigid and nonrigid

Subject: 3D registration: rigid and nonrigid

From: Ahja

Date: 11 May, 2012 14:04:21

Message: 1 of 3

Hello MATLAB community,

I hope you can help me and give me some advice.

I have got two 3D image data sets (dimensions approximately 300x300x500) and two sets of coordinates of corresponding control points (respectively landmarks) in the two image data sets.

I want to register the second image data set to the first image data set. As a start, the registration can be rigid, but the ultimate goal is that I have got a non-rigid registration.

Question to rigid registration:
I know the rotation matrix and the translation vector, which best map the coordinates of the control points in the second image data set to the coordinates of the control points in the first image data set.
Now, I want to apply this rotation and translation on the second image data set, so that it is registered to the first image data set. I found the function "rigid3D.m" in the MATLAB file exchange. It works, but it is very slow.
I know that the functions "maketform" and "tformarray" should be faster. But how can I use maketform to create a transformation with a simple 3D rotation matrix and a 3D translation vector? Can anybody post exemplary code???

Question to nonrigid registration:
Does anybody know a publication / file exchange function / ... which can estimate non rigid registration parameters (e.g. B-Spline registration), which map the coordinates of the control points in the second image data set to the coordinates of the control points in the first image data set?
As a next step, how can I apply the non rigid registration with these registration parameters on the second 3D image data set?

Thanks a lot for your answers and for any help you can give me!

Subject: 3D registration: rigid and nonrigid

From: Matt J

Date: 11 May, 2012 14:51:31

Message: 2 of 3

"Ahja " <natus@online.de> wrote in message <joj695$hga$1@newscl01ah.mathworks.com>...
>
> Now, I want to apply this rotation and translation on the second image data set, so that it is registered to the first image data set. I found the function "rigid3D.m" in the MATLAB file exchange. It works, but it is very slow.
> I know that the functions "maketform" and "tformarray" should be faster. But how can I use maketform to create a transformation with a simple 3D rotation matrix and a 3D translation vector? Can anybody post exemplary code???
================

T=maketform('affine',[R,t].');

It might be faster, with some price in resolution, to decompose the rotation into a sequence of 3 rotations about the image axes, x-z-x for example. Then the rotations can be done in 2D slice-be-slice.


> Question to nonrigid registration:
> Does anybody know a publication / file exchange function / ... which can estimate non rigid registration parameters (e.g. B-Spline registration), which map the coordinates of the control points in the second image data set to the coordinates of the control points in the first image data set?
> As a next step, how can I apply the non rigid registration with these registration parameters on the second 3D image data set?
=================

This one seems popular, but I've never used it:

http://www.mathworks.com/matlabcentral/fileexchange/20057-b-spline-grid-image-and-point-based-registration

Subject: 3D registration: rigid and nonrigid

From: Anusha

Date: 15 Dec, 2012 15:47:08

Message: 3 of 3

"Ahja " <natus@online.de> wrote in message <joj695$hga$1@newscl01ah.mathworks.com>...
> Hello MATLAB community,
>
> I hope you can help me and give me some advice.
>
> I have got two 3D image data sets (dimensions approximately 300x300x500) and two sets of coordinates of corresponding control points (respectively landmarks) in the two image data sets.
>
> I want to register the second image data set to the first image data set. As a start, the registration can be rigid, but the ultimate goal is that I have got a non-rigid registration.
>
> Question to rigid registration:
> I know the rotation matrix and the translation vector, which best map the coordinates of the control points in the second image data set to the coordinates of the control points in the first image data set.
> Now, I want to apply this rotation and translation on the second image data set, so that it is registered to the first image data set. I found the function "rigid3D.m" in the MATLAB file exchange. It works, but it is very slow.
> I know that the functions "maketform" and "tformarray" should be faster. But how can I use maketform to create a transformation with a simple 3D rotation matrix and a 3D translation vector? Can anybody post exemplary code???
>
 Hai,

I have somehow a similar problem of aligning a point set to another point set so tht they r aligned in a common coordinate standard or on the same axis. Cn you help me on this matter.

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us