[ITK-users] R-SimpleITK LabelStatisticsImageFilter 3D Error

Yaniv, Ziv Rafael (NIH/NLM/LHC) [C] zivrafael.yaniv at nih.gov
Wed Jul 6 10:34:11 EDT 2016


Hi Mathew,

This is an issue with the fact that some filters return a zero sized image
for some method calls. The default behavior of R is to attempt to display
this variable (showing a zero size image crashes). You have two options
either assign to a dummy variable or wrap with ‘invisible’. Following code
works in R:

library(SimpleITK)

image <- ReadImage("training_001_ct.mha")
segmented_image <- image>700
segmented_label <- 1
lisf <- LabelIntensityStatisticsImageFilter()
ignore_me <- lisf$Execute(segmented_image, image)
# or
invisible(lisf$Execute(segmented_image, image))

cat(lisf$GetMean(segmented_label))
cat(ignore_me$GetSize())


Finally, with regard to building and installing SimpleITK, we now have a
one liner (assuming you have git, Cmake and a working compiler and have
devtools installed in your R environment):

devtools::install_github("SimpleITK/SimpleITKRInstaller",
args=c('--configure-vars="MAKEJ=6"'))


Please set the number of cores according to what you have (we used 6 for
the example).

       regards
          Ziv
 



On 7/6/16, 9:47 AM, "Mathew Guilfoyle" <mrguilfoyle at gmail.com> wrote:

>Hi
>
>Compiled from a git around two months ago.
>
>In fact, though the error report suggests a fatal problem, the code I
>posted does work in as much as I can use the filter to get the label
>statistics.  I don't know if the warning that comes up impacts on the
>filter function - I have not found a problem thus far.  When I get a
>chance I'll recompile a more recent version and check the errors
>again.
>
>Thanks
>
>On 6 July 2016 at 13:26, Lowekamp, Bradley (NIH/NLM/LHC) [C]
><blowekamp at mail.nih.gov> wrote:
>> Hello,
>>
>> Did you compile R SimpleITK from a very recent version of the SimpleITK
>>master branch from git?
>>
>> There have been a lot of improvements for the R wrapping, and required
>>improvement with SWIG too. This looks like an problem that has been
>>fixed related R reference counting.
>>
>> SimpleITK is smart enough to know when to call the 3D or 2D version of
>>a filter. It also knows the pixel types of the inputs and calls the
>>correct template combinations for the ITK filter automatically. When the
>>filter is not instantiated with the pixel types passed to it will give
>>an error message as the original poster of this thread got.
>>
>> HTH,
>> Brad
>>
>>> On Jul 5, 2016, at 9:37 PM, Mathew Guilfoyle <mrguilfoyle at gmail.com>
>>>wrote:
>>>
>>> Ziv: thanks for the reply.
>>>
>>> I'm using the R wrapped version of SimpleITK
>>>
>>> I've run the equivalent of your example:
>>>
>>> library('SimpleITK')
>>> image = ReadImage('training_001_ct.mha')
>>>
>>> segmented_image = image>700
>>>
>>> lisf = LabelIntensityStatisticsImageFilter()
>>> lisf$Execute(segmented_image, image)
>>>
>>> Unfortunately I'm getting the same error as for my own scripts:
>>>
>>> Warning message:
>>> In f(...) :
>>>  Exception thrown in SimpleITK Show:
>>>/ITK/SITK/Source-Current/Build-290516/ITK-prefix/include/ITK-4.10/itkIma
>>>geFileWriter.hxx:290:
>>> itk::ERROR: ImageFileWriter(0x10c05cbc0): Largest possible region does
>>>not fully contain requested paste IO regionPaste IO region:
>>>ImageIORegion (0x7fff5fbf6cd8)
>>>  Dimension: 2
>>>  Index: 0 0
>>>  Size: 0 0
>>> Largest possible region: ImageRegion (0x7fff5fbf6d70)
>>>  Dimension: 2
>>>  Index: [0, 0]
>>>  Size: [0, 0]
>>>
>>> I have a feeling that this is a problem with the
>>>LabelIntensityStatisticsImageFilter being templated over 2D and 3D
>>>images and when it is instantiated it is defaulting to the 2D?
>>>Previously using Python wrapped ITK (i.e. not SimpleITK) when I
>>>declared these filters I would give it a 2D or 3D image type but this
>>>is not possible in SimpleITK.
>>>
>>> However, if this is working for you in Python-SimpleITK maybe it is an
>>>issue peculiar to the R wrapping?
>>>
>>> Any further suggestions would be appreciated
>>>
>>> Cheers
>>>
>>>> On 5 Jul 2016, at 15:43, Yaniv, Ziv Rafael (NIH/NLM/LHC) [C]
>>>><zivrafael.yaniv at nih.gov> wrote:
>>>>
>>>> Hi Mathew,
>>>>
>>>> As I haven¹t seen your code I cannot pinpoint the issue, but it is
>>>>not the
>>>> dimension of the image.
>>>>
>>>> The following SimpleITK code does what I believe you are asking for
>>>>(image
>>>> is available here - https://midas3.kitware.com/midas/item/317034):
>>>>
>>>> import SimpleITK as sitk
>>>>
>>>> image = sitk.ReadImage("training_001_ct.mha")
>>>>
>>>> # HU values for bone are 700 and up
>>>> segmented_image = image>700
>>>>
>>>> # segmented label for the threshold operation is 1 (0 for everything
>>>>else).
>>>> # the LabelIntensityStatisticsImageFilter also works with multiple
>>>>labels
>>>> and not just a binary segmentation.
>>>> segmented_label = 1
>>>>
>>>> lisf = sitk.LabelIntensityStatisticsImageFilter()
>>>> lisf.Execute(segmented_image, image)
>>>>
>>>> print("mean HU value: {0:.2f}".format(lisf.GetMean(segmented_label)))
>>>>
>>>>    hope this helped
>>>>
>>>>            Ziv
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On 7/3/16, 9:11 PM, "Mathew Guilfoyle" <mrguilfoyle at gmail.com> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> Using SimpleITK I'm trying to get statistics for a grayscale image
>>>>> segmentation for which I have a binary mask.  Both image and mask
>>>>>are 3D
>>>>> volumes
>>>>>
>>>>> I have converted my binary mask to a Label map and then tried to
>>>>>apply
>>>>> the LabelStatisticsImageFilter, however I get the following
>>>>>exception:
>>>>>
>>>>> Pixel type: 32-bit float is not supported in 3D
>>>>>
>>>>> I've tried casting the intensity image to unsigned int, Float 64
>>>>>etc...
>>>>> none of them work.  It seems to be the 3D that is the issue.  Is this
>>>>> filter defined for 3D images?  There is nothing I have found in the
>>>>> documentation/source to suggest not.
>>>>>
>>>>> Thanks
>>>>> _____________________________________
>>>>> 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://public.kitware.com/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://public.kitware.com/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://public.kitware.com/mailman/listinfo/insight-users
>>



More information about the Insight-users mailing list