<div dir="ltr">Dear David,<div><br></div><div>the proplem in vtkimageactor wich is complain, after applying your code the same error appear</div><div>any suggesion please</div><div><br></div><div><br></div><div><div>vtk.vtkDICOMImageReader VDR = new vtk.vtkDICOMImageReader();</div>
<div>            VDR.SetDirectoryName(@&quot;G:\Master Degree\DataSet\case2\DICOM\PA1\ST1\SE2&quot;);</div><div>            VDR.SetDataOrigin(0, 0, 0);</div><div>            VDR.Update();</div><div><br></div><div>            vtkImageShiftScale ss = new vtkImageShiftScale();</div>
<div>            ss.SetOutputScalarTypeToUnsignedChar();</div><div>                 ss.SetInputConnection(VDR.GetOutputPort());</div><div>                ss.Update();</div><div><br></div><div>            // decrease the dataset data for large data preprocessing </div>
<div><br></div><div>            vtkImageShrink3D VIS = new vtkImageShrink3D();</div><div>            VIS.SetShrinkFactors(2, 2, 2);</div><div>            VIS.SetInputConnection(ss.GetOutputPort());</div><div>            VIS.Update();</div>
<div><br></div><div>            vtkImageThreshold VIT = new vtkImageThreshold();</div><div>            VIT.ThresholdBetween(200, 2000);</div><div>            VIT.SetInputConnection(VIS.GetOutputPort());</div><div>            VIT.Update();</div>
<div><br></div><div>            ///// Start the creation of volume rendering </div><div><br></div><div>            //1. Gget the range of data </div><div>            vtk.vtkImageChangeInformation VIC = new vtk.vtkImageChangeInformation();</div>
<div>            VIC.SetInput(VDR.GetOutput());</div><div>            VIC.CenterImageOn();</div><div>            VIC.Update();</div><div><br></div><div>            vtk.vtkImageData VoxelData = new vtk.vtkImageData();</div>
<div>            VoxelData = VIC.GetOutput();</div><div>            VoxelData.AllocateScalars();</div><div><br></div><div>            vtkImageActor imageActor = new vtkImageActor();</div><div>            imageActor.SetInput(VoxelData);</div>
<div><br></div><div>            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</div><div>            // Create the RenderWindow, Renderer and both Actors</div>
<div>            //</div><div>            vtkRenderer ren1 = new vtkRenderer();</div><div>            vtkRenderWindow renWin = new vtkRenderWindow();</div><div>            renWin.AddRenderer(ren1);</div><div>            vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();</div>
<div>            iren.SetRenderWindow(renWin);</div><div><br></div><div>            // Add the actors to the renderer, set the background and size</div><div>            //</div><div>            ren1.AddActor(imageActor);</div>
<div>            ren1.SetBackground(.1, .2, .4);</div><div><br></div><div><br></div><div><br></div><div>            ren1.ResetCamera();</div><div>            ren1.ResetCameraClippingRange();</div><div><br></div><div>            renWin.Render();</div>
<div><br></div><div><br></div><br><div class="gmail_quote">On Sun, Mar 7, 2010 at 10:25 PM, David Feng <span dir="ltr">&lt;<a href="mailto:d.feng1@gmail.com">d.feng1@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;">
I&#39;m assuming it&#39;s the vtkImageShrink3D filter that&#39;s complaining.  I&#39;m<br>
surprised it only handles unsigned chars.  vtkImageShiftScale will<br>
convert from one type to another:<br>
<br>
vtkImageShiftScale ss = vtk.vtkImageShiftScale()<br>
ss.SetOutputScalarTypeToUnsignedChar()<br>
ss.SetInputConnection(VDR.GetOutputPort())<br>
ss.Update()<br>
<br>
vtkImageResample might be able to do the resampling you need without<br>
the unsigned char restriction.  Not sure though.<br>
<br>
David<br>
<div><div></div><div class="h5"><br>
On Sun, Mar 7, 2010 at 2:21 PM, Ali Habib &lt;<a href="mailto:ali.mahmoud.habib@gmail.com">ali.mahmoud.habib@gmail.com</a>&gt; wrote:<br>
&gt; Dear All,<br>
&gt; I read DICOm data to VTK image data and display it but it give error that<br>
&gt; &quot;this filter requires unsigned char scalar &quot; I want to convert the data to<br>
&gt; unsigned char<br>
&gt; the code use:<br>
&gt;             vtk.vtkDICOMImageReader VDR = new vtk.vtkDICOMImageReader();<br>
&gt;             VDR.SetDirectoryName(@&quot;G:\Master<br>
&gt; Degree\DataSet\case2\DICOM\PA1\ST1\SE2&quot;);<br>
&gt;             VDR.SetDataOrigin(0, 0, 0);<br>
&gt;             VDR.Update();<br>
&gt;             // decrease the dataset data for large data preprocessing<br>
&gt;             vtkImageShrink3D VIS = new vtkImageShrink3D();<br>
&gt;             VIS.SetShrinkFactors(2, 2, 2);<br>
&gt;             VIS.SetInputConnection(VDR.GetOutputPort());<br>
&gt;             VIS.Update();<br>
&gt;             vtkImageThreshold VIT = new vtkImageThreshold();<br>
&gt;             VIT.ThresholdBetween(200, 2000);<br>
&gt;             VIT.SetInputConnection(VIS.GetOutputPort());<br>
&gt;             VIT.Update();<br>
&gt;             ///// Start the creation of volume rendering<br>
&gt;             //1. Gget the range of data<br>
&gt;             vtk.vtkImageChangeInformation VIC = new<br>
&gt; vtk.vtkImageChangeInformation();<br>
&gt;             VIC.SetInput(VDR.GetOutput());<br>
&gt;             VIC.CenterImageOn();<br>
&gt;             VIC.Update();<br>
&gt;             vtk.vtkImageData VoxelData = new vtk.vtkImageData();<br>
&gt;             VoxelData = VIC.GetOutput();<br>
&gt;             VoxelData.AllocateScalars();<br>
&gt;             vtkImageActor imageActor = new vtkImageActor();<br>
&gt;             imageActor.SetInput(VoxelData);<br>
&gt;<br>
&gt;  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br>
&gt;             // Create the RenderWindow, Renderer and both Actors<br>
&gt;             //<br>
&gt;             vtkRenderer ren1 = new vtkRenderer();<br>
&gt;             vtkRenderWindow renWin = new vtkRenderWindow();<br>
&gt;             renWin.AddRenderer(ren1);<br>
&gt;             vtkRenderWindowInteractor iren = new<br>
&gt; vtkRenderWindowInteractor();<br>
&gt;             iren.SetRenderWindow(renWin);<br>
&gt;             // Add the actors to the renderer, set the background and size<br>
&gt;             //<br>
&gt;             ren1.AddActor(imageActor);<br>
&gt;             ren1.SetBackground(.1, .2, .4);<br>
&gt;<br>
&gt;<br>
&gt;             ren1.ResetCamera();<br>
&gt;             ren1.ResetCameraClippingRange();<br>
&gt;             renWin.Render();<br>
&gt; Best regards<br>
&gt;<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;<br>
&gt; Visit other Kitware open-source projects at<br>
&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;<br>
&gt; Please keep messages on-topic and check the VTK FAQ at:<br>
&gt; <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
&gt;<br>
&gt; Follow this link to subscribe/unsubscribe:<br>
&gt; <a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
&gt;<br>
&gt;<br>
<font color="#888888"><br>
<br>
<br>
--<br>
<a href="http://www.cs.unc.edu/~dfeng" target="_blank">http://www.cs.unc.edu/~dfeng</a><br>
</font></blockquote></div><br></div></div>