[Insight-users] LabelStatisticsImageFilter's GetValidLabels depends upon volume image type?

David Welch david.m.welch at gmail.com
Fri Nov 30 18:06:32 EST 2012


Hello all, 

I've run into this behavior when reading in a Freesurfer label file that was
converted to nifti format (64-bit float):

import SimpleITK as sitk
temp = sitk.ReadImage(label_file)
newVol = sitk.ReadImage(fMRI_single_vol_file)
print temp.GetPixelIDTypeAsString()
print newVol.GetPixelIDTypeAsString()

labelStat1 = sitk.LabelStatisticsImageFilter()
labelStat1.Execute(temp, sitk.Cast(newVol, sitk.sitkUInt16))

labelStat2 = sitk.LabelStatisticsImageFilter()
labelStat2.Execute(temp, sitk.Cast(newVol, sitk.sitkUInt32))

print labelStat1.GetValidLabels()
print "=========================================="
print labelStat2.GetValidLabels()
assert labelStat1.GetValidLabels() == labelStat2.GetValidLabels(), "Valid
labels are not the same!"

--------------------------- RESULTS: -------------------------
64-bit float
32-bit float
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-19-873f6fd284b8> in <module>()
      8 print "=========================================="
      9 print labelStat2.GetValidLabels()
---> 10 assert labelStat1.GetValidLabels() == labelStat2.GetValidLabels(),
"Valid labels are not the same!"

AssertionError: Valid labels are not the same!

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 65501,
65502, 65504, 65505, 65506, 65507, 65508, 65509, 65510, 65511, 65512, 65513,
65514, 65515, 65516, 65517, 65518, 65519, 65520, 65521, 65522, 65523, 65524,
65525, 65526, 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534, 65535)
==========================================
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 4294967261,
4294967262, 4294967264, 4294967265, 4294967266, 4294967267, 4294967268,
4294967269, 4294967270, 4294967271, 4294967272, 4294967273, 4294967274,
4294967275, 4294967276, 4294967277, 4294967278, 4294967279, 4294967280,
4294967281, 4294967282, 4294967283, 4294967284, 4294967285, 4294967286,
4294967287, 4294967288, 4294967289, 4294967290, 4294967291, 4294967292,
4294967293, 4294967294, 4294967295)

The label values should have a max at ~2350 and  the length of the returned
lists is LONGER than the length of labels in the label image, so I can't see
how this could be caused by my choice of cast typeŠ

If I DON'T cast the image file to a lower bit, I get the error:
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-28-605e85d6adb9> in <module>()
      3 # statMap1 = labelStat.GetLabelStatisticsMap()
      4 labelStat2 = sitk.LabelStatisticsImageFilter()
----> 5 labelStat2.Execute(temp, newVol)
      6 # statMap2 = labelStat.GetLabelStatisticsMap()
      7 print labelStat1.GetValidLabels()

/Volumes/scratch/welchdm/bld/latest_BSA/SimpleITK-build/lib/SimpleITK.pyc in
Execute(self, *args, **kwargs)
   3712     def Execute(self, *args, **kwargs):
   3713         """Execute(LabelStatisticsImageFilter self, Image arg2,
Image arg3) -> Image"""
-> 3714         return _SimpleITK.LabelStatisticsImageFilter_Execute(self,
*args, **kwargs)
   3715 
   3716     def GetMinimum(self, *args, **kwargs):

RuntimeError: Exception thrown in SimpleITK
LabelStatisticsImageFilter_Execute:
/Volumes/scratch/welchdm/bld/latest_BSA/SimpleITK/Code/Common/include/sitkDu
alMemberFunctionFactory.hxx:201:
sitk::ERROR: Pixel type: 64-bit float is not supported in 3D
byN3itk6simple26LabelStatisticsImageFilterE

Any idea what is going on here?

Cheers, 

Dave Welch
david.m.welch at gmail.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20121130/b6d4ebcd/attachment.htm>


More information about the Insight-users mailing list