[Insight-users] Possible bug in GaussianSpatialObject

Julien Jomier julien.jomier at kitware.com
Tue Jun 17 04:20:06 EDT 2008


Hi Ali,

Couple of things:

1) Change the gaus.GetIndexToObjectTransform().SetTranslation(offset) to
gaus.GetObjectToParentTransform().SetTranslation(offset)

2) Add gaus.ComputeObjectToWorldTransform(); after setting the 
translation. This forces the recomputation of the world transform for 
the object.

3) Don't forget to set the size of your image for the 
SpatialObjectToImageFilter using SetSize().

Here's the code I've been using (C++ version)

   typedef itk::GaussianSpatialObject<2> GSType;
   GSType::Pointer gsp = GSType::New();

   gsp->SetMaximum(255);
   gsp->SetRadius(7);
   typedef itk::Vector<double,2> VectorType;
   VectorType v;
   v[0] = 10;
   v[1] = 10;
   gsp->GetObjectToParentTransform()->SetTranslation(v);
   gsp->ComputeObjectToWorldTransform();

   typedef itk::Image<unsigned char,2> ImageType;
   typedef itk::SpatialObjectToImageFilter<GType,ImageType> FilterType;
   FilterType::Pointer filter = FilterType::New();
   filter->SetInput(gsp);
   FilterType::SizeType size;
   size[0]=20;
   size[1]=20;
   filter->SetSize(size);
   filter->Update();

   typedef itk::ImageFileWriter<ImageType> WriterType;
   WriterType::Pointer writer= WriterType::New();
   writer->SetFileName("test.jpg");
   writer->SetInput(filter->GetOutput());
   writer->Update();

Let me know if that works or not,

Julien

Ali - wrote:
> Hi Julien,
> 
> It seems there is this bug in GaussianSpatialObject which causes to mess
> up the whole spatial object image when the translation transform is
> applied. Here is an example:
> 
> itkGaussianSpatialObject2 gaus = new itkGaussianSpatialObject2();
> gaus.SetMaximum(255);
> gaus.SetRadius(7);
> itkVectorD2 offset = new itkVectorD2();
> offset.SetElement(0, 0.0);
> offset.SetElement(1, 0.0);
> gaus.GetIndexToObjectTransform().SetTranslation(offset);
> 
> (The above code is in java, but can be used as a pseudo code). Notice
> that whether the offset is zero or not, setting the translation value
> messes up the gaussian object. Here are the results:
> 
> Without calling translation: http://i26.tinypic.com/2j4u7pd.jpg
> With calling translation: http://i31.tinypic.com/iwrd5y.jpg
> 
> All I wanted to do was to have a gaussian object at the centre of the
> image. Is there a better way of doing this?
> 
> 
> -Ali
> 
> 
> 
> 
> ------------------------------------------------------------------------
> Miss your Messenger buddies when on-the-go? Get Messenger on your 
> Mobile! <http://clk.atdmt.com/UKM/go/msnnkmgl0010000001ukm/direct/01/>


More information about the Insight-users mailing list