<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Nov 13, 2014 at 9:35 AM, Vincent32160 <span dir="ltr"><<a href="mailto:vsh@magellium.fr" target="_blank">vsh@magellium.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi David,<br>
I am still trying to unwrapped my cylinder.<br>
Unfortunately I don't get what you mean by "you can select one<br>
"radius" slice for viewing". Should I use a vtkImageViewer2 to do it?<br></blockquote><div><br></div><div>When the cylinder has been unwrapped (via vtkImageReslice and a </div><div>vtkCylindricalTransform), you get a volume where the coordinates</div><div>are (r,theta,z).  So, yes, you could set the orientation of vtkImageViewer2</div><div>so that it extracts slices along the first axis instead of along the third axis.</div><div>Or you could set the OutputExtent of vtkImageReslice so that it only</div><div>produces the single "r" slice that you want.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Another question: I would like also to unwrap cylinder which don't have the<br>
same center as the original cylinder. Is that possible with vtkImageReslice?</blockquote><div><br></div><div>Yes.  Use vtkImageChangeInformation's SetOutputOrigin() method to</div><div>adjust the input image, instead of using CenterImageOn().  This will allow you</div><div>to put the center of the cylinder anywhere you want.   In VTK, the "Origin" of</div><div>the image means the position, in physical coordinates, of the first voxel.  So</div><div>if you know what voxel you want to be at the center of the cylinder, you can</div><div>use algebra to compute how to set the Origin so that the physical coordinates</div><div>of that voxel are (0,0,0).  Drawing diagrams helps.</div><div><br></div><div> - David</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
David Gobbi wrote<br>
> Hi Vincent,<br>
><br>
</span><span class="">> The input to vtkImageReslice should be the original image<br>
> (before either stencil has been applied).  In order for<br>
> vtkImageReslice to do the interpolation properly, it must<br>
> have neighbor voxels for each voxel it extracts.  After it<br>
> has unwrapped the whole cylinder, you can select one<br>
> "radius" slice for viewing.<br>
><br>
> With vtkImageReslice, you _must_ specify what output<br>
> sampling you want.  Use SetOutputSpacing() to set the<br>
> radius, circumferential angle, and longitudinal sample<br>
> spacings.  Also use SetOutputExtent() to set the<br>
> number of samples for each.<br>
><br>
> I may have been wrong about having to invert the<br>
> transform.  Try feeding it in without GetInverse().<br>
><br>
> Also, for the transform to work properly, the input image must<br>
> be centered.  After all, in cylindrical coordinates the assuption<br>
> is that (0,0,0) is at the center of the cylinder.  The filter<br>
> vtkImageChangeInformation can center the image (i.e. put<br>
> vtkImageChangeInformation with CenterImageOn() before<br>
> vtkImageReslice).<br>
><br>
> Good luck,<br>
><br>
>  - David<br>
><br>
><br>
</span>> On Fri, Nov 7, 2014 at 7:29 AM, Vincent32160 &lt;<br>
<br>
> vsh@<br>
<span class=""><br>
> &gt; wrote:<br>
><br>
>> I now have a tube of data. On the right, you see stencilFiltrer2, the<br>
>> result<br>
>> of two vtkROIStencilSource (the first to remove the outer voxels and the<br>
>> second the inner)<br>
</span>>> &lt;<a href="http://vtk.1045678.n5.nabble.com/file/n5729402/output3.png&gt" target="_blank">http://vtk.1045678.n5.nabble.com/file/n5729402/output3.png&gt</a>;<br>
<div><div class="h5">>><br>
>> I try to use vtkCylindricalTransform and vtkImageReslice to unwrap the<br>
>> tube<br>
>> and I don't get the result I want. Could you help?<br>
>><br>
>> //Image Reslice<br>
>> vtkCylindricalTransform * cylTransform = vtkCylindricalTransform::New();<br>
>><br>
>> vtkImageReslice * imageReslice = vtkImageReslice::New();<br>
>> imageReslice->SetInputConnection(stencilFilter2->GetOutputPort());<br>
>> imageReslice->SetResliceTransform(cylTransform->GetInverse());<br>
>> imageReslice->Update();<br>
>><br>
>> // Create volume<br>
>> vtkSmartPointer<br>
> <vtkPiecewiseFunction><br>
>  outputOpacity =<br>
>>         vtkSmartPointer<br>
> <vtkPiecewiseFunction><br>
> ::New();<br>
>> outputOpacity->AddPoint(-1000, 1.0);<br>
>> outputOpacity->AddPoint(3000, 0.0);<br>
>><br>
>> // Create volume mapper<br>
>> vtkVolumeRayCastMapper * imageMapper3d = vtkVolumeRayCastMapper::New();<br>
>> imageMapper3d->SetInputConnection(imageReslice->GetOutputPort());<br>
>> imageMapper3d->SetVolumeRayCastFunction(rayCastFunction);<br>
>><br>
>> // Volume property<br>
>> vtkSmartPointer<br>
> <vtkVolumeProperty><br>
>  outputVolumeProperty =<br>
>>         vtkSmartPointer<br>
> <vtkVolumeProperty><br>
> ::New();<br>
>> outputVolumeProperty->SetScalarOpacity(outputOpacity);<br>
>> outputVolumeProperty->SetInterpolationTypeToLinear();<br>
>> outputVolumeProperty->ShadeOn();<br>
>><br>
>> // Displayed volume<br>
>> vtkSmartPointer<br>
> <vtkVolume><br>
>  extractedVol =<br>
>> vtkSmartPointer<br>
> <vtkVolume><br>
> ::New();<br>
>> extractedVol->SetMapper(imageMapper3d);<br>
>> extractedVol->SetProperty(outputVolumeProperty);<br>
>><br>
>> Thanks<br>
>><br>
>><br>
>> David Gobbi wrote<br>
>> > Hi Vincent,<br>
>> ><br>
>> > Use an opacity transfer function that makes the black voxels<br>
>> transparent.<br>
>> ><br>
>> > You can unwrap the tube by reslicing it through an inverse cylindrical<br>
>> > transformation (e.g. vtkCylindricalTransform and vtkImageReslice).<br>
>> ><br>
>> >  - David<br>
>> ><br>
>> > On Thu, Nov 6, 2014 at 7:05 AM, Vincent32160 &lt;<br>
>><br>
>> > vsh@<br>
>><br>
>> > &gt; wrote:<br>
>> ><br>
>> >> Thanks again David!<br>
>> >><br>
>> >> As I want to keep a volume I chose solution 2.<br>
>> >> I used a volume mapper and the result is pretty good.<br>
>> >> The only problem is that I am not able to remove the black voxels<br>
>> around<br>
>> >> the<br>
>> >> cylinder. (See picture)<br>
>> >> &lt;<a href="http://vtk.1045678.n5.nabble.com/file/n5729393/output2.png&gt" target="_blank">http://vtk.1045678.n5.nabble.com/file/n5729393/output2.png&gt</a>;<br>
>> >><br>
>> >> The next step of my approach is to be able to keep only the voxels on<br>
>> the<br>
>> >> edges (meaning on a tube or hollow cylinder of 1-voxel thickness). And<br>
>> >> after<br>
>> >> that I would like to unfold the tube and have a flat surface of<br>
>> pixels.<br>
>> >> Let me know if you think that it is better to create a new thread for<br>
>> >> these<br>
>> >> two next steps.<br>
>> >><br>
>> >> Thanks for your help.<br>
>> >><br>
>> >> Vincent<br>
>> >><br>
>> >><br>
>> >><br>
>> >><br>
>> >> --<br>
>> >> View this message in context:<br>
>> >><br>
>> <a href="http://vtk.1045678.n5.nabble.com/Extract-a-tube-of-data-from-DICOM-series-data-tp5729381p5729393.html" target="_blank">http://vtk.1045678.n5.nabble.com/Extract-a-tube-of-data-from-DICOM-series-data-tp5729381p5729393.html</a><br>
>> >> Sent from the VTK - Users mailing list archive at Nabble.com.<br>
>> >> _______________________________________________<br>
>> >> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
>> >><br>
>> >> Visit other Kitware open-source projects at<br>
>> >> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>> >><br>
>> >> Please keep messages on-topic and check the VTK FAQ at:<br>
>> >> <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
>> >><br>
>> >> Follow this link to subscribe/unsubscribe:<br>
>> >> <a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
>> >><br>
>> ><br>
>> > _______________________________________________<br>
>> > Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
>> ><br>
>> > Visit other Kitware open-source projects at<br>
>> > <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>> ><br>
>> > Please keep messages on-topic and check the VTK FAQ at:<br>
>> > <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
>> ><br>
>> > Follow this link to subscribe/unsubscribe:<br>
>> > <a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> --<br>
>> View this message in context:<br>
>> <a href="http://vtk.1045678.n5.nabble.com/Extract-a-tube-of-data-from-DICOM-series-data-tp5729381p5729402.html" target="_blank">http://vtk.1045678.n5.nabble.com/Extract-a-tube-of-data-from-DICOM-series-data-tp5729381p5729402.html</a><br>
>> Sent from the VTK - Users mailing list archive at Nabble.com.<br>
>> _______________________________________________<br>
>> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
>><br>
>> Visit other Kitware open-source projects at<br>
>> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>><br>
>> Please keep messages on-topic and check the VTK FAQ at:<br>
>> <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
>><br>
>> Follow this link to subscribe/unsubscribe:<br>
>> <a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
>><br>
><br>
> _______________________________________________<br>
> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
><br>
> Visit other Kitware open-source projects at<br>
> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
><br>
> Please keep messages on-topic and check the VTK FAQ at:<br>
> <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
><br>
> Follow this link to subscribe/unsubscribe:<br>
> <a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
<br>
<br>
<br>
<br>
<br>
--<br>
</div></div>View this message in context: <a href="http://vtk.1045678.n5.nabble.com/Extract-a-tube-of-data-from-DICOM-series-data-tp5729381p5729459.html" target="_blank">http://vtk.1045678.n5.nabble.com/Extract-a-tube-of-data-from-DICOM-series-data-tp5729381p5729459.html</a><br>
<div class="HOEnZb"><div class="h5">Sent from the VTK - Users mailing list archive at Nabble.com.<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
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>
<br>
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>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
</div></div></blockquote></div><br></div></div>