- vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
- viewer->SetColorLevel (0.5 * (range[1] + range[0]));
- viewer->SetColorWindow (range[1] - range[0]);
-
+
+ // For a single medical image, it would be more efficient to use
+ // 0028|1050 [DS] [Window Center]
+ // 0028|1051 [DS] [Window Width]
+ // but vtkgdcmReader doesn't know about them :-(
+
+ if( reader->GetOutput()->GetNumberOfScalarComponents() == 1 )
+ {
+ vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
+ viewer->SetColorLevel (0.5 * (range[1] + range[0]));
+ viewer->SetColorWindow (range[1] - range[0]);
+ }