<DIV>Hi Luis / all,</DIV>
<DIV>&nbsp;</DIV>
<DIV>The routine I posted for interfacing the ITK output (output from median filter) with VTK works just fine.&nbsp; I had problem in initializing some values earlier in the pipeline.&nbsp; Thought I'll let you know.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Madhu.<BR><BR><B><I>Luis Ibanez &lt;luis.ibanez@kitware.com&gt;</I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid"><BR>Hi Madhusudhanan,<BR><BR>Please write to a file the output of the input filter<BR>in order to verify if the ITK image created form your<BR>buffer is correct. Just connect an ImageFileWriter at<BR>the output of the Importer.<BR><BR>That will help to identify if the problem is related<BR>to your local buffer or to the convertion between ITK<BR>and VTK images.<BR><BR>Please let us know what you find.<BR><BR><BR>Thanks<BR><BR><BR>Luis<BR><BR><BR>----------------------------------------<BR>Madhusudhanan Balasubramanian wrote:<BR><BR>&gt; Hi all,<BR>&gt; <BR>&gt; I wrote a small routine that applied median filter (ITK) on an input <BR>&gt; buffer (unsigned char *) and imports the filter output to VTK. <BR>&gt; Initially, when I returned the vtkImageData * output from <BR>&gt; 'ImageToVTKImageFilter', I had problem accessing the data (memory <BR>&gt; exception). So I decided to copy the
 data into a separate buffer before <BR>&gt; returning from the routine. However the result is just some noisy image <BR>&gt; (nowhere close to the input image). I am herewith attaching the routine <BR>&gt; that I wrote. I appreciate if anyone has any inputs on this.<BR>&gt; <BR>&gt; Thanks,<BR>&gt; Madhu.<BR>&gt; <BR>&gt; //Apply median filter to the input buffer<BR>&gt; void medianOnBuffer(unsigned char *userBuffer, int imgWidth, int <BR>&gt; imgHeight, vtkImageData* medianImage, unsigned char *outputImageUSC){<BR>&gt; <BR>&gt; int *dimensions;<BR>&gt; dimensions = new int[2];<BR>&gt; dimensions[0] = imgWidth;<BR>&gt; dimensions[1] = imgHeight;<BR>&gt; <BR>&gt; typedef unsigned char pixelType;<BR>&gt; typedef itk::Image<PIXELTYPE, 2> imageType;<BR>&gt; typedef itk::ImportImageFilter<PIXELTYPE, 2> importFilterType;<BR>&gt; importFilterType::Pointer importFilter = importFilterType::New();<BR>&gt; importFilterType::SizeType size;<BR>&gt; size[0] = imgWidth; //x-axis<BR>&gt; size[1] =
 imgHeight; //y-axis<BR>&gt; importFilterType::IndexType start;<BR>&gt; start.Fill(0);<BR>&gt; importFilterType::RegionType region;<BR>&gt; region.SetIndex(start);<BR>&gt; region.SetSize(size);<BR>&gt; importFilter-&gt;SetRegion(region);<BR>&gt; double origin[2];<BR>&gt; origin[0] = 0.0;<BR>&gt; origin[1] = 0.0;<BR>&gt; importFilter-&gt;SetOrigin(origin);<BR>&gt; double spacing[2];<BR>&gt; spacing[0] = 1.0;<BR>&gt; spacing[1] = 1.0;<BR>&gt; importFilter-&gt;SetSpacing(spacing);<BR>&gt; //<BR>&gt; const bool importImageFilterWillOwnTheBuffer = false;<BR>&gt; importFilter-&gt;SetImportPointer(userBuffer, imgWidth*imgHeight, <BR>&gt; importImageFilterWillOwnTheBuffer);<BR>&gt; importFilter-&gt;Update();<BR>&gt; //Apply median filter to the image<BR>&gt; typedef itk::Image<PIXELTYPE, 2> InputImageType;<BR>&gt; typedef itk::Image<PIXELTYPE, 2> OutputImageType;<BR>&gt; typedef itk::MedianImageFilter<INPUTIMAGETYPE, OutputImageType> filterType;<BR>&gt; filterType::Pointer filter =
 filterType::New();<BR>&gt; //Define filter boundaries<BR>&gt; InputImageType::SizeType indexRadius;<BR>&gt; indexRadius[0] = 1;<BR>&gt; indexRadius[1] = 1;<BR>&gt; filter-&gt;SetRadius(indexRadius);<BR>&gt; filter-&gt;SetInput(importFilter-&gt;GetOutput());<BR>&gt; filter-&gt;Update();<BR>&gt; //Import the filtered image to VTK<BR>&gt; typedef itk::ImageToVTKImageFilter<OUTPUTIMAGETYPE> connectorType;<BR>&gt; connectorType::Pointer connector = connectorType::New();<BR>&gt; connector-&gt;SetInput(filter-&gt;GetOutput());<BR>&gt; connector-&gt;Update();<BR>&gt; //Copy the output<BR>&gt; medianImage-&gt;ShallowCopy(connector-&gt;GetOutput());<BR>&gt; medianImage-&gt;Update();<BR>&gt; //Validate the imported image<BR>&gt; unsigned char *testBuffer = (unsigned char <BR>&gt; *)medianImage-&gt;GetScalarPointer();<BR>&gt; <BR>&gt; //copy result to outputImageUSC<BR>&gt; int i, j;<BR>&gt; for (i = 0; i &lt; dimensions[1]; i++)<BR>&gt; for (j = 0; j &lt; dimensions[0]; j++)<BR>&gt;
 outputImageUSC[i * dimensions[0] + j] = testBuffer[i * dimensions[0] <BR>&gt; + j];<BR>&gt; }<BR>&gt; <BR><BR><BR><BR><BR><BR></BLOCKQUOTE><p>__________________________________________________<br>Do You Yahoo!?<br>Tired of spam?  Yahoo! Mail has the best spam protection around <br>http://mail.yahoo.com