fiji / SPIM_Registration

Deprecated, instead check out: https://github.com/preibischLab/multiview-reconstruction & https://github.com/PreibischLab/BigStitcher
GNU General Public License v2.0
23 stars 22 forks source link

java.lang.ArrayIndexOutOfBoundsException during multiview deconvolution #113

Closed RichardMyers closed 7 years ago

RichardMyers commented 7 years ago

I'm performing Multiview Deconvolution and when I use blocks (not the whole image) I get an exception that seems to repeat forever (or maybe just for all blocks after some point).

I've updated Fiji to today's latest build and updated.

This could be related to using SlideBook SLD file reader. Any tips on how to figure out what's going on would be appreciated.

Thanks!

The deconvolution is on these two views:

ViewSetup id=0: Dimensions: 1024 x 1024 x 300px Voxel Dimensions: 0.32499998807907104 x 0.32499998807907104 x 0.5um illumination Capture 5 (id=0) channel di561A (id=0) tile 0 (id=0) angle Path A (id=0), Rotation Axis (0.0, 1.0, 0.0), Rotation Angle 0.0

ViewSetup id=1: Dimensions: 1024 x 1024 x 300px Voxel Dimensions: 0.32499998807907104 x 0.32499998807907104 x 0.5um illumination Capture 5 (id=0) channel di561A (id=0) tile 0 (id=0) angle Path B (id=1), Rotation Axis (0.0, 1.0, 0.0), Rotation Angle 90.0

Bounding Boxes: My Bounding Box (dim=1026x1051x1075px, offset=-513x-528x-545px)

With these deconvolution parameters (from what I can remember):

I'm getting this exception:

java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at net.imglib2.algorithm.fft2.FFTMethods.realToComplex(FFTMethods.java:694)
    at net.imglib2.algorithm.fft2.FFTMethods.realToComplex(FFTMethods.java:546)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:245)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:123)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:74)
    at net.imglib2.algorithm.fft2.FFTConvolution.convolve(FFTConvolution.java:521)
    at spim.process.fusion.deconvolution.MVDeconFFTThreads.convolve2BlockCPU(MVDeconFFTThreads.java:46)
    at spim.process.fusion.deconvolution.MVDeconFFT.convolve2(MVDeconFFT.java:470)
    at spim.process.fusion.deconvolution.MVDeconvolution.runIteration(MVDeconvolution.java:397)
    at spim.process.fusion.deconvolution.MVDeconvolution.runIteration(MVDeconvolution.java:330)
    at spim.process.fusion.deconvolution.MVDeconvolution.<init>(MVDeconvolution.java:177)
    at spim.process.fusion.deconvolution.EfficientBayesianBased.fuseData(EfficientBayesianBased.java:259)
    at spim.fiji.plugin.Image_Fusion.fuse(Image_Fusion.java:173)
    at spim.fiji.plugin.Image_Fusion.fuse(Image_Fusion.java:88)
    at spim.fiji.spimdata.explorer.popup.FusionPopup$MyActionListener$1.run(FusionPopup.java:57)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException

The log file looks like this:

getDescription()
imgSize (1026, 1051, 1075)
kernelSize (19, 19, 37)
blockSize (512, 512, 512)
numBlocks (3, 3, 3)
effectiveLocalOffset (9, 9, 18)
imgSize (1026, 1051, 1075)
kernelSize (37, 21, 21)
blockSize (512, 512, 512)
numBlocks (3, 3, 3)
effectiveLocalOffset (18, 10, 10)
 block 0(CPU): copy 531
 block 0(CPU): compute 3933
.
. etc..
.
 block 26(CPU): copy 101
 block 26(CPU): compute 1585
 block 26(CPU): paste 50
java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: -6303768
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at net.imglib2.algorithm.fft2.FFTMethods.realToComplex(FFTMethods.java:694)
    at net.imglib2.algorithm.fft2.FFTMethods.realToComplex(FFTMethods.java:546)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:245)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:123)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:74)
    at net.imglib2.algorithm.fft2.FFTConvolution.convolve(FFTConvolution.java:521)
    at spim.process.fusion.deconvolution.MVDeconFFTThreads.convolve2BlockCPU(MVDeconFFTThreads.java:46)
    at spim.process.fusion.deconvolution.MVDeconFFT.convolve2(MVDeconFFT.java:470)
    at spim.process.fusion.deconvolution.MVDeconvolution.runIteration(MVDeconvolution.java:397)
    at spim.process.fusion.deconvolution.MVDeconvolution.runIteration(MVDeconvolution.java:330)
    at spim.process.fusion.deconvolution.MVDeconvolution.<init>(MVDeconvolution.java:177)
    at spim.process.fusion.deconvolution.EfficientBayesianBased.fuseData(EfficientBayesianBased.java:259)
    at spim.fiji.plugin.Image_Fusion.fuse(Image_Fusion.java:173)
    at spim.fiji.plugin.Image_Fusion.fuse(Image_Fusion.java:88)
    at spim.fiji.spimdata.explorer.popup.FusionPopup$MyActionListener$1.run(FusionPopup.java:57)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -6303768
    at net.imglib2.img.basictypeaccess.array.FloatArray.getValue(FloatArray.java:62)
    at net.imglib2.type.numeric.real.FloatType.get(FloatType.java:115)
    at net.imglib2.type.numeric.real.FloatType.getRealFloat(FloatType.java:126)
    at net.imglib2.algorithm.fft2.FFTMethods.computeRealToComplex1dFFT(FFTMethods.java:947)
    at net.imglib2.algorithm.fft2.FFTMethods.access$100(FFTMethods.java:65)
    at net.imglib2.algorithm.fft2.FFTMethods$2.call(FFTMethods.java:681)
    at net.imglib2.algorithm.fft2.FFTMethods$2.call(FFTMethods.java:597)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    ... 1 more
java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: -6303256
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at net.imglib2.algorithm.fft2.FFTMethods.realToComplex(FFTMethods.java:694)
    at net.imglib2.algorithm.fft2.FFTMethods.realToComplex(FFTMethods.java:546)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:245)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:123)
    at net.imglib2.algorithm.fft2.FFT.realToComplex(FFT.java:74)
    at net.imglib2.algorithm.fft2.FFTConvolution.convolve(FFTConvolution.java:521)
    at spim.process.fusion.deconvolution.MVDeconFFTThreads.convolve2BlockCPU(MVDeconFFTThreads.java:46)
    at spim.process.fusion.deconvolution.MVDeconFFT.convolve2(MVDeconFFT.java:470)
    at spim.process.fusion.deconvolution.MVDeconvolution.runIteration(MVDeconvolution.java:397)
    at spim.process.fusion.deconvolution.MVDeconvolution.runIteration(MVDeconvolution.java:330)
    at spim.process.fusion.deconvolution.MVDeconvolution.<init>(MVDeconvolution.java:177)
    at spim.process.fusion.deconvolution.EfficientBayesianBased.fuseData(EfficientBayesianBased.java:259)
    at spim.fiji.plugin.Image_Fusion.fuse(Image_Fusion.java:173)
    at spim.fiji.plugin.Image_Fusion.fuse(Image_Fusion.java:88)
    at spim.fiji.spimdata.explorer.popup.FusionPopup$MyActionListener$1.run(FusionPopup.java:57)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -6303256
    at net.imglib2.img.basictypeaccess.array.FloatArray.getValue(FloatArray.java:62)
    at net.imglib2.type.numeric.real.FloatType.get(FloatType.java:115)
    at net.imglib2.type.numeric.real.FloatType.getRealFloat(FloatType.java:126)
    at net.imglib2.algorithm.fft2.FFTMethods.computeRealToComplex1dFFT(FFTMethods.java:947)
    at net.imglib2.algorithm.fft2.FFTMethods.access$100(FFTMethods.java:65)
    at net.imglib2.algorithm.fft2.FFTMethods$2.call(FFTMethods.java:681)
    at net.imglib2.algorithm.fft2.FFTMethods$2.call(FFTMethods.java:597)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    ... 1 more
< these exceptions repeat >
StephanPreibisch commented 7 years ago

Fixed with commit https://github.com/fiji/SPIM_Registration/commit/e68e2edfab5bc6f9b71a0489965415ae64d6b819

Part of release 5.0.9

Thanks a lot!