[ITK-users] Getting different labels slice by slice
Bradley Lowekamp
blowekamp at mail.nih.gov
Sun May 25 11:32:50 EDT 2014
Hello,
If you can't find an example, it's frequently useful to search through the test. Here is one that may be helpful:
https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Filtering/ImageSources/test/itkPhysicalPointImageSourceTest.cxx
It's the bits not include in your code segment which aren't correct :)
From the doxygen[1]: "This image source supports image which have a multi-component pixel equal to the image dimension, and variable length VectorImages. It is recommented that the component type be a real valued type."
You have instantiated it with an itk::Image of unsigned char, while the filter expects a multi-component image. Such as an itk::Image of Point<float,3>, Index<int,3> or an itk::VectorImage<int, 3>.
Here is how I would do this in SimpleITK for Python:
import SimpleITK as sitk
img = sitk.Image([100,100,100], sitk.sitkUInt8)
idxImage = sitk.PhysicalPointSource(sitk.sitkVectorUInt32, size=img.GetSize())
zidxImage = sitk.VectorIndexSelectionCast(idxImage,2)
From here you can do some image arithmetic to encode both the original image label and slice index. Perhaps keeping the label id in the lower bits and the slice id in the upper.
Brad
[1] http://www.itk.org/Doxygen/html/classitk_1_1PhysicalPointImageSource.html
On May 23, 2014, at 10:26 AM, Sarah Basti <ahalabasti at hotmail.com> wrote:
> I tried to do the following:
>
> typedef itk::PhysicalPointImageSource<OutputImageType> physicalPointImageType;
> physicalPointImageType::Pointer physicalImage = physicalPointImageType::New();
> physicalImage->SetSize(reader->GetOutput()->GetLargestPossibleRegion().GetSize());
>
> physicalImage->Update();
>
>
> I get this error though:
>
> In file included from /home/Support/Slicer-SuperBuild-Release/ITKv4/Modules/Filtering/ImageSources/include/itkPhysicalPointImageSource.h:81:0,
> from /home/acorvo/Desktop/SlicerModules/Cross-Section-Location/Source/CrossSectionLocation.cxx:18:
> /home/Support/Slicer-SuperBuild-Release/ITKv4/Modules/Filtering/ImageSources/include/itkPhysicalPointImageSource.hxx: In member function ‘void itk::PhysicalPointImageSource<TOutputImage>::ThreadedGenerateData(const RegionType&, itk::ThreadIdType) [with TOutputImage = itk::Image<short unsigned int, 3u>, itk::PhysicalPointImageSource<TOutputImage>::RegionType = itk::ImageRegion<3u>, itk::ThreadIdType = unsigned int]’:
> /home/Desktop/SlicerModules/Cross-Section-Location/Source/CrossSectionLocation.cxx:238:1: instantiated from here
> /home/Support/Slicer-SuperBuild-Release/ITKv4/Modules/Filtering/ImageSources/include/itkPhysicalPointImageSource.hxx:71:7: error: subscripted value is neither array nor pointer
> make[2]: *** [CMakeFiles/CrossSectionLocation.dir/CrossSectionLocation.cxx.o] Error 1
> make[1]: *** [CMakeFiles/CrossSectionLocation.dir/all] Error 2
> make: *** [all] Error 2
>
> Do you know what that might mean? Any idea?
>
> Thank you,
> Sarah
> From: ahalabasti at hotmail.com
> To: blowekamp at mail.nih.gov
> Date: Fri, 23 May 2014 13:17:13 +0000
> CC: insight-users at itk.org
> Subject: Re: [ITK-users] Getting different labels slice by slice
>
> Hi Brad,
>
> thank you very much, I really appreciate your help!! It is indeed a great idea what you are proposing, thanks!! Only one question: is the PhysicalPointImageSource used as if it was a normal image (but having the slice number on it)? Sorry for that, but I haven't found any example and I'm quite new with ITK.
>
> Thank you very much!!
> Sarah
> Subject: Re: [ITK-users] Getting different labels slice by slice
> From: blowekamp at mail.nih.gov
> Date: Fri, 23 May 2014 07:48:19 -0400
> CC: insight-users at itk.org
> To: ahalabasti at hotmail.com
>
> Hello Sarah,
>
> Here is an idea. Create an image where each slice contains the slice number, then add that to you original label image, and do a little binary logic. The goal here would be to give each slice sequentially higher numbers. Then you can runs a statistics image filter in 3D. You can use the a component from the PhysicalPointImageSource[1] as the image with the slice number.
>
> Good luck,
> Brad
>
> [1] http://www.itk.org/Doxygen/html/classitk_1_1PhysicalPointImageSource.html
>
> On May 23, 2014, at 6:50 AM, Sarah Basti <ahalabasti at hotmail.com> wrote:
>
> Hello guys,
>
> I'm quite new with ITK and I really need your help. I was able to extract/segment 3D objects from an image using the binary threshold image filter. However I'm stuck here, because I need to analyze the mean intensities of these objects in the original image, but I need to to this analysis in 2D, because I need the intensities for each slice.
> As suggested in some other post I tried using the slice by slice filter, converting the binary image into a label map and then into labels. And my idea was to then use the label statistics image filter on the output of the slice by slice filter to extract the mean values. However, it turned out that although the conversion is made slice by slice, many times on adjacent slices the same label is assigned to the same object (I guess that it makes sense!), so when I use the label statistics, is like having 3D labels again, instead of a set of 2D labels. Therefore, I was wondering if there is some option to have different labels for each slice, or there is any other way to evaluate the 2D mean intensity of 3D objects!
>
> I thank you all in advance!!
>
> Sarah
> _____________________________________
> 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
>
>
> _____________________________________ 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/20140525/dca248e4/attachment.html>
More information about the Insight-users
mailing list