[vtkusers] BUG: vtkImageMapToColors does not output with input spacing and origin

Mengda Wu wumengda at gmail.com
Thu Jan 14 10:42:15 EST 2016


I confirm this problem is NOT in vtkImageMapToColors but in
vtkMetaImageWriter.

Thanks a lot for your fix! It works now.

On Wed, Jan 13, 2016 at 1:52 PM, David Gobbi <david.gobbi at gmail.com> wrote:

> I've posted a fix that you can try:
>
> https://gitlab.kitware.com/vtk/vtk/commit/5efcd8d2
>
> On Wed, Jan 13, 2016 at 9:49 AM, David Gobbi <david.gobbi at gmail.com>
> wrote:
>
>> Hi Mengda,
>>
>> If the vtkImageMapToColors was changing the spacing and origin of the
>> images, then many of the nightly VTK tests would be failing, so I was kind
>> of suspicious about this.
>>
>> I tried a few things.
>>
>> 1) First, I ran your program as-is.  And yes, the output .mha file had
>> (1,1,1) spacing.
>>
>> 2) Then, I added imageColor->Update(), and the spacing of the output .mha
>> file was correct:
>>
>>   Spacing: (0.5, 1.12048, 1)
>>   Origin: (10, 20, 0)
>>
>> 3) Then, I removed imageColor->Update(), and replaced the
>> vtkMetaImageWriter with vtkNIFTIImageWriter.  The spacing in the .nii file
>> was correct.
>>
>> 4) Then, I put the vtkMetaImageWriter back, and replaced
>> vtkImageMapToColors with vtkImageCast.  The resulting .mha file had spacing
>> (1,1,1).
>>
>> So this tells me:
>>
>> A) The problem is not specific to vtkImageMapToColors.
>> B) The problem appears to be specific to vtkMetaImageWriter
>> C) The problem goes away if I add an Update() before the writer
>>
>> Mengda, can you confirm this by trying a different image writer?
>>
>>  - David
>>
>>
>> On Wed, Jan 13, 2016 at 8:44 AM, Mengda Wu <wumengda at gmail.com> wrote:
>>
>>> Has anyone tested this bug?
>>>
>>> Thanks!
>>>
>>> On Wed, Jan 6, 2016 at 4:22 PM, Mengda Wu <wumengda at gmail.com> wrote:
>>>
>>>> Hi Vtkusers,
>>>>
>>>>   I found a bug in vtkImageMapToColors. It does not output with input
>>>> spacing and origin. It sets the spacing to [1,1,1] and origin to [0,0,0]. I
>>>> am using VTK 6.2 but I believe it happens also in VTK 7.0. Can you fix
>>>> this? Here is a test program and a sample image (input.mha) and its
>>>> output(input-colormap.mha):
>>>>
>>>>     vtkSmartPointer<vtkMetaImageReader> inputReader =
>>>> vtkSmartPointer<vtkMetaImageReader>::New();
>>>> inputReader->SetFileName(argv[1]);
>>>> try
>>>> {
>>>> inputReader->Update();
>>>> }
>>>> catch(...)
>>>> {
>>>> std::cerr << "Error occurs when reading " << argv[1] << std::endl;
>>>> return EXIT_FAILURE;
>>>> }
>>>>
>>>> vtkSmartPointer<vtkLookupTable> lookupTable =
>>>> vtkSmartPointer<vtkLookupTable>::New();
>>>> lookupTable->SetTableRange(0.0, 255.0);
>>>> lookupTable->SetNumberOfTableValues(256);
>>>> lookupTable->SetTableValue(0, 0.0, 0.0, 0.0, 0.0);
>>>> for(vtkIdType i=1; i<256; i++)
>>>> lookupTable->SetTableValue(i, 1.0, 0.0, 0.0, 0.4);
>>>> lookupTable->Build();
>>>> vtkSmartPointer<vtkImageMapToColors> imageColor =
>>>> vtkSmartPointer<vtkImageMapToColors>::New();
>>>> imageColor->SetInputConnection(inputReader->GetOutputPort());
>>>> imageColor->SetOutputFormatToRGBA();
>>>> imageColor->SetLookupTable(lookupTable);
>>>>
>>>> vtkSmartPointer< vtkMetaImageWriter > writer = vtkSmartPointer<
>>>> vtkMetaImageWriter >::New();
>>>> writer->SetFileName(argv[2]);
>>>> writer->SetInputConnection(imageColor->GetOutputPort());
>>>> try
>>>> {
>>>> writer->Write();
>>>> }
>>>> catch(...)
>>>> {
>>>> std::cerr << "Error occurs when writing " << argv[2] << std::endl;
>>>> return EXIT_FAILURE;
>>>> }
>>>>
>>>> Thanks,
>>>> Mengda
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160114/ad9f83d9/attachment.html>


More information about the vtkusers mailing list