[prev in list] [next in list] [prev in thread] [next in thread] 

List:       vtk-developers
Subject:    Re: [vtk-developers] Problem with using vtkArrayCalculator to extract
From:       Randall Hand <randall.hand () gmail ! com>
Date:       2005-09-14 20:55:33
Message-ID: b0226472050914135560cc88de () mail ! gmail ! com
[Download RAW message or body]

Well, I'm building a vtkDoubleArray, and the vtkArrayCalculator claims it's 
returning a vtkDoubleArray.. So that shouldn't be the case in this 
situation.

On 9/14/05, Berk Geveci <berk.geveci@gmail.com> wrote:
> 
> This is a guess but if the array calculator outputs a data type than
> the input's scalars, no imaging filter can be used down the pipeline.
> This is a known bug. Essentially no (non-imaging) filter that changes
> the data type of the scalars is allowed in a pipeline with imaging
> filters. There is work (slow) going on to fix this issue. I would not
> hold my breath for it's completion.
> 
> On 9/14/05, Randall Hand <randall.hand@gmail.com> wrote:
> > Ok, I posted this once before, but here it is again with some more
> > information.
> >
> > I've written a piece of code to create a synthetic dataset. It's a 128^3
> > dataset, each point with a 3-component double value consisting of 
> (sin(x),
> > junk, morejunk). I extract just the first component, and do an FFT. 
> You'll
> > find the code at the end of this message, along with my 
> "PrintStatistics"
> > function attached.
> >
> > You'll see from the #if/#endif blocks that there's two possible ways to 
> do
> > it. The first is with a vtkArrayCalculator, where I set a very trivial
> > function to simply copy out the one value. The other way is with a
> > vtkImageExtractComponents. When doing it with the vtkArrayCalculator, 
> the
> > filter seems to work just fine but then the FFT yields values like :
> >
> > p Array [0]: vtkDoubleArray "result", 2,097,152 points, 8 bytes per
> > point
> > p Magnitude Range: 0.0000 1482912.5793
> > p Component 0 Range: -1048575.9848
> > 1048575.8760
> > p Component 1 Range: -1048572.9243
> > 1048579.0968
> > With a simple sin wave, the result should be almost purely imaginary, so
> > the Component 0 range should be almost 0 to 0.
> >
> > When I switch to using the vtkImageExtractComponents, the results look
> > better:
> >
> >
> > p Array [0]: vtkDoubleArray "image", 2,097,152 points, 8 bytes per
> > point
> > p Magnitude Range: 0.0000 1048576.0091
> > p Component 0 Range: -0.0557 0.0011
> > p Component 1 Range: -1048576.0089
> > 1048576.0091
> >
> >
> > Unfortunately, when working with the vtkImageExtractComponents filter, I
> > lose the other two fields if I had planned on using them for coloring or
> > something. Also, my results aren't quite what I expected. Much better, 
> but
> > on more complex datasets I seem to get results that are a little off 
> from
> > the expected result. I don't know if the cause of all this is related, 
> but
> > I'm chasing down what I can.
> >
> > So, any ideas?
> >
> > ----- Code starts here -------
> >
> > #include <stdio.h>
> > #include <string.h>
> > #include <stdlib.h>
> > #include <unistd.h>
> > #include "stat.h"
> > #include <sys/types.h>
> > #include <sys/stat.h>
> > #include <sys/mman.h>
> > #include <fcntl.h>
> > #include <vtkObject.h>
> > #include "vtkImageData.h"
> > #include "vtkPointData.h"
> > #include <vtkDataArray.h>
> > #include <vtkUnsignedCharArray.h>
> > #include <vtkDoubleArray.h>
> > #include <vtkImageData.h>
> > #include <vtkImageFFT.h>
> > #include <vtkArrayCalculator.h>
> > #include <vtkImageExtractComponents.h>
> >
> > int main (int argc, char *argv[])
> > {
> > double *data;
> > int xdim, ydim, zdim;
> > double kx;
> > int x,y,z;
> > long index;
> > xdim = 128;
> > ydim = 128;
> > zdim = 128;
> >
> > if ((data =
> > (double*)malloc(sizeof(double)*xdim*ydim*zdim*3)) == NULL)
> > {
> > perror("Unable to allocate memory!\n\t");
> > return -1;
> > }
> >
> > printf("Constructing sin(kx * x) dataset...\n");
> > kx = 2.0 * 3.1415926 / (double)xdim;
> > for(x=0; x<xdim; x++) {
> > for(y=0; y<ydim; y++) {
> > for(z=0; z<zdim; z++) {
> > index = z + (y*zdim) + (x * ydim * zdim);
> > data[(index*3)+0] = sin(kx * (double)x);
> > data[(index*3)+1] = cos(kx * (double)x);
> > data[(index*3)+2] = tan(kx * (double)x);
> > }
> > }
> > }
> >
> > vtkDoubleArray *ucPointer = vtkDoubleArray::New();
> > ucPointer->SetNumberOfComponents(3);
> > ucPointer->SetArray(data, xdim*ydim*zdim*3, 1);
> > ucPointer->SetName("image");
> >
> > vtkImageData *image = vtkImageData::New();
> > image->Initialize();
> > image->SetDimensions(xdim, ydim, zdim);
> > image->SetExtent(1, xdim, 1, ydim, 1, zdim);
> > image->SetScalarTypeToDouble();
> > image->SetNumberOfScalarComponents(3);
> > image->GetPointData()->SetScalars(ucPointer);
> > PrintStatistics(image);
> > printf("Extracting Velocity X-Component...\n");
> >
> > #if 0
> > vtkArrayCalculator *extract = vtkArrayCalculator::New();
> > extract->SetInput(image);
> > extract->SetResultArrayName("result");
> > extract->AddScalarVariable("x", "image", 0);
> > extract->SetFunction("(x*1.0)+0.0");
> > extract->ReplaceInvalidValuesOff();
> > extract->Update();
> >
> > extract->GetOutput()->GetPointData()->RemoveArray("image");
> >
> > extract->GetOutput()->GetPointData()->SetActiveScalars("result");
> > #else
> > vtkImageExtractComponents *extract =
> > vtkImageExtractComponents::New();
> > extract->SetInput(image);
> > extract->SetComponents(0);
> > extract->Update();
> > #endif
> > PrintStatistics(extract->GetOutput());
> >
> > printf("Computing FFT...\n");
> > vtkImageFFT *fft = vtkImageFFT::New();
> > fft->SetInput(extract->GetOutput());
> > fft->Update();
> > PrintStatistics(fft->GetOutput());
> >
> > }
> >
> >
> > --
> > Randall Hand
> > Visualization Scientist,
> > ERDC-MSRC Vicksburg, MS
> > Homepage: http://www.yeraze.com
> > _______________________________________________
> > vtk-developers mailing list
> > vtk-developers@vtk.org
> > http://www.vtk.org/mailman/listinfo/vtk-developers
> >
> >
> >
> >
> 



