Hey ANka,<br><br>Maybe my intial attempt at vtkImageMapToWindowLevelColor objects was wrong.<br><br>I have a question to you about the look up table. In your code:<br><pre>m_displayWindowLevelColorsImage-&gt;SetInput(m_displayImage-&gt;GetOutput());       
<br>m_displayWindowLevelColorsImage-&gt;SetLookupTable(lut);<br>m_displayWindowLevelColorsImage-&gt;SetWindow(m_win_level[0]*scale);<br>m_displayWindowLevelColorsImage-&gt;SetLevel(m_win_level[1]*scale);<br><br>My input data is of type unsigned short and the data intensity values vary from 1000 to 20000.
<br><br>Now, I want to present the user with this window and to be able to set the width of this intensity window. <br>The filter will change the scalar type to unsigned char. I am wondering how I should generate this look up
<br>table so that it will cover my data.<br></pre>Thanks,<br><br>Luca<br><br><div><span class="gmail_quote">On 4/17/07, <b class="gmail_sendername">Anka Kochanowska</b> &lt;<a href="mailto:anka@bic.mni.mcgill.ca">anka@bic.mni.mcgill.ca
</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Ok, here is a part of my real program.<br>I would send you the whole class, but cannot do it without my boss&#39;
<br>approval.<br>Anka<br><br>&nbsp;&nbsp;&nbsp;&nbsp;vtkSmartPointer&lt;vtkImageReslice&gt; m_reslice;<br>...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_reslice-&gt;SetInput( m_imageData );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_reslice-&gt;SetInterpolationModeToLinear( );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_reslice-&gt;SetOutputExtent(0, 639, 0, 479, 0, 1);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_reslice-&gt;SetOutputOrigin(0, 0, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_reslice-&gt;SetOutputDimensionality(2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_reslice-&gt;SetOutputSpacing(1,1,1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_reslice-&gt;SetResliceTransform( concat );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_reslice-&gt;UpdateInformation();
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_displayImage = vtkSmartPointer&lt;vtkImageShiftScale&gt;::New();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_displayImage-&gt;SetInput(m_reslice-&gt;GetOutput());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_displayImage-&gt;SetScale(scale);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_displayImage-&gt;SetOutputScalarTypeToUnsignedChar();
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_displayWindowLevelColorsImage =<br>vtkSmartPointer&lt;vtkImageMapToWindowLevelColors&gt;::New();<br><br>m_displayWindowLevelColorsImage-&gt;SetInput(m_displayImage-&gt;GetOutput());<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_displayWindowLevelColorsImage-&gt;SetLookupTable(lut);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_displayWindowLevelColorsImage-&gt;SetWindow(m_win_level[0]*scale);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_displayWindowLevelColorsImage-&gt;SetLevel(m_win_level[1]*scale);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_mriActor-&gt;SetInput(m_displayWindowLevelColorsImage-&gt;GetOutput());
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_mriRenderer-&gt;AddViewProp( m_mriActor );<br><br>m_mriOutlineFilter-&gt;SetInput(m_displayWindowLevelColorsImage-&gt;GetOutput());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_mriOutlineMapper-&gt;SetInput( m_usOutlineFilter-&gt;GetOutput() );
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_mriRenderer-&gt;AddViewProp( m_mriOutlineActor );<br><br><br>Luca Pamparana wrote:<br><br>&gt; Hey Anka,<br>&gt;<br>&gt; Thanks again for the reply.<br>&gt;<br>&gt; The thing is that I am using the reslicer to extract a 2D slice and
<br>&gt; just display that. All the interpolation, orientation, which slice to<br>&gt; extract etc. is controlled by the reslicer.<br>&gt;<br>&gt; The vtkImageActor seems to have its own corresponding methods for<br>&gt; these operations. I am wondering if these can coexist... Only one way
<br>&gt; to find out, I guess! Time for try some quick hack...<br>&gt;<br>&gt; Thanks,<br>&gt; Luca.<br>&gt;<br>&gt; On 4/17/07, *Anka Kochanowska* &lt; <a href="mailto:anka@bic.mni.mcgill.ca">anka@bic.mni.mcgill.ca</a><br>
&gt; &lt;mailto:<a href="mailto:anka@bic.mni.mcgill.ca">anka@bic.mni.mcgill.ca</a>&gt;&gt; wrote:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; I am using vtkImageActor:<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkImageActor * mriActor;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; ...
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; ...<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blendedImage-&gt;AddInput( 0, img1-&gt;GetOutput());<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blendedImage-&gt;AddInput( 0,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; .displayWindowLevelColorsImage-&gt;GetOutput());<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blendedImage-&gt;Update();
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mriActor-&gt;SetInput(blendedImage-&gt;GetOutput());<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderer-&gt;AddViewProp( mriActor );<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Anka<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Luca Pamparana wrote:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Hello everyone,
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; I am unable to get the vtkImageMapToWindowLevelColors to give me an<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; output :(<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; My pipeline is as follows:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; // vtkImageData input to a reslicer
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; this-&gt;m_slicer-&gt;SetInput(in);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; // pass the output of the slicer to<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; vtkImageMapToWindowLevelColors object<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; this-&gt;m_windowLevelMapper-&gt;SetInputConnection(this-&gt;m_slicer-&gt;GetOutputPort());
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; // Pipe the output to a vtkImageBlend object<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; this-&gt;m_blender-&gt;AddInputConnection(0,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; this-&gt;m_windowLevelMapper-&gt;GetOutputPort());
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; // Pipe output to a vtkImageMapper. This mapper is tied to the<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Actor2D<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; // object that is added to the renderer<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; this-&gt;m_imageMapper-&gt;SetInput(this-&gt;m_blender-&gt;GetOutput());
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; double * range = in-&gt;GetScalarRange();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; if (range)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // this calls the ciorresponding methods on the<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; vtkImageMapToWindowLevelColors object
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;SetColorWindow(range[1] - range[0]);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;SetColorLevel(0.5 * (range[1] + range[0]));<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;}<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; SetSlice(static_cast&lt;int&gt;((GetWholeZMin() + GetWholeZMax()) * 
0.5));<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; My guess is that I am not setting the ColorWindow and ColorLevel on<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; the vtkImageMapper instance. However, I want to control the color<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; window and color level values independently of the mapper as the
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; vtkImageBlend will also have other inputs that I want to control<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; the<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; window and level values for.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Any help on how I can get this to work is much appreciated.
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Thanks,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Luca<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;------------------------------------------------------------------------<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;_______________________________________________
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;This is the private VTK discussion list.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;Please keep messages on-topic. Check the FAQ at:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a> &lt;<a href="http://www.vtk.org/Wiki/VTK_FAQ">
http://www.vtk.org/Wiki/VTK_FAQ</a>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;Follow this link to subscribe/unsubscribe:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<a href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;<br>&gt;<br>&gt;------------------------------------------------------------------------<br>&gt;<br>&gt;_______________________________________________<br>&gt;This is the private VTK discussion list.
<br>&gt;Please keep messages on-topic. Check the FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br>&gt;Follow this link to subscribe/unsubscribe:<br>&gt;<a href="http://www.vtk.org/mailman/listinfo/vtkusers">
http://www.vtk.org/mailman/listinfo/vtkusers</a><br>&gt;<br>&gt;<br></blockquote></div><br>