Tuesday, August 15, 2006

Tweaking The Registration

To improve the performance of the Image Registration process, I have added various changes in its structure and implementation. The addition of a user selectable blurring option was included in hopes of smoothing out the optimizer's path. I have been running the itkBinomialBlurImageFilter at twenty iterations, providing an image with its borders slightly blurred. The point set that represents the ellipse has also been shrunk to a smaller band size. Reducing the size of the ellipse band has made the metric more sensitive to every perturbation. It has resulted in the metric being very choppy. I have implemented the Registration in steps, first the translation, then the angle, and finally translation again. The first translation is allowed to move freely, with the optimizer starting at the ability to jump thirty pixels. After this is run the coordinates of the ellipse are usually in roughly the correct position. Then I run a second Registration where the angle is the parameter in question. Once that is completed, I run a third where the translation is again computed, but this time allowed an initial movement of just two pixels. This has allowed for the ability to fine tune a rough set of parameters gradually and incrementally. Although one pervasive issue throughout the process is the vacillating of the metric. It consistently is very unstable in both the translation and orientation processes.

The following is a movie of the Registration process:


7 Comments:

At 8/19/2006 9:04 PM, Blogger Tomasz Malisiewicz said...

Nice; when I was an undergrad I did a lot of VTK/VXL Computer Vision work. Isn't VTK just awesome?

Good luck with your project.

 
At 8/24/2006 12:59 PM, Blogger Gautam Prasad said...

VTK has so many capabilities once you get used to it. Thanks.

 
At 11/21/2007 10:25 AM, Blogger ShiX said...

Hi, I just found your blog googling labeling using VTK. It's so great I found someone working on similar area as me. I'm trying to use VTK to boundries of regions I find in an MRI image. actually each region is set of pixels which are java classes ( I probably need to change them to C++ later) Do have any idea if I need to use VTK for that or ITK. The problem is my supervisor suggested doing it using VTK, so it's a month I'm (trying) to learn VTK, But now I doubt it's useful for what I want and ITK might be more proper. I can see you've been working with VTK and ITK and have lots of experience in them. Can you help me please. This is driving me crazy.
Thanks
Shaady

 
At 11/21/2007 5:28 PM, Blogger Gautam Prasad said...

Sounds like it would be better to use ITK to find the boundaries. Then if you needed to visualize the boundaries, use VTK.

 
At 11/26/2007 5:53 AM, Blogger ShiX said...

Thanks, Then I need to the right commands to visual the boundries using VTK. atleast now I know that VTK is capable of doing that. :-)
Thanks

 
At 4/16/2009 12:46 PM, Anonymous Anonymous said...

Gautam,

How did you get vtkXYPlotActor to update dynamically over time? Could you please post sample code?

Thanks!!

 
At 4/27/2009 5:15 PM, Blogger Gautam Prasad said...

I would create a new vtkXYPlotActor object each iteration. First declare

vtkXYPlotActor *plot;

where at each iteration

plot = vtkXYPlotActor::New();

and then,

plot->AddInput(plotData);

can be called with the latest set of points in the plot as the argument. It's probably a good idea to call delete() on the object each time a new object is created to take its place.

 

Post a Comment

<< Home