Skip to content

Commit fc58d26

Browse files
committed
perf(image-stats): use existing ranges for histogram calculation
1 parent 3e32d55 commit fc58d26

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

src/store/image-stats.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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+
2945
async 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

Comments
 (0)