[vtkusers] [vtk-developers] Bug in vtkImageMapToColors
Nicolas Rannou
Nicolas_Rannou at hms.harvard.edu
Mon May 9 14:23:09 EDT 2011
On May 9, 2011, at 1:50 PM, David Gobbi wrote:
> Hi Nicolas,
>
> If you provide the new text that you would like to see in the documentation, I can modify the file and commit the change.
>
> - David
>
>
> On Mon, May 9, 2011 at 11:29 AM, Nicolas Rannou <Nicolas_Rannou at hms.harvard.edu> wrote:
> Thanks David,
>
> yes such a feature to get the scalar range over all the components would be nice.
> Maybe we should also update the documentation (http://www.vtk.org/doc/nightly/html/classvtkDataSet.html#a9c8f06877f41b3e1944f2d10281083a6).
What about:
>
> virtual void vtkDataSet::GetScalarRange ( double range[2] ) [virtual]
> Convenience method to get the range of the scalar data (if there is any scalar data). Returns the (min/max) range of combined point and cell data first component (if the dataset attributes have multiple components). If there are no point or cell scalars the method will return (0,1). Note: Update needs to be called to create the scalars. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED
>
>
>
> To highlight that it computes the scalar range on the first component?
>
> Thanks!
>
> Nicolas
>
> On May 7, 2011, at 5:25 PM, David Gobbi wrote:
>
>> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110509/ec93ef36/attachment.htm>
More information about the vtkusers
mailing list