Hi Mauro,<div><br></div><div>I don&#39;t think that converting the image to a vtkImageStencilData is the</div><div>correct approach.</div><div><br></div><div>When you call blend-&gt;AddInputConnection(0, color-&gt;GetOutputPort())</div>

<div>the first argument should always be 0.  All of the image inputs for</div><div>vtkImageBlend go into port zero.  It is what VTK calls a &quot;multiple</div><div>input port,&quot; meaning that it is a port that can take multiple input</div>

<div>connections.</div><div><br></div><div>If you call blend-&gt;AddInputConnection(1, ...) then you are adding</div><div>a connection to the second port, which is not an image port (as</div><div>you have seen, it is a vtkImageStencilData port).  This is not what</div>

<div>you want to do.</div><div><br></div><div>Take a look at the documentation for vtkAlgorithm for more info on</div><div>how ports/connections work.  The main idea is that VTK inputs are</div><div>identified by two numbers: (port number, connection number), i.e.</div>

<div>there is really a 2D array of inputs.</div><div><br></div><div> - David</div><div><br></div><div><br><div class="gmail_quote">On Thu, Feb 3, 2011 at 6:46 AM, Mauro Maiorca <span dir="ltr">&lt;<a href="mailto:mauromaiorca@gmail.com">mauromaiorca@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 David,<br>
<br>
thank you very much for your quick reply.<br>
The function RemoveInputConnection was what I was actually looking<br>
for, and works fine with the canvas objects.<br>
I&#39;ll also take into account your clever suggestion to don&#39;t mess up<br>
with the indexes!!<br>
The &quot;only&quot; problem left is with AddInputConnection and the grayscale<br>
2D image (to which I have to attach/detach the canvas objects).<br>
Before your input, I was using &quot;blend-&gt;SetInput(color-&gt;GetOutput());&quot;<br>
where color is an instance of vtkImageMapToColors, that gets as input<br>
a casted image (vtkImageCast) and a lookup table (vtkLookupTable).<br>
Unfortunately, AddInputConnection wants vtkImageStencilData (while<br>
SetInput is happy with vtkImageData), so I had to convert vtkImageData<br>
into vtkImageStencilData. You actually helped a lot on that (you<br>
replied few years ago to a similar help request), recommending the<br>
good old Rube Goldberg machine and few handy tricks! However I&#39;m still<br>
far from the solution, what I&#39;ve got till now (and still not quite<br>
there) is:<br>
<br>
//convert poly to image data<br>
vtkSmartPointer&lt;vtkPolyDataToImageStencil&gt; dataToStencil =<br>
vtkSmartPointer&lt;vtkPolyDataToImageStencil&gt;::New();<br>
dataToStencil-&gt;SetInputConnection (color-&gt;GetOutputPort());<br>
dataToStencil -&gt; Update();<br>
<br>
// Create an empty image<br>
vtkSmartPointer&lt;vtkImageGridSource&gt; source =<br>
vtkSmartPointer&lt;vtkImageGridSource&gt;::New();<br>
source-&gt;SetFillValue(0);<br>
source-&gt;SetLineValue (0);<br>
source -&gt; SetDataExtent ((imageCast-&gt;GetOutput())-&gt;GetExtent());<br>
source-&gt;Update();<br>
<br>
//apply the stencil to the image<br>
vtkSmartPointer&lt;vtkImageStencil&gt; stencil =<br>
vtkSmartPointer&lt;vtkImageStencil&gt;::New();<br>
stencil-&gt;SetInputConnection (source-&gt;GetOutputPort());<br>
stencil -&gt; SetStencil (dataToStencil-&gt;GetOutput() );<br>
stencil -&gt; ReverseStencilOn();<br>
stencil -&gt; Update();<br>
<br>
//blend<br>
blend-&gt;AddInputConnection(0, stencil-&gt;GetOutputPort());<br>
<br>
<br>
but nothing, it compiles but I get segmentation fault in runtime. The<br>
segmentation fault goes away if I comment out the line:<br>
blend-&gt;AddInputConnection(0, stencil-&gt;GetOutputPort());<br>
I&#39;m definitely forgetting something, but not sure what exactly! Any<br>
suggestion would be appreciated!!!<br>
<br>
thanks a lot for your help!<br>
<br>
cheers,<br>
<font color="#888888">Mauro<br>
</font><div><div></div><div class="h5"><br>
<br>
<br>
On Mon, Jan 31, 2011 at 4:12 PM, David Gobbi &lt;<a href="mailto:david.gobbi@gmail.com">david.gobbi@gmail.com</a>&gt; wrote:<br>
&gt; Hi Mauro,<br>
&gt;<br>
&gt; The inputs can be added/removed with these vtkAlgorithm methods:<br>
&gt;   blend-&gt;AddInputConnection(0, canvas-&gt;GetOutputPort());<br>
&gt;   blend-&gt;RemoveInputConnection(0, canvas-&gt;GetOutputPort());<br>
&gt;<br>
&gt; In all honesty, though, I find it easiest to call this:<br>
&gt;   blend-&gt;RemoveAllInputs();<br>
&gt; Then I can start over again by adding all the inputs. Otherwise,<br>
&gt; it can be difficult to keep the inputs in the correct order.<br>
&gt;<br>
&gt;  - David<br>
&gt;<br>
&gt; On Sun, Jan 30, 2011 at 9:11 PM, Mauro Maiorca &lt;<a href="mailto:mauromaiorca@gmail.com">mauromaiorca@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hello vtk users,<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m struggling to understand how to remove an item from a vtkImageBlend object.<br>
&gt;&gt;<br>
&gt;&gt; To be more specific, I have a (grayscale) 2D image and few<br>
&gt;&gt; vtkImageCanvasSource2D objects to interactively attach/detach to the<br>
&gt;&gt; greyscale image.<br>
&gt;&gt; In order to attach the objects to the grayscale image I&#39;m using<br>
&gt;&gt; vtkImageBlend, and it&#39;s working fine.<br>
&gt;&gt; The problem is to detach the vtkImageCanvasSource2D objects from<br>
&gt;&gt; vtkImageBlend: I don&#39;t see any &quot;remove&quot; function in vtkImageBlend.<br>
&gt;&gt; Do you know whether it is possible? If vtkImageBlend is not the best<br>
&gt;&gt; approach to solve my problem, do you know a better (VTK) approach to<br>
&gt;&gt; it?<br>
&gt;&gt; As a quick and dirty solution, I create a new vtkImageBlend and I<br>
&gt;&gt; attach to it the grayscale image plus all the<br>
&gt;&gt; vtkImageCanvasSource2Dobjects except the one I want to &quot;remove&quot;, it&#39;s<br>
&gt;&gt; working but it&#39;s (obviously) slow with a big image and a big number of<br>
&gt;&gt; objects.<br>
&gt;&gt;<br>
&gt;&gt; cheers,<br>
&gt;&gt; Mauro<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;<br>
&gt;&gt; Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;<br>
&gt;&gt; Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
&gt;&gt;<br>
&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; <a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
&gt;<br>
</div></div></blockquote></div><br></div>