[Insight-users] ITK-VTK image and problems with includes in visual c++ express 2008

Bill Lorensen bill.lorensen at gmail.com
Thu Dec 11 13:17:18 EST 2008


The vtk filters that you ran do not produce a volume. They produce
triangles which represent surfaces.

If you want to produce a thresholded volume, then save the output of
vtkImageThreshold. Set the OutValue to 255 to keep the data within the
range of an unsigned char. The you can use vtk (or itk) to svae the
thresholded volume in PNG files.

However, I still think we do not understand your goals.

Bill


On Thu, Dec 11, 2008 at 1:09 PM, Matthieu Duvinage
<matthieu.duvinage at gmail.com> wrote:
> Hi,
>
> In fact, in the framework of my project, I have to save the volume obtained
> from the different filters (smoothing,...) into PNG files. The purpose is to
> be able to reload the entire volume thanks to the PNG files.
>
> Thank you very much of your answers
>
> Matthieu
> Bill Lorensen a écrit :
>>
>> Matthieu,
>>
>> I agree with Mathieu.
>>
>> What is your end goal?
>>
>> Bill
>>
>> On Thu, Dec 11, 2008 at 10:43 AM, Mathieu Malaterre
>> <mathieu.malaterre at gmail.com> wrote:
>>
>>>
>>> Yes. You need to look into something like : vtkPolyDataToImageStencil
>>> to turn your unstructured data into structured data.
>>>
>>> But I would suggest you think twice about it and then simply give up.
>>> I do not believe this is what you are looking for.
>>>
>>>
>>> On Thu, Dec 11, 2008 at 4:19 PM, Matthieu Duvinage
>>> <matthieu.duvinage at gmail.com> wrote:
>>>
>>>>
>>>> And so, is it impossible to convert the PolyData into the right format
>>>> and
>>>> then save it into PNG files ?
>>>> Even with these functions :
>>>>
>>>> Fonctions:
>>>>
>>>>
>>>>   template<class TOutputImage>
>>>>   class itk::ImageSeriesReader< TOutputImage >
>>>>
>>>>
>>>> Data source that reads image data from a series of disk files.
>>>>
>>>> This class builds an n-dimension image from multiple n-1 dimension image
>>>> files. The files stored in a vector of strings are read using the
>>>> ImageFileReader
>>>> <http://www.itk.org/Doxygen/html/classitk_1_1ImageFileReader.html>. File
>>>> format may vary between the files, but the image data must have the same
>>>> Size <http://www.itk.org/Doxygen/html/classitk_1_1Size.html> for all
>>>> dimensions.
>>>>
>>>>
>>>>   template<class TInputImage, class TOutputImage>
>>>>   class itk::ImageSeriesWriter< TInputImage, TOutputImage >
>>>>
>>>> Writes image data to a series of data files.
>>>>
>>>> ImageSeriesWriter
>>>> <http://www.itk.org/Doxygen/html/classitk_1_1ImageSeriesWriter.html>
>>>> writes
>>>> its input data to a series of output files. The writer is templated over
>>>> an
>>>> input image type and an output image type. Usually, the output image
>>>> type
>>>> will have fewer dimensions than the input image type. Each file has a
>>>> name
>>>> created using the SeriesFormat. This string is used as a sprintf
>>>> argument to
>>>> build a filename. The string should contain zero or one "%d" or
>>>> equivalent.
>>>> The "%d" is an incremental file number that starts at StartIndex and is
>>>> incremented by IncrementIndex. Since this writer uses an internal
>>>> instance
>>>> of an ImageFileWriter
>>>> <http://www.itk.org/Doxygen/html/classitk_1_1ImageFileWriter.html>, the
>>>> type
>>>> of file is determined by either the file extension or an ImageIO class
>>>> if
>>>> specified.
>>>>
>>>> Thanks
>>>>
>>>> Matthieu
>>>>
>>>>
>>>> Bill Lorensen a écrit :
>>>>
>>>>>
>>>>> PolyData cannot be written into a series of PNG files. PNG files and
>>>>> other image types can only contain image data (pixels).
>>>>>
>>>>> Neither VTK nor ITK support this.
>>>>>
>>>>> On Thu, Dec 11, 2008 at 9:19 AM, Matthieu Duvinage
>>>>> <matthieu.duvinage at gmail.com> wrote:
>>>>>
>>>>>
>>>>>>
>>>>>> Hello everybody,
>>>>>>
>>>>>> I'm working on a project in the medical field and I'm using VTK.
>>>>>> However,
>>>>>> the last module I have to create seems to be provided only by ITK. In
>>>>>> fact,
>>>>>> I have to transform a volume in a series of PNG files and the
>>>>>> ImageSeriesWriter class seems to be devoted to that.
>>>>>>
>>>>>> 1) I have compiled the library with CMake and then done the build all
>>>>>> and
>>>>>> install process. I put the repertories in includes and librairies in
>>>>>> visual
>>>>>> studio express 2008 but I have a problem. The program says that the
>>>>>> file
>>>>>> I
>>>>>> have to import is not in the directory whereas it is but in a deeper
>>>>>> directory. I have again this problem when I put the deeper directory
>>>>>> in
>>>>>> the
>>>>>> include directories with another file. Is it possible to enable an
>>>>>> option
>>>>>> in
>>>>>> visual to force it to look in deeper directories ?
>>>>>> 2) I would like to use the  normals image (see below) from a VTK class
>>>>>> to
>>>>>> use ImageSeriesWriter. Could you give me an example of how to use that
>>>>>> ?
>>>>>> Because I'm a bit lost with all the classes and the principle of
>>>>>> pipeline. I
>>>>>> have seen that there exist VTKimport or export classes to do something
>>>>>> in
>>>>>> this case but how do I have to do ?
>>>>>>
>>>>>> I hope I hear from you soon
>>>>>>
>>>>>>
>>>>>> Matthieu
>>>>>>
>>>>>>
>>>>>> vtkImageThreshold *mon_tre = vtkImageThreshold::New();
>>>>>>  mon_tre->SetInput(Vol->GetOutput());
>>>>>>  mon_tre->ThresholdByUpper(1300);
>>>>>>  mon_tre->SetInValue(0);
>>>>>>  mon_tre->SetOutValue(3000);
>>>>>>  //mon_tre->ReplaceOutOff();
>>>>>>  //mon_tre->ReplaceInOn();
>>>>>>  mon_tre->Update();
>>>>>>  vtkContourFilter *contours = vtkContourFilter::New();
>>>>>>  contours->SetInput(mon_tre->GetOutput());
>>>>>>  contours->SetValue(1,3000);
>>>>>>
>>>>>>  //marsh cube
>>>>>>  // Iso-surface using marching cubes
>>>>>>  vtkMarchingCubes* iso = vtkMarchingCubes::New();
>>>>>>  iso->SetInput(mon_tre->GetOutput());
>>>>>>  iso->SetValue(1,3000); // Surface #0, iso-value=1
>>>>>>  //Decimation
>>>>>>  vtkDecimatePro* decimate=vtkDecimatePro::New();
>>>>>>  decimate->SetInput(iso->GetOutput());
>>>>>>  decimate->SetTargetReduction(0.9);
>>>>>>  decimate->PreserveTopologyOn();
>>>>>>  decimate->SetMaximumError(0.0002);
>>>>>>
>>>>>>
>>>>>>  // Smoothing
>>>>>>  vtkSmoothPolyDataFilter* smoother =vtkSmoothPolyDataFilter::New();
>>>>>>  smoother->SetInput(iso->GetOutput());
>>>>>>  smoother->SetNumberOfIterations(200);
>>>>>>  smoother->SetRelaxationFactor(0.05);
>>>>>>  //smoother->FeatureEdgeSmoothingOn();
>>>>>>  //smoother->BoundarySmoothingOn();
>>>>>>
>>>>>>  vtkPolyDataNormals *normals=vtkPolyDataNormals::New();
>>>>>>  normals->SetInput(smoother->GetOutput());
>>>>>> _______________________________________________
>>>>>> Insight-users mailing list
>>>>>> Insight-users at itk.org
>>>>>> http://www.itk.org/mailman/listinfo/insight-users
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Insight-users mailing list
>>>> Insight-users at itk.org
>>>> http://www.itk.org/mailman/listinfo/insight-users
>>>>
>>>>
>>>
>>> --
>>> Mathieu
>>>
>>>
>>
>>
>
>


More information about the Insight-users mailing list