-- 
Randall Hand
Visualization Scientist, 
ERDC-MSRC Vicksburg, MS
Homepage: http://www.yeraze.com

[Attachment #3 (text/html)]

Well, I'm building a vtkDoubleArray, and the vtkArrayCalculator claims
it's returning a vtkDoubleArray.. So that shouldn't be the case in this
situation.<br><br><div><span class="gmail_quote">On 9/14/05, <b \
class="gmail_sendername">Berk Geveci</b> &lt;<a \
href="mailto:berk.geveci@gmail.com">berk.geveci@gmail.com</a>&gt; \
wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, \
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> This is a guess but if the \
array calculator outputs a data type than<br>the input's scalars, no imaging filter \
can be used down the pipeline.<br>This is a known bug. Essentially no (non-imaging) \
filter that changes<br>the data type of the scalars is allowed in a pipeline with \
imaging <br>filters. There is work (slow) going on to fix this issue. I would \
not<br>hold my breath for it's completion.<br><br>On 9/14/05, Randall Hand &lt;<a \
href="mailto:randall.hand@gmail.com">randall.hand@gmail.com</a>&gt; wrote: <br>&gt; \
Ok, I posted this once before, but here it is again with some more<br>&gt; \
information.<br>&gt;<br>&gt;&nbsp;&nbsp;I've written a piece of code to create a \
synthetic dataset.&nbsp;&nbsp;It's a 128^3<br>&gt; dataset, each point with a \
3-component double value consisting of (sin(x), <br>&gt; junk, \
morejunk).&nbsp;&nbsp;I extract just the first component, and do an \
FFT.&nbsp;&nbsp;You'll<br>&gt; find the code at the end of this message, along with \
my &quot;PrintStatistics&quot;<br>&gt; function \
attached.<br>&gt;<br>&gt;&nbsp;&nbsp;You'll see from the #if/#endif blocks that \
there's two possible ways to do <br>&gt; it.&nbsp;&nbsp;The first is with a \
vtkArrayCalculator, where I set a very trivial<br>&gt; function to simply copy out \
the one value.&nbsp;&nbsp;The other way is with a<br>&gt; \
vtkImageExtractComponents.&nbsp;&nbsp;When doing it with the vtkArrayCalculator, the \
<br>&gt; filter seems to work just fine but then the FFT yields values like \
:<br>&gt;<br>&gt; p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array [0]: vtkDoubleArray \
&quot;result&quot;, 2,097,152 points, 8 bytes per<br>&gt; \
point<br>&gt;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Magnitude
Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0000&nbsp;&nbsp;1482912.5793<b \
r>&gt;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Component 0 Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1048575.9848<br>&gt; \
1048575.8760<br>&gt;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Component 1 Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1048572.9243<br>&gt; \
1048579.0968<br>&gt;&nbsp;&nbsp;With a simple sin wave, the result should be almost \
purely imaginary, so<br>&gt; the Component 0 range should be almost 0 to \
0.<br>&gt;<br>&gt;&nbsp;&nbsp;When I switch to using the vtkImageExtractComponents, \
the results look <br>&gt; better:<br>&gt;<br>&gt;<br>&gt; \
p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array [0]: vtkDoubleArray &quot;image&quot;, \
2,097,152 points, 8 bytes per<br>&gt; \
point<br>&gt;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Magnitude
Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0000&nbsp;&nbsp;1048576.0091<b \
r>&gt;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Component 0 Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-0.0557 \
0.0011<br>&gt;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Component 1 Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1048576.0089<br>&gt; \
1048576.0091<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;Unfortunately, when working with the \
vtkImageExtractComponents filter, I<br>&gt; lose the other two fields if I had \
planned on using them for coloring or <br>&gt; something.&nbsp;&nbsp;Also, my results \
aren't quite what I expected.&nbsp;&nbsp;Much better, but<br>&gt; on more complex \
datasets I seem to get results that are a little off from<br>&gt; the expected \
result.&nbsp;&nbsp;I don't know if the cause of all this is related, but <br>&gt; I'm \
chasing down what I can.<br>&gt;<br>&gt;&nbsp;&nbsp;So, any \
ideas?<br>&gt;<br>&gt;&nbsp;&nbsp;----- Code starts here -------<br>&gt;<br>&gt; \
#include &lt;stdio.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&lt;string.h&gt;<br>&gt;&nbsp;&nbsp;#include &lt;stdlib.h \
&gt;<br>&gt;&nbsp;&nbsp;#include &lt;unistd.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&quot;stat.h&quot;<br>&gt;&nbsp;&nbsp;#include \
&lt;sys/types.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&lt;sys/stat.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&lt;sys/mman.h&gt;<br>&gt;&nbsp;&nbsp;#include &lt;fcntl.h&gt; \
<br>&gt;&nbsp;&nbsp;#include &lt;vtkObject.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&quot;vtkImageData.h&quot;<br>&gt;&nbsp;&nbsp;#include \
&quot;vtkPointData.h&quot;<br>&gt;&nbsp;&nbsp;#include \
&lt;vtkDataArray.h&gt;<br>&gt;&nbsp;&nbsp;#include &lt;vtkUnsignedCharArray.h&gt;<br> \
&gt;&nbsp;&nbsp;#include &lt;vtkDoubleArray.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&lt;vtkImageData.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&lt;vtkImageFFT.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&lt;vtkArrayCalculator.h&gt;<br>&gt;&nbsp;&nbsp;#include \
&lt;vtkImageExtractComponents.h&gt; <br>&gt;<br>&gt;&nbsp;&nbsp;int main (int argc, \
char *argv[])<br>&gt;&nbsp;&nbsp;{<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double \
*data;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int xdim, ydim, \
zdim;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double \
kx;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int \
x,y,z;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long \
index;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xdim = 128; \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ydim = \
128;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zdim = \
128;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((data =<br>&gt; \
(double*)malloc(sizeof(double)*xdim*ydim*zdim*3)) == NULL)<br>&gt; \
{<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&quot;Unable \
to allocate memory!\n\t&quot;); \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return \
-1;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Constructing \
sin(kx * x) dataset...\n&quot;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kx = 2.0 \
* 3.1415926 / (double)xdim;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(x=0; \
x&lt;xdim; x++) {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(y=0; \
y&lt;ydim; y++) { <br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(z=0; \
z&lt;zdim; z++) {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index
 = z + (y*zdim) + (x * ydim * \
zdim);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data[(index*3)+0]
 = sin(kx * (double)x);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data[(index*3)+1]
 = cos(kx * (double)x);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data[(index*3)+2]
 = tan(kx * (double)x);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;&nbsp;}<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkDoubleArray \
