<div dir="ltr"><div><div><div>Hi David,<br>Thanks for the reply. In that case I would need to render the image to the window and set the camera origin and direction to point to the image then save that to  a file? <br><br>

</div>I have been trying with the vtkProbefilter to extract the image that I want. I am using the same plane origin and normal as before. <br><br><br>        vtkSmartPointer&lt;vtkPlaneSource&gt; PlaneSource = vtkSmartPointer&lt;vtkPlaneSource&gt;::New();<br>

        PlaneSource-&gt;SetCenter(testpoint2);<br>        PlaneSource-&gt;SetNormal(normal2);<br><br>        vtkPolyData *Plane = PlaneSource -&gt; GetOutput();<br><br>        vtkProbeFilter *Probe = vtkProbeFilter::New();<br>

<br>        Probe-&gt;SetInput(Plane);<br>        Probe-&gt;SetSource(reader-&gt;GetOutput());<br>        //Probe-&gt;SetInputConnection(reader-&gt;GetOutputPort);<br>        Probe-&gt;SpatialMatchOn();<br>        Probe-&gt;Update();<br>

<br></div>However, with this method it seems I can only seem to be able to save a vtkpolydata file of the plane. Is it possible to use the vtkProbeFilter to obtain a slice of an image volume? <br><br></div><div>Many thanks,<br>

</div><div>Jesse<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Dec 4, 2013 at 2:44 PM, David Gobbi <span dir="ltr">&lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jessie,<br>
<br>
The vtkImageResliceMapper just draws the slice to the screen, it does<br>
not produce it as a output on its output port.  So the following line<br>
of code will not work:<br>
<br>
writer-&gt;SetInputConnection(im-&gt;GetOutputPort());<br>
<br>
The only way to get the image from vtkImageResliceMapper is to capture<br>
the contents of the render window, with vtkWindowToImageFilter.<br>
<span class="HOEnZb"><font color="#888888"><br>
  David<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On Wed, Dec 4, 2013 at 1:43 AM, Jesse Ross-Jones &lt;<a href="mailto:jesse.rj@gmail.com">jesse.rj@gmail.com</a>&gt; wrote:<br>
