def get(self, index): img = CellLoader.klb.readFull(timepoint_paths[index]).getImg() # Each cell has "1" as its dimension in the last axis (time) # and index as its min coordinate in the last axis (time) return Cell( Intervals.dimensionsAsIntArray(img) + array([1], 'i'), Intervals.minAsLongArray(img) + array([index], 'l'), extractArrayAccess(img))
aff = AffineTransform3D() aff.set(*matrix) return aff # Transform the kernel for each view kernels = [kernel, transformPSFKernelToView(kernel, affine3D(matrices["imgB0-imgB1"])), transformPSFKernelToView(kernel, affine3D(matrices["imgB0-imgB2"])), transformPSFKernelToView(kernel, affine3D(matrices["imgB0-imgB3"]))] def deconvolve(images, kernels, name, n_iterations): # Bayesian-based multi-view deconvolution exe = newFixedThreadPool(Runtime.getRuntime().availableProcessors() -2) try: mylambda = 0.0006 blockSize = Intervals.dimensionsAsIntArray(images[0]) # [128, 128, 128] cptf = ComputeBlockSeqThreadCPUFactory(exe, mylambda, blockSize, ArrayImgFactory(FloatType())) psiInitFactory = PsiInitBlurredFusedFactory() # PsiInitAvgPreciseFactory() fails with type mismatch: UnsignedByteType (?) vs FloatType weight = Views.interval(ConstantRandomAccessible(FloatType(1), images[0].numDimensions()), FinalInterval(images[0])) filterBlocksForContent = False # Run once with True, none were removed decon_views = DeconViews([DeconView(exe, img, weight, kernel, PSFTYPE.INDEPENDENT, blockSize, 1, filterBlocksForContent) for img in images], exe) #n_iterations = 10 decon = MultiViewDeconvolutionSeq(decon_views, n_iterations, psiInitFactory, cptf, ArrayImgFactory(FloatType())) if not decon.initWasSuccessful(): print "Something went wrong initializing MultiViewDeconvolution" else: decon.runIterations() img = decon.getPSI() imp = IL.wrap(img, name + "_deconvolved_" + str(n_iterations) + "_iterations")