[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