<div dir="ltr"><br><div class="gmail_quote">Sorry, forgot to keep the list in copy.<br><br>Gaëtan</div><div class="gmail_quote"><br><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">2015-04-02 15:54 GMT+02:00 Bradley Lowekamp <span dir="ltr"><<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Gaetan,<br>
<br>
Nice to see you taking SimpleITK for a spin :)<br>
<br>
You need to inspect the input image types a little. It's reading them an RGB images into a VectorImage type. Implicit types can be a pain.<br>
<br>
You can utilize the second argument of the ReadImage method to specify the desired pixel type, say "sitk.sitkFloat32".<br></blockquote><div><br></div></span><div>Thanks, it works a lot better that way :-)</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Brad<br>
<br>
BTW,<br>
I have been wanting to pick you brain about way to make the LabelMaps more extendible. I did some classes [1] where the parents was a template argument, so that you could compose different label map objects, and similarly filters. The usage got a little complicated though[2].<br>
<br>
[1] <a href="https://github.com/blowekamp/itkOBBLabelMap/tree/master/include" target="_blank">https://github.com/blowekamp/itkOBBLabelMap/tree/master/include</a><br>
[2] <a href="https://github.com/blowekamp/itkOBBLabelMap/blob/master/test/itkOrientedBoundingBoxImageLabelMapFilterTest1.cxx#L42" target="_blank">https://github.com/blowekamp/itkOBBLabelMap/blob/master/test/itkOrientedBoundingBoxImageLabelMapFilterTest1.cxx#L42</a><br>
<div><div><br></div></div></blockquote><div><br></div><div><br></div></span><div>I think your approach is quite good actually. I'm not sure it can be simpler with a static implementation.</div><div><br></div><div>The the label type and image dimension in the type declaration repetition could be avoided - they could be taken from the superclass passed in parameter, but then it wouldn't be possible to provide a default superclass.</div><div><br></div><div><pre style="color:rgb(0,0,0)">  typedef itk::OrientedBoundingBoxLabelObject< LabelPixelType, ImageDimension > OBBLabelObjectType;
  typedef itk::AttributeImageLabelObject< LabelPixelType, ImageDimension, ImageType, OBBLabelObjectType > LabelObjectType;
</pre></div><div>would be</div><div><br></div><div>   typedef itk::AttributeImageLabelObject<ImageType,</div><div>    itk::OrientedBoundingBoxLabelObject<</div><div>      itk::ShapeLabelObject<LabelPixelType, ImageDimension > > > LabelObjectType;</div><div><br></div><div>Not sure that's any better.</div><div><br></div><div>My main concern is that it would be quite hard to wrap.</div><div><br></div><div>I thought about something to add attributes but at runtime — that would be a lot easier to wrap — using a mechanism similar to what is done in the metadata dictionary.</div><div>I've never completed the implementation, mainly because of the negative comments I've heard on the metadata dictionary implementation.</div><div>This would also have some API and performance impact because the attribute must be retrieved with a string and the value casted to its actual type.</div><div><br></div><div>  ImageType* img = lo->GetAttribute< ImageType* >("FeatureImage);</div><div><br></div><div>instead of</div><div><br></div><div>  ImageType * img = lo->GetFeatureImage();</div><div><br></div><div>Gaëtan</div><span class=""><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div>
<br>
On Apr 2, 2015, at 9:47 AM, Gaetan Lehmann <<a href="mailto:gaetan.lehmann@gmail.com" target="_blank">gaetan.lehmann@gmail.com</a>> wrote:<br>
<br>
> Hi Brad,<br>
><br>
> I'm trying to use SimpleITK's FFTConvolution from python:<br>
><br>
>   import SimpleITK as sitk<br>
>   img = sitk.ReadImage("/tmp/cthead1.png")<br>
>   kernel = sitk.ReadImage("/tmp/kernel2.png")<br>
>   conv = sitk.FFTConvolution(img, kernel)<br>
><br>
> the last line fails with the error:<br>
><br>
> Traceback (most recent call last):<br>
>   File "/tmp/test.py", line 5, in <module><br>
>     conv = sitk.FFTConvolution(img, kernel)<br>
>   File "/Users/glehmann/Library/Python/2.7/lib/python/site-packages/SimpleITK/SimpleITK.py", line 17771, in FFTConvolution<br>
>     return _SimpleITK.FFTConvolution(*args, **kwargs)<br>
> RuntimeError: Exception thrown in SimpleITK FFTConvolution: /scratch/dashboards/SimpleITK-OSX10.7-intel-pkg/SimpleITK/Code/Common/include/sitkMemberFunctionFactory.hxx:193:<br>
> sitk::ERROR: Pixel type: vector of 8-bit unsigned integer is not supported in 2D byN3itk6simple25FFTConvolutionImageFilterE<br>
><br>
> I get the same error when building from source and when installing SimpleITK with<br>
><br>
>   pip install --user SimpleITK<br>
><br>
> This is on a mac running yosemite.<br>
><br>
> Would you have an idea of what is wrong?<br>
><br>
> Thanks,<br>
><br>
> Gaëtan<br>
><br>
<br>
</div></div></blockquote></span></div><br></div></div>
</div><br></div>