*ucPointer = vtkDoubleArray::New();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ucPoint \
er-&gt;SetNumberOfComponents(3);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ucPointer-&gt;SetArray(data, \
xdim*ydim*zdim*3, 1); \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ucPointer-&gt;SetName(&quot;image&quot;);<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkImageData \
*image = vtkImageData::New();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image-&gt;Ini \
tialize();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image-&gt;SetDimensions(xdim, \
ydim, zdim);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image-&gt;SetExtent(1, xdim, \
1, ydim, 1, zdim); <br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image-&gt;SetScalarType \
ToDouble();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image-&gt;SetNumberOfScalarComp \
onents(3);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image-&gt;GetPointData()-&gt;Set \
Scalars(ucPointer);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStatistics(image);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Extracting \
Velocity X-Component...\n&quot;); <br>&gt;<br>&gt;&nbsp;&nbsp;#if \
0<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkArrayCalculator *extract = \
vtkArrayCalculator::New();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;SetI \
nput(image);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;SetResultArrayName \
(&quot;result&quot;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;AddScalarVariable(&quot;x&quot;, \
&quot;image&quot;, 0); \
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;SetFunction(&quot;(x*1.0)+0.0& \
quot;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;ReplaceInvalidValuesOff \
();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;Update();<br>&gt;<br>&gt; \
extract-&gt;GetOutput()-&gt;GetPointData()-&gt;RemoveArray(&quot;image&quot;); \
<br>&gt;<br>&gt; extract-&gt;GetOutput()-&gt;GetPointData()-&gt;SetActiveScalars(&quot \
;result&quot;);<br>&gt;&nbsp;&nbsp;#else<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkImageExtractComponents \
*extract =<br>&gt; vtkImageExtractComponents::New();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;SetInput(image);
 <br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;SetComponents(0);<br>&gt;&nbs \
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extract-&gt;Update();<br>&gt;&nbsp;&nbsp;#endif<br>&gt \
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStatistics(extract-&gt;GetOutput());<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Computing \
FFT...\n&quot;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkImageFFT *fft = \
vtkImageFFT::New(); <br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fft-&gt;SetInput(extra \
ct-&gt;GetOutput());<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fft-&gt;Update();<br>& \
gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStatistics(fft-&gt;GetOutput());<br>&gt;<br>&gt;&nbsp;&nbsp;}<br>&gt;<br>&gt;<br>&gt; \
--<br>&gt; Randall Hand<br>&gt; Visualization Scientist, <br>&gt; ERDC-MSRC \
Vicksburg, MS<br>&gt; Homepage: <a \
href="http://www.yeraze.com">http://www.yeraze.com</a><br>&gt; \
_______________________________________________<br>&gt; vtk-developers mailing \
list<br>&gt; <a href="mailto:vtk-developers@vtk.org"> \
vtk-developers@vtk.org</a><br>&gt; <a \
href="http://www.vtk.org/mailman/listinfo/vtk-developers">http://www.vtk.org/mailman/l \
istinfo/vtk-developers</a><br>&gt;<br>&gt;<br>&gt;<br>&gt;<br></blockquote></div><br><br \
clear="all"> <br>-- <br>Randall Hand<br>Visualization Scientist, <br>ERDC-MSRC \
Vicksburg, MS<br>Homepage: <a href="http://www.yeraze.com">http://www.yeraze.com</a>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic