11import * as Comlink from 'comlink' ;
22import { TypedArray } from '@kitware/vtk.js/types' ;
3+ import { createTypedArrayLike } from '@/src/utils' ;
34
45export interface GaussianSmoothParams {
56 sigma : number ;
@@ -129,13 +130,12 @@ function gaussianFilter3D(
129130 const kernelX = generateGaussianKernel ( sigmaPixels [ 0 ] , radiusFactor ) ;
130131 const kernelY = generateGaussianKernel ( sigmaPixels [ 1 ] , radiusFactor ) ;
131132 const kernelZ = generateGaussianKernel ( sigmaPixels [ 2 ] , radiusFactor ) ;
132- const temp1 = new Float32Array ( totalSize ) ;
133- const temp2 = new Float32Array ( totalSize ) ;
133+ const temp = new Float32Array ( totalSize ) ;
134134 const output = new Float32Array ( totalSize ) ;
135135
136- convolve1D ( inputData , temp1 , dimensions , kernelX , 0 ) ;
137- convolve1D ( temp1 , temp2 , dimensions , kernelY , 1 ) ;
138- convolve1D ( temp2 , output , dimensions , kernelZ , 2 ) ;
136+ convolve1D ( inputData , output , dimensions , kernelX , 0 ) ;
137+ convolve1D ( output , temp , dimensions , kernelY , 1 ) ;
138+ convolve1D ( temp , output , dimensions , kernelZ , 2 ) ;
139139
140140 return output ;
141141}
@@ -237,7 +237,7 @@ function copySubVolumeBack(
237237
238238 if ( origLabel === label || origLabel === 0 ) {
239239 // eslint-disable-next-line no-param-reassign
240- ( originalData as any ) [ origIndex ] = subValue > 127.5 ? label : 0 ;
240+ originalData [ origIndex ] = subValue > 127.5 ? label : 0 ;
241241 }
242242 subIndex ++ ;
243243 }
@@ -274,9 +274,7 @@ export function gaussianSmoothLabelMapWorker(input: {
274274 }
275275
276276 if ( originalLabelCount === 0 ) {
277- const outputData = new ( originalData . constructor as any ) (
278- originalData . length
279- ) ;
277+ const outputData = createTypedArrayLike ( originalData , originalData . length ) ;
280278 for ( let i = 0 ; i < originalData . length ; i ++ ) {
281279 outputData [ i ] = originalData [ i ] ;
282280 }
@@ -291,9 +289,7 @@ export function gaussianSmoothLabelMapWorker(input: {
291289
292290 const bounds = calculateBoundingBox ( originalData , dimensions , label ) ;
293291 if ( ! bounds ) {
294- const outputData = new ( originalData . constructor as any ) (
295- originalData . length
296- ) ;
292+ const outputData = createTypedArrayLike ( originalData , originalData . length ) ;
297293 for ( let i = 0 ; i < originalData . length ; i ++ ) {
298294 outputData [ i ] = originalData [ i ] ;
299295 }
@@ -320,7 +316,7 @@ export function gaussianSmoothLabelMapWorker(input: {
320316 1.5
321317 ) ;
322318
323- const outputData = new ( originalData . constructor as any ) ( originalData . length ) ;
319+ const outputData = createTypedArrayLike ( originalData , originalData . length ) ;
324320 for ( let i = 0 ; i < originalData . length ; i ++ ) {
325321 outputData [ i ] = originalData [ i ] ;
326322 }
0 commit comments