[Insight-users] VTKImageImport - Input Components Mayhem

Christian Werner christian.werner at rwth-aachen.de
Tue Feb 16 03:24:01 EST 2010


Hi Luis!

I am instatiating according to what I get from

vtkInput->GetDataDimension();
vtkInput->GetScalarTypeAsString();

and (DIM is a template parameter)

    if (strcmp("unsigned char", scalarTypeString) == 0) {
    typedef itk::Image<unsigned char, DIM>    InputType;
    return applyConversion<InputType>(vtkOutImage);   //return vtkImageData*
    ...

and then I call my templated conversion functions, which instantias the 
Importer:

template <typename InputType>
applyConversion(vtkImageData* vtkSourceImage)
{
    //vtkErrorMacro(<<"Applying Conversion...");

    typedef itk::VTKImageImport<InputType>     ImageImportType;
    typename ImageImportType::Pointer itkImporter;
    itkImporter = ImageImportType::New();
   
    vtkImageExport* vtkExporter = vtkImageExport::New();
    vtkExporter->SetInput( vtkSourceImage) );
   ...ConnectPipelines...
}

=>corrupted ITK image or

(ERROR: VTKImageImport(0x22900f0): Input number of components is 3 but
should be 1)

 if I do not set the number of scalar components to 1.
   

 So I don't really have any influence here. Is there some information 
that I am missing? Aren't the number of components passed by the 
SetNumberOfComponentsCallback(...) in the ConnectPipelines?

Best regards,
Christian



Luis Ibanez wrote:
> Hi Christian,
>
> Does your image actually has 3 components ?
>
> Are you instantiating the ITK image with a pixel
> type that has 3 components ?
>
> The typedef for the ITK image was not included
> in your email.
>
>
>     Please let us know,
>
>
>            Thanks
>
>
>                Luis
>
>
> ----------------------------------------------------
> On Mon, Feb 15, 2010 at 4:04 PM, Christian Werner
> <christian.werner at rwth-aachen.de> wrote:
>   
>> Hello!
>>
>> At first I want to thank Arunachalam and Wagner for their responses on my
>> last thread, thanks! :-) I finally managed to implement my vtk2itk2vtk
>> templated super-class. It works with one little flaw:
>>
>> I have to SetNumberOfScalarComponents my vtkImageData to 1 before going
>> through the whole conversion loop...
>> (ERROR: VTKImageImport(0x22900f0): Input number of components is 3 but
>> should be 1)
>>
>> This is bad, because the image content is clearly corrupted that way. It
>> goes well through my vtk2itk2vtk and I can save a result vtk image, but this
>> is distorted, as I fiddled around with these scalar components. Also the ITK
>> filters I want to use on my import complain about
>>
>> ERROR: In /opt/ParaView3/VTK/Filtering/vtkImageData.cxx, line 1473
>> vtkImageData (0x228afd0): GetScalarPointer: Pixel (0, 0, 0) not in memory.
>> Current extent= (0, -1, 0, -1, 0, 0)
>>
>>
>> This is how my pipelines connect:
>>
>> template <typename VTK_Exporter, typename ITK_Importer>
>> void ConnectPipelines(VTK_Exporter* exporter, ITK_Importer importer)
>> {
>>  importer->SetUpdateInformationCallback(exporter->GetUpdateInformationCallback());
>>  importer->SetPipelineModifiedCallback(exporter->GetPipelineModifiedCallback());
>>  importer->SetWholeExtentCallback(exporter->GetWholeExtentCallback());
>>  importer->SetSpacingCallback(exporter->GetSpacingCallback());
>>  importer->SetOriginCallback(exporter->GetOriginCallback());
>>  importer->SetScalarTypeCallback(exporter->GetScalarTypeCallback());
>>  importer->SetNumberOfComponentsCallback(exporter->GetNumberOfComponentsCallback());
>>  importer->SetPropagateUpdateExtentCallback(exporter->GetPropagateUpdateExtentCallback());
>>  importer->SetUpdateDataCallback(exporter->GetUpdateDataCallback());
>>  importer->SetDataExtentCallback(exporter->GetDataExtentCallback());
>>  importer->SetBufferPointerCallback(exporter->GetBufferPointerCallback());
>>  importer->SetCallbackUserData(exporter->GetCallbackUserData());
>> }
>>
>> I hope this can easily be fixed as I am so happy that after working the
>> whole day on that vtk2itk2vtk stuff I finally got a vtk image that goes
>> through this conversion jungle. How can it be equipped to survive this
>> adventure undistorted?
>>
>>
>> Best regards,
>> Christian
>> _____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.html
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-users
>>
>>     



More information about the Insight-users mailing list