[vtkusers] Flattening a probed surface

Jonathan Ruiz Peinado jonathan.ruiz3 at gmail.com
Thu May 31 05:03:03 EDT 2012


This is how code looks now, I've got to use
imageData.SetScalarTypeToUnsignedChar(); insetad Double because I got an
error when I tried to show the image using imageActor, any way I'm not
getting the image that I spected, not sure why, I'm getting a pattern
repeated 3 times, just like the old tvs snow, do someone see what is wrong ?
thanks!

Hope it works for you jhroyer.

        int width = spline.GetOutput().GetNumberOfPoints();
        int height =
dicomImage.getNormalized().GetOutput().GetDimensions()[2] + 1;

        //image_data.SetDimensions(width, height, 1);
        imageData.SetExtent(0, width - 1 ,0,  height - 1, 0, 0);
        imageData.SetScalarTypeToUnsignedChar();
        imageData.SetNumberOfScalarComponents(1);
        imageData.SetSpacing(1.0, 1.0, 1.0);
        imageData.SetOrigin(0.0, 0.0, 0.0);
        imageData.AllocateScalars();
        meshedSurface.Update();

        for (int j=0; j < height; j++)
        {
            for(int i = 0; i < width;i++ )
            {
                //System.out.println((j*width) + i) ;
                imageData.SetScalarComponentFromDouble(i, j, 0, 0,
meshedSurface.GetOutput().GetPointData().GetScalars().GetTuple1( (j*width)
+ i ) );
            }
        }
        imageActor.SetInput(imageData);

2012/5/30 Jonathan Ruiz Peinado <jonathan.ruiz3 at gmail.com>

