Morphing ROIs

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Morphing ROIs

Michael Doube
Hi all,

During manual segmentation it can be handy to draw an ROI on every 10th
or 20th slice of a stack, then have software fill in the remaining
slices with interpolated ROIs.

Has anyone implemented an ROI morphing procedure, or know of one that
would be easily implemented for this application?

Michael
Reply | Threaded
Open this post in threaded view
|

Re: Morphing ROIs

dscho
Hi,

On Thu, 14 Apr 2011, Michael Doube wrote:

> During manual segmentation it can be handy to draw an ROI on every 10th
> or 20th slice of a stack, then have software fill in the remaining
> slices with interpolated ROIs.
>
> Has anyone implemented an ROI morphing procedure, or know of one that
> would be easily implemented for this application?

There is an interpolation for ROIs in the Segmentation Editor in Fiji. The
idea is to convert the ROIs to binary images, apply a signed distance
transform, interpolate the transformed images. The interpolated images are
converted back to binary images by simple thresholding and then creating
selections from the binary images.

The (unoptimized) code is here:

http://pacific.mpi-cbg.de/BinaryInterpolator.java

Ciao,
Dscho
Reply | Threaded
Open this post in threaded view
|

Re: Morphing ROIs

Michael Doube
Thanks Johannes

> The (unoptimized) code is here:
>
> http://pacific.mpi-cbg.de/BinaryInterpolator.java

I will have a go with this as a starting point.

Michael
Reply | Threaded
Open this post in threaded view
|

Re: Morphing ROIs

Michael Doube-3
In reply to this post by dscho
Dear all,

>> During manual segmentation it can be handy to draw an ROI on every 10th
>> or 20th slice of a stack, then have software fill in the remaining
>> slices with interpolated ROIs.
>>
> There is an interpolation for ROIs in the Segmentation Editor in Fiji. The
> idea is to convert the ROIs to binary images, apply a signed distance
> transform, interpolate the transformed images. The interpolated images are
> converted back to binary images by simple thresholding and then creating
> selections from the binary images.

I made a utility out of this idea which was released in BoneJ v1.3.3
today. It takes ROIs from the ROI manager then interpolates across stack
slices, creating ROIs for slices where no ROI was drawn.

http://bonej.org/utilities

Michael
Reply | Threaded
Open this post in threaded view
|

Re: Morphing ROIs

Robert Dougherty
Measure Stack on the OptiNav site does something similar, but the interpolation scheme is at least superficially different. It is mainly oriented toward finding volumes. I have not updated it in many years. Integration with ROI Manager would be handy. Users have requested surface area output and I have not done that yet, either.
Bob

Robert P. Dougherty
President
OptiNav, Inc.
1414 127th Pl NE #106
Bellevue, WA 98005
(425) 891-4883
FAX (425) 467-1119
[hidden email]
www.optinav. com

On Nov 24, 2011, at 12:15 PM, Michael Doube <[hidden email]> wrote:

> Dear all,
>
>>> During manual segmentation it can be handy to draw an ROI on every 10th
>>> or 20th slice of a stack, then have software fill in the remaining
>>> slices with interpolated ROIs.
>>>
>> There is an interpolation for ROIs in the Segmentation Editor in Fiji. The
>> idea is to convert the ROIs to binary images, apply a signed distance
>> transform, interpolate the transformed images. The interpolated images are
>> converted back to binary images by simple thresholding and then creating
>> selections from the binary images.
>
> I made a utility out of this idea which was released in BoneJ v1.3.3
> today. It takes ROIs from the ROI manager then interpolates across stack
> slices, creating ROIs for slices where no ROI was drawn.
>
> http://bonej.org/utilities
>
> Michael
Reply | Threaded
Open this post in threaded view
|

Re: Morphing ROIs

Michael Doube-3
Hi Bob,

> Integration with ROI Manager would be handy. Users have
> requested surface area output and I have not done that yet, either.

If you convert all the ROIs to a binary stack (and actually, making a
binary stack is an intermediate step in RoiInterpolator), then you can
call BoneJ's Isosurface plugin (http://bonej.org/isosurface). I just
looked at the code for the first time in a while and its API is less
than awesome - otherwise it would be trivial to send the interpolated
ROI stack to Bene's surface mesher then work out the area of the
triangles in the mesh.

Michael