<html>
<head>
<style>
P
{
margin:0px;
padding:0px
}
body
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body>Julien,<BR>
&nbsp;<BR>
It seems I pasted the wrong code, what I wanted to describe was that,<BR>
even with having GaussianType::New() inside the loop, the final image<BR>
shows only 1 gaussian object. So the code should be like:<BR>
&nbsp;<BR>
typedef itk::GaussianSpatialObject&lt; 2 &gt; GaussianType;<BR>typedef itk::GroupSpatialObject&lt; 2 &gt; GroupSpatialObjectType;<BR>GroupSpatialObjectType::Pointer group = GroupSpatialObjectType::New();<BR>for(unsigned int i = 0; i &lt; 10; i++)<BR>{<BR>
&nbsp; GaussianType::Pointer gaussianObject = GaussianType::New();<BR>&nbsp; gaussianObject-&gt;GetObjectToParentTransform()-&gt;SetOffset(i * 30);<BR>&nbsp; gaussianObject-&gt;ComputeObjectToWorldTransform();<BR>&nbsp;<BR>&nbsp;&nbsp; group-&gt;AddSpatialObject(gaussianObject);<BR>&nbsp;}<BR>
&nbsp;<BR>
I even tried this with a vector of GroupSpatialObjectType::Pointer ending up<BR>
with the same result of only 1 gaussian object. Am I missing a call to a method<BR>
or something?<BR>
&nbsp;<BR>
Do you think if the new filter&nbsp;itkSpatialGaussianObjectToImageFilter could be<BR>
ready for this week or would it take a long time to develop it? Would it be available<BR>
from the CVS? I could give it a try if there is a similar filter to begin with.<BR>
&nbsp;<BR>
&nbsp;<BR>&gt; Ali,<BR>&gt; <BR>&gt; You need to put the GaussianType::New() inside the loop so that a new <BR>&gt; GaussianObject is created and added to the group at every iteration.<BR>&gt; <BR>&gt; The itkSpatialObjectToImageFilter is meant to be very generic and <BR>&gt; therefore might be slow for this kind of computation. We might want to <BR>&gt; create a new filter specific to the GaussianSpatialObject. If you want <BR>&gt; to give it a try, go for it, otherwise let me know (I might be able to <BR>&gt; work on it only after tomorrow though).<BR>&gt; <BR>&gt; Julien<BR>&gt; <BR>&gt; Ali - wrote:<BR>&gt; &gt; Julien,.<BR>&gt; &gt; <BR>&gt; &gt; Thanks, that does the job! However, if we want to add more than one <BR>&gt; &gt; gaussian object by<BR>&gt; &gt; adding them to a group, the group only points to one instance of a <BR>&gt; &gt; gaussian object:<BR>&gt; &gt; <BR>&gt; &gt; typedef itk::GaussianSpatialObject&lt; 2 &gt; GaussianType;<BR>&gt; &gt; typedef itk::GroupSpatialObject&lt; 2 &gt; GroupSpatialObjectType;<BR>&gt; &gt; GroupSpatialObjectType::Pointer group = GroupSpatialObjectType::New();<BR>&gt; &gt; for(unsigned int i = 0; i &lt; 10; i++)<BR>&gt; &gt; {<BR>&gt; &gt; gaussianObject-&gt;GetObjectToParentTransform()-&gt;SetOffset(i * 30);<BR>&gt; &gt; gaussianObject-&gt;ComputeObjectToWorldTransform();<BR>&gt; &gt; <BR>&gt; &gt; group-&gt;AddSpatialObject(gaussianObject);<BR>&gt; &gt; }<BR>&gt; &gt; <BR>&gt; &gt; The above code can generate only 1 gaussian object. How is it possible <BR>&gt; &gt; to add a new<BR>&gt; &gt; one to the group where each of them have different properties? By the <BR>&gt; &gt; way, the use of<BR>&gt; &gt; this algorithms seems to be sort of slow, it takes about a second or two <BR>&gt; &gt; per gaussian<BR>&gt; &gt; object for a 512 x 512 image -- is it normal?<BR>&gt; &gt; <BR>&gt; &gt; <BR>&gt; &gt; <BR>&gt; &gt; &gt; Ali,<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; If you are creating a 2D image, you have to make the dimension of the<BR>&gt; &gt; &gt; GaussianSpatialObject of dimension 2:<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; typedef itk::GaussianSpatialObject&lt; 2 &gt; GaussianType;<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; This should solve your problem with the corrupted size.<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; Also, if you want to put your gaussian at a specific location (in world<BR>&gt; &gt; &gt; coordinate). Let's say at (100,100)mm. You can do something like:<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; gaussianObject-&gt;GetObjectToParentTransform()-&gt;SetOffsetComponent(100);<BR>&gt; &gt; &gt; gaussianObject-&gt;ComputeObjectToWorldTransform();<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; Hope that helps,<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; Julien<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; Ali - wrote:<BR>&gt; &gt; &gt; &gt; Gaetan,<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; I have tried SpatialObjectToImageFilter as explained in the ITK <BR>&gt; &gt; software guide ending up with this error:<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; stack around the variable 'size' was corrupted.<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; I use visual studio 8 under xp. I have already set the size for the <BR>&gt; &gt; filter. Here is the code (you can get rid of the VTK part if you dont <BR>&gt; &gt; want to see the result):<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; ----------------------------------------------------------<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; #if defined(_MSC_VER)<BR>&gt; &gt; &gt; &gt; #pragma warning ( disable : 4786 )<BR>&gt; &gt; &gt; &gt; #endif<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; #include "itkImage.h"<BR>&gt; &gt; &gt; &gt; #include "itkGaussianSpatialObject.h"<BR>&gt; &gt; &gt; &gt; #include "itkGroupSpatialObject.h"<BR>&gt; &gt; &gt; &gt; #include "itkSpatialObjectToImageFilter.h"<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; #include "itkImageToVTKImageFilter.h"<BR>&gt; &gt; &gt; &gt; #include "vtkImageViewer.h"<BR>&gt; &gt; &gt; &gt; #include "vtkRenderWindowInteractor.h"<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; int main(int, char *[])<BR>&gt; &gt; &gt; &gt; {<BR>&gt; &gt; &gt; &gt; const unsigned int ParticleImageCount = 1;<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; typedef unsigned char PixelType;<BR>&gt; &gt; &gt; &gt; const unsigned int Dimension = 2;<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; typedef itk::Image&lt; PixelType, Dimension &gt; ImageType;<BR>&gt; &gt; &gt; &gt; typedef itk::GaussianSpatialObject&lt; 3 &gt; GaussianType;<BR>&gt; &gt; &gt; &gt; typedef itk::SpatialObjectToImageFilter&lt; GaussianType, ImageType &gt; <BR>&gt; &gt; SpatialObjectToImageFilterType;<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; GaussianType::Pointer gaussianObject = GaussianType::New();<BR>&gt; &gt; &gt; &gt; gaussianObject-&gt;SetMaximum(2);<BR>&gt; &gt; &gt; &gt; gaussianObject-&gt;SetRadius(5);<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; ImageType::SizeType size;<BR>&gt; &gt; &gt; &gt; size[0] = 200;<BR>&gt; &gt; &gt; &gt; size[1] = 200;<BR>&gt; &gt; &gt; &gt; SpatialObjectToImageFilterType::Pointer imageFilter = <BR>&gt; &gt; SpatialObjectToImageFilterType::New();<BR>&gt; &gt; &gt; &gt; imageFilter-&gt;SetSize(size);<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; imageFilter-&gt;SetInput(gaussianObject);<BR>&gt; &gt; &gt; &gt; imageFilter-&gt;Update();<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; ImageType::Pointer pImage = imageFilter-&gt;GetOutput();<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; typedef itk::ImageToVTKImageFilter&lt;ImageType&gt; ConnectorType;<BR>&gt; &gt; &gt; &gt; ConnectorType::Pointer connector = ConnectorType::New();<BR>&gt; &gt; &gt; &gt; connector-&gt;SetInput( pImage );<BR>&gt; &gt; &gt; &gt; vtkImageViewer* viewer = vtkImageViewer::New();<BR>&gt; &gt; &gt; &gt; vtkRenderWindowInteractor* renderWindowInteractor = <BR>&gt; &gt; vtkRenderWindowInteractor::New();<BR>&gt; &gt; &gt; &gt; viewer-&gt;SetupInteractor( renderWindowInteractor);<BR>&gt; &gt; &gt; &gt; viewer-&gt;SetInput( connector-&gt;GetOutput() );<BR>&gt; &gt; &gt; &gt; viewer-&gt;Render();<BR>&gt; &gt; &gt; &gt; viewer-&gt;SetColorWindow( 255);<BR>&gt; &gt; &gt; &gt; viewer-&gt;SetColorLevel( 128);<BR>&gt; &gt; &gt; &gt; renderWindowInteractor-&gt;Start();<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; return 0;<BR>&gt; &gt; &gt; &gt; }<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; _________________________________________________________________<BR>&gt; &gt; &gt; &gt; Be one of the first to try Windows Live Mail.<BR>&gt; &gt; &gt; &gt; <BR>&gt; &gt; http://ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d_______________________________________________<BR>&gt; &gt; &gt; &gt; Insight-users mailing list<BR>&gt; &gt; &gt; &gt; Insight-users@itk.org<BR>&gt; &gt; &gt; &gt; http://www.itk.org/mailman/listinfo/insight-users<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt;<BR>&gt; &gt; <BR>&gt; &gt; <BR>&gt; &gt; ------------------------------------------------------------------------<BR>&gt; &gt; Be one of the first to try Windows Live Mail. <BR>&gt; &gt; &lt;http://ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d&gt;<BR>&gt; <BR><BR><br /><hr />Be one of the first to try  <a href='http://ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d' target='_new'>Windows Live Mail.</a></body>
</html>