> Yes, now it's getting the array correctly, thanks!
>
>
> 2012/5/30 Sebastien Jourdain <sebastien.jourdain at kitware.com>
>
>> Try to update the pipeline before accessing its data...
>>
>> On Wed, May 30, 2012 at 8:50 AM, Jonathan Ruiz Peinado
>> <jonathan.ruiz3 at gmail.com> wrote:
>> > No , actually sampleVolume.GetOutput() doesn't have a
>> method GetScalars(),
>> > and sampleVolume.GetOutput().GetPointData().GetScalars() returns null.
>> >
>> > Maybe I wrote it wrong in a previus mail.
>> >
>> > ¿ But could I get the scalars from the volume using the surface points
>> as
>> > reference ?
>> >
>> > // Probe the volume with the extruded surface
>> > meshedSurface.SetInputConnection(1,
>> > dicomImage.getNormalized().GetOutputPort());
>> > meshedSurface.SetInput(0, surface);
>> >
>> > Scalar =
>> >
>> dicomImage.getNormalized().GetOutput().GetScalarComponentAsDouble(surfacecoord.x, surfacecoord.x, surfacecoord.x,
>> > 0);
>> >
>> > 2012/5/30 Sebastien Jourdain <sebastien.jourdain at kitware.com>
>> >>
>> >> You previously told me that the following line was working
>> >>
>> >> sampleVolume.GetOutput().GetScalars()
>> >>
>> >> BTW sampleVolume is not a volume but a meshed surface.
>> >>
>> >> On Wed, May 30, 2012 at 6:41 AM, Jonathan Ruiz Peinado
>> >> <jonathan.ruiz3 at gmail.com> wrote:
>> >> > An update of the previous code, seems that setDimensions is going to
>> >> > be deprecate at some point and is just for backwards compatibility so
>> >> > this
>> >> > is how it's looks now using setExtent instead:
>> >> >
>> >> >  //image_data.SetDimensions(width, height, 1);
>> >> > image_data.SetExtent(0, width - 1 ,0,  height - 1, 0, 0);
>> >> > image_data.SetScalarTypeToDouble();
>> >> > image_data.SetNumberOfScalarComponents(1);
>> >> > image_data.SetSpacing(1.0, 1.0, 1.0);
>> >> > image_data.SetOrigin(0.0, 0.0, 0.0);
>> >> > image_data.SetScalarComponentFromDouble(0, 0, 0, 0, 200.0);
>> >> > image_data.AllocateScalars();
>> >> >
>> >> > Now I'm trying to figure out  how to get the scalars from the probed
>> >> > surface
>> >> >
>> >> > sampleVolume.GetOutput().GetPointData().GetScalars() it's returning
>> me a
>> >> > null pointer...
>> >> > any suggestion?
>> >> >
>> >> > 2012/5/30 Jonathan Ruiz Peinado <jonathan.ruiz3 at gmail.com>
>> >> >>
>> >> >> Ok, so I misunderstand some basics of VTK.
>> >> >> I'm not sure about the meaning of cell or point, thanks it shows me
>> >> >> something more about it.
>> >> >> Is there some URL where I can go to get the basic theory about it ?
>> >> >>
>> >> >> This is how the code looks now, fisrt I'm going to show you how I'm
>> >> >> Building the surface:
>> >> >>
>> >> >> rows = spline.GetOutput().GetNumberOfPoints();
>> >> >> col =dicomImage.getNormalized().GetOutput().GetDimensions()[2];
>> >> >> for (int row = 0; row < rows; row++)
>> >> >>         {
>> >> >>             for (int col = 0; col < cols; col++)
>> >> >>             {
>> >> >>                 double [] p = new double [3];
>> >> >>                 line.GetPoint(row, p);
>> >> >>                 x[0] = p[0] + direction[0] * col * spacing;
>> >> >>                 x[1] = p[1] + direction[1] * col * spacing;
>> >> >>                 x[2] = p[2] + direction[2] * col * spacing;
>> >> >>                 points.InsertPoint(cnt++, x);
>> >> >>             }
>> >> >>         }
>> >> >>
>> >> >> An now how I've fixed the code that was wrong in my previous
>> message:
>> >> >> vtkImageData image_data= new vtkImageData();
>> >> >>
>> >> >> int width = spline.GetOutput().GetNumberOfPoints();
>> >> >> int height =
>> dicomImage.getNormalized().GetOutput().GetDimensions()[2];
>> >> >>
>> >> >>
>> >> >> image_data.SetDimensions(width, height, 1); // 1 because I just
>> want an
>> >> >> slice by now
>> >> >> //image_data.SetSpacing();
>> >> >>
>> >> >>
>> >> >> Do I need to set the Spacing of the image_data or it has a valid
>> >> >> default
>> >> >> value?
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> 2012/5/29 Sebastien Jourdain <sebastien.jourdain at kitware.com>
>> >> >>>
>> >> >>> The dimension is related to the number of points....
>> >> >>>
>> >> >>> Meaning one dimension will be the number of points that compose
>> your
>> >> >>> spline and the other will be the number of iteration the swipe is
>> >> >>> doing.
>> >> >>>
>> >> >>> Seb
>> >> >>>
>> >> >>> On Tue, May 29, 2012 at 12:46 PM, jruiz <jonathan.ruiz3 at gmail.com>
>> >> >>> wrote:
>> >> >>> > Thanks, I'm going to follow your instructions step by step, first
>> >> >>> > I'm
>> >> >>> > trying
>> >> >>> > to get de surface area to set the dimension of the image data.
>> >> >>> >
>> >> >>> > Is it even close ? I'm getting the length for the extruded
>> spline as
>> >> >>> > "width"
>> >> >>> > and "height" is the length of the extrusion. I guess this values
>> >> >>> > need
>> >> >>> > to be
>> >> >>> > multiply by the spacing what I get from the source image.
>> >> >>> >
>> >> >>> > vtkImageData image_data= new vtkImageData();
>> >> >>> >
>> >> >>> > double[] spacing =
>> >> >>> > dicomImage.getNormalized().GetOutput().GetSpacing();
>> >> >>> >
>> >> >>> > double width = spline.GetLength() * spacing[0];
>> >> >>> > double height = surfaceHeight * spacing[2];
>> >> >>> >
>> >> >>> > image_data.SetDimensions(width, height, 1);
>> >> >>> >
>> >> >>> > --
>> >> >>> > View this message in context:
>> >> >>> >
>> >> >>> >
>> http://vtk.1045678.n5.nabble.com/Flattening-a-probed-surface-tp5713443p5713466.html
>> >> >>> > Sent from the VTK - Users mailing list archive at Nabble.com.
>> >> >>> > _______________________________________________
>> >> >>> > Powered by www.kitware.com
>> >> >>> >
>> >> >>> > Visit other Kitware open-source projects at
>> >> >>> > http://www.kitware.com/opensource/opensource.html
>> >> >>> >
>> >> >>> > Please keep messages on-topic and check the VTK FAQ at:
>> >> >>> > http://www.vtk.org/Wiki/VTK_FAQ
>> >> >>> >
>> >> >>> > Follow this link to subscribe/unsubscribe:
>> >> >>> > http://www.vtk.org/mailman/listinfo/vtkusers
>> >> >>
>> >> >>
>> >> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Powered by www.kitware.com
>> >
>> > Visit other Kitware open-source projects at
>> > http://www.kitware.com/opensource/opensource.html
>> >
>> > Please keep messages on-topic and check the VTK FAQ at:
>> > http://www.vtk.org/Wiki/VTK_FAQ
>> >
>> > Follow this link to subscribe/unsubscribe:
>> > http://www.vtk.org/mailman/listinfo/vtkusers
>> >
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120531/70a60534/attachment.htm>


More information about the vtkusers mailing list