[vtkusers] BUG: vtkImageMapToColors does not output with input spacing and origin
David Gobbi
david.gobbi at gmail.com
Wed Jan 13 11:49:59 EST 2016
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/20160113/58b84924/attachment.html>
More information about the vtkusers
mailing list