@@ -26,6 +26,22 @@ export type ImageStats = {
2626 autoRangeValues ?: Record < string , [ number , number ] > ;
2727} ;
2828
29+ function getOverallRange ( scalars : vtkDataArray ) {
30+ const numberOfComponents = scalars . getNumberOfComponents ( ) ;
31+
32+ // slice off magnitude range if present.
33+ const ranges = scalars . getRanges ( false ) . slice ( 0 , numberOfComponents ) ;
34+
35+ const min = ranges
36+ . map ( ( range ) => range . min )
37+ . reduce ( ( acc , val ) => Math . min ( acc , val ) , Infinity ) ;
38+ const max = ranges
39+ . map ( ( range ) => range . max )
40+ . reduce ( ( acc , val ) => Math . max ( acc , val ) , - Infinity ) ;
41+
42+ return { min, max } ;
43+ }
44+
2945async function computeAutoRangeValues ( imageData : vtkImageData ) {
3046 const scalars = imageData . getPointData ( ) ?. getScalars ( ) ;
3147 if ( ! scalars ) {
@@ -38,8 +54,8 @@ async function computeAutoRangeValues(imageData: vtkImageData) {
3854 } )
3955 ) ;
4056
57+ const { min, max } = getOverallRange ( scalars ) ;
4158 const scalarData = scalars . getData ( ) as number [ ] ;
42- const { min, max } = vtkDataArray . fastComputeRange ( scalarData , 0 , 1 ) ;
4359 const hist = await worker . histogram ( scalarData , [ min , max ] , WL_HIST_BINS ) ;
4460 worker [ Comlink . releaseProxy ] ( ) ;
4561
0 commit comments