[vtkusers] ImageReslice and Interpolation Can anyone help?
David Gobbi
dgobbi at atamai.com
Thu Jun 14 15:32:40 EDT 2007
Hi Janny,
You can avoid the second triangularization if you use vtkPlaneSource to
create the polydata that you probe your original points with. The
SetXResolution and SetYResolution methods of vtkPlaneSource set the
number of "squares" that the plane is divided into in X and Y. The
number of points along each edge is equal to the resolution plus one.
The reason that you weren't seeing anything is that you have to generate
polygons from the points before they can be rendered (unless you render
them as verts, in which case the points are just rendered as points).
The single color for the "outside" is there because of the way that
vtkProbeFilter works. It can only do interpolation within the triangles
produced by the triangularization, everything outside is set to a
background color. To properly fill in these values you would have to do
your interpolation using something like radial basis functions or with a
relaxation method, neither of which is supported in VTK.
- David
Janny Dong wrote:
> Hey David,
>
> Thank you so much. I tried the vtkDelaunay2D then vtkProbeFilter
> approach you suggested. What I did is use vtkDelaunay2D to triangulate
> a polydata set of 16 points with known scalars, then probe it with
> another polydata set of 36 points, then use vtkDelaunay2D again and
> map the output to polydata mapper and display them. I got Image1 as
> attached. I did triangulation again because the render window was
> blank if I map output of vtkProbeFilter directly to polydata mapper. I
> may have done something wrong.
>
> Another thing is if the known data points are not evenly distributed,
> I got Image2, where all known 16 data are at the bottom left area.
> The area outside the known data values was interpolated as one color.
> Is it normal that the data outside the 4*4 area got the same scalar
> value?
>
> Thanks,
> Janny
>
>
> On 6/13/07, *David Gobbi* < dgobbi at atamai.com
> <mailto:dgobbi at atamai.com>> wrote:
>
> Hi Janny,
>
> If your original data points do not form a complete, regular grid,
> then
> vtkImageReslice won't give you the result you want. You can't use
> vtkImageReslice to fill in the gaps.
>
> Instead, you could try using vtkDelaunay2D to triangularize the data
> followed by vtkProbeFilter to interpolate the data. A limitation of
> ProbeFilter is that it always does linear interpolation, and it cannot
> interpolate beyond the hull of the original set of points.
>
> - David
>
>
> Janny Dong wrote:
> > I am trying to get a color contour map out of several data points.
> > Let's say, I need a nice and smooth 2D color map of dimension
> 5*5, so
> > that's 25 points. I know the positions of the points of course,
> but I
> > only know 10 data values (scalars). Therefore I need some
> > interpolation to get to know data values (scalars) at all positions
> > and map them to colors.
> >
> > I put my data into ImageData, and I am using ImageReslice in
> order to
> > do the interpolation I want. I constructed pipelines following the
> > example David Gobbi provided at
> >
> http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/Examples/ImageProcessing/Cxx/ImageSlicing.cxx?root=VTK&content-type=text/plain
> <http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/Examples/ImageProcessing/Cxx/ImageSlicing.cxx?root=VTK&content-type=text/plain>
> > <
> http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/Examples/ImageProcessing/Cxx/ImageSlicing.cxx?root=VTK&content-type=text/plain
> <http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/Examples/ImageProcessing/Cxx/ImageSlicing.cxx?root=VTK&content-type=text/plain>>
> >
> > Then I got an image as attached. For now, I just input 10 random
> > scalar values to 10 positions. I used cubic interpolation. What
> I want
> > is interpolation over the whole image area, not just near every
> point.
> > How can I achieve such visualization effect?
> >
> > Actually I just tried everything to get the visualization effect
> from
> > the Matlab functions griddata, which fits a surface of the form z =
> > f(x,y) to the data in the (usually) nonuniformly spaced vectors
> > (x,y,z), but I couldn't find a way in VTK to do the interpolation. I
> > read from Matlab help document that the griddata methods (nearest
> > neighbor, cubic, linear) are based on a Delaunay triangulation
> of the
> > data that uses Qhull. However I have no experience with Qhull
> and not
> > much time to dig into it. Also, I have to do the project in C++ not
> > Matlab. VTK is such a powerful visualization tool so I hope I
> could do
> > it with VTK.
> >
> > Thanks a lot.
> > Janny
> >
> >
> ------------------------------------------------------------------------
> >
> >
> ------------------------------------------------------------------------
>
> >
> > _______________________________________________
> > This is the private VTK discussion list.
> > Please keep messages on-topic. Check the FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ <http://www.vtk.org/Wiki/VTK_FAQ>
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> <http://www.vtk.org/mailman/listinfo/vtkusers>
> >
>
>
>
> ------------------------------------------------------------------------
>
>
> ------------------------------------------------------------------------
>
More information about the vtkusers
mailing list