[Insight-users] Efficient distance to a sparse level set in ITK v4
Arnaud Gelas
arnaudgelas at gmail.com
Mon Feb 17 02:47:48 EST 2014
Hi Danielle,
it sounds like really interesting problem!
You're right: as it is now, it is not possible to set the number of layers in sparse representations in v4.
---
For Malcolm's representation the number of layers if fixed to 1 representing the zero level set (value equal to 0), and 2 values {-1;+1} to represent inner and outer parts.
For Shi's representation the number of layers if fixed to 2 {-1;+1}, and 2 values {-3;+3} to represent inner and outer parts.
By principle, these 2 representations are optimized to use only these little number of layers. You should also note that since the level set values are discrete, even if you could add extract layers you would not get a real distance in between your 2 objects.
For the Whitaker's representation, in principle you could add more layers; but in the implementation we constrain it to the minimum set.
---
To answer your question, I think it really depends on (1) your constrain on the distance you want to apply, on (2) the shape of the object you want to segment and (3) your initialization.
(1) If the distance is rather small, you could add some extra layers (I would highly recommend not to add too many layers, e.g 1 or 2 extra layers on each side). Whitaker's representation could be extended or another sparse representation could be implemented to be able to set the number of layers, but it would depends if you want real value for the level set or if you are ok with discrete (?). I think such a contribution would be a great addition to the toolkit; and we could give you some guidance for that ;)!!
else if it is too large, you would loose the main interest of sparsity for level-set; and in such a case I would rather go for a sparse representation with few layers (Malcolm or Shi), then compute a distance map from the zero set.
(2) (3) If you can provide some bounds on the position and shape of the objects, you could fix and restrain domains on which the level sets would evolve, and thus here you could directly use a dense representation, or use (1). Your initialisation needs to be in this domain…
You can get some additional details in the neuroinformatics paper on v4 level set:
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3872740/
Best
HTH,
Arnaud
On Feb 15, 2014, at 12:03 AM, Danielle Pace <dfpace at MIT.EDU> wrote:
> Hi all,
>
> Is there an efficient way to compute the distance from a point to a
> sparse level set (Whitaker/Shi/Malcolm), where that point lies outside
> the sparse layers?
>
> More details:
>
> I am working on a coupled level sets implementation, where there are
> two level sets and a distance constraint between them. I would like
> to do this in v4 so that I can take advantage of the better setup for
> multiple level sets, and ideally keep a sparse representation for
> efficiency.
>
> I need to create a new equation term that incorporates the distance,
> so that the speed function = 0 when the distance between the level
> sets is outside [minDistance, maxDistance]. Practically, this means
> that the level sets should never be much more than maxDistance apart
> at any time in the evolution.
>
> In ITK v3 I could do this efficiently by increasing the number of
> layers in the SparseFieldLevelSetImageFilter to correspond to
> maxDistance. Then I would always be able to grab the distance from
> one level set to the other, without losing the sparse representation.
> But, the option to change the number of layers doesn't seem to exist
> in v4.
>
> Any suggestions, or should I cave and use the dense representation?
>
> One idea would be, on each iteration, to get a label map
> representation of the (sparse) level set and then run the Maurer
> distance map filter. Perhaps this would still be more efficient than
> using the dense level set representation, because the level set
> evolution part would still be computed on a small fraction of the
> pixels? (I don't think this would be more overhead compared to the
> dense representation, since the Maurer distance map filter runs on
> every iteration anyways in
> itkLevelSetEvolution::ReinitializeToSignedDistance).
>
> Thanks,
>
> Danielle
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20140217/9ba9056c/attachment.html>
More information about the Insight-users
mailing list