[Insight-users] using 3d registration on a 2d stack of images.
Mark Wyszomierski
markww at gmail.com
Fri Apr 1 11:32:00 EST 2005
Thanks everyone for the info and clarification. I used
DeformableRegistration7 (BSplineDeformableTransform + LBFGSBOptimizer)
example for my trial. I use this method because my input to be
registered are contrast enhanced breast MRI images. I have a 3
questions:
#1) In the earlier registration examples, the input pixel type is
usually defined as type float. A comment in one of the examples says
this is to aid the histogram matching that is done to the input
images? But in DeformableRegistration7, I don't see this histogram
matching being done, is this necessary? I'm reading my data myself
from MRI images, the pixel type is unsigned short. Can I leave my
pixel type as unsigned short, or should I store it in a float array
before registration?
#2) Since each breast dataset is really just a stack of 2D images from
the MRI scanner, I use the following method to create a volume from
it: I allocate a 1D array of size (width * height * number of slices),
then copy the pixel data of each slice in sequence into the array.
This is done for my stationary and moving volumes. I then hand this to
the registration method. Is this acceptable?
#3) The registration seems to work, but an odd thing happens after I
extract the images from the registered volumes. The first slice always
appears black. The last slice always appears to have a black arc
through the center of the image. Any ideas what could cause that?
Thanks!
Mark
On Mar 30, 2005 2:55 PM, Karthik Krishnan <Karthik.Krishnan at kitware.com> wrote:
> Hi Mark,
>
> If you have multiple breast datasets (each 3D), you can use 3D
> registration to register them against each other. This would allow, as
> you've pointed out greater freedom in terms of allowing deformations in
> 3 dimensions as opposed to deformations restricted to a plane in the 2D
> registration case case.
>
> To clarify, we understand that you have multiple 3D breast datasets and
> not "a breast dataset".
>
> You may want to look at deformable registration examples in ITK.
>
> Thanks
> Regards
> Karthik
>
> Mark Wyszomierski wrote:
>
> >Hi Luis and George, thanks for the replies. The set of images I have
> >is a breast dataset acquried from an MRI scanner. Within the stack
> >there are a few timepoints, I consider timepoint zero the non moving
> >timepoint, and try to register the rest to that timepoint.
> >
> >My method at the moment is to do 2d registration, slice to slice for
> >each of the timepoints. I was thinking though that maybe I could get
> >better results if the registration method had the entire volume of the
> >timepoints to work with instead of a single slice, so perhaps it could
> >look around a greater distance to bring about correction.
> >
> >Is this a correct idea? Thanks for your replies!
> >
> >Mark
> >
> >
> >
> >
> >On Wed, 30 Mar 2005 13:10:06 -0500, Luis Ibanez <luis.ibanez at kitware.com> wrote:
> >
> >
> >>Hi Mark,
> >>
> >>You can use ITK for registering N-Dimensional images.
> >>
> >>For examples on 3D registration please look at
> >>
> >> Insight/Examples/Registration/
> >> Imageregistraiton8.cxx
> >> DeformableRegistration7.cxx
> >> DeformableRegistration8.cxx
> >>
> >>and the applications
> >>
> >> InsightApplications/
> >> LandmarkInitializedMutualInformationRegistration/
> >> MIValidation/
> >> VolviewPlugIns/
> >> MultiResMIRegistration/
> >>
> >>However.... from the description of your problem, it seems
> >>that you don't need to do 3D registration. What you have
> >>is a series of 2D registration problems.
> >>
> >>Maybe a better description of your project goals will help
> >>us to understand your needs....
> >>
> >>Regards,
> >>
> >> Luis
> >>
> >>-------------------------
> >>Mark Wyszomierski wrote:
> >>
> >>
> >>
> >>>Hello all,
> >>>
> >>>I have a stack of 2d slices that I have been using with 2d motion
> >>>registration. I have read it is possible to use a 3d registration
> >>>method on this stack, which may produce a better result.
> >>>
> >>>All the registration examples have the image dimensions set at 2. I
> >>>also have this setup. I loop through each slice in my moving stack,
> >>>load its pixel data into a buffer, and register each buffer with the
> >>>corresponding stationary buffer from my stationary image stack.
> >>>
> >>>If I were to switch this to 3d, should I simply change my dimensions
> >>>to 3? Then create a 3d array and load all my moving images into that
> >>>3d array? Do the same for the stationary images? Then just have one
> >>>registration step where I hand the method both volumes?
> >>>
> >>>After it's done, can I peel my moving slices out of the registered 3d
> >>>array and consider them done?
> >>>
> >>>Any general guidelines would be great, thanks!
> >>>
> >>>Mark
> >>>_______________________________________________
> >>>Insight-users mailing list
> >>>Insight-users at itk.org
> >>>http://www.itk.org/mailman/listinfo/insight-users
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >_______________________________________________
> >Insight-users mailing list
> >Insight-users at itk.org
> >http://www.itk.org/mailman/listinfo/insight-users
> >
> >
> >
>
>
More information about the Insight-users
mailing list