<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Hi David,<br><br>Just to clarify, are these 2 classes available right now or is there a review process?<br><br>Thanks,<br>Alexis Cheng<br>Electrical Engineering<br>University of British Columbia<br><br>&gt; From: david.gobbi@gmail.com<br>&gt; Date: Thu, 4 Nov 2010 07:57:11 -0600<br>&gt; Subject: Re: [vtkusers] vtkBlend Output<br>&gt; To: acheng_1221@hotmail.com<br>&gt; CC: vtkusers@vtk.org<br>&gt; <br>&gt; I've just committed two new classes for generating stencils:<br>&gt; 1) Imaging/vtkROIStencilSource - rectangles and ellipses<br>&gt; 2) Imaging/vtkLassooStencilSource - polygons and splines<br>&gt; <br>&gt;   David<br>&gt; <br>&gt; On Wed, Nov 3, 2010 at 8:52 AM, David Gobbi &lt;david.gobbi@gmail.com&gt; wrote:<br>&gt; &gt; Hi Alexis,<br>&gt; &gt;<br>&gt; &gt; The PolyDataToImageStencil filter requires a closed 3D polydata<br>&gt; &gt; surface, like a box or a sphere. &nbsp;It does not work with 2D contours.<br>&gt; &gt;<br>&gt; &gt; I have a "lassoo" class based on some of my old python code for doing<br>&gt; &gt; ROI stencils, but it is incomplete. &nbsp;It would work like<br>&gt; &gt; ImplicitSelectionLoop for vtkImageStencilData, but a few hundred times<br>&gt; &gt; faster. &nbsp;I'll take a look at it today to see how much work it would be<br>&gt; &gt; to finish it and contribute it to VTK.<br>&gt; &gt;<br>&gt; &gt; &nbsp;David<br>&gt; &gt;<br>&gt; &gt; On Tue, Nov 2, 2010 at 6:07 PM, Alexis Cheng &lt;acheng_1221@hotmail.com&gt; wrote:<br>&gt; &gt;&gt; Hi David,<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; It certainly seems to be the Stencil filter that is slowing the system down.<br>&gt; &gt;&gt; I am trying to use vtkPolyDataToImageStencil to see if that would be any<br>&gt; &gt;&gt; faster, but I'm having some difficulties.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I replaced this ImplicitFunction code:<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkImplicitSelectionLoop&gt; ImplicitLoop =<br>&gt; &gt;&gt; vtkSmartPointer&lt;vtkImplicitSelectionLoop&gt;::New();<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ImplicitLoop-&gt;SetLoop(points);<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkImplicitFunctionToImageStencil&gt; dataToStencil =<br>&gt; &gt;&gt; vtkSmartPointer&lt;vtkImplicitFunctionToImageStencil&gt;::New();<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dataToStencil-&gt;SetInput(ImplicitLoop);<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; with this PolyData code:<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkCellArray&gt; polygons =<br>&gt; &gt;&gt; vtkSmartPointer&lt;vtkCellArray&gt;::New();<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolygon&gt; polygon =<br>&gt; &gt;&gt; vtkSmartPointer&lt;vtkPolygon&gt;::New();<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polygon-&gt;GetPointIds()-&gt;SetNumberOfIds(4); //make a quad<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polygon-&gt;GetPointIds()-&gt;SetId(0, 0);<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polygon-&gt;GetPointIds()-&gt;SetId(1, 1);<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polygon-&gt;GetPointIds()-&gt;SetId(2, 2);<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polygon-&gt;GetPointIds()-&gt;SetId(3, 3);<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polygons-&gt;InsertNextCell(polygon);<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolyData&gt; quad =<br>&gt; &gt;&gt; vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; quad-&gt;SetPoints(points);<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; quad-&gt;SetPolys(polygons);<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolyDataToImageStencil&gt; dataToStencil =<br>&gt; &gt;&gt; vtkSmartPointer&lt;vtkPolyDataToImageStencil&gt;::New();<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dataToStencil-&gt;SetInput(quad);<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; The final image does not show the stencil with the PolyData code. Is there a<br>&gt; &gt;&gt; difference in the implementation of the 2 filters where I would have a<br>&gt; &gt;&gt; different output or need a different input? Also, should I expect to see any<br>&gt; &gt;&gt; increase in performance by using PolyData instead of ImplicitFunction?<br>&gt; &gt;&gt; Thanks for all your answers!<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Cheers,<br>&gt; &gt;&gt; Alexis Cheng<br>&gt; &gt;&gt; Electrical Engineering<br>&gt; &gt;&gt; University of British Columbia<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;&gt; From: david.gobbi@gmail.com<br>&gt; &gt;&gt;&gt; Date: Mon, 1 Nov 2010 19:27:40 -0600<br>&gt; &gt;&gt;&gt; Subject: Re: [vtkusers] vtkBlend Output<br>&gt; &gt;&gt;&gt; To: acheng_1221@hotmail.com<br>&gt; &gt;&gt;&gt; CC: vtkusers@vtk.org<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Hi Alexis,<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Have you tried it without the stencil, for comparison? The<br>&gt; &gt;&gt;&gt; vtkImplicitFunctionToImageStencil filter is very slow.<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; David<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; On Mon, Nov 1, 2010 at 5:57 PM, Alexis Cheng &lt;acheng_1221@hotmail.com&gt;<br>&gt; &gt;&gt;&gt; wrote:<br>&gt; &gt;&gt;&gt; &gt; Hi all,<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; Is vtkBlend extremely resource intensive? I have a following piece of<br>&gt; &gt;&gt;&gt; &gt; code<br>&gt; &gt;&gt;&gt; &gt; running: FinalImage is a vtkImageData object, MTImage is a vtkImageData<br>&gt; &gt;&gt;&gt; &gt; object, and blend1 is a vtkImageBlend object.<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blend1-&gt;SetStencil(dataToStencil-&gt;GetOutput());<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blend1-&gt;AddInput(MTImage);<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blend1-&gt;AddInput(BlackImage);<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blend1-&gt;SetOpacity(0,0.5);<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; blend1-&gt;SetOpacity(1,0.5);<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(OutOfView)<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FinalImage = MTImage;<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FinalImage = blend1-&gt;GetOutput();<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&gt; &gt;&gt;&gt; &gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FinalImage-&gt;Update();<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; The fps of my display decreases dramatically whenever the output from<br>&gt; &gt;&gt;&gt; &gt; blend<br>&gt; &gt;&gt;&gt; &gt; is requested. Is this behaviour expected? Thanks in advance.<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; Cheers,<br>&gt; &gt;&gt;&gt; &gt; Alexis Cheng<br>&gt; &gt;&gt;&gt; &gt; Electrical Engineering<br>&gt; &gt;&gt;&gt; &gt; University of British Columbia<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; _______________________________________________<br>&gt; &gt;&gt;&gt; &gt; Powered by www.kitware.com<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; Visit other Kitware open-source projects at<br>&gt; &gt;&gt;&gt; &gt; http://www.kitware.com/opensource/opensource.html<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; Please keep messages on-topic and check the VTK FAQ at:<br>&gt; &gt;&gt;&gt; &gt; http://www.vtk.org/Wiki/VTK_FAQ<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt; Follow this link to subscribe/unsubscribe:<br>&gt; &gt;&gt;&gt; &gt; http://www.vtk.org/mailman/listinfo/vtkusers<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;&gt; &gt;<br>&gt; &gt;&gt;<br>&gt; &gt;<br>                                               </body>
</html>