[vtkusers] [vtk-developers] Bug in vtkImageMapToColors

David Gobbi david.gobbi at gmail.com
Sat May 7 17:25:47 EDT 2011


The only way that I know of is to get the range directly from the scalars,

double range[2];
data->GetPointData()->GetScalars()->GetRange(range, component);

Personally, I would not be opposed to changing vtkDataSet::ComputeRange()
so that it computed the range over all components.

  David


On Sat, May 7, 2011 at 1:37 PM, Nicolas Rannou
<Nicolas_Rannou at hms.harvard.edu> wrote:
> Hi David,
>
> Thanks for the clarification.
> Which is the best practice to get the scalar range of each component then?
>
>
> On May 6, 2011, at 5:53 PM, David Gobbi wrote:
>
>> Hi Nicolas,
>>
>> The GetScalarRange() method computes the scalar range of the first component.
>>
>> - David
>>
>>
>> On Fri, May 6, 2011 at 3:00 PM, Nicolas Rannou
>> <nicolas_rannou at hms.harvard.edu> wrote:
>>> Hello,
>>>
>>> I'm experiencing a strange behavior in VTK which might be a bug.
>>> It took me a while to locate the issue:
>>>
>>> if I create a LUT with a NULL red component:
>>>   iRed = 0;
>>>   iGreen = 255;
>>>   iBlue = 255;
>>>   iAlpha = 255;
>>>   double iRange[2] = {0, 255};
>>>
>>>   vtkSmartPointer<vtkLookupTable> lut =
>>>       vtkSmartPointer<vtkLookupTable>::New();
>>>   double* HSV = vtkMath::RGBToHSV(iRed,iGreen,iBlue);
>>>   lut->SetAlpha(iAlpha);
>>>   lut->SetHueRange(HSV[0], HSV[0]);
>>>   lut->SetSaturationRange(1, 1);
>>>   lut->SetValueRange(0, 1);
>>>   lut->SetRange(iRange);
>>>   lut->Build();
>>>
>>> I color my image with this LUT:
>>>
>>>   vtkSmartPointer<vtkImageMapToColors> coloredImage =
>>>       vtkSmartPointer<vtkImageMapToColors>::New();
>>>   coloredImage->SetLookupTable(iLUT);
>>>   coloredImage->SetInput( iImage );
>>>   coloredImage->PassAlphaToOutputOff();
>>>   coloredImage->SetOutputFormatToRGB();
>>>   coloredImage->Update();
>>>
>>> then:
>>>   double* range = coloredImage->GetOutput()->GetScalarRange();
>>> returns [0,0].
>>> then everything I do with this image is messed up...
>>>
>>> If iRed != 0, the scalar range of the "coloredImage" will be correct then my
>>> pipeline is working.
>>>
>>> Am I doing something wrong?
>>>
>>> Thanks,
>>>
>>> Nicolas



More information about the vtkusers mailing list