&gt; Dear VTKrs<br>
&gt;<br>
&gt; I am trying to extract a single slice from an image volume and write the<br>
&gt; image to a file.<br>
&gt;<br>
&gt; I have found and example using vtkImageResliceMapper and I have modified it<br>
&gt; below. However I am unable to properly save the image.<br>
&gt;<br>
&gt; Suggestions for how to save the single image and the volume with only the<br>
&gt; single image slice much appreciated!<br>
&gt;<br>
&gt; Many thanks,<br>
&gt; Jesse<br>
&gt;<br>
&gt;<br>
&gt; int main(int argc, char *argv[])<br>
&gt; {<br>
&gt;         if (argc &lt; 3) {<br>
&gt;                 cout &lt;&lt; &quot;Usage: &quot; &lt;&lt; argv[0] &lt;&lt; &quot; Input_Image &quot; &lt;&lt;<br>
&gt; &quot;Output_Image&quot;&lt;&lt; endl;<br>
&gt;                 return EXIT_FAILURE;<br>
&gt;         }<br>
&gt;<br>
&gt;         vtkSmartPointer&lt;vtkRenderer&gt; aRenderer =<br>
&gt; vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
&gt;         vtkSmartPointer&lt;vtkRenderWindow&gt; renWin =<br>
&gt; vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
&gt;         renWin-&gt;AddRenderer(aRenderer);<br>
&gt;         vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; iren =<br>
&gt; vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
&gt;         iren-&gt;SetRenderWindow(renWin);<br>
&gt;<br>
&gt;         vtkSmartPointer&lt;vtkXMLImageDataReader&gt; reader =<br>
&gt; vtkSmartPointer&lt;vtkXMLImageDataReader&gt;::New();<br>
&gt;     reader-&gt;SetFileName(argv[1]);<br>
&gt;     reader-&gt;Update();<br>
&gt;<br>
&gt;         aRenderer-&gt;SetBackground(.2, .3, .4);<br>
&gt;         renWin-&gt;SetSize(640, 480);<br>
&gt;<br>
&gt;<br>
&gt;         // outline provides context around the data.<br>
&gt;         vtkSmartPointer&lt;vtkOutlineFilter&gt; outlineData =<br>
&gt; vtkSmartPointer&lt;vtkOutlineFilter&gt;::New();<br>
&gt;         outlineData-&gt;SetInputConnection(reader-&gt;GetOutputPort());<br>
&gt;         outlineData-&gt;Update();<br>
&gt;<br>
&gt;         vtkSmartPointer&lt;vtkPolyDataMapper&gt; mapOutline =<br>
&gt; vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();<br>
&gt;         mapOutline-&gt;SetInputConnection(outlineData-&gt;GetOutputPort());<br>
&gt;<br>
&gt;         vtkSmartPointer&lt;vtkActor&gt; outline =<br>
&gt; vtkSmartPointer&lt;vtkActor&gt;::New();<br>
&gt;         outline-&gt;SetMapper(mapOutline);<br>
&gt;         outline-&gt;GetProperty()-&gt;SetColor(0,0,0);<br>
&gt;<br>
&gt;         // Setting of vtkImageResliceMapper<br>
&gt;         vtkSmartPointer&lt;vtkImageResliceMapper&gt; im =<br>
&gt; vtkSmartPointer&lt;vtkImageResliceMapper&gt;::New();<br>
&gt;         im-&gt;SetInputConnection(reader-&gt;GetOutputPort());<br>
&gt;         //im-&gt;SliceFacesCameraOn();<br>
&gt;         //im-&gt;SliceAtFocalPointOn();<br>
&gt;         im-&gt;BorderOff();<br>
&gt;<br>
&gt;         vtkSmartPointer&lt;vtkPlane&gt; slicePlane =<br>
&gt; vtkSmartPointer&lt;vtkPlane&gt;::New();<br>
&gt;<br>
&gt;         double testpoint[3];<br>
&gt;         testpoint[0] = 49.72023;<br>
&gt;         testpoint[1] = 94.96884;<br>
&gt;         testpoint[2] = 24.4359779;<br>
&gt;<br>
&gt;         double normal[3];<br>
&gt;         normal[0] = -0.118968;<br>
&gt;         normal[1] = -0.9534519;<br>
&gt;         normal[2] = 0.27708499;<br>
&gt;<br>
&gt;         double testpoint2[3];<br>
&gt;         testpoint2[0] = 47.7378;<br>
&gt;         testpoint2[1] = 88.439;<br>
&gt;         testpoint2[2] = 26.1231;<br>
&gt;<br>
&gt;         double normal2[3];<br>
&gt;         normal2[0] = -0.4399;<br>
&gt;         normal2[1] = -0.8165;<br>
&gt;         normal2[2] = 0.3738968;<br>
&gt;<br>
&gt;         slicePlane-&gt;SetNormal(normal2);<br>
&gt;         slicePlane-&gt;SetOrigin(testpoint2);<br>
&gt;<br>
&gt;         im-&gt;SetSlicePlane(slicePlane);<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;         // Setting of vtkImageProperty<br>
&gt;         vtkSmartPointer&lt;vtkImageProperty&gt; ip =<br>
&gt; vtkSmartPointer&lt;vtkImageProperty&gt;::New();<br>
&gt;         ip-&gt;SetColorWindow(2000);<br>
&gt;         ip-&gt;SetColorLevel(1000);<br>
&gt;         ip-&gt;SetAmbient(0.0);<br>
&gt;         ip-&gt;SetDiffuse(1.0);<br>
&gt;         ip-&gt;SetOpacity(1.0);<br>
&gt;         ip-&gt;SetInterpolationTypeToLinear();<br>
&gt;<br>
&gt;         // Try of vtkImageSlice<br>
&gt;         vtkSmartPointer&lt;vtkImageSlice&gt; imageSlice =<br>
&gt; vtkSmartPointer&lt;vtkImageSlice&gt;::New();<br>
&gt;         vtkSmartPointer&lt;vtkInteractorStyleImage &gt; styleImage =<br>
&gt; vtkSmartPointer&lt;vtkInteractorStyleImage &gt;::New();<br>
&gt;<br>
&gt;         imageSlice-&gt;SetMapper(im);<br>
&gt;         imageSlice-&gt;SetProperty(ip);<br>
&gt;<br>
&gt;<br>
&gt;         vtkSmartPointer&lt;vtkXMLImageDataWriter&gt; writer =<br>
&gt;         vtkSmartPointer&lt;vtkXMLImageDataWriter&gt;::New();<br>
&gt;         writer-&gt;SetFileName(argv[2]);<br>
&gt;         writer-&gt;SetInputConnection(im-&gt;GetOutputPort());<br>
&gt;         writer-&gt;Write();<br>
&gt;<br>
&gt;         styleImage-&gt;SetInteractionModeToImage3D();<br>
&gt;         iren-&gt;SetInteractorStyle(styleImage);<br>
&gt;         renWin-&gt;SetInteractor(iren);<br>
&gt;<br>
&gt;         // Actors are added to the renderer.<br>
&gt;         aRenderer-&gt;AddActor(outline);<br>
&gt;         aRenderer-&gt;AddViewProp(imageSlice);<br>
&gt;<br>
&gt;         // camera Setting<br>
&gt;         vtkSmartPointer&lt;vtkCamera&gt; aCamera =<br>
&gt; vtkSmartPointer&lt;vtkCamera&gt;::New();<br>
&gt;         aCamera-&gt;SetViewUp (0, 0, -1);<br>
&gt;         aCamera-&gt;SetPosition (0, 1, 0);<br>
&gt;         aCamera-&gt;SetFocalPoint (0, 0, 0);<br>
&gt;         aCamera-&gt;ComputeViewPlaneNormal();<br>
&gt;         aCamera-&gt;Azimuth(30.0);<br>
&gt;         aCamera-&gt;Elevation(30.0);<br>
&gt;         aCamera-&gt;ParallelProjectionOn();<br>
&gt;         aRenderer-&gt;SetActiveCamera(aCamera);<br>
&gt;<br>
&gt;<br>
&gt;         renWin-&gt;Render();<br>
&gt;         aRenderer-&gt;ResetCamera();<br>
&gt;         aRenderer-&gt;ResetCameraClippingRange();<br>
&gt;<br>
&gt;         // interact with data<br>
&gt;         iren-&gt;Initialize();<br>
&gt;         iren-&gt;Start();<br>
&gt;<br>
&gt;         return EXIT_SUCCESS;<br>
&gt; }<br>
</div></div></blockquote></div><br></div>