[Insight-users] Image to Spatial Object Metric
Antonio Foncubierta
antonio.foncubierta at gmail.com
Mon Feb 2 15:26:37 EST 2009
Hi Luis,
I finally could use the SpatialObjectToImageStatisticsCalculator, so I
solved the unefficiency problem. The algorithm is now much quicker, between
10 and 100 times faster! This lets me increase the number of iterations so
that in, say 10 minutes, i have a good result, which isn't still perfect,
but approximate. By the way, the problem why I couldn't use the
SpatialObjectToImageStatisticsCalculator seemed to be related with having a
GroupSpatialObject, since when I switched to EllipseSpatialObject, it just
worked perfectly and could calculate real numbers (otherwise the results
were NaN).
Thank you very much for your advice, I really appreciate your interest. I'll
try that as soon as possible, and will let you know what my results are.
Antonio Foncubierta
2009/2/2 Luis Ibanez <luis.ibanez at kitware.com>
>
> Hi Antonio,
>
> It seems that part of the difficulty that you are facing is
> rooted in the fact that the metric that computes a binary
> overlap between the spatial object and the image will have
> a plateau for all the transform parameters that map the
> spatial object inside the object in the image.
>
> You may want to consider blurring the image, or computing
> its distance map, as a way of breaking that plateau, and
> converting it in to a function with a monotonic profile
> that could be tracked by an optimizer.
>
> The metric illustrated in the ModelToImage examples is
> a very basic one...
>
>
> Regards,
>
>
> Luis
>
>
> --------------------------
> Antonio Foncubierta wrote:
>
>> Hello again, it seems i could overcome some of my difficulties re-defining
>> a metric. This is what I did:
>>
>> * First I tried a SpatialObjectToImageStatistis calculator, so that
>> I would be able to sum the values of pixels of the image included
>> inside the Spatial Object. I couln't make it, and struggled for
>> several days on that. So I decided I would look for another
>> solution that might not be as efficient, but could be used meanwhile.
>> * So I did the following, I used an SpatialObjectToImageFilter and
>> counted the pixels of that Spatial Object. This has given me a
>> metric that uses the points inside the image ratio, and the pixels
>> that includes the spatial object. With this I am able to register,
>> but I face the following problem, which is why I ask you for some
>> guidance:
>>
>> Given that my registration algorithm using this unefficient metric is
>> quite slow, i would certainly need to have the right scales for dynamic
>> range of paratemers. So what's the rule to choose them? I can see examples
>> in the ITK Software Guide, but I'd rather have some more information about
>> why those values were chosen.
>>
>> Thank you in advance,
>>
>>
>> Antonio Foncubierta
>>
>>
>> 2009/1/16 Antonio Foncubierta <antonio.foncubierta at gmail.com <mailto:
>> antonio.foncubierta at gmail.com>>
>>
>> Thank you very much for your quick answer, Luis. As requested, I
>> will give as many details as possible:
>>
>> 1. I create an itkImage using a SpatialObjectToImageFilter. This
>> image contains an ellipsoid with radii 10 15 20, for instance.
>> 2. I want to make a registration of a certain Spatial Object with
>> that Image. The starting Spatial Object is another ellipsoid
>> with radii, for example, 5, 5, 5. I set the Spatial Object
>> offset in a way so that the ellipsoid centre fits the Image
>> Gravity Center (I use a MomentCalculator to get that value).
>> 3. I start the registration method using an Affine Transform,
>> because the starting ellipsoid needs a scale change.
>> 4. The result is that the optimizer doesn't have anything to
>> optimize, because the SimpleModelToImageMetric GetValue method
>> returns the number of Spatial Object points in the Image
>> (every point in the image has value=1). Therefore, the metric
>> is already maximized. The result is a small ellipsoid fully
>> contained inside the image.
>> 5. In some other cases, I located the starting spatial object
>> outside the gravity center of the image and then started the
>> registration method. The result then was a randomly shaped
>> ellipsoid (it depends on where I put the center and the
>> original size of it) which has all of its points inside the
>> image. The Optimizer returns the same parameters once it
>> achieves a maximum in the metric, no matter how many
>> iterations I allow the registration method to run.
>>
>> Those results have made me think that I must change the metric so
>> that it has a maximum when all the points are inside the image and
>> the spatial object volume is as high as possible.
>>
>> Any ideas?
>>
>> I also would like to apologize if you understood that I was
>> reporting a problem in the registration methods or examples (which
>> obviously work perfectly). My intention was to find what I am doing
>> wrong or what I could probably use to solve _my_ problem.
>>
>> Thank you in advance,
>>
>> Antonio Foncubierta
>>
>>
>> 2009/1/16 Luis Ibanez <luis.ibanez at kitware.com
>> <mailto:luis.ibanez at kitware.com>>
>>
>>
>>
>> Hi Antonio,
>>
>> the ImageToSpatialObjectRegistrationMethod<> that is illustrated
>> in the
>> examples
>>
>> Insight/Examples/Registration
>>
>> ModelToImageRegistration1.cxx
>> ModelToImageRegistration2.cxx
>>
>> should, in principle, work with any of the ITK Transforms.
>>
>> It is likely that the problem that you faced when using an
>> Affine transform are more related to:
>>
>>
>> A) Poor choice of parameter scaling values (the array
>> that is passed to the Optimizer in order to compensate
>> for the difference in dynamic range between Translation
>> and Rotation/Scale components.
>>
>> B) Poor choice of Optmizer parameters.
>>
>>
>> Of course, the option of writing your own Metric is always worth
>> considering, but that is independent of the need for solving (A)
>> and (B) properly.
>>
>>
>> In general, when you report that something "doesn't work", it is
>> very helpful to describe *exactly* what the result was, and how
>> do you arrive to the conclusion that "it doesn't work".
>>
>> Please give us more detail on what you observed....
>>
>>
>> Thanks
>>
>>
>> Luis
>>
>>
>>
>> ---------------------------
>> Antonio Foncubierta wrote:
>>
>> Hello,
>>
>> I am trying to develop a Model Based Registration Method,
>> and I started using the example mentioned by the Itk
>> Software Guide and included in the 3.6 version of Insight:
>> ***ModelToImageRegistration1.cxx***. I have been trying to
>> adapt the example to work with my data: 3D Images. Achieving
>> that was not a big deal, but I started to struggle when I
>> wanted the Transform to be an itkAffineTransform, which
>> includes a scale change. The example explicitly says that
>> the SimpleImageToSpatialObjectMetric is designed considering
>> no scale changes, and it says it right, because the metric
>> doesn't work as I required. (It does work as expected, though).
>>
>> So my main problem now is finding a way to define a metric
>> that maximizes both the ****number of Spatial Object Points
>> inside the Image**** and the ****Spatial Object Volume****.
>> The first one is easy, as it is exactly what the above
>> mentioned example does, but I haven't found a way to compute
>> the Transformed SpatialObject Volume.
>>
>> And that's why I ask you if any of you have found a similar
>> problem and how did you solve it. Also, if any of you know a
>> not-as-simple metric which I could use.
>>
>> Thank you in advance,
>>
>> PS: The explanation migh be very blurry, so if you don't
>> undersrtand anything of it, please, just ask. I'd rather
>> repeat things in a different way, or attach images to not
>> having help at all ;)
>>
>> Antonio Foncubierta
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users at itk.org <mailto:Insight-users at itk.org>
>> http://www.itk.org/mailman/listinfo/insight-users
>>
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090202/fc2fb6a7/attachment-0001.htm>
More information about the Insight-users
mailing list