[Insight-users] vtk polydata import / export
imho
imho at bephp . com
Fri, 18 Jul 2003 18:17:22 +0200
Hi Luis,
I don't understand, I've found the imageViewer where you said.
I've a too old version I guess.
what I'm trying to do is a registration between a liver reconstructed
from slices and a "live liver", who will be digitalised (I don't know
how already) in the chirurgical room.
But I've to simulate this live digitalisation, so I load a polyData
saved before, and deform it a bit.
I don't know the structure that will have the digitalised one, but I can
have the reconstructed one as imageData (originally) and polyData.
I already do a point-based registration and a ICP registration with
these two polyData (with vtk, using vtkLandmarkTransform, vtkTransform,
vtkTransformPolyDataFilter and vtkIterativeClosestPointTransform)
So I've first preferably continued using polyData, but I guess I can
change all of this to imageData?
I'll look in this way.
Thanks
Imho.
Luis Ibanez wrote:
>
> Hi Imho,
>
> The viewer that you may want to use is the one in
>
> InsightApplications/ImageViewer/
>
> It doesn't reguire GLUT, it does require FLTK.
>
> ---
>
> The conversion from vtkPolyData to vtkImage is natually
> a slow process, you are generating a volume from a
> surface. You don't want to do this each time.
> Simply write a separate program that do the conversion
> and save the images in files. Then use the images
> for running the Demons registration process.
>
>
>
> Question: How did you get this vtkPolyData models
> of the liver ?
>
>
> Presumably you got them from a segmentation of actual
> volumetric data....
>
> If this is the case, you better use this original volumetric
> data for performing the Demons registration, instead of
> going the long way through a geometrical model.
>
> Demons is based on a concept of optical flow, its precision
> will be in the order of one-pixel, assuming that the gradients
> in the image borders have profiles with linear sections.
>
>
> Regards,
>
>
> Luis
>
>
>
> --------------
> imho wrote:
>
>> Hi all,
>> I have finally compiled it with the glut stuff but I have nothing at
>> the execution on windows...
>> (no message, nothing)
>>
>> Anyway, I'll try to resolve my pipe-line problem, and if I find out
>> I'll let you know.
>> But the conversion vtkPolyData -> vtkImageData with the
>> vtkImplicitModeller is so slow (and I've two models to convert), I
>> don't know if the demons algorithm in ITK will be enough accurate.
>>
>> Is there any other way to do a connection vtk-itk-vtk?
>>
>> Thanks for your help.
>>
>> Mathieu Malaterre wrote:
>>
>>> You'll find the file here:
>>>
>>> http://public . kitware . com/cgi-bin/cvsweb . cgi/Insight/Utilities/GlutMaster/Attic/?cvsroot=Insight
>>>
>>> But as you can see this is no longer supported.
>>>
>>> HTH
>>> mathieu
>>>
>>> imho wrote:
>>>
>>>> Hi Luis,
>>>> I have a linking error
>>>>
>>>> "
>>>> Compiling...
>>>> itkImageViewer.cxx
>>>> C:\itk\itksrc\Code\IO\itkImageViewerWindow.h(23) : fatal error
>>>> C1083: Cannot open include file: 'itkGlutMaster.h': No such file or
>>>> directory
>>>> Error executing cl.exe.
>>>>
>>>> NewProject.exe - 1 error(s), 0 warning(s)
>>>> "
>>>> and I cant' find this in my itk folders.
>>>>
>>>> So if the image files were corrupted, I have a problem with the
>>>> vtkExport ---> itkImport or I've writed the files badly.
>>>> The conversion polyData->ImageData->polyData in VTK is OK witout
>>>> the connection to itk.
>>>> the files :
>>>> vtk stuff
>>>> "
>>>> polyToImage->SetInput(poly[0]); // implicitModeller to do a
>>>> polyData -> ImageData conversion
>>>> polyLiveToImage->SetInput(polyLive);
>>>> polyToImage->SetSampleDimensions(10, 10, 10);
>>>> polyToImage->SetMaximumDistance(0.25);
>>>> // polyToImage->SetModelBounds(poly[0]->GetBounds());
>>>> polyLiveToImage->SetSampleDimensions(10, 10, 10);
>>>> // polyLiveToImage->SetSampleDimensions(110, 40, 20);
>>>> polyLiveToImage->SetMaximumDistance(0.25);
>>>> // polyLiveToImage->SetModelBounds(polyLive->GetBounds());
>>>> imageModel = polyToImage->GetOutput(); // getting the
>>>> ImageData
>>>> imageModelLive = polyLiveToImage->GetOutput();
>>>> vtkExporter4->SetInput(imageModel);
>>>> vtkExporter5->SetInput(imageModelLive);
>>>>
>>>> regITK = new registrationITK(vtkImporter4, vtkExporter4,
>>>> vtkExporter5);
>>>>
>>>> cast->SetInput(vtkImporter4->GetOutput());
>>>> castTo3D->SetInput(vtkImporter4->GetOutput());
>>>>
>>>> isRegITK = true;
>>>>
>>>> "
>>>>
>>>> itk stuff
>>>> in registrationITK.h
>>>> "
>>>> ...
>>>> typedef float PixelType;
>>>> typedef itk::Image<PixelType, Dimension> ImageType;
>>>>
>>>> typedef itk::VTKImageImport<ImageType> ImageImportType;
>>>> typedef itk::VTKImageImport<InternalImageType> ImageImportType2;
>>>> typedef itk::VTKImageExport<ImageType> ImageExportType;
>>>> typedef itk::ImageFileWriter<ImageType> ImageWriter;
>>>>
>>>> private :
>>>>
>>>>
>>>> ImageImportType::Pointer itkImporter;
>>>> ImageImportType::Pointer itkImporter2;
>>>> ImageExportType::Pointer itkExporter;
>>>> ImageWriter::Pointer writerITK;
>>>>
>>>> };
>>>> "
>>>> in itkRegistration.cpp
>>>> "
>>>> registrationITK::registrationITK(vtkImageImport* vtkImporter,
>>>> vtkImageExport *vtkExporter, vtkImageExport *vtkExporter2)
>>>> { itkImporter = ImageImportType::New();
>>>> itkImporter2 = ImageImportType::New();
>>>> itkExporter = ImageExportType::New();
>>>> writerITK = ImageWriter::New();
>>>>
>>>> itkExporter->SetInput(itkImporter->GetOutput());
>>>>
>>>> ConnectPipelines(vtkExporter, itkImporter);
>>>> ConnectPipelines(vtkExporter2, itkImporter2);
>>>> ConnectPipelines(itkExporter, vtkImporter);
>>>> itkImporter->Update();
>>>> itkImporter2->Update();
>>>> itkExporter->Update();
>>>> writerITK->SetFileName("test_itk_write.vtk");
>>>> itk::VTKImageIO::Pointer vtkWriter = itk::VTKImageIO::New();
>>>> vtkWriter->SetFileName( "LOCAL" );
>>>> vtkWriter->SetFileTypeToBinary();
>>>>
>>>> writerITK->SetImageIO( vtkWriter );
>>>> writerITK->SetInput(itkImporter->GetOutput());
>>>> writerITK->Update();
>>>> }
>>>> "
>>>> What could I try?
>>>>
>>>> Thanks
>>>>
>>>>
>>>>
>>>> Luis Ibanez wrote:
>>>>
>>>>>
>>>>> Hi Imho,
>>>>>
>>>>> If you want to read the vtk image using VTK reader
>>>>> you may try the following reader.
>>>>> http://www . vtk . org/doc/nightly/html/classvtkDataSetReader . html
>>>>>
>>>>> I tried both image that you send, and they appear to be
>>>>> corrupted.
>>>>>
>>>>> What error did you encounter while building the viewer ?
>>>>>
>>>>> The viewer will help you a lot since with it you can see
>>>>> images in multiple formats: MetaImage, GIPL, Analyze, VTK...
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Luis
>>>>>
>>>>>
>>>>>
>>>>> --------------------
>>>>> imho wrote:
>>>>>
>>>>>> Hi Luis,
>>>>>>
>>>>>> I have saved the data into a .mdh metaImage file, and it has a
>>>>>> non null size.
>>>>>> I've tried to compile the imageViewer but I have a linking error
>>>>>> so I've tried to save it into a VTK format, but I can't open it
>>>>>> with my polyDataReader of course ( ERROR: In
>>>>>> C:\martink\vtk40\VTK\IO\vtkPolyDataReader.cxx, line 167
>>>>>> vtkPolyDataReader (0x057D3900): Cannot read dataset type:
>>>>>> structured_points). But it seems that the importer in itk is ok,
>>>>>> it's the last part of the pipe-line that I've to check out, the
>>>>>> itkExporter->vtkImporter.
>>>>>>
>>>>>> I send you the output files, maybe it could help.
>>>>>>
>>>>>> thanks
>>>>>>
>>>>>>
>>>>>
>>>>> .
>>>>>
>>>>
>>>> _______________________________________________
>>>> Insight-users mailing list
>>>> Insight-users at itk . org
>>>> http://www . itk . org/mailman/listinfo/insight-users
>>>>
>>>
>>>
>>
>>
>
>
>
